Ldc
2024-04-07 0652600959e5e3b5796fb6e8da129704ca95347a
项目上传
已添加1,576个文件
479458 ■■■■■ 文件已修改
Source/platformProject/platform2022UI/README.md 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/config.json 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/doc.html 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/index.html 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/indexAdmin.html 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/corsforie8/jQuery.XDomainRequest.js 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/corsforie8/jquery.xdomainrequest.min.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery-1.12.4.js 11008 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery-1.12.4.min.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery-1.8.2.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery-migrate-1.4.1.js 752 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery.cookie.js 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery.easyui.min.js 17827 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery.fileDownload.js 495 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery.layout.js 530 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/jquery/jquery.panel.js 694 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/kindeditor-all-min.js 352 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/kindeditor-all.js 10084 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/kindeditor-min.js 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/kindeditor.js 5889 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/ar.js 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/en.js 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/ko.js 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/zh_CN.js 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/zh_TW.js 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/license.txt 502 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/anchor/anchor.js 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/autoheight/autoheight.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/baidumap/baidumap.js 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/baidumap/index.html 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/baidumap/map.html 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/clearhtml/clearhtml.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/code/code.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/code/prettify.css 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/code/prettify.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/emoticons.js 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/0.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/1.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/10.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/100.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/101.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/102.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/103.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/104.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/105.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/106.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/107.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/108.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/109.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/11.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/110.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/111.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/112.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/113.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/114.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/115.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/116.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/117.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/118.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/119.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/12.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/120.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/121.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/122.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/123.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/124.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/125.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/126.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/127.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/128.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/129.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/13.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/130.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/131.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/132.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/133.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/134.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/14.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/15.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/16.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/17.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/18.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/19.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/2.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/20.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/21.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/22.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/23.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/24.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/25.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/26.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/27.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/28.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/29.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/3.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/30.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/31.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/32.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/33.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/34.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/35.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/36.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/37.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/38.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/39.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/4.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/40.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/41.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/42.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/43.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/44.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/45.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/46.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/47.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/48.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/49.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/5.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/50.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/51.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/52.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/53.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/54.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/55.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/56.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/57.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/58.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/59.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/6.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/60.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/61.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/62.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/63.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/64.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/65.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/66.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/67.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/68.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/69.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/7.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/70.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/71.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/72.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/73.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/74.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/75.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/76.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/77.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/78.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/79.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/8.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/80.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/81.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/82.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/83.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/84.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/85.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/86.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/87.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/88.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/89.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/9.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/90.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/91.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/92.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/93.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/94.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/95.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/96.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/97.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/98.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/99.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/static.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/filemanager.js 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/file-16.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/file-64.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/folder-16.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/folder-64.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/go-up.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/flash/flash.js 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/image.js 318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/images/align_left.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/images/align_right.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/images/align_top.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/images/refresh.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/insertfile/insertfile.js 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/lineheight/lineheight.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/link/link.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/map/map.html 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/map/map.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/media/media.js 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/images/image.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/images/select-files-en.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/images/select-files-zh_CN.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/images/swfupload.swf 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/multiimage.js 1388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/pagebreak/pagebreak.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/plainpaste/plainpaste.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/preview/preview.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/quickformat/quickformat.js 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/table/table.js 705 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/template/html/1.html 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/template/html/2.html 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/template/html/3.html 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/template/template.js 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/wordpaste/wordpaste.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/anchor.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/blank.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/flash.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/media.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/rm.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/default/background.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/default/default.css 1148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/default/default.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/qq/editor.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/qq/qq.css 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/simple/simple.css 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/alicon.css 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.eot 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.json 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.svg 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.ttf 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.woff 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.woff2 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/layui.css 2203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/layui.mobile.css 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/code.css 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/laydate/default/font.css 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/laydate/default/laydate.css 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/icon-ext.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/layer.css 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/layer.old.css 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/loading-0.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/loading-1.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/loading-2.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/treetable.css 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.eot 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.svg 554 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.ttf 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.woff 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.woff2 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/0.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/1.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/10.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/11.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/12.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/13.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/14.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/15.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/16.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/17.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/18.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/19.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/2.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/20.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/21.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/22.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/23.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/24.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/25.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/26.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/27.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/28.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/29.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/3.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/30.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/31.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/32.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/33.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/34.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/35.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/36.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/37.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/38.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/39.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/4.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/40.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/41.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/42.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/43.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/44.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/45.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/46.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/47.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/48.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/49.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/5.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/50.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/51.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/52.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/53.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/54.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/55.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/56.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/57.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/58.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/59.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/6.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/60.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/61.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/62.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/63.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/64.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/65.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/66.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/67.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/68.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/69.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/7.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/70.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/71.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/8.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/9.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/all-mobile.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/all.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/FilePreviewBase.js 436 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.compatibility.js 577 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.js 19365 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.worker.js 47057 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.worker.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/pdfobject.js 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78ms-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78ms-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/83pv-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90ms-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90ms-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90msp-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90msp-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90pv-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90pv-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Add-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Add-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Add-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Add-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-0.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-1.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-3.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-4.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-5.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-6.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-UCS2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-0.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-1.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-3.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-4.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-5.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-UCS2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-0.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-1.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-3.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-4.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-5.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-6.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-UCS2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Korea1-0.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Korea1-1.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Korea1-2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Korea1-UCS2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/B5pc-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/B5pc-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS1-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS1-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS2-V.bcmap 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETHK-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETHK-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETen-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETen-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETenms-B5-H.bcmap 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETenms-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Ext-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Ext-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Ext-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Ext-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GB-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GB-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GB-H.bcmap 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GB-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBK-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBK-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBK2K-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBK2K-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBKp-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBKp-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBT-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBT-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBT-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBT-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBTpc-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBTpc-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBpc-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBpc-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKdla-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKdla-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKdlb-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKdlb-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKgccs-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKgccs-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKm314-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKm314-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKm471-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKm471-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKscs-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKscs-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Hankaku.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Hiragana.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-Johab-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-Johab-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCms-UHC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCms-UHC-HW-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCms-UHC-HW-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCms-UHC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCpc-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCpc-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Katakana.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/LICENSE 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/NWP-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/NWP-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Roman.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UCS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UCS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UCS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UCS2-HW-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UCS2-HW-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISPro-UCS2-HW-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISPro-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISPro-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISX0213-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISX0213-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISX02132004-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISX02132004-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UCS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/WP-Symbol.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/compressed.tracemonkey-pldi-09.pdf 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/debugger.js 619 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-check.svg 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-comment.svg 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-help.svg 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-insert.svg 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-key.svg 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-newparagraph.svg 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-noicon.svg 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-note.svg 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-paragraph.svg 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-next-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-next-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-next.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-next@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-previous-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-previous-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-previous.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-previous@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/grab.cur 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/grabbing.cur 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/loading-icon.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/loading-small.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/loading-small@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-documentProperties.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-documentProperties@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-firstPage.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-firstPage@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-handTool.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-handTool@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-lastPage.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-lastPage@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-rotateCcw.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-rotateCcw@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-rotateCw.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-rotateCw@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollHorizontal.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollHorizontal@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollVertical.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollVertical@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollWrapped.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollWrapped@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-selectTool.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-selectTool@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadEven.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadEven@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadNone.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadNone@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadOdd.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadOdd@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/shadow.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/texture.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-bookmark.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-bookmark@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-download.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-download@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-menuArrows.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-menuArrows@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-openFile.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-openFile@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageDown-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageDown-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageDown.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageDown@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageUp-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageUp-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageUp.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageUp@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-presentationMode.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-presentationMode@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-print.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-print@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-search.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-search@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-secondaryToolbarToggle-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-secondaryToolbarToggle.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-secondaryToolbarToggle@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-sidebarToggle-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-sidebarToggle-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-sidebarToggle.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-sidebarToggle@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewAttachments.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewAttachments@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewOutline-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewOutline-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewOutline.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewOutline@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewThumbnail.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewThumbnail@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-zoomIn.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-zoomIn@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-zoomOut.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-zoomOut@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-collapsed-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-collapsed-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-collapsed.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-collapsed@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-expanded.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-expanded@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ach/viewer.properties 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/af/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ak/viewer.properties 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/an/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ar/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/as/viewer.properties 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ast/viewer.properties 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/az/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/be/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/bg/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/bn-BD/viewer.properties 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/bn-IN/viewer.properties 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/br/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/brx/viewer.properties 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/bs/viewer.properties 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ca/viewer.properties 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/cak/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/crh/viewer.properties 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/cs/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/csb/viewer.properties 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/cy/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/da/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/de/viewer.properties 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/el/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/en-CA/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/en-GB/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/en-US/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/en-ZA/viewer.properties 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/eo/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/es-AR/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/es-CL/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/es-ES/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/es-MX/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/et/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/eu/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/fa/viewer.properties 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ff/viewer.properties 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/fi/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/fr/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/fy-NL/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ga-IE/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/gd/viewer.properties 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/gl/viewer.properties 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/gn/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/gu-IN/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/he/viewer.properties 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hi-IN/viewer.properties 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hr/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hsb/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hto/viewer.properties 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hu/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hy-AM/viewer.properties 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ia/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/id/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/is/viewer.properties 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/it/viewer.properties 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ja/viewer.properties 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ka/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/kab/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/kk/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/km/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/kn/viewer.properties 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ko/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/kok/viewer.properties 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ks/viewer.properties 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ku/viewer.properties 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lg/viewer.properties 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lij/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lo/viewer.properties 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/locale.properties 369 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lt/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ltg/viewer.properties 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lv/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/mai/viewer.properties 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/meh/viewer.properties 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/mk/viewer.properties 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ml/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/mn/viewer.properties 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/mr/viewer.properties 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ms/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/my/viewer.properties 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/nb-NO/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ne-NP/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/nl/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/nn-NO/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/nso/viewer.properties 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/oc/viewer.properties 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/or/viewer.properties 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/pa-IN/viewer.properties 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/pl/viewer.properties 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/pt-BR/viewer.properties 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/pt-PT/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/rm/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ro/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ru/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/rw/viewer.properties 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sah/viewer.properties 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sat/viewer.properties 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/si/viewer.properties 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sk/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sl/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/son/viewer.properties 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sq/viewer.properties 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sr/viewer.properties 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sv-SE/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sw/viewer.properties 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ta-LK/viewer.properties 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ta/viewer.properties 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/te/viewer.properties 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/th/viewer.properties 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/tl/viewer.properties 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/tn/viewer.properties 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/tr/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/tsz/viewer.properties 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/uk/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ur/viewer.properties 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/uz/viewer.properties 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/vi/viewer.properties 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/wo/viewer.properties 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/xh/viewer.properties 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/zam/viewer.properties 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/zh-CN/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/zh-TW/viewer.properties 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/zu/viewer.properties 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.css 2390 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.html 395 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.js 13407 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/dcConfig.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/dynamicCondition.js 1388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/formulaEditor.js 466 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/referConfig.js 839 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciFilePreview.js 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebAdvSearch.js 959 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebCheckSession.js 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebComboxStore.js 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebDataGrid.js 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebDataRightCheck.js 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebFileManager.js 613 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebMenu.js 440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebOnlineUser.js 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebPortal.js 785 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebPortalDojoUI.js 812 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebPortalHome.js 274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebRefer.js 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferClassify.js 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferDefalut.js 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferGrid.js 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferStand.js 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferTree.js 283 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReminder.js 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebSocket.js 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/carousel.js 314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/code.js 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/dltable.js 2259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/dropdown.js 528 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/echarts.js 83891 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/element.js 502 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/flow.js 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/form.js 2115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/jquery.js 10987 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/lay.js 418 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/laydate.js 2009 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/layedit.js 649 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/layer.js 1427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/layer.old.js 1329 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/laypage.js 342 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/laytpl.js 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile/layer-mobile.js 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile/layim-mobile-open.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile/upload-mobile.js 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile/zepto.js 1646 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/rate.js 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/table.js 3008 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/table.old.js 2180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/transfer.js 551 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/transferTable.js 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/tree.js 1093 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/treeGrid.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/upload.js 616 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/util.js 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseAction.js 318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseAddAction.js 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseDeleteAction.js 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseEditAction.js 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseFileDownloadAction.js 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseFileUploadAction.js 298 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseLinkAddAction.js 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseLinkDeleteAction.js 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseLinkEditAction.js 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseRevisionAction.js 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseStartWorkflowAction.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseTabViewAction.js 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseViewAction.js 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/RefreshAction.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdAreaClassify.js 353 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdCustomer.js 268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdCustomerClassify.js 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdCustomerSaleClassify.js 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdGoodsLocation.js 420 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdMaterial.js 1343 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdMaterialClassify.js 372 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdMaterialClassifyExtendAttr.js 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdMaterialSelectPanel.js 474 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSelectInputChar.js 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplier.js 668 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplierAdmittance.js 366 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplierClassify.js 384 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplierImporttance.js 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplierRefer.js 343 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdUnit.js 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdWarehouse.js 611 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdWarehouseClassify.js 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/developer/logs/VciLogMonitor.js 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/fileManage/VciFileDocClassify.js 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/fileManage/VciFileList.js 329 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/fileManage/VciFileStore.js 495 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/home/vciHomeTaskAction.js 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/monitor/VciMonitorMain.js 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/monitor/VciService.js 519 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/monitor/VciSqlTool.js 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/monitor/VciYAML.js 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/HelpDocument.js 364 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsAttribute.js 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsAttributeForBtmRefer.js 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsAttributeUtil.js 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsBtmType.js 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsBtmTypeRefer.js 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsCodeGenerator.js 584 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsCodeGeneratorComp.js 532 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsCodePreview.js 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsCodeRule.js 1216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsDLL.js 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsEnum.js 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsLinkType.js 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsWebApi.js 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsWebMethods.js 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciDataBaseConnect.js 356 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciMarkdownViewer.js 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciMd.js 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciOsLifeCycle.js 462 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciOsStatus.js 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciOsStatusRefer.js 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciUIContentViewer.bak.js 933 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciUIContentViewer.js 1019 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/css/app.5c53683c.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/erContent.html 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/erContent.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/js/app.24d70361.js 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/js/app.24d70361.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/js/chunk-vendors.80f2064b.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/js/chunk-vendors.80f2064b.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/markdown.html 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/markdown.js 350 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/md.html 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/OrgPosition.js 372 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/orgDuty.js 371 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/orgJobGrade.js 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/orgsDepartment.js 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/vciWebPost.js 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/plugins/ImageView.js 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/plugins/Sql2Table.js 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/VciProcessProxy.js 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/VciProcessTemplate.js 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/VciProcessTemplateClassify.js 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/VciProcessUserGroup.js 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/WfWorkflowHandle.js 325 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/VciProcessDesigner.js 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/css/style.css 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/draw2d/draw2d.js 10427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/draw2d/moocanvas.js 873 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/draw2d/mootools.js 2409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/draw2d/wz_jsgraphics.js 1108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/activate.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/assign.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/browseButton.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/calendar.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/cancel.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/chart_bar_edit.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/clock.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/deactivate.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/delegate.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/delete.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/download.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/edit.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/edit_add.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/en_US.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/fen.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/fen2.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/help.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/homePage.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/hua.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/hua2.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/hui.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/hui2.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/Thumbs.db 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/action.down.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/action.magnifier.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/action.up.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/callactivity.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/defaultCustomServiceTask.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/ereference.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/error.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/errorCustomServiceTask.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/palette.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/process.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/properties.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/timer.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/tree_folder_open.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.annotation.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.business.rule.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.endevent.none.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.gateway.exclusive.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.gateway.inclusive.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.gateway.parallel.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.loopmarker.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.mail.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.manual.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.receive.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.script.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.send.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.service.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.startevent.none.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.subprocess.collapsed.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.subprocess.expanded.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.user.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/join.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/lan.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/lan2.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/left_icon.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/logout.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/lv.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/lv2.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/menu.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/message.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/modify.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/ok.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/pages.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/paint.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/password_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/permissions.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/picture_go.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/right_icon.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/role.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/save.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/setPassword.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/task.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/unchecked.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/upload.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/user_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/validatebox_pointer.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/validatebox_warning.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/weather.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/welcome.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/zh_CN.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/zoom.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/MyCanvas.js 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/ResizeImage.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/connection/DecoratedConnection.js 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/connection/MyInputPort.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/connection/MyOutputPort.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/designer.css 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/designer.js 523 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/event/End.js 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/event/Start.js 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/gateway/ExclusiveGateway.js 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/gateway/ParallelGateway.js 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/circle.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/grid_10.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/manual-task.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/menu.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/menu_sep.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/BaseTask.js 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/ManualTask.js 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/ServiceTask.js 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/Task.js 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/UserTask.js 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/SmButton.js 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/SmFunction.js 884 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/SmPasswordStrategy.js 418 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/SmWorkType.js 377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/VciSmRightCenter.js 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/VciSmRole.js 535 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/VciSmUser.js 1046 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseCalPortlet.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseDevPortlet.js 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseFavPortlet.js 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseTaskPortlet.js 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseUserPortlet.js 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciDefaultIndex.js 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciWebProUndoTaskPortlet.js 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProAllProcessInfo.js 574 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProBusinessData.js 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProBusinessDoc.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProExecutePanel.js 314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProExecuteTask.js 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProExecutingTab.js 615 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProHistory.js 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProMonitor.js 458 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProProxy.js 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProUndoTab.js 307 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProcessAssign.js 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebStartProcess.js 885 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebUserTransferRefer.js 358 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/OrgDepartmentGridRefer.js 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/OrgDepartmentRefer.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/OrgDutyRefer.js 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmRoleRefer.js 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmUserGridRefer.js 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmUserRefer.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmUserReferBase.js 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmWorkTypeRefer.js 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/WfProcessTemplateRefer.js 330 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/layui.js 640 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/markdown/highlight.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/markdown/marked.min.js 896 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/markdown/marked2.1.3.js 2986 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/markdown/monokai_sublime.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/metaQueryForIe8/htm5.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/metaQueryForIe8/respond.min.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/admin.js 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/adminMain.js 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/browserInfo.js 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/json2.js 489 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/login.js 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/main.js 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/md5.js 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/showTodo.js 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/singleLogin.js 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/vcijs/vciWebUtil.js 1655 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/websocket/WebSocketMain.swf 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/websocket/swfobject.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/websocket/web_socket.js 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/yaml/css/codemirror.css 350 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/yaml/index.html 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/yaml/js/codemirror.js 9803 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/yaml/js/js-yaml.js 3854 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/yaml/js/js-yaml.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/jslib/yaml/js/yaml.js 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/main.html 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/mainAdmin.html 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/platform2020UI.iml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/common.css 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/dc.css 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/dm-button.css 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/easyui.css 3706 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/layui-dojo-small.css 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/layuimodify.css 596 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/login.css 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/markdown.min.css 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/css/vciproject.css 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/font/loginform-icon.eot 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/font/loginform-icon.svg 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/font/loginform-icon.ttf 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/font/loginform-icon.woff 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/assignOrg.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/assignRole.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/assignUser.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/attach.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/cancel.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/comment.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/comment_add.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/comment_delete.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/comments.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/disk.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/down.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/folder.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/importExcel.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/in.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/information.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/mail.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/notAllow.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/out.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/pencil_add.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/preview.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/printer.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/schema_add.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_add.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_cleanref.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_copy.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_delete.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_disabled.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_edit.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_enable.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_modify.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_refresh.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_search.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/table_sync.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/trans.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/trash.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/tree_leaf.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/unReadMsg.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/button/up.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/buttonEnabled.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/buttonHover.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/end.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/gateway.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/gatewayIn.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/mail.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/messages.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/painterBg.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/reference.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/service.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/start.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/timer.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/flow/userTask.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/dm_index_exit.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/dm_index_fav.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/dm_index_menu_bus.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/dm_index_notification.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/dm_index_person.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/dm_index_system.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/dm_index_unfav.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/nosession.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/index/sessionRemind.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/layout_arrows.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/background-access.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/background-classic.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/background-gray.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/background-naptune.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/code.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/login_name.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/login_pic.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/login_pw.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/progress-default-bg.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/userphotoman.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/login/userphotowoman.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/menu/changeorg.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/menu/changepassword.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/menu/changetheme.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/menu/lockwindow.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/menu/standardGradient.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/spriteRoundedIconsSmallBl.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/tabBottomEnabledC.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/tabContainerSprite.gif 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/tabTopSelected.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/base/tabTopUnselected.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/ie.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/menuicons/2088211.png 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/music/message.mp3 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/style/images/music/message.ogg 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/CreateAuditTask.js 307 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/bd/workUnit.js 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeButton.js 345 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassify.js 3247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyAttribute.js 572 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyClassifyuse.js 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyEnumUse.js 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyProcessTemp.js 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyTempMapItem.js 331 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyTemplate.js 342 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyTemplateAttr.js 1332 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyTemplateButton.js 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyVerifyUser.js 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeGroupExportRule.js 618 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeGroupImportRule.js 620 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeKeyAttrRepeatRule.js 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeResembleRule.js 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeRule.js 1779 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeSelectInputChar.js 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeSerialAlgorithm.js 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/CodeSynonym.js 371 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/MdmApply.js 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/MdmEngine.js 1387 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/MdmEngineForm.js 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/MdmEngineInProcess.js 463 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/SysIntAuthority.js 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/SysIntBase.js 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/SysIntInfo.js 524 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/refer/CodeClassTemplateAttrRefer.js 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/refer/CodeClassTemplateRefer.js 341 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mdm/refer/CodeClassifyAttrRefer.js 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmAlonePlan.js 441 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmGroundPlan.js 388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmPlanCalulate.js 348 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmPlaneItem.js 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmPlanePlan.js 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmSalePlan.js 379 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmSalePlanAccord.js 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmSalePlanRecord.js 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmSalePlanTarget.js 395 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmStationPlan.js 482 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/mes/wrj/PmYearPlan.js 529 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/vciAlias.js 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/vciweb/view/showDetail.js 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/pom.xml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-server-starter/pom.xml 585 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-starter/pom.xml 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/README.md 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/pom.xml 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/settings.xml 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/BatchRedeployJar2Maven.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/PlatformWebApplication.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTask.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTaskManager.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDutyQueryServiceI.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java 401 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDutyQueryServiceImpl.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java 688 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java 532 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmSessionForLoginImpl.java 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java 810 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/constant/FrameWorkBtmTypeConstant.java 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/constant/FrameWorkBusLangCodeConstant.java 519 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/constant/FrameWorkDefaultValueConstant.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/controller/OrgDutyQueryController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/enumpck/DataObjectEnum.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/enumpck/ResourceControlTypeEnum.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/enumpck/RoleClassifyEnum.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/enumpck/RoleControlAreaEnum.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/lcstatuspck/FrameworkDataLCStatus.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/lcstatuspck/ReleaseDataLCStatus.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/model/OrgDeptForPlatform1.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/model/SmFunctionForPlatform1.java 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyForPlatform1.java 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/model/SmRoleForPlatform1.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/MenuVO.java 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/OrgDepartmentVO.java 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/OrgDutyVO.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/SmFunctionVO.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/SmPasswordStrategyVO.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/SmRoleVO.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/SmUserVO.java 393 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/properties/VciFramworkCompatibilityProperties.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/properties/VciSecurityManageProperties.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/plugins/controller/AuditTaskController.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/plugins/controller/ImageViewerController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/plugins/controller/Sql2TableController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/plugins/dto/AuditTaskDTO.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/BdSelectInput.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/FlowNotifyAfter.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/FlowNotifyBefore.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/FlowNotifyWeb.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/VciTransactional.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/BtmOrLinkProcessAttributeInfo.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/FlowNoticeInfo.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/LoginResultBO.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsAttrOtherInfoBO.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsCodeGenAttributeBO.java 506 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsCodeGenButtonBO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsCodeGenQueryBO.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsCodeSerialBuildBO.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/VciLogObjectBO.java 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/BtmIdConstant.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/CacheKeyConstant.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/CacheNameConstant.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/EnumIdConstant.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/FieldConstant.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/FileTypeConstants.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/LinkTypeIdConstant.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/TokenKeyConstant.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/WFVariablesKeyConstant.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/WebLangCodeConstant.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/BdSelectInputCharController.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/HomeTaskController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/LoginController.java 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/OsAttributeController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/OsLifeCycleController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/OsLinkTypeController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/SmFavFunctionController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/SmFunctionController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/SmMenuController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/StmFunctionController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciFileDownloadController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciFileQueryController.java 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciFileUploadController.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciMdController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciOsCodeRuleController.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciOsStatusController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WFWorkflowNodeFavController.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebActionController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebCodeGenSchemaController.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebDataRightController.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebEnumController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebFormulaController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebOnlineUserController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebProcessCommandController.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebProcessDefineController.java 324 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebScanAnnotationController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebUIController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebUIDataController.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/WebProcessDaoI.java 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java 1103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BaseLinkModelDTO.java 325 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BaseLinkModelDTOList.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BaseModelDTO.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BaseModelDTOList.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BdSelectInputCharDTO.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/DeleteDataDTO.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/DeleteLinkDataDTO.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/FormDataDTO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/FormDataDTOList.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/FormLinkDataDTO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/FormLinkDataDTOList.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/LoginUserDTO.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsAttributeDTO.java 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsBtmTypeDTO.java 374 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsBtmTypeExportDTO.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsBtmTypeLinkAttributesDTO.java 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeEnumDTO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeGenSchemaDTO.java 536 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeRuleDTO.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeRuleElementDTO.java 416 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeRuleProduceDTO.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsEnumDTO.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsLifeCycleDTO.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsLifeCycleLineDTO.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsLifeCycleLineEventDTO.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsLinkTypeDTO.java 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsRevisionRuleDTO.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsStatusDTO.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/ProcessNodeUseDTO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/ProcessStartConfigDTO.java 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/WFWorkflowNodeFavDTO.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/WFWorkflowNodeFavItemDTO.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/WebHomeTaskActionDTO.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeDateValueTypeEnum.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeElementTypeEnum.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeFillTypeEnum.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeGenJsPanelTypeEnum.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeProductTypeEnum.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UIButtonDisplayModeEnum.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UIComponentDisplayTypeEnum.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UIComponentTypeEnum.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UIFieldTypeEnum.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UILayoutAreaTypeEnum.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UITreeLoadTypeEnum.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java 373 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/interceptor/MyMVCConfig.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/lifeCycle/FileObjectLCStatus.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/lifeCycle/ReleaseDataLCStatus.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/BaseLinkModel.java 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/BdSelectInputCharDO.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsAttributeDO.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeBreakCodeDO.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeEnumDO.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeGenSchemaDO.java 583 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeRuleDO.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeRuleElementDO.java 443 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeSerialNumberDO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsLifeCycleDO.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsLinkTypeDO.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsStatusDO.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/ProcessInstance.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/ProcessTask.java 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/SmFavFunctionDO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/SmPasswordStrategyDO.java 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/SmUserDO.java 331 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/VciFileDocClassifyDO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/VciFileObjectDO.java 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/VciFileVolumeDO.java 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WFProcessClassifyDO.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WFProcessTemplateDO.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WFWorkflowNodeFavDO.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WFWorkflowNodeFavItemDO.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WebHomeTaskActionDO.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/BdSelectInputCharAspect.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/FlowNoticeExample.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/OsMapToObjFunction.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/VciFileDownloadInfo.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/WorkFlowEndedNotice.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/BatchCBO.java 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/BdSelectInputCharVO.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/KeyValue.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/LinkTypeInfoVO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsAttributeVO.java 346 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsBtmTypeAttributeVO.java 404 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsBtmTypeVO.java 461 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeEnumVO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeGenSchemaVO.java 535 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeResultVO.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeRuleElementVO.java 416 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeRuleVO.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsERNodePropertyVO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsERNodeVO.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsERRelationVO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsERVO.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsEnumItemVO.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsEnumVO.java 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLifeCycleLineBoundVO.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLifeCycleLineEventVO.java 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLifeCycleLineVO.java 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLifeCycleVO.java 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLinkTypeAttributeVO.java 390 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLinkTypeVO.java 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsRevisionRuleVO.java 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsStatusVO.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsUsedAttributeVO.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessClassifyVO.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessHistoryVO.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessInstanceVO.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessNodeVO.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessOutcomeVO.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessTaskVO.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessTemplateVO.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessUserVO.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ReferConfigVO.java 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/SmOperationVO.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/TreeSettingVO.java 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIActionVO.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIButtonDefineVO.java 314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIComponentVO.java 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIContentVO.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFieldSortVO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFormDataVO.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFormDefineVO.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFormItemVO.java 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFormReferVO.java 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UILayoutVO.java 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITableCustomDefineVO.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITableDefineVO.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITableFieldVO.java 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITablePageVO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITreeDefineVO.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITreeTableDefineVO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/VciFilePreviewConfigVO.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/WFWorkflowNodeFavItemVO.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/WFWorkflowNodeFavVO.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/WebHomeTaskActionVO.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/properties/OsDDLExportWordFieldProperties.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/properties/WebProperties.java 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/FileImageViewerQuery.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UIBaseQuery.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UIDataGridQuery.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UIFormQuery.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UILinkTypeDataQuery.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UITreeQuery.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UITreeRootQuery.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/redis/FastJson2JsonRedisSerializer.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/redis/RedisConfig.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/redis/RedisService.java 307 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/BdSelectInputCharServiceI.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/LoginServiceI.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsBaseServiceI.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsBtmServiceI.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsCodeGenSchemaServiceI.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsEnumServiceI.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsLinkTypeServiceI.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsRevisionRuleServiceI.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsStatusServiceI.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/SmFavFunctionServiceI.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/SmOperationServiceI.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/UIDataServiceI.java 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/UIEngineServiceI.java 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileDocClassifyServiceI.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileDownloadServiceI.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileObjectServiceI.java 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileQueryServiceI.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileUploadServiceI.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileVolumeServiceI.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciMdServiceI.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WFWorkflowNodeFavItemServiceI.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WFWorkflowNodeFavServiceI.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebActionServiceI.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebBoServiceI.java 634 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebBtmIOServiceI.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebLoServiceI.java 314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebLogServiceI.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebProcessCommandServiceI.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebProcessDefineServiceI.java 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebSecretServiceI.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/BdSelectInputCharServiceImpl.java 437 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/FormulaServiceImpl.java 1163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java 488 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java 437 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java 678 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java 919 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java 949 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java 471 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java 637 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsRevisionRuleServiceImpl.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsStatusServiceImpl.java 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/SmFavFunctionServiceImpl.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/SmOperationServiceImpl.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java 2468 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java 1567 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileDocClassifyServiceImpl.java 415 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileDownloadServiceImpl.java 543 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileObjectServiceImpl.java 539 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java 759 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileVolumeServiceImpl.java 406 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciMdServiceImpl.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java 373 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebActionServiceImpl.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java 2519 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java 1335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebContextInfoFetcher.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebInitServiceImpl.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java 834 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebLogServiceImpl.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java 792 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java 881 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java 379 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/BusAnnotationUtil.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/OsScanAnnotationTool.java 777 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/PlatformClientUtil.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/WebUtil.java 1726 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java 431 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/xmlmodel/UIComponentDetailXO.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/java/com/vci/web/xmlmodel/UIComponentItemXO.java 806 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/DefaultAttribute.json 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/application-dev.yml 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/application-prod.yml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/application.yml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Controller.java.vm 318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/DO.java.vm 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/DTO.java.vm 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Mapper.impl.java.vm 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Mapper.java.vm 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Mapper.xml.vm 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/PO.java.vm 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Service.impl.java.vm 485 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Service.java.vm 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/VO.java.vm 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/ui.js.vm 608 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/compatibility_field_map.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/ehcache.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/excelTemplate/dataBaseExport.xls 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/i18n/messages.properties 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/i18n/messages_zh_CN.properties 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/i18n/messages_zh_TW.properties 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/log4j2-spring-dev.xml 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/log4j2-spring-prod.xml 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_ADD.md 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_DEL.md 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_EDIT.md 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_FILEDOWNLOAD.md 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_FILEUPLOAD.md 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_LINKADD.md 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_LINKDEL.md 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_LINKEDIT.md 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_REFRESH.md 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_TAB.md 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_UI.md 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_UPREVISION.md 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_VIEW.md 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_WORKFLOW.md 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/CUSTOMER_UI.md 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/md/VOLUME.md 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/properties/corba.properties 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/properties/iceClient.properties 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/vci-platform-web/src/main/resources/wordTemplate/dataBaseExport.doc 补丁 | 查看 | 原始文档 | blame | 历史
Source/platformProject/platform2022UI/README.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
##开发说明
1.平台约束
- jslib å¹³å°ç›¸å…³çš„js,包含基础的js,和layui相关的基础的组件
- style è¿™ä¸ªæ˜¯å¹³å°æä¾›çš„æ ·å¼æ–‡ä»¶ï¼Œä¸€èˆ¬æƒ…况下不修改。如果只是个性化的需求,平台提供主题样式文件,或者单独写样式文件覆盖平台的内容
- vciweb æ‰€æœ‰çš„layui编写的js文件全部放在这里面。另外平台提供了platform和portal两个文件夹的js,如果其中的js有问题请联系平台开发修改;自定义的js不能是platform和portal的文件夹
- å¹³å°æ›´æ–°ï¼Œå¹³å°çš„js在发布新版本后,会有通知,请下载后覆盖现在的相关文件夹
2.项目自定义
  - webstyle é¡¹ç›®è‡ªå·±çš„æ ·å¼æ–‡ä»¶
  - view é¡¹ç›®è‡ªå·±çš„Js和html文件
  - å‚ç…§ éœ€è¦è‡ªå·±å†™çš„参照js,然后在vciAlias里referRegister加入信息。比如
```
    supplier:'platform/basedoc/BdSupplierRefer'
```
   å†’号前面是参照的简写,右边是其全路径,使用如下
   ```
    type: layui.vciAlias.platformRefer.supplier
 ```
  - è‡ªå·±å†™çš„layui组件简写, åœ¨vciAlias里的alias加入映射,比如
  ```
      'vciWebDialog':'frock/vciWebDialog'
      // å·¦è¾¹æ˜¯ç®€å†™çš„名字,右边是全路径,配置后其他地方引用只需要写简写.而且右侧的路径必须是在layui的主目录下
   ```
  - å»ºè®®è‡ªå·±é¡¹ç›®çš„js都在一个文件夹下,方便被其他项目的引用。例如需要引入资源库的,则需要把资源库的UI项目的invm文件夹拷贝过来即可
3.配置
- config.json
  ```
    {
    "isDebug":true, //这个是是否为调试默认,在开发模式下必须设置
    "jsversion":"这个是Js的版本,在每次更新的时候改下值即可",
    "backPath":"默认的地址,但是使用很少.这个是nginx里配置的地址.比如http://xxx:yy/gzmes/ ï¼› åœ¨è€é¡¹ç›®ä¸­åªé…ç½®è¿™ä¸ª",
    "singleLoginUrl":"单点登录的地址,一般不修改",
    "title":"这个是标题",
    "unSecret": true,
    "unSecretText": "上面这个属性为true时才显示在登录页面。比如内部,严禁处理存储或传递涉密信息",
    "webJsLib":"vciweb/",
    "mainDisplay": "popup是弹出窗口,但是最好设置为none,否则远程桌面的时候会占满屏幕",
    "vciWebPortal":{
        "mainConfig":{
            "indexPageModel":"首页的地址,现在暂时自行设置,后续是靠配置的",
            "companyLogo": "公司logo的地址",
            "companyMinLogo": "最小化的时候公司logo",
            "installHtml": "安装说明的地址,从vciweb开始,是相对于main.html的路径的"
        }
    },
    "theme":"主题,默认为蓝天白云"
    }
  ```
Source/platformProject/platform2022UI/config.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
{
    "isDebug":true,
    "jsversion":"20200222",
    "titleLogo": "",
    "title":"中航(成都)无人机制造执行管理",
    "titleFontSize": "16",
    "compatibility":true,
    "unSecret": false,
    "unSecretText": "内部,严禁处理存储或传递涉密信息",
    "webJsLib":"vciweb/",
    "mainDisplay": "none",
    "backPath":"http://localhost:12000/web/",
    "objectServicePath":"http://localhost:12000/web/",
    "frameworkPath":"http://localhost:12000/web/",
    "filePreviewPath": "http://dev.yunkeruida.top:8090/gzmes/vciFilePreview/",
    "adminServicePath": "http://localhost:18079/admin/",
    "unCorsPath": "",
    "vciWebPortal":{
        "mainConfig":{
            "pageWidth1440":1440,
            "pageWidth1280":1280,
            "pageHeight900":900,
            "pageHeight720":720,
            "isShowMpm": true
        }
    },
    "vciWebPortalDojoUI": {
        "mainConfig":{
            "pageWidth1440":1440,
            "pageWidth1280":1280,
            "pageHeight900":900,
            "pageHeight720":720,
            "isShowMpm": true
        }
    },
    "OsCodeGeneratorComp":{
        "packageName": "com.vci.mes.wrj",
        "servicePath": "mesWrjService",
        "user": "weidy",
        "jsPrefix": "mes/wrj"
    }
}
Source/platformProject/platform2022UI/doc.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
    <script src="jslib/jquery/jquery-1.8.2.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/jquery/jquery.cookie.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/jquery/jquery.fileDownload.js" type="text/javascript" charset="UTF-8"></script>
    <!--[if lt IE 9]>
    <script src="jslib/corsforie8/jQuery.XDomainRequest.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/corsforie8/jquery.xdomainrequest.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/metaQueryForIe8/htm5.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/metaQueryForIe8/respond.min.js" type="text/javascript" charset="UTF-8"></script>
    <![endif]-->
    <script src="jslib/layui-2.2.5-debug/layui.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/vcijs/browserInfo.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/vcijs/vciWebUtil.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/vcijs/main.js" type="text/javascript" charset="UTF-8"></script>
    <link  href="jslib/layui-2.2.5-debug/css/layui.css" rel="stylesheet" type="text/css"/>
    <link  href="jslib/layui-2.2.5-debug/alicon/alicon.css" rel="stylesheet" type="text/css"/>
    <link href="style/css/layuimodify.css" rel="stylesheet" type="text/css"/>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>开发文档</title>
</head>
<BODY style="background-color: #f0f2f5">
<noscript>你的浏览器没有启用javascript,无法使用本系统</noscript>
<div id="VciMd" style="margin: 20px;"></div>
<script type="text/javascript" >
    (function() {
        layui.use(['platform/objectService/VciMd'], function () {
            var VciMd = layui['platform/objectService/VciMd'];
            $('#VciMd').append(VciMd.getContent());
            VciMd.init();
        });
    })()
</script>
</BODY>
</html>
Source/platformProject/platform2022UI/index.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html>
<head>
    <script src="jslib/jquery/jquery-1.8.2.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/jquery/jquery.cookie.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/jquery/jquery.fileDownload.js" type="text/javascript" charset="UTF-8"></script>
    <!--[if lt IE 9]>
    <script src="jslib/corsforie8/jQuery.XDomainRequest.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/corsforie8/jquery.xdomainrequest.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/metaQueryForIe8/htm5.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/metaQueryForIe8/respond.min.js" type="text/javascript" charset="UTF-8"></script>
    <![endif]-->
    <script src="jslib/vcijs/browserInfo.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/vcijs/md5.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/vcijs/login.js" type="text/javascript" charset="UTF-8"></script>
    <link rel="stylesheet" type="text/css" href="style/css/login.css" />
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title></title>
</head>
<BODY>
<noscript>你的浏览器没有启用javascript,无法使用本系统</noscript>
<div id="background"><img src="style/images/base/login/background-classic.png" /> </div>
<div style="position: fixed; right:10%;left:10%;top:15%;text-align: center"><span style="font-size:60px;color:#5c6cff;font-weight:900;" id="loginTitle"></span></div>
<div id="login" class="login css3style" ><!-- ç™»å½•框区域 -->
    <div class="dm_login">
        <span id="secretFlag" style="display: none; line-height: 40px;"></span>
        <div style="clear: both">
            <div class="login_left">
                <img id="userPhoto" class="dm_login_user_pic"/><!-- ç”¨æˆ·å¤´åƒ -->
                <div class="dm_login_user_name"></div>
            </div>
            <div class="login_right">
                <div class="loginTabs">
                    <ul class="username">
                        <li>
                            <div class="login_in_one" id="usernamediv" ><!-- ç”¨æˆ·åæ–‡æœ¬æ¡† -->
                                <div class="login_in_one_left">
                                    <img src="style/images/base/login/login_name.png" class="login_in_one_left_img1">
                                </div><!-- å·¦ä¾§çš„图标 -->
                                <input type="text" name="userid"  class="cookieinput" id="userid" placeholder="请您输入用户名" autocomplete="off" />
                            </div>
                        </li>
                        <li >
                            <div class="login_in_one" id="passworddiv">
                                <div class="login_in_one_left">
                                    <img src="style/images/base/login/login_pw.png" class="login_in_one_left_img2">
                                </div>
                                <input type="password" name="password"  id="password"  placeholder="请您输入密码" autocomplete="off"/>
                            </div>
                            <div class="login_in_three" id="loginbt" class="css3style">登 å½•
                            </div>
                        </li>
                    </ul>
                    <ul>
                        <li>
                            <div class="toolbar">
                                <div class="login_in_two">
                                    <div class="login_in_two_left" id="isForceLoginDiv"><span><input type="checkbox" id="isForceLogin" checked="checked"></span>是否强制登录  </div>
                                    <div class="login_in_two_right" id="remenberUidDiv"><span><input type="checkbox" id="remenberUid" checked="checked"></span> è®°ä½è´¦æˆ·</div>
                                    <div class="login_in_two_right" style="display:none"><a>忘记密码?</a></div>
                                </div>
                            </div>
                        </li>
                        <li></li>
                    </ul>
                </div>
            </div>
        </div>
        <div  id="msg" class="msg" style="clear: both">&nbsp;</div>
    </div>
</div>
<div class=loadbg></div>
<div class="loading"><div class="processbar"></div><div style="position: absolute">正在登录中,已经耗时<span id="useTime">0</span>秒,请稍等....</div></div>
</BODY>
</html>
Source/platformProject/platform2022UI/indexAdmin.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html>
<head>
    <script src="jslib/jquery/jquery-1.8.2.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/jquery/jquery.cookie.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/jquery/jquery.fileDownload.js" type="text/javascript" charset="UTF-8"></script>
    <!--[if lt IE 9]>
    <script src="jslib/corsforie8/jQuery.XDomainRequest.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/corsforie8/jquery.xdomainrequest.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/metaQueryForIe8/htm5.min.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/metaQueryForIe8/respond.min.js" type="text/javascript" charset="UTF-8"></script>
    <![endif]-->
    <script src="jslib/vcijs/browserInfo.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/vcijs/md5.js" type="text/javascript" charset="UTF-8"></script>
    <script src="jslib/vcijs/admin.js" type="text/javascript" charset="UTF-8"></script>
    <link rel="stylesheet" type="text/css" href="style/css/login.css" />
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title></title>
</head>
<BODY>
    <noscript>你的浏览器没有启用javascript,无法使用本系统</noscript>
    <div id="background"><img src="style/images/base/login/background-classic.png" /> </div>
   <div id="login" class="login css3style"  ><!-- ç™»å½•框区域 -->
       <div class="dm_login">
           <span id="secretFlag" style="display: none; line-height: 40px;"></span>
           <div style="clear: both">
               <div class="login_left">
                   <img id="userPhoto" class="dm_login_user_pic"/><!-- ç”¨æˆ·å¤´åƒ -->
                   <div class="dm_login_user_name"></div>
               </div>
               <div class="login_right">
                   <div class="loginTabs">
                       <ul class="username">
                           <li>
                               <div class="login_in_one" id="usernamediv" ><!-- ç”¨æˆ·åæ–‡æœ¬æ¡† -->
                                   <div class="login_in_one_left">
                                       <img src="style/images/base/login/login_name.png" class="login_in_one_left_img1">
                                   </div><!-- å·¦ä¾§çš„图标 -->
                                   <input type="text" name="userid"  class="cookieinput" id="userid" placeholder="请您输入用户名" autocomplete="off" />
                               </div>
                           </li>
                           <li >
                               <div class="login_in_one" id="passworddiv">
                                   <div class="login_in_one_left">
                                       <img src="style/images/base/login/login_pw.png" class="login_in_one_left_img2">
                                   </div>
                                   <input type="password" name="password"  id="password"  placeholder="请您输入密码" autocomplete="off"/>
                               </div>
                               <div class="login_in_three" id="loginbt" class="css3style">登 å½•
                               </div>
                           </li>
                       </ul>
                       <ul>
                           <li>
                               <div class="toolbar" style="height: auto">
                                   <div class="login_in_two">
                                   </div>
                               </div>
                           </li>
                       </ul>
                   </div>
               </div>
           </div>
           <div  id="msg" class="msg" style="clear: both">&nbsp;</div>
       </div>
   </div>
   <div class=loadbg></div>
    <div class="loading"><div class="processbar"></div><div style="position: absolute">正在登录中,已经耗时<span id="useTime">0</span>秒,请稍等....</div></div>
</BODY>
</html>
Source/platformProject/platform2022UI/jslib/corsforie8/jQuery.XDomainRequest.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
/*!
 * jQuery-ajaxTransport-XDomainRequest - v1.0.4 - 2015-03-05
 * https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
 * Copyright (c) 2015 Jason Moon (@JSONMOON)
 * Licensed MIT (/blob/master/LICENSE.txt)
 */
(function(factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as anonymous module.
    define(['jquery'], factory);
  } else if (typeof exports === 'object') {
    // CommonJS
    module.exports = factory(require('jquery'));
  } else {
    // Browser globals.
    factory(jQuery);
  }
}(function($) {
// Only continue if we're on IE8/IE9 with jQuery 1.5+ (contains the ajaxTransport function)
if ($.support.cors || !$.ajaxTransport || !window.XDomainRequest) {
  return $;
}
var httpRegEx = /^(https?:)?\/\//i;
var getOrPostRegEx = /^get|post$/i;
var sameSchemeRegEx = new RegExp('^(\/\/|' + location.protocol + ')', 'i');
// ajaxTransport exists in jQuery 1.5+
$.ajaxTransport('* text html xml json', function(options, userOptions, jqXHR) {
  // Only continue if the request is: asynchronous, uses GET or POST method, has HTTP or HTTPS protocol, and has the same scheme as the calling page
  if (!options.crossDomain || !options.async || !getOrPostRegEx.test(options.type) || !httpRegEx.test(options.url) || !sameSchemeRegEx.test(options.url)) {
    return;
  }
  var xdr = null;
  return {
    send: function(headers, complete) {
      var postData = '';
      var userType = (userOptions.dataType || '').toLowerCase();
      xdr = new XDomainRequest();
      if (/^\d+$/.test(userOptions.timeout)) {
        xdr.timeout = userOptions.timeout;
      }
      xdr.ontimeout = function() {
        complete(500, 'timeout');
      };
      xdr.onload = function() {
        var allResponseHeaders = 'Content-Length: ' + xdr.responseText.length + '\r\nContent-Type: ' + xdr.contentType;
        var status = {
          code: 200,
          message: 'success'
        };
        var responses = {
          text: xdr.responseText
        };
        try {
          if (userType === 'html' || /text\/html/i.test(xdr.contentType)) {
            responses.html = xdr.responseText;
          } else if (userType === 'json' || (userType !== 'text' && /\/json/i.test(xdr.contentType))) {
            try {
              responses.json = $.parseJSON(xdr.responseText);
            } catch(e) {
              status.code = 500;
              status.message = 'parseerror';
              //throw 'Invalid JSON: ' + xdr.responseText;
            }
          } else if (userType === 'xml' || (userType !== 'text' && /\/xml/i.test(xdr.contentType))) {
            var doc = new ActiveXObject('Microsoft.XMLDOM');
            doc.async = false;
            try {
              doc.loadXML(xdr.responseText);
            } catch(e) {
              doc = undefined;
            }
            if (!doc || !doc.documentElement || doc.getElementsByTagName('parsererror').length) {
              status.code = 500;
              status.message = 'parseerror';
              throw 'Invalid XML: ' + xdr.responseText;
            }
            responses.xml = doc;
          }
        } catch(parseMessage) {
          throw parseMessage;
        } finally {
          complete(status.code, status.message, responses, allResponseHeaders);
        }
      };
      // set an empty handler for 'onprogress' so requests don't get aborted
      xdr.onprogress = function(){};
      xdr.onerror = function() {
        complete(500, 'error', {
          text: xdr.responseText
        });
      };
      if (userOptions.data) {
        postData = ($.type(userOptions.data) === 'string') ? userOptions.data : $.param(userOptions.data);
      }
      xdr.open(options.type, options.url);
      xdr.send(postData);
    },
    abort: function() {
      if (xdr) {
        xdr.abort();
      }
    }
  };
});
return $;
}));
Source/platformProject/platform2022UI/jslib/corsforie8/jquery.xdomainrequest.min.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
/*!
 * jQuery-ajaxTransport-XDomainRequest - v1.0.4 - 2015-03-05
 * https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
 * Copyright (c) 2015 Jason Moon (@JSONMOON)
 * Licensed MIT (/blob/master/LICENSE.txt)
 */
(function(a){if(typeof define==='function'&&define.amd){define(['jquery'],a)}else if(typeof exports==='object'){module.exports=a(require('jquery'))}else{a(jQuery)}}(function($){if($.support.cors||!$.ajaxTransport||!window.XDomainRequest){return $}var n=/^(https?:)?\/\//i;var o=/^get|post$/i;var p=new RegExp('^(\/\/|'+location.protocol+')','i');$.ajaxTransport('* text html xml json',function(j,k,l){if(!j.crossDomain||!j.async||!o.test(j.type)||!n.test(j.url)||!p.test(j.url)){return}var m=null;return{send:function(f,g){var h='';var i=(k.dataType||'').toLowerCase();m=new XDomainRequest();if(/^\d+$/.test(k.timeout)){m.timeout=k.timeout}m.ontimeout=function(){g(500,'timeout')};m.onload=function(){var a='Content-Length: '+m.responseText.length+'\r\nContent-Type: '+m.contentType;var b={code:200,message:'success'};var c={text:m.responseText};try{if(i==='html'||/text\/html/i.test(m.contentType)){c.html=m.responseText}else if(i==='json'||(i!=='text'&&/\/json/i.test(m.contentType))){try{c.json=$.parseJSON(m.responseText)}catch(e){b.code=500;b.message='parseerror'}}else if(i==='xml'||(i!=='text'&&/\/xml/i.test(m.contentType))){var d=new ActiveXObject('Microsoft.XMLDOM');d.async=false;try{d.loadXML(m.responseText)}catch(e){d=undefined}if(!d||!d.documentElement||d.getElementsByTagName('parsererror').length){b.code=500;b.message='parseerror';throw'Invalid XML: '+m.responseText;}c.xml=d}}catch(parseMessage){throw parseMessage;}finally{g(b.code,b.message,c,a)}};m.onprogress=function(){};m.onerror=function(){g(500,'error',{text:m.responseText})};if(k.data){h=($.type(k.data)==='string')?k.data:$.param(k.data)}m.open(j.type,j.url);m.send(h)},abort:function(){if(m){m.abort()}}}});return $}));
Source/platformProject/platform2022UI/jslib/jquery/jquery-1.12.4.js
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
Source/platformProject/platform2022UI/jslib/jquery/jquery-1.12.4.min.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;
}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({
padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
Source/platformProject/platform2022UI/jslib/jquery/jquery-1.8.2.min.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
/*! jQuery v1.8.2 jquery.com | jquery.org/license */
(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bY(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bW.length;while(e--){b=bW[e]+c;if(b in a)return b}return d}function bZ(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function b$(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bZ(c)&&(e[f]=p._data(c,"olddisplay",cc(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b_(a,b,c){var d=bP.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function ca(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bV[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bV[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bV[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bV[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bV[e]+"Width"))||0));return f}function cb(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0||d==null){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bQ.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+ca(a,b,c||(f?"border":"content"),e)+"px"}function cc(a){if(bS[a])return bS[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cA(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cv;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cA(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cA(a,c,d,e,"*",g)),h}function cB(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cC(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cD(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cL(){try{return new a.XMLHttpRequest}catch(b){}}function cM(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cU(){return setTimeout(function(){cN=b},0),cN=p.now()}function cV(a,b){p.each(b,function(b,c){var d=(cT[b]||[]).concat(cT["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cW(a,b,c){var d,e=0,f=0,g=cS.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cN||cU(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cN||cU(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cX(k,j.opts.specialEasing);for(;e<g;e++){d=cS[e].call(j,a,k,j.opts);if(d)return d}return cV(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cX(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cY(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bZ(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cc(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cP.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cZ(a,b,c,d,e){return new cZ.prototype.init(a,b,c,d,e)}function c$(a,b){var c,d={height:a},e=0;b=b?1:0;for(;e<4;e+=2-b)c=bV[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function da(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o&&!o.call(" ")?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":(a+"").replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete")setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){var e=p.type(c);e==="function"&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&e!=="string"&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")||(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)d=p._data(g[h],a+"queueHooks"),d&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,P=/\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)f.indexOf(" "+b[g]+" ")<0&&(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(O," ").indexOf(b)>=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=b+""}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,needsContext:f&&p.expr.match.needsContext.test(f),namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=k.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click"))for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){h={},j=[];for(d=0;d<q;d++)l=o[d],m=l.selector,h[m]===b&&(h[m]=l.needsContext?p(m,this).index(f)>=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){i=u[d],c.currentTarget=i.elem;for(e=0;e<i.matches.length&&!c.isImmediatePropagationStopped();e++){l=i.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,g=((p.event.special[l.origType]||{}).handle||l.handler).apply(i.elem,r),g!==b&&(c.result=g,g===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(b,"_change_attached",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,"._change"),!V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length===1?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h<i;h++)if(f=a[h])if(!c||c(f,d,e))g.push(f),j&&b.push(h);return g}function bl(a,b,c,d,e,f){return d&&!d[o]&&(d=bl(d)),e&&!e[o]&&(e=bl(e,f)),z(function(f,g,h,i){if(f&&e)return;var j,k,l,m=[],n=[],o=g.length,p=f||bo(b||"*",h.nodeType?[h]:h,[],f),q=a&&(f||!b)?bk(p,m,a,h,i):p,r=c?e||(f?a:o||d)?[]:g:q;c&&c(q,r,h,i);if(d){l=bk(r,n),d(l,[],h,i),j=l.length;while(j--)if(k=l[j])r[n[j]]=!(q[n[j]]=k)}if(f){j=a&&r.length;while(j--)if(k=r[j])f[m[j]]=!(g[m[j]]=k)}else r=bk(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):w.apply(g,r)})}function bm(a){var b,c,d,f=a.length,g=e.relative[a[0].type],h=g||e.relative[" "],i=g?1:0,j=bi(function(a){return a===b},h,!0),k=bi(function(a){return y.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i<f;i++)if(c=e.relative[a[i].type])m=[bi(bj(m),c)];else{c=e.filter[a[i].type].apply(null,a[i].matches);if(c[o]){d=++i;for(;d<f;d++)if(e.relative[a[d].type])break;return bl(i>1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i<d&&bm(a.slice(i,d)),d<f&&bm(a=a.slice(d)),d<f&&a.join(""))}m.push(c)}return bj(m)}function bn(a,b){var d=b.length>0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)bc(a,b[e],c,d);return c}function bp(a,b,c,d,f){var g,h,j,k,l,m=bh(a),n=m.length;if(!d&&m.length===1){h=m[0]=m[0].slice(0);if(h.length>2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;b<c;b++)if(this[b]===a)return b;return-1},z=function(a,b){return a[o]=b==null||b,a},A=function(){var a={},b=[];return z(function(c,d){return b.push(c)>e.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="<a name='"+o+"'></a><div name='"+o+"'></div>",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d<b;d+=2)a.push(d);return a}),odd:bf(function(a,b,c){for(var d=1;d<b;d+=2)a.push(d);return a}),lt:bf(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},j=s.compareDocumentPosition?function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,h=b.parentNode,i=g;if(g===h)return bg(a,b);if(!g)return-1;if(!h)return 1;while(i)e.unshift(i),i=i.parentNode;i=h;while(i)f.unshift(i),i=i.parentNode;c=e.length,d=f.length;for(var j=0;j<c&&j<d;j++)if(e[j]!==f[j])return bg(e[j],f[j]);return j===c?bg(a,f[j],-1):bg(e[j],b,1)},[0,0].sort(j),m=!k,bc.uniqueSort=function(a){var b,c=1;k=m,a.sort(j);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1);return a},bc.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},i=bc.compile=function(a,b){var c,d=[],e=[],f=D[o][a];if(!f){b||(b=bh(a)),c=b.length;while(c--)f=bm(b[c]),f[o]?d.push(f):e.push(f);f=D(a,bn(e,d))}return f},r.querySelectorAll&&function(){var a,b=bp,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[":focus"],f=[":active",":focus"],h=s.matchesSelector||s.mozMatchesSelector||s.webkitMatchesSelector||s.oMatchesSelector||s.msMatchesSelector;X(function(a){a.innerHTML="<select><option selected=''></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'/>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cT[c]=cT[c]||[],cT[c].unshift(b)},prefilter:function(a,b){b?cS.unshift(a):cS.push(a)}}),p.Tween=cZ,cZ.prototype={constructor:cZ,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cZ.propHooks[this.prop];return a&&a.get?a.get(this):cZ.propHooks._default.get(this)},run:function(a){var b,c=cZ.propHooks[this.prop];return this.options.duration?this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cZ.propHooks._default.set(this),this}},cZ.prototype.init.prototype=cZ.prototype,cZ.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cZ.propHooks.scrollTop=cZ.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(c$(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bZ).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cW(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cR.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:c$("show"),slideUp:c$("hide"),slideToggle:c$("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cZ.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cO&&(cO=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cO),cO=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c_=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j={top:0,left:0},k=this[0],l=k&&k.ownerDocument;if(!l)return;return(d=l.body)===k?p.offset.bodyOffset(k):(c=l.documentElement,p.contains(c,k)?(typeof k.getBoundingClientRect!="undefined"&&(j=k.getBoundingClientRect()),e=da(l),f=c.clientTop||d.clientTop||0,g=c.clientLeft||d.clientLeft||0,h=e.pageYOffset||c.scrollTop,i=e.pageXOffset||c.scrollLeft,{top:j.top+h-f,left:j.left+i-g}):j)},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=e.body||this.offsetParent;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
Source/platformProject/platform2022UI/jslib/jquery/jquery-migrate-1.4.1.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,752 @@
/*!
 * jQuery Migrate - v1.4.1 - 2016-05-19
 * Copyright jQuery Foundation and other contributors
 */
(function( jQuery, window, undefined ) {
// See http://bugs.jquery.com/ticket/13335
// "use strict";
jQuery.migrateVersion = "1.4.1";
var warnedAbout = {};
// List of warnings already given; public read only
jQuery.migrateWarnings = [];
// Set to true to prevent console output; migrateWarnings still maintained
// jQuery.migrateMute = false;
// Show a message on the console so devs know we're active
if ( window.console && window.console.log ) {
    window.console.log( "JQMIGRATE: Migrate is installed" +
        ( jQuery.migrateMute ? "" : " with logging active" ) +
        ", version " + jQuery.migrateVersion );
}
// Set to false to disable traces that appear with warnings
if ( jQuery.migrateTrace === undefined ) {
    jQuery.migrateTrace = true;
}
// Forget any warnings we've already given; public
jQuery.migrateReset = function() {
    warnedAbout = {};
    jQuery.migrateWarnings.length = 0;
};
function migrateWarn( msg) {
    var console = window.console;
    if ( !warnedAbout[ msg ] ) {
        warnedAbout[ msg ] = true;
        jQuery.migrateWarnings.push( msg );
        if ( console && console.warn && !jQuery.migrateMute ) {
            console.warn( "JQMIGRATE: " + msg );
            if ( jQuery.migrateTrace && console.trace ) {
                console.trace();
            }
        }
    }
}
function migrateWarnProp( obj, prop, value, msg ) {
    if ( Object.defineProperty ) {
        // On ES5 browsers (non-oldIE), warn if the code tries to get prop;
        // allow property to be overwritten in case some other plugin wants it
        try {
            Object.defineProperty( obj, prop, {
                configurable: true,
                enumerable: true,
                get: function() {
                    migrateWarn( msg );
                    return value;
                },
                set: function( newValue ) {
                    migrateWarn( msg );
                    value = newValue;
                }
            });
            return;
        } catch( err ) {
            // IE8 is a dope about Object.defineProperty, can't warn there
        }
    }
    // Non-ES5 (or broken) browser; just set the property
    jQuery._definePropertyBroken = true;
    obj[ prop ] = value;
}
if ( document.compatMode === "BackCompat" ) {
    // jQuery has never supported or tested Quirks Mode
    migrateWarn( "jQuery is not compatible with Quirks Mode" );
}
var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
    oldAttr = jQuery.attr,
    valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
        function() { return null; },
    valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
        function() { return undefined; },
    rnoType = /^(?:input|button)$/i,
    rnoAttrNodeType = /^[238]$/,
    rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
    ruseDefault = /^(?:checked|selected)$/i;
// jQuery.attrFn
migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
jQuery.attr = function( elem, name, value, pass ) {
    var lowerName = name.toLowerCase(),
        nType = elem && elem.nodeType;
    if ( pass ) {
        // Since pass is used internally, we only warn for new jQuery
        // versions where there isn't a pass arg in the formal params
        if ( oldAttr.length < 4 ) {
            migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
        }
        if ( elem && !rnoAttrNodeType.test( nType ) &&
            (attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
            return jQuery( elem )[ name ]( value );
        }
    }
    // Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
    // for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
    if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
        migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
    }
    // Restore boolHook for boolean property/attribute synchronization
    if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
        jQuery.attrHooks[ lowerName ] = {
            get: function( elem, name ) {
                // Align boolean attributes with corresponding properties
                // Fall back to attribute presence where some booleans are not supported
                var attrNode,
                    property = jQuery.prop( elem, name );
                return property === true || typeof property !== "boolean" &&
                    ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
                    name.toLowerCase() :
                    undefined;
            },
            set: function( elem, value, name ) {
                var propName;
                if ( value === false ) {
                    // Remove boolean attributes when set to false
                    jQuery.removeAttr( elem, name );
                } else {
                    // value is true since we know at this point it's type boolean and not false
                    // Set boolean attributes to the same name and set the DOM property
                    propName = jQuery.propFix[ name ] || name;
                    if ( propName in elem ) {
                        // Only set the IDL specifically if it already exists on the element
                        elem[ propName ] = true;
                    }
                    elem.setAttribute( name, name.toLowerCase() );
                }
                return name;
            }
        };
        // Warn only for attributes that can remain distinct from their properties post-1.9
        if ( ruseDefault.test( lowerName ) ) {
            migrateWarn( "jQuery.fn.attr('" + lowerName + "') might use property instead of attribute" );
        }
    }
    return oldAttr.call( jQuery, elem, name, value );
};
// attrHooks: value
jQuery.attrHooks.value = {
    get: function( elem, name ) {
        var nodeName = ( elem.nodeName || "" ).toLowerCase();
        if ( nodeName === "button" ) {
            return valueAttrGet.apply( this, arguments );
        }
        if ( nodeName !== "input" && nodeName !== "option" ) {
            migrateWarn("jQuery.fn.attr('value') no longer gets properties");
        }
        return name in elem ?
            elem.value :
            null;
    },
    set: function( elem, value ) {
        var nodeName = ( elem.nodeName || "" ).toLowerCase();
        if ( nodeName === "button" ) {
            return valueAttrSet.apply( this, arguments );
        }
        if ( nodeName !== "input" && nodeName !== "option" ) {
            migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
        }
        // Does not return so that setAttribute is also used
        elem.value = value;
    }
};
var matched, browser,
    oldInit = jQuery.fn.init,
    oldFind = jQuery.find,
    oldParseJSON = jQuery.parseJSON,
    rspaceAngle = /^\s*</,
    rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
    rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,
    // Note: XSS check is done below after string is trimmed
    rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
// $(html) "looks like html" rule change
jQuery.fn.init = function( selector, context, rootjQuery ) {
    var match, ret;
    if ( selector && typeof selector === "string" ) {
        if ( !jQuery.isPlainObject( context ) &&
                (match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {
            // This is an HTML string according to the "old" rules; is it still?
            if ( !rspaceAngle.test( selector ) ) {
                migrateWarn("$(html) HTML strings must start with '<' character");
            }
            if ( match[ 3 ] ) {
                migrateWarn("$(html) HTML text after last tag is ignored");
            }
            // Consistently reject any HTML-like string starting with a hash (gh-9521)
            // Note that this may break jQuery 1.6.x code that otherwise would work.
            if ( match[ 0 ].charAt( 0 ) === "#" ) {
                migrateWarn("HTML string cannot start with a '#' character");
                jQuery.error("JQMIGRATE: Invalid selector string (XSS)");
            }
            // Now process using loose rules; let pre-1.8 play too
            // Is this a jQuery context? parseHTML expects a DOM element (#178)
            if ( context && context.context && context.context.nodeType ) {
                context = context.context;
            }
            if ( jQuery.parseHTML ) {
                return oldInit.call( this,
                        jQuery.parseHTML( match[ 2 ], context && context.ownerDocument ||
                            context || document, true ), context, rootjQuery );
            }
        }
    }
    ret = oldInit.apply( this, arguments );
    // Fill in selector and context properties so .live() works
    if ( selector && selector.selector !== undefined ) {
        // A jQuery object, copy its properties
        ret.selector = selector.selector;
        ret.context = selector.context;
    } else {
        ret.selector = typeof selector === "string" ? selector : "";
        if ( selector ) {
            ret.context = selector.nodeType? selector : context || document;
        }
    }
    return ret;
};
jQuery.fn.init.prototype = jQuery.fn;
jQuery.find = function( selector ) {
    var args = Array.prototype.slice.call( arguments );
    // Support: PhantomJS 1.x
    // String#match fails to match when used with a //g RegExp, only on some strings
    if ( typeof selector === "string" && rattrHashTest.test( selector ) ) {
        // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0
        // First see if qS thinks it's a valid selector, if so avoid a false positive
        try {
            document.querySelector( selector );
        } catch ( err1 ) {
            // Didn't *look* valid to qSA, warn and try quoting what we think is the value
            selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {
                return "[" + attr + op + "\"" + value + "\"]";
            } );
            // If the regexp *may* have created an invalid selector, don't update it
            // Note that there may be false alarms if selector uses jQuery extensions
            try {
                document.querySelector( selector );
                migrateWarn( "Attribute selector with '#' must be quoted: " + args[ 0 ] );
                args[ 0 ] = selector;
            } catch ( err2 ) {
                migrateWarn( "Attribute selector with '#' was not fixed: " + args[ 0 ] );
            }
        }
    }
    return oldFind.apply( this, args );
};
// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)
var findProp;
for ( findProp in oldFind ) {
    if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {
        jQuery.find[ findProp ] = oldFind[ findProp ];
    }
}
// Let $.parseJSON(falsy_value) return null
jQuery.parseJSON = function( json ) {
    if ( !json ) {
        migrateWarn("jQuery.parseJSON requires a valid JSON string");
        return null;
    }
    return oldParseJSON.apply( this, arguments );
};
jQuery.uaMatch = function( ua ) {
    ua = ua.toLowerCase();
    var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
        /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
        /(msie) ([\w.]+)/.exec( ua ) ||
        ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
        [];
    return {
        browser: match[ 1 ] || "",
        version: match[ 2 ] || "0"
    };
};
// Don't clobber any existing jQuery.browser in case it's different
if ( !jQuery.browser ) {
    matched = jQuery.uaMatch( navigator.userAgent );
    browser = {};
    if ( matched.browser ) {
        browser[ matched.browser ] = true;
        browser.version = matched.version;
    }
    // Chrome is Webkit, but Webkit is also Safari.
    if ( browser.chrome ) {
        browser.webkit = true;
    } else if ( browser.webkit ) {
        browser.safari = true;
    }
    jQuery.browser = browser;
}
// Warn if the code tries to get jQuery.browser
migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
// jQuery.boxModel deprecated in 1.3, jQuery.support.boxModel deprecated in 1.7
jQuery.boxModel = jQuery.support.boxModel = (document.compatMode === "CSS1Compat");
migrateWarnProp( jQuery, "boxModel", jQuery.boxModel, "jQuery.boxModel is deprecated" );
migrateWarnProp( jQuery.support, "boxModel", jQuery.support.boxModel, "jQuery.support.boxModel is deprecated" );
jQuery.sub = function() {
    function jQuerySub( selector, context ) {
        return new jQuerySub.fn.init( selector, context );
    }
    jQuery.extend( true, jQuerySub, this );
    jQuerySub.superclass = this;
    jQuerySub.fn = jQuerySub.prototype = this();
    jQuerySub.fn.constructor = jQuerySub;
    jQuerySub.sub = this.sub;
    jQuerySub.fn.init = function init( selector, context ) {
        var instance = jQuery.fn.init.call( this, selector, context, rootjQuerySub );
        return instance instanceof jQuerySub ?
            instance :
            jQuerySub( instance );
    };
    jQuerySub.fn.init.prototype = jQuerySub.fn;
    var rootjQuerySub = jQuerySub(document);
    migrateWarn( "jQuery.sub() is deprecated" );
    return jQuerySub;
};
// The number of elements contained in the matched element set
jQuery.fn.size = function() {
    migrateWarn( "jQuery.fn.size() is deprecated; use the .length property" );
    return this.length;
};
var internalSwapCall = false;
// If this version of jQuery has .swap(), don't false-alarm on internal uses
if ( jQuery.swap ) {
    jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) {
        var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get;
        if ( oldHook ) {
            jQuery.cssHooks[ name ].get = function() {
                var ret;
                internalSwapCall = true;
                ret = oldHook.apply( this, arguments );
                internalSwapCall = false;
                return ret;
            };
        }
    });
}
jQuery.swap = function( elem, options, callback, args ) {
    var ret, name,
        old = {};
    if ( !internalSwapCall ) {
        migrateWarn( "jQuery.swap() is undocumented and deprecated" );
    }
    // Remember the old values, and insert the new ones
    for ( name in options ) {
        old[ name ] = elem.style[ name ];
        elem.style[ name ] = options[ name ];
    }
    ret = callback.apply( elem, args || [] );
    // Revert the old values
    for ( name in options ) {
        elem.style[ name ] = old[ name ];
    }
    return ret;
};
// Ensure that $.ajax gets the new parseJSON defined in core.js
jQuery.ajaxSetup({
    converters: {
        "text json": jQuery.parseJSON
    }
});
var oldFnData = jQuery.fn.data;
jQuery.fn.data = function( name ) {
    var ret, evt,
        elem = this[0];
    // Handles 1.7 which has this behavior and 1.8 which doesn't
    if ( elem && name === "events" && arguments.length === 1 ) {
        ret = jQuery.data( elem, name );
        evt = jQuery._data( elem, name );
        if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
            migrateWarn("Use of jQuery.fn.data('events') is deprecated");
            return evt;
        }
    }
    return oldFnData.apply( this, arguments );
};
var rscriptType = /\/(java|ecma)script/i;
// Since jQuery.clean is used internally on older versions, we only shim if it's missing
if ( !jQuery.clean ) {
    jQuery.clean = function( elems, context, fragment, scripts ) {
        // Set context per 1.8 logic
        context = context || document;
        context = !context.nodeType && context[0] || context;
        context = context.ownerDocument || context;
        migrateWarn("jQuery.clean() is deprecated");
        var i, elem, handleScript, jsTags,
            ret = [];
        jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
        // Complex logic lifted directly from jQuery 1.8
        if ( fragment ) {
            // Special handling of each script element
            handleScript = function( elem ) {
                // Check if we consider it executable
                if ( !elem.type || rscriptType.test( elem.type ) ) {
                    // Detach the script and store it in the scripts array (if provided) or the fragment
                    // Return truthy to indicate that it has been handled
                    return scripts ?
                        scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
                        fragment.appendChild( elem );
                }
            };
            for ( i = 0; (elem = ret[i]) != null; i++ ) {
                // Check if we're done after handling an executable script
                if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
                    // Append to fragment and handle embedded scripts
                    fragment.appendChild( elem );
                    if ( typeof elem.getElementsByTagName !== "undefined" ) {
                        // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
                        jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
                        // Splice the scripts into ret after their former ancestor and advance our index beyond them
                        ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
                        i += jsTags.length;
                    }
                }
            }
        }
        return ret;
    };
}
var eventAdd = jQuery.event.add,
    eventRemove = jQuery.event.remove,
    eventTrigger = jQuery.event.trigger,
    oldToggle = jQuery.fn.toggle,
    oldLive = jQuery.fn.live,
    oldDie = jQuery.fn.die,
    oldLoad = jQuery.fn.load,
    ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
    rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
    rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
    hoverHack = function( events ) {
        if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
            return events;
        }
        if ( rhoverHack.test( events ) ) {
            migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
        }
        return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
    };
// Event props removed in 1.9, put them back if needed; no practical way to warn them
if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
    jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
}
// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
if ( jQuery.event.dispatch ) {
    migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
}
// Support for 'hover' pseudo-event and ajax event warnings
jQuery.event.add = function( elem, types, handler, data, selector ){
    if ( elem !== document && rajaxEvent.test( types ) ) {
        migrateWarn( "AJAX events should be attached to document: " + types );
    }
    eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
};
jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
    eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
};
jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
    jQuery.fn[ name ] = function() {
        var args = Array.prototype.slice.call( arguments, 0 );
        // If this is an ajax load() the first arg should be the string URL;
        // technically this could also be the "Anything" arg of the event .load()
        // which just goes to show why this dumb signature has been deprecated!
        // jQuery custom builds that exclude the Ajax module justifiably die here.
        if ( name === "load" && typeof args[ 0 ] === "string" ) {
            return oldLoad.apply( this, args );
        }
        migrateWarn( "jQuery.fn." + name + "() is deprecated" );
        args.splice( 0, 0, name );
        if ( arguments.length ) {
            return this.bind.apply( this, args );
        }
        // Use .triggerHandler here because:
        // - load and unload events don't need to bubble, only applied to window or image
        // - error event should not bubble to window, although it does pre-1.7
        // See http://bugs.jquery.com/ticket/11820
        this.triggerHandler.apply( this, args );
        return this;
    };
});
jQuery.fn.toggle = function( fn, fn2 ) {
    // Don't mess with animation or css toggles
    if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
        return oldToggle.apply( this, arguments );
    }
    migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
    // Save reference to arguments for access in closure
    var args = arguments,
        guid = fn.guid || jQuery.guid++,
        i = 0,
        toggler = function( event ) {
            // Figure out which function to execute
            var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
            jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
            // Make sure that clicks stop
            event.preventDefault();
            // and execute the function
            return args[ lastToggle ].apply( this, arguments ) || false;
        };
    // link all the functions, so any of them can unbind this click handler
    toggler.guid = guid;
    while ( i < args.length ) {
        args[ i++ ].guid = guid;
    }
    return this.click( toggler );
};
jQuery.fn.live = function( types, data, fn ) {
    migrateWarn("jQuery.fn.live() is deprecated");
    if ( oldLive ) {
        return oldLive.apply( this, arguments );
    }
    jQuery( this.context ).on( types, this.selector, data, fn );
    return this;
};
jQuery.fn.die = function( types, fn ) {
    migrateWarn("jQuery.fn.die() is deprecated");
    if ( oldDie ) {
        return oldDie.apply( this, arguments );
    }
    jQuery( this.context ).off( types, this.selector || "**", fn );
    return this;
};
// Turn global events into document-triggered events
jQuery.event.trigger = function( event, data, elem, onlyHandlers  ){
    if ( !elem && !rajaxEvent.test( event ) ) {
        migrateWarn( "Global events are undocumented and deprecated" );
    }
    return eventTrigger.call( this,  event, data, elem || document, onlyHandlers  );
};
jQuery.each( ajaxEvents.split("|"),
    function( _, name ) {
        jQuery.event.special[ name ] = {
            setup: function() {
                var elem = this;
                // The document needs no shimming; must be !== for oldIE
                if ( elem !== document ) {
                    jQuery.event.add( document, name + "." + jQuery.guid, function() {
                        jQuery.event.trigger( name, Array.prototype.slice.call( arguments, 1 ), elem, true );
                    });
                    jQuery._data( this, name, jQuery.guid++ );
                }
                return false;
            },
            teardown: function() {
                if ( this !== document ) {
                    jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
                }
                return false;
            }
        };
    }
);
jQuery.event.special.ready = {
    setup: function() {
        if ( this === document ) {
            migrateWarn( "'ready' event is deprecated" );
        }
    }
};
var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack,
    oldFnFind = jQuery.fn.find;
jQuery.fn.andSelf = function() {
    migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
    return oldSelf.apply( this, arguments );
};
jQuery.fn.find = function( selector ) {
    var ret = oldFnFind.apply( this, arguments );
    ret.context = this.context;
    ret.selector = this.selector ? this.selector + " " + selector : selector;
    return ret;
};
// jQuery 1.6 did not support Callbacks, do not warn there
if ( jQuery.Callbacks ) {
    var oldDeferred = jQuery.Deferred,
        tuples = [
            // action, add listener, callbacks, .then handlers, final state
            [ "resolve", "done", jQuery.Callbacks("once memory"),
                jQuery.Callbacks("once memory"), "resolved" ],
            [ "reject", "fail", jQuery.Callbacks("once memory"),
                jQuery.Callbacks("once memory"), "rejected" ],
            [ "notify", "progress", jQuery.Callbacks("memory"),
                jQuery.Callbacks("memory") ]
        ];
    jQuery.Deferred = function( func ) {
        var deferred = oldDeferred(),
            promise = deferred.promise();
        deferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) {
            var fns = arguments;
            migrateWarn( "deferred.pipe() is deprecated" );
            return jQuery.Deferred(function( newDefer ) {
                jQuery.each( tuples, function( i, tuple ) {
                    var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
                    // deferred.done(function() { bind to newDefer or newDefer.resolve })
                    // deferred.fail(function() { bind to newDefer or newDefer.reject })
                    // deferred.progress(function() { bind to newDefer or newDefer.notify })
                    deferred[ tuple[1] ](function() {
                        var returned = fn && fn.apply( this, arguments );
                        if ( returned && jQuery.isFunction( returned.promise ) ) {
                            returned.promise()
                                .done( newDefer.resolve )
                                .fail( newDefer.reject )
                                .progress( newDefer.notify );
                        } else {
                            newDefer[ tuple[ 0 ] + "With" ](
                                this === promise ? newDefer.promise() : this,
                                fn ? [ returned ] : arguments
                            );
                        }
                    });
                });
                fns = null;
            }).promise();
        };
        deferred.isResolved = function() {
            migrateWarn( "deferred.isResolved is deprecated" );
            return deferred.state() === "resolved";
        };
        deferred.isRejected = function() {
            migrateWarn( "deferred.isRejected is deprecated" );
            return deferred.state() === "rejected";
        };
        if ( func ) {
            func.call( deferred, deferred );
        }
        return deferred;
    };
}
})( jQuery, window );
Source/platformProject/platform2022UI/jslib/jquery/jquery.cookie.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
/*!
 * jQuery Cookie Plugin v1.4.1
 * https://github.com/carhartl/jquery-cookie
 *
 * Copyright 2013 Klaus Hartl
 * Released under the MIT license
 */
(function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD
        define(['jquery'], factory);
    } else if (typeof exports === 'object') {
        // CommonJS
        factory(require('jquery'));
    } else {
        // Browser globals
        factory(jQuery);
    }
}(function ($) {
    var pluses = /\+/g;
    function encode(s) {
        return config.raw ? s : encodeURIComponent(s);
    }
    function decode(s) {
        return config.raw ? s : decodeURIComponent(s);
    }
    function stringifyCookieValue(value) {
        return encode(config.json ? JSON.stringify(value) : String(value));
    }
    function parseCookieValue(s) {
        if (s.indexOf('"') === 0) {
            // This is a quoted cookie as according to RFC2068, unescape...
            s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
        }
        try {
            // Replace server-side written pluses with spaces.
            // If we can't decode the cookie, ignore it, it's unusable.
            // If we can't parse the cookie, ignore it, it's unusable.
            s = decodeURIComponent(s.replace(pluses, ' '));
            return config.json ? JSON.parse(s) : s;
        } catch(e) {}
    }
    function read(s, converter) {
        var value = config.raw ? s : parseCookieValue(s);
        return $.isFunction(converter) ? converter(value) : value;
    }
    var config = $.cookie = function (key, value, options) {
        // Write
        if (value !== undefined && !$.isFunction(value)) {
            options = $.extend({}, config.defaults, options);
            if (typeof options.expires === 'number') {
                var days = options.expires, t = options.expires = new Date();
                t.setTime(+t + days * 864e+5);
            }
            return (document.cookie = [
                encode(key), '=', stringifyCookieValue(value),
                options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
                options.path    ? '; path=' + options.path : '',
                options.domain  ? '; domain=' + options.domain : '',
                options.secure  ? '; secure' : ''
            ].join(''));
        }
        // Read
        var result = key ? undefined : {};
        // To prevent the for loop in the first place assign an empty array
        // in case there are no cookies at all. Also prevents odd result when
        // calling $.cookie().
        var cookies = document.cookie ? document.cookie.split('; ') : [];
        for (var i = 0, l = cookies.length; i < l; i++) {
            var parts = cookies[i].split('=');
            var name = decode(parts.shift());
            var cookie = parts.join('=');
            if (key && key === name) {
                // If second argument (value) is a function it's a converter...
                result = read(cookie, value);
                break;
            }
            // Prevent storing a cookie that we couldn't decode.
            if (!key && (cookie = read(cookie)) !== undefined) {
                result[name] = cookie;
            }
        }
        return result;
    };
    config.defaults = {};
    $.removeCookie = function (key, options) {
        if ($.cookie(key) === undefined) {
            return false;
        }
        // Must not alter options, thus extending a fresh object...
        $.cookie(key, '', $.extend({}, options, { expires: -1 }));
        return !$.cookie(key);
    };
}));
Source/platformProject/platform2022UI/jslib/jquery/jquery.easyui.min.js
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
Source/platformProject/platform2022UI/jslib/jquery/jquery.fileDownload.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,495 @@
/*
* jQuery File Download Plugin v1.4.5
*
* http://www.johnculviner.com
*
* Copyright (c) 2013 - John Culviner
*
* Licensed under the MIT license:
*   http://www.opensource.org/licenses/mit-license.php
*
* !!!!NOTE!!!!
* You must also write a cookie in conjunction with using this plugin in the server's response headers containing the file download:
* Set-Cookie: fileDownload=true; path=/"
* !!!!NOTE!!!!
*/
(function($, window){
    // i'll just put them here to get evaluated on script load
    var htmlSpecialCharsRegEx = /[<>&\r\n"']/gm;
    var htmlSpecialCharsPlaceHolders = {
        '<': 'lt;',
        '>': 'gt;',
        '&': 'amp;',
        '\r': "#13;",
        '\n': "#10;",
        '"': 'quot;',
        "'": '#39;' /*single quotes just to be safe, IE8 doesn't support &apos;, so use &#39; instead */
    };
    $.extend({
        //
        //$.fileDownload('/path/to/url/', options)
        //  see directly below for possible 'options'
        fileDownload: function (fileUrl, options) {
            //provide some reasonable defaults to any unspecified options below
            var settings = $.extend({
                //
                //Requires jQuery UI: provide a message to display to the user when the file download is being prepared before the browser's dialog appears
                //
                preparingMessageHtml: null,
                //
                //Requires jQuery UI: provide a message to display to the user when a file download fails
                //
                failMessageHtml: null,
                //
                //the stock android browser straight up doesn't support file downloads initiated by a non GET: http://code.google.com/p/android/issues/detail?id=1780
                //specify a message here to display if a user tries with an android browser
                //if jQuery UI is installed this will be a dialog, otherwise it will be an alert
                //Set to null to disable the message and attempt to download anyway
                //
                androidPostUnsupportedMessageHtml: "Unfortunately your Android browser doesn't support this type of file download. Please try again with a different browser.",
                //
                //Requires jQuery UI: options to pass into jQuery UI Dialog
                //
                dialogOptions: { modal: true },
                //
                //a function to call while the dowload is being prepared before the browser's dialog appears
                //Args:
                //  url - the original url attempted
                //
                prepareCallback: function (url) { },
                //
                //a function to call after a file download successfully completed
                //Args:
                //  url - the original url attempted
                //
                successCallback: function (url) { },
                //
                //a function to call after a file download request was canceled
                //Args:
                //  url - the original url attempted
                //
                abortCallback: function (url) { },
                //
                //a function to call after a file download failed
                //Args:
                //  responseHtml    - the html that came back in response to the file download. this won't necessarily come back depending on the browser.
                //                      in less than IE9 a cross domain error occurs because 500+ errors cause a cross domain issue due to IE subbing out the
                //                      server's error message with a "helpful" IE built in message
                //  url             - the original url attempted
                //  error           - original error cautch from exception
                //
                failCallback: function (responseHtml, url, error) { },
                //
                // the HTTP method to use. Defaults to "GET".
                //
                httpMethod: "GET",
                //
                // if specified will perform a "httpMethod" request to the specified 'fileUrl' using the specified data.
                // data must be an object (which will be $.param serialized) or already a key=value param string
                //
                data: null,
                //
                //a period in milliseconds to poll to determine if a successful file download has occured or not
                //
                checkInterval: 100,
                //
                //the cookie name to indicate if a file download has occured
                //
                cookieName: "fileDownload",
                //
                //the cookie value for the above name to indicate that a file download has occured
                //
                cookieValue: "true",
                //
                //the cookie path for above name value pair
                //
                cookiePath: "/",
                //
                //if specified it will be used when attempting to clear the above name value pair
                //useful for when downloads are being served on a subdomain (e.g. downloads.example.com)
                //
                cookieDomain: null,
                //
                //the title for the popup second window as a download is processing in the case of a mobile browser
                //
                popupWindowTitle: "Initiating file download...",
                //
                //Functionality to encode HTML entities for a POST, need this if data is an object with properties whose values contains strings with quotation marks.
                //HTML entity encoding is done by replacing all &,<,>,',",\r,\n characters.
                //Note that some browsers will POST the string htmlentity-encoded whilst others will decode it before POSTing.
                //It is recommended that on the server, htmlentity decoding is done irrespective.
                //
                encodeHTMLEntities: true
            }, options);
            var deferred = new $.Deferred();
            //Setup mobile browser detection: Partial credit: http://detectmobilebrowser.com/
            var userAgent = (navigator.userAgent || navigator.vendor || window.opera).toLowerCase();
            var isIos;                  //has full support of features in iOS 4.0+, uses a new window to accomplish this.
            var isAndroid;              //has full support of GET features in 4.0+ by using a new window. Non-GET is completely unsupported by the browser. See above for specifying a message.
            var isOtherMobileBrowser;   //there is no way to reliably guess here so all other mobile devices will GET and POST to the current window.
            if (/ip(ad|hone|od)/.test(userAgent)) {
                isIos = true;
            } else if (userAgent.indexOf('android') !== -1) {
                isAndroid = true;
            } else {
                isOtherMobileBrowser = /avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|playbook|silk|iemobile|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(userAgent) || /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|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|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|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(userAgent.substr(0, 4));
            }
            var httpMethodUpper = settings.httpMethod.toUpperCase();
            if (isAndroid && httpMethodUpper !== "GET" && settings.androidPostUnsupportedMessageHtml) {
                //the stock android browser straight up doesn't support file downloads initiated by non GET requests: http://code.google.com/p/android/issues/detail?id=1780
                if ($().dialog) {
                    $("<div>").html(settings.androidPostUnsupportedMessageHtml).dialog(settings.dialogOptions);
                } else {
                    alert(settings.androidPostUnsupportedMessageHtml);
                }
                return deferred.reject();
            }
            var $preparingDialog = null;
            var internalCallbacks = {
                onPrepare: function (url) {
                    //wire up a jquery dialog to display the preparing message if specified
                    if (settings.preparingMessageHtml) {
                        $preparingDialog = $("<div>").html(settings.preparingMessageHtml).dialog(settings.dialogOptions);
                    } else if (settings.prepareCallback) {
                        settings.prepareCallback(url);
                    }
                },
                onSuccess: function (url) {
                    //remove the perparing message if it was specified
                    if ($preparingDialog) {
                        $preparingDialog.dialog('close');
                    }
                    settings.successCallback(url);
                    deferred.resolve(url);
                },
                onAbort: function (url) {
                    //remove the perparing message if it was specified
                    if ($preparingDialog) {
                        $preparingDialog.dialog('close');
                    };
                    settings.abortCallback(url);
                    deferred.reject(url);
                },
                onFail: function (responseHtml, url, error) {
                    //remove the perparing message if it was specified
                    if ($preparingDialog) {
                        $preparingDialog.dialog('close');
                    }
                    //wire up a jquery dialog to display the fail message if specified
                    if (settings.failMessageHtml) {
                        $("<div>").html(settings.failMessageHtml).dialog(settings.dialogOptions);
                    }
                    settings.failCallback(responseHtml, url, error);
                    deferred.reject(responseHtml, url);
                }
            };
            internalCallbacks.onPrepare(fileUrl);
            //make settings.data a param string if it exists and isn't already
            if (settings.data !== null && typeof settings.data !== "string") {
                settings.data = $.param(settings.data);
            }
            var $iframe,
                downloadWindow,
                formDoc,
                $form;
            if (httpMethodUpper === "GET") {
                if (settings.data !== null) {
                    //need to merge any fileUrl params with the data object
                    var qsStart = fileUrl.indexOf('?');
                    if (qsStart !== -1) {
                        //we have a querystring in the url
                        if (fileUrl.substring(fileUrl.length - 1) !== "&") {
                            fileUrl = fileUrl + "&";
                        }
                    } else {
                        fileUrl = fileUrl + "?";
                    }
                    fileUrl = fileUrl + settings.data;
                }
                if (isIos || isAndroid) {
                    downloadWindow = window.open(fileUrl);
                    downloadWindow.document.title = settings.popupWindowTitle;
                    window.focus();
                } else if (isOtherMobileBrowser) {
                    window.location(fileUrl);
                } else {
                    //create a temporary iframe that is used to request the fileUrl as a GET request
                    $iframe = $("<iframe style='display: none' src='"+fileUrl+"'></iframe>").appendTo("body");
                }
            } else {
                var formInnerHtml = "";
                if (settings.data !== null) {
                    $.each(settings.data.replace(/\+/g, ' ').split("&"), function () {
                        var kvp = this.split("=");
                        //Issue: When value contains sign '=' then the kvp array does have more than 2 items. We have to join value back
                        var k = kvp[0];
                        kvp.shift();
                        var v = kvp.join("=");
                        kvp = [k, v];
                        var key = settings.encodeHTMLEntities ? htmlSpecialCharsEntityEncode(decodeURIComponent(kvp[0])) : decodeURIComponent(kvp[0]);
                        if (key) {
                            var value = settings.encodeHTMLEntities ? htmlSpecialCharsEntityEncode(decodeURIComponent(kvp[1])) : decodeURIComponent(kvp[1]);
                            formInnerHtml += '<input type="hidden" name="' + key + '" value="' + value + '" />';
                        }
                    });
                }
                if (isOtherMobileBrowser) {
                    $form = $("<form>").appendTo("body");
                    $form.hide()
                        .prop('method', settings.httpMethod)
                        .prop('action', fileUrl)
                        .html(formInnerHtml);
                } else {
                    if (isIos) {
                        downloadWindow = window.open("about:blank");
                        downloadWindow.document.title = settings.popupWindowTitle;
                        formDoc = downloadWindow.document;
                        window.focus();
                    } else {
                        $iframe = $("<iframe style='display: none' src='about:blank'></iframe>").appendTo("body");
                        formDoc = getiframeDocument($iframe);
                    }
                    formDoc.write("<html><head></head><body><form method='" + settings.httpMethod + "' action='" + fileUrl + "'>" + formInnerHtml + "</form>" + settings.popupWindowTitle + "</body></html>");
                    $form = $(formDoc).find('form');
                }
                $form.submit();
            }
            //check if the file download has completed every checkInterval ms
            setTimeout(checkFileDownloadComplete, settings.checkInterval);
            function checkFileDownloadComplete() {
                //has the cookie been written due to a file download occuring?
                var cookieValue = settings.cookieValue;
                if(typeof cookieValue == 'string') {
                    cookieValue = cookieValue.toLowerCase();
                }
                var lowerCaseCookie = settings.cookieName.toLowerCase() + "=" + cookieValue;
                if (document.cookie.toLowerCase().indexOf(lowerCaseCookie) > -1) {
                    //execute specified callback
                    internalCallbacks.onSuccess(fileUrl);
                    //remove cookie
                    var cookieData = settings.cookieName + "=; path=" + settings.cookiePath + "; expires=" + new Date(0).toUTCString() + ";";
                    if (settings.cookieDomain) cookieData += " domain=" + settings.cookieDomain + ";";
                    document.cookie = cookieData;
                    //remove iframe
                    cleanUp(false);
                    return;
                }
                //has an error occured?
                //if neither containers exist below then the file download is occuring on the current window
                if (downloadWindow || $iframe) {
                    //has an error occured?
                    try {
                        var formDoc = downloadWindow ? downloadWindow.document : getiframeDocument($iframe);
                        if (formDoc && formDoc.body !== null && formDoc.body.innerHTML.length) {
                            var isFailure = true;
                            if ($form && $form.length) {
                                var $contents = $(formDoc.body).contents().first();
                                try {
                                    if ($contents.length && $contents[0] === $form[0]) {
                                        isFailure = false;
                                    }
                                } catch (e) {
                                    if (e && e.number == -2146828218) {
                                        // IE 8-10 throw a permission denied after the form reloads on the "$contents[0] === $form[0]" comparison
                                        isFailure = true;
                                    } else {
                                        throw e;
                                    }
                                }
                            }
                            if (isFailure) {
                                // IE 8-10 don't always have the full content available right away, they need a litle bit to finish
                                setTimeout(function () {
                                    internalCallbacks.onFail(formDoc.body.innerHTML, fileUrl);
                                    cleanUp(true);
                                }, 100);
                                return;
                            }
                        }
                    }
                    catch (err) {
                        //500 error less than IE9
                        internalCallbacks.onFail('', fileUrl, err);
                        cleanUp(true);
                        return;
                    }
                }
                //keep checking...
                setTimeout(checkFileDownloadComplete, settings.checkInterval);
            }
            //gets an iframes document in a cross browser compatible manner
            function getiframeDocument($iframe) {
                try{
                    var iframeDoc = $iframe[0].contentWindow || $iframe[0].contentDocument;
                    if (iframeDoc.document) {
                        iframeDoc = iframeDoc.document;
                    }
                    return iframeDoc;
                }catch(e){
                    //可能是跨域
                    return null;
                }
            }
            function cleanUp(isFailure) {
                setTimeout(function() {
                    if (downloadWindow) {
                        if (isAndroid) {
                            downloadWindow.close();
                        }
                        if (isIos) {
                            if (downloadWindow.focus) {
                                downloadWindow.focus(); //ios safari bug doesn't allow a window to be closed unless it is focused
                                if (isFailure) {
                                    downloadWindow.close();
                                }
                            }
                        }
                    }
                    //iframe cleanup appears to randomly cause the download to fail
                    //not doing it seems better than failure...
                    //if ($iframe) {
                    //    $iframe.remove();
                    //}
                }, 0);
            }
            function htmlSpecialCharsEntityEncode(str) {
                return str.replace(htmlSpecialCharsRegEx, function(match) {
                    return '&' + htmlSpecialCharsPlaceHolders[match];
                });
            }
            var promise = deferred.promise();
            promise.abort = function() {
                cleanUp();
                $iframe.attr('src', '').html('');
                internalCallbacks.onAbort(fileUrl);
            };
            return promise;
        }
    });
})(jQuery, this || window);
Source/platformProject/platform2022UI/jslib/jquery/jquery.layout.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,530 @@
/**
 * EasyUI for jQuery 1.10.1
 *
 * Copyright (c) 2009-2021 www.jeasyui.com. All rights reserved.
 *
 * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
 * To use it on other terms please contact us: info@jeasyui.com
 *
 */
(function($){
var _1=false;
function _2(_3,_4){
var _5=$.data(_3,"layout");
var _6=_5.options;
var _7=_5.panels;
var cc=$(_3);
if(_4){
$.extend(_6,{width:_4.width,height:_4.height});
}
if(_3.tagName.toLowerCase()=="body"){
cc._size("fit");
}else{
cc._size(_6);
}
var _8={top:0,left:0,width:cc.width(),height:cc.height()};
_9(_a(_7.expandNorth)?_7.expandNorth:_7.north,"n");
_9(_a(_7.expandSouth)?_7.expandSouth:_7.south,"s");
_b(_a(_7.expandEast)?_7.expandEast:_7.east,"e");
_b(_a(_7.expandWest)?_7.expandWest:_7.west,"w");
_7.center.panel("resize",_8);
function _9(pp,_c){
if(!pp.length||!_a(pp)){
return;
}
var _d=pp.panel("options");
pp.panel("resize",{width:cc.width(),height:_d.height});
var _e=pp.panel("panel").outerHeight();
pp.panel("move",{left:0,top:(_c=="n"?0:cc.height()-_e)});
_8.height-=_e;
if(_c=="n"){
_8.top+=_e;
if(!_d.split&&_d.border){
_8.top--;
}
}
if(!_d.split&&_d.border){
_8.height++;
}
};
function _b(pp,_f){
if(!pp.length||!_a(pp)){
return;
}
var _10=pp.panel("options");
pp.panel("resize",{width:_10.width,height:_8.height});
var _11=pp.panel("panel").outerWidth();
pp.panel("move",{left:(_f=="e"?cc.width()-_11:0),top:_8.top});
_8.width-=_11;
if(_f=="w"){
_8.left+=_11;
if(!_10.split&&_10.border){
_8.left--;
}
}
if(!_10.split&&_10.border){
_8.width++;
}
};
};
function _12(_13){
var cc=$(_13);
cc.addClass("layout");
function _14(el){
var _15=$.fn.layout.parsePanelOptions(el);
if("north,south,east,west,center".indexOf(_15.region)>=0){
_19(_13,_15,el);
}
};
var _16=cc.layout("options");
var _17=_16.onAdd;
_16.onAdd=function(){
};
cc.find(">div,>form>div").each(function(){
_14(this);
});
_16.onAdd=_17;
cc.append("<div class=\"layout-split-proxy-h\"></div><div class=\"layout-split-proxy-v\"></div>");
cc._bind("_resize",function(e,_18){
if($(this).hasClass("easyui-fluid")||_18){
_2(_13);
}
return false;
});
};
function _19(_1a,_1b,el){
_1b.region=_1b.region||"center";
var _1c=$.data(_1a,"layout").panels;
var cc=$(_1a);
var dir=_1b.region;
if(_1c[dir].length){
return;
}
var pp=$(el);
if(!pp.length){
pp=$("<div></div>").appendTo(cc);
}
var _1d=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,onOpen:function(){
var _1e=$(this).panel("header").children("div.panel-tool");
_1e.children("a.panel-tool-collapse").hide();
var _1f={north:"up",south:"down",east:"right",west:"left"};
if(!_1f[dir]){
return;
}
var _20="layout-button-"+_1f[dir];
var t=_1e.children("a."+_20);
if(!t.length){
t=$("<a href=\"javascript:;\"></a>").addClass(_20).appendTo(_1e);
t._bind("click",{dir:dir},function(e){
_39(_1a,e.data.dir);
return false;
});
}
$(this).panel("options").collapsible?t.show():t.hide();
}},_1b,{cls:((_1b.cls||"")+" layout-panel layout-panel-"+dir),bodyCls:((_1b.bodyCls||"")+" layout-body")});
pp.panel(_1d);
_1c[dir]=pp;
var _21={north:"s",south:"n",east:"w",west:"e"};
var _22=pp.panel("panel");
if(pp.panel("options").split){
_22.addClass("layout-split-"+dir);
}
_22.resizable($.extend({},{handles:(_21[dir]||""),disabled:(!pp.panel("options").split),onStartResize:function(e){
_1=true;
if(dir=="north"||dir=="south"){
var _23=$(">div.layout-split-proxy-v",_1a);
}else{
var _23=$(">div.layout-split-proxy-h",_1a);
}
var top=0,_24=0,_25=0,_26=0;
var pos={display:"block"};
if(dir=="north"){
pos.top=parseInt(_22.css("top"))+_22.outerHeight()-_23.height();
pos.left=parseInt(_22.css("left"));
pos.width=_22.outerWidth();
pos.height=_23.height();
}else{
if(dir=="south"){
pos.top=parseInt(_22.css("top"));
pos.left=parseInt(_22.css("left"));
pos.width=_22.outerWidth();
pos.height=_23.height();
}else{
if(dir=="east"){
pos.top=parseInt(_22.css("top"))||0;
pos.left=parseInt(_22.css("left"))||0;
pos.width=_23.width();
pos.height=_22.outerHeight();
}else{
if(dir=="west"){
pos.top=parseInt(_22.css("top"))||0;
pos.left=_22.outerWidth()-_23.width();
pos.width=_23.width();
pos.height=_22.outerHeight();
}
}
}
}
_23.css(pos);
$("<div class=\"layout-mask\"></div>").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc);
},onResize:function(e){
if(dir=="north"||dir=="south"){
var _27=_28(this);
$(this).resizable("options").maxHeight=_27;
var _29=$(">div.layout-split-proxy-v",_1a);
var top=dir=="north"?e.data.height-_29.height():$(_1a).height()-e.data.height;
_29.css("top",top);
}else{
var _2a=_28(this);
$(this).resizable("options").maxWidth=_2a;
var _29=$(">div.layout-split-proxy-h",_1a);
var _2b=dir=="west"?e.data.width-_29.width():$(_1a).width()-e.data.width;
_29.css("left",_2b);
}
return false;
},onStopResize:function(e){
cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide();
pp.panel("resize",e.data);
_2(_1a);
_1=false;
cc.find(">div.layout-mask").remove();
}},_1b));
cc.layout("options").onAdd.call(_1a,dir);
function _28(p){
var _2c="expand"+dir.substring(0,1).toUpperCase()+dir.substring(1);
var _2d=_1c["center"];
var _2e=(dir=="north"||dir=="south")?"minHeight":"minWidth";
var _2f=(dir=="north"||dir=="south")?"maxHeight":"maxWidth";
var _30=(dir=="north"||dir=="south")?"_outerHeight":"_outerWidth";
var _31=$.parser.parseValue(_2f,_1c[dir].panel("options")[_2f],$(_1a));
var _32=$.parser.parseValue(_2e,_2d.panel("options")[_2e],$(_1a));
var _33=_2d.panel("panel")[_30]()-_32;
if(_a(_1c[_2c])){
_33+=_1c[_2c][_30]()-1;
}else{
_33+=$(p)[_30]();
}
if(_33>_31){
_33=_31;
}
return _33;
};
};
function _34(_35,_36){
var _37=$.data(_35,"layout").panels;
if(_37[_36].length){
_37[_36].panel("destroy");
_37[_36]=$();
var _38="expand"+_36.substring(0,1).toUpperCase()+_36.substring(1);
if(_37[_38]){
_37[_38].panel("destroy");
_37[_38]=undefined;
}
$(_35).layout("options").onRemove.call(_35,_36);
}
};
function _39(_3a,_3b,_3c){
if(_3c==undefined){
_3c="normal";
}
var _3d=$.data(_3a,"layout");
var _3e=_3d.panels;
var p=_3e[_3b];
var _3f=p.panel("options");
if(_3f.onBeforeCollapse.call(p)==false){
return;
}
var _40="expand"+_3b.substring(0,1).toUpperCase()+_3b.substring(1);
if(!_3e[_40]){
_3e[_40]=_41(_3b);
var ep=_3e[_40].panel("panel");
if(!_3f.expandMode){
ep.css("cursor","default");
}else{
ep._bind("click",function(){
if(_3f.expandMode=="dock"){
_53(_3a,_3b);
}else{
p.panel("expand",false).panel("open");
var _42=_43();
p.panel("resize",_42.collapse);
p.panel("panel")._unbind(".layout")._bind("mouseleave.layout",{region:_3b},function(e){
var _44=this;
_3d.collapseTimer=setTimeout(function(){
$(_44).stop(true,true);
if(_1==true){
return;
}
if($("body>div.combo-p>div.combo-panel:visible").length){
return;
}
_39(_3a,e.data.region);
},_3d.options.collapseDelay);
});
p.panel("panel").animate(_42.expand,function(){
$(_3a).layout("options").onExpand.call(_3a,_3b);
});
}
return false;
});
}
}
var _45=_43();
if(!_a(_3e[_40])){
_3e.center.panel("resize",_45.resizeC);
}
p.panel("panel").animate(_45.collapse,_3c,function(){
p.panel("collapse",false).panel("close");
_3e[_40].panel("open").panel("resize",_45.expandP);
$(this)._unbind(".layout");
$(_3a).layout("options").onCollapse.call(_3a,_3b);
});
function _41(dir){
var _46={"east":"left","west":"right","north":"down","south":"up"};
var _47=(_3f.region=="north"||_3f.region=="south");
var _48="layout-button-"+_46[dir];
var p=$("<div></div>").appendTo(_3a);
p.panel($.extend({},$.fn.layout.paneldefaults,{cls:("layout-expand layout-expand-"+dir),title:"&nbsp;",titleDirection:_3f.titleDirection,iconCls:(_3f.hideCollapsedContent?null:_3f.iconCls),closed:true,minWidth:0,minHeight:0,doSize:false,region:_3f.region,collapsedSize:_3f.collapsedSize,noheader:(!_47&&_3f.hideExpandTool),tools:((_47&&_3f.hideExpandTool)?null:[{iconCls:_48,handler:function(){
_53(_3a,_3b);
return false;
}}]),onResize:function(){
var _49=$(this).children(".layout-expand-title");
if(_49.length){
var _4a=$(this).children(".panel-icon");
var _4b=_4a.length>0?(_4a._outerHeight()+2):0;
_49._outerWidth($(this).height()-_4b);
var _4c=($(this).width()-Math.min(_49._outerWidth(),_49._outerHeight()))/2;
var top=Math.max(_49._outerWidth(),_49._outerHeight());
if(_49.hasClass("layout-expand-title-down")){
_4c+=Math.min(_49._outerWidth(),_49._outerHeight());
top=0;
}
top+=_4b;
_49.css({left:(_4c+"px"),top:(top+"px")});
}
}}));
if(!_3f.hideCollapsedContent){
var _4d=typeof _3f.collapsedContent=="function"?_3f.collapsedContent.call(p[0],_3f.title):_3f.collapsedContent;
_47?p.panel("setTitle",_4d):p.html(_4d);
}
p.panel("panel").hover(function(){
$(this).addClass("layout-expand-over");
},function(){
$(this).removeClass("layout-expand-over");
});
return p;
};
function _43(){
var cc=$(_3a);
var _4e=_3e.center.panel("options");
var _4f=_3f.collapsedSize;
if(_3b=="east"){
var _50=p.panel("panel")._outerWidth();
var _51=_4e.width+_50-_4f;
if(_3f.split||!_3f.border){
_51++;
}
return {resizeC:{width:_51},expand:{left:cc.width()-_50},expandP:{top:_4e.top,left:cc.width()-_4f,width:_4f,height:_4e.height},collapse:{left:cc.width(),top:_4e.top,height:_4e.height}};
}else{
if(_3b=="west"){
var _50=p.panel("panel")._outerWidth();
var _51=_4e.width+_50-_4f;
if(_3f.split||!_3f.border){
_51++;
}
return {resizeC:{width:_51,left:_4f-1},expand:{left:0},expandP:{left:0,top:_4e.top,width:_4f,height:_4e.height},collapse:{left:-_50,top:_4e.top,height:_4e.height}};
}else{
if(_3b=="north"){
var _52=p.panel("panel")._outerHeight();
var hh=_4e.height;
if(!_a(_3e.expandNorth)){
hh+=_52-_4f+((_3f.split||!_3f.border)?1:0);
}
_3e.east.add(_3e.west).add(_3e.expandEast).add(_3e.expandWest).panel("resize",{top:_4f-1,height:hh});
return {resizeC:{top:_4f-1,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:_4f},collapse:{top:-_52,width:cc.width()}};
}else{
if(_3b=="south"){
var _52=p.panel("panel")._outerHeight();
var hh=_4e.height;
if(!_a(_3e.expandSouth)){
hh+=_52-_4f+((_3f.split||!_3f.border)?1:0);
}
_3e.east.add(_3e.west).add(_3e.expandEast).add(_3e.expandWest).panel("resize",{height:hh});
return {resizeC:{height:hh},expand:{top:cc.height()-_52},expandP:{top:cc.height()-_4f,left:0,width:cc.width(),height:_4f},collapse:{top:cc.height(),width:cc.width()}};
}
}
}
}
};
};
function _53(_54,_55){
var _56=$.data(_54,"layout").panels;
var p=_56[_55];
var _57=p.panel("options");
if(_57.onBeforeExpand.call(p)==false){
return;
}
var _58="expand"+_55.substring(0,1).toUpperCase()+_55.substring(1);
if(_56[_58]){
_56[_58].panel("close");
p.panel("panel").stop(true,true);
p.panel("expand",false).panel("open");
var _59=_5a();
p.panel("resize",_59.collapse);
p.panel("panel").animate(_59.expand,function(){
_2(_54);
$(_54).layout("options").onExpand.call(_54,_55);
});
}
function _5a(){
var cc=$(_54);
var _5b=_56.center.panel("options");
if(_55=="east"&&_56.expandEast){
return {collapse:{left:cc.width(),top:_5b.top,height:_5b.height},expand:{left:cc.width()-p.panel("panel")._outerWidth()}};
}else{
if(_55=="west"&&_56.expandWest){
return {collapse:{left:-p.panel("panel")._outerWidth(),top:_5b.top,height:_5b.height},expand:{left:0}};
}else{
if(_55=="north"&&_56.expandNorth){
return {collapse:{top:-p.panel("panel")._outerHeight(),width:cc.width()},expand:{top:0}};
}else{
if(_55=="south"&&_56.expandSouth){
return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-p.panel("panel")._outerHeight()}};
}
}
}
}
};
};
function _a(pp){
if(!pp){
return false;
}
if(pp.length){
return pp.panel("panel").is(":visible");
}else{
return false;
}
};
function _5c(_5d){
var _5e=$.data(_5d,"layout");
var _5f=_5e.options;
var _60=_5e.panels;
var _61=_5f.onCollapse;
_5f.onCollapse=function(){
};
_62("east");
_62("west");
_62("north");
_62("south");
_5f.onCollapse=_61;
function _62(_63){
var p=_60[_63];
if(p.length&&p.panel("options").collapsed){
_39(_5d,_63,0);
}
};
};
function _64(_65,_66,_67){
var p=$(_65).layout("panel",_66);
p.panel("options").split=_67;
var cls="layout-split-"+_66;
var _68=p.panel("panel").removeClass(cls);
if(_67){
_68.addClass(cls);
}
_68.resizable({disabled:(!_67)});
_2(_65);
};
$.fn.layout=function(_69,_6a){
if(typeof _69=="string"){
return $.fn.layout.methods[_69](this,_6a);
}
_69=_69||{};
return this.each(function(){
var _6b=$.data(this,"layout");
if(_6b){
$.extend(_6b.options,_69);
}else{
var _6c=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_69);
$.data(this,"layout",{options:_6c,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}});
_12(this);
}
_2(this);
_5c(this);
});
};
$.fn.layout.methods={options:function(jq){
return $.data(jq[0],"layout").options;
},resize:function(jq,_6d){
return jq.each(function(){
_2(this,_6d);
});
},panel:function(jq,_6e){
return $.data(jq[0],"layout").panels[_6e];
},collapse:function(jq,_6f){
return jq.each(function(){
_39(this,_6f);
});
},expand:function(jq,_70){
return jq.each(function(){
_53(this,_70);
});
},add:function(jq,_71){
return jq.each(function(){
_19(this,_71);
_2(this);
if($(this).layout("panel",_71.region).panel("options").collapsed){
_39(this,_71.region,0);
}
});
},remove:function(jq,_72){
return jq.each(function(){
_34(this,_72);
_2(this);
});
},split:function(jq,_73){
return jq.each(function(){
_64(this,_73,true);
});
},unsplit:function(jq,_74){
return jq.each(function(){
_64(this,_74,false);
});
},stopCollapsing:function(jq){
return jq.each(function(){
clearTimeout($(this).data("layout").collapseTimer);
});
}};
$.fn.layout.parseOptions=function(_75){
return $.extend({},$.parser.parseOptions(_75,[{fit:"boolean"}]));
};
$.fn.layout.defaults={fit:false,onExpand:function(_76){
},onCollapse:function(_77){
},onAdd:function(_78){
},onRemove:function(_79){
}};
$.fn.layout.parsePanelOptions=function(_7a){
var t=$(_7a);
return $.extend({},$.fn.panel.parseOptions(_7a),$.parser.parseOptions(_7a,["region",{split:"boolean",collpasedSize:"number",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}]));
};
$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,collapseDelay:100,collapsedSize:32,expandMode:"float",hideExpandTool:false,hideCollapsedContent:true,collapsedContent:function(_7b){
var p=$(this);
var _7c=p.panel("options");
if(_7c.region=="north"||_7c.region=="south"){
return _7b;
}
var cc=[];
if(_7c.iconCls){
cc.push("<div class=\"panel-icon "+_7c.iconCls+"\"></div>");
}
cc.push("<div class=\"panel-title layout-expand-title");
cc.push(" layout-expand-title-"+_7c.titleDirection);
cc.push(_7c.iconCls?" layout-expand-with-icon":"");
cc.push("\">");
cc.push(_7b);
cc.push("</div>");
return cc.join("");
},minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000});
})(jQuery);
Source/platformProject/platform2022UI/jslib/jquery/jquery.panel.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,694 @@
/**
 * EasyUI for jQuery 1.10.1
 *
 * Copyright (c) 2009-2021 www.jeasyui.com. All rights reserved.
 *
 * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
 * To use it on other terms please contact us: info@jeasyui.com
 *
 */
(function($){
$.fn._remove=function(){
return this.each(function(){
$(this).remove();
try{
this.outerHTML="";
}
catch(err){
}
});
};
function _1(_2){
_2._remove();
};
function _3(_4,_5){
var _6=$.data(_4,"panel");
var _7=_6.options;
var _8=_6.panel;
var _9=_8.children(".panel-header");
var _a=_8.children(".panel-body");
var _b=_8.children(".panel-footer");
var _c=(_7.halign=="left"||_7.halign=="right");
if(_5){
$.extend(_7,{width:_5.width,height:_5.height,minWidth:_5.minWidth,maxWidth:_5.maxWidth,minHeight:_5.minHeight,maxHeight:_5.maxHeight,left:_5.left,top:_5.top});
_7.hasResized=false;
}
var _d=_8.outerWidth();
var _e=_8.outerHeight();
_8._size(_7);
var _f=_8.outerWidth();
var _10=_8.outerHeight();
if(_7.hasResized&&(_d==_f&&_e==_10)){
return;
}
_7.hasResized=true;
if(!_c){
_9._outerWidth(_8.width());
}
_a._outerWidth(_8.width());
if(!isNaN(parseInt(_7.height))){
if(_c){
if(_7.header){
var _11=$(_7.header)._outerWidth();
}else{
_9.css("width","");
var _11=_9._outerWidth();
}
var _12=_9.find(".panel-title");
_11+=Math.min(_12._outerWidth(),_12._outerHeight());
var _13=_8.height();
_9._outerWidth(_11)._outerHeight(_13);
_12._outerWidth(_9.height());
_a._outerWidth(_8.width()-_11-_b._outerWidth())._outerHeight(_13);
_b._outerHeight(_13);
_a.css({left:"",right:""});
if(_9.length){
_a.css(_7.halign,(_9.position()[_7.halign]+_11)+"px");
}
_7.panelCssWidth=_8.css("width");
if(_7.collapsed){
_8._outerWidth(_11+_b._outerWidth());
}
}else{
_a._outerHeight(_8.height()-_9._outerHeight()-_b._outerHeight());
}
}else{
_a.css("height","");
var min=$.parser.parseValue("minHeight",_7.minHeight,_8.parent());
var max=$.parser.parseValue("maxHeight",_7.maxHeight,_8.parent());
var _14=_9._outerHeight()+_b._outerHeight()+_8._outerHeight()-_8.height();
_a._size("minHeight",min?(min-_14):"");
_a._size("maxHeight",max?(max-_14):"");
}
_8.css({height:(_c?undefined:""),minHeight:"",maxHeight:"",left:_7.left,top:_7.top});
_7.onResize.apply(_4,[_7.width,_7.height]);
$(_4).panel("doLayout");
};
function _15(_16,_17){
var _18=$.data(_16,"panel");
var _19=_18.options;
var _1a=_18.panel;
if(_17){
if(_17.left!=null){
_19.left=_17.left;
}
if(_17.top!=null){
_19.top=_17.top;
}
}
_1a.css({left:_19.left,top:_19.top});
_1a.find(".tooltip-f").each(function(){
$(this).tooltip("reposition");
});
_19.onMove.apply(_16,[_19.left,_19.top]);
};
function _1b(_1c){
$(_1c).addClass("panel-body")._size("clear");
var _1d=$("<div class=\"panel\"></div>").insertBefore(_1c);
_1d[0].appendChild(_1c);
_1d._bind("_resize",function(e,_1e){
if($(this).hasClass("easyui-fluid")||_1e){
_3(_1c,{});
}
return false;
});
return _1d;
};
function _1f(_20){
var _21=$.data(_20,"panel");
var _22=_21.options;
var _23=_21.panel;
_23.css(_22.style);
_23.addClass(_22.cls);
_23.removeClass("panel-hleft panel-hright").addClass("panel-h"+_22.halign);
_24();
_25();
var _26=$(_20).panel("header");
var _27=$(_20).panel("body");
var _28=$(_20).siblings(".panel-footer");
if(_22.border){
_26.removeClass("panel-header-noborder");
_27.removeClass("panel-body-noborder");
_28.removeClass("panel-footer-noborder");
}else{
_26.addClass("panel-header-noborder");
_27.addClass("panel-body-noborder");
_28.addClass("panel-footer-noborder");
}
_26.addClass(_22.headerCls);
_27.addClass(_22.bodyCls);
$(_20).attr("id",_22.id||"");
if(_22.content){
$(_20).panel("clear");
$(_20).html(_22.content);
$.parser.parse($(_20));
}
function _24(){
if(_22.noheader||(!_22.title&&!_22.header)){
_1(_23.children(".panel-header"));
_23.children(".panel-body").addClass("panel-body-noheader");
}else{
if(_22.header){
$(_22.header).addClass("panel-header").prependTo(_23);
}else{
var _29=_23.children(".panel-header");
if(!_29.length){
_29=$("<div class=\"panel-header\"></div>").prependTo(_23);
}
if(!$.isArray(_22.tools)){
_29.find("div.panel-tool .panel-tool-a").appendTo(_22.tools);
}
_29.empty();
var _2a=$("<div class=\"panel-title\"></div>").html(_22.title).appendTo(_29);
if(_22.iconCls){
_2a.addClass("panel-with-icon");
$("<div class=\"panel-icon\"></div>").addClass(_22.iconCls).appendTo(_29);
}
if(_22.halign=="left"||_22.halign=="right"){
_2a.addClass("panel-title-"+_22.titleDirection);
}
var _2b=$("<div class=\"panel-tool\"></div>").appendTo(_29);
_2b._bind("click",function(e){
e.stopPropagation();
});
if(_22.tools){
if($.isArray(_22.tools)){
$.map(_22.tools,function(t){
_2c(_2b,t.iconCls,eval(t.handler));
});
}else{
$(_22.tools).children().each(function(){
$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(_2b);
});
}
}
if(_22.collapsible){
_2c(_2b,"panel-tool-collapse",function(){
if(_22.collapsed==true){
_57(_20,true);
}else{
_43(_20,true);
}
});
}
if(_22.minimizable){
_2c(_2b,"panel-tool-min",function(){
_62(_20);
});
}
if(_22.maximizable){
_2c(_2b,"panel-tool-max",function(){
if(_22.maximized==true){
_66(_20);
}else{
_42(_20);
}
});
}
if(_22.closable){
_2c(_2b,"panel-tool-close",function(){
_44(_20);
});
}
}
_23.children("div.panel-body").removeClass("panel-body-noheader");
}
};
function _2c(c,_2d,_2e){
var a=$("<a href=\"javascript:;\"></a>").addClass(_2d).appendTo(c);
a._bind("click",_2e);
};
function _25(){
if(_22.footer){
$(_22.footer).addClass("panel-footer").appendTo(_23);
$(_20).addClass("panel-body-nobottom");
}else{
_23.children(".panel-footer").remove();
$(_20).removeClass("panel-body-nobottom");
}
};
};
function _2f(_30,_31){
var _32=$.data(_30,"panel");
var _33=_32.options;
if(_34){
_33.queryParams=_31;
}
if(!_33.href){
return;
}
if(!_32.isLoaded||!_33.cache){
var _34=$.extend({},_33.queryParams);
if(_33.onBeforeLoad.call(_30,_34)==false){
return;
}
_32.isLoaded=false;
if(_33.loadingMessage){
$(_30).panel("clear");
$(_30).html($("<div class=\"panel-loading\"></div>").html(_33.loadingMessage));
}
_33.loader.call(_30,_34,function(_35){
var _36=_33.extractor.call(_30,_35);
$(_30).panel("clear");
$(_30).html(_36);
$.parser.parse($(_30));
_33.onLoad.apply(_30,arguments);
_32.isLoaded=true;
},function(){
_33.onLoadError.apply(_30,arguments);
});
}
};
function _37(_38){
var t=$(_38);
t.find(".combo-f").each(function(){
$(this).combo("destroy");
});
t.find(".m-btn").each(function(){
$(this).menubutton("destroy");
});
t.find(".s-btn").each(function(){
$(this).splitbutton("destroy");
});
t.find(".tooltip-f").each(function(){
$(this).tooltip("destroy");
});
t.children("div").each(function(){
$(this)._size("unfit");
});
t.empty();
};
function _39(_3a){
$(_3a).panel("doLayout",true);
};
function _3b(_3c,_3d){
var _3e=$.data(_3c,"panel");
var _3f=_3e.options;
var _40=_3e.panel;
if(_3d!=true){
if(_3f.onBeforeOpen.call(_3c)==false){
return;
}
}
_40.stop(true,true);
if($.isFunction(_3f.openAnimation)){
_3f.openAnimation.call(_3c,cb);
}else{
switch(_3f.openAnimation){
case "slide":
_40.slideDown(_3f.openDuration,cb);
break;
case "fade":
_40.fadeIn(_3f.openDuration,cb);
break;
case "show":
_40.show(_3f.openDuration,cb);
break;
default:
_40.show();
cb();
}
}
function cb(){
_3f.closed=false;
_3f.minimized=false;
var _41=_40.children(".panel-header").find("a.panel-tool-restore");
if(_41.length){
_3f.maximized=true;
}
_3f.onOpen.call(_3c);
if(_3f.maximized==true){
_3f.maximized=false;
_42(_3c);
}
if(_3f.collapsed==true){
_3f.collapsed=false;
_43(_3c);
}
if(!_3f.collapsed){
if(_3f.href&&(!_3e.isLoaded||!_3f.cache)){
_2f(_3c);
_39(_3c);
_3f.doneLayout=true;
}
}
if(!_3f.doneLayout){
_3f.doneLayout=true;
_39(_3c);
}
};
};
function _44(_45,_46){
var _47=$.data(_45,"panel");
var _48=_47.options;
var _49=_47.panel;
if(_46!=true){
if(_48.onBeforeClose.call(_45)==false){
return;
}
}
_49.find(".tooltip-f").each(function(){
$(this).tooltip("hide");
});
_49.stop(true,true);
_49._size("unfit");
if($.isFunction(_48.closeAnimation)){
_48.closeAnimation.call(_45,cb);
}else{
switch(_48.closeAnimation){
case "slide":
_49.slideUp(_48.closeDuration,cb);
break;
case "fade":
_49.fadeOut(_48.closeDuration,cb);
break;
case "hide":
_49.hide(_48.closeDuration,cb);
break;
default:
_49.hide();
cb();
}
}
function cb(){
_48.closed=true;
_48.onClose.call(_45);
};
};
function _4a(_4b,_4c){
var _4d=$.data(_4b,"panel");
var _4e=_4d.options;
var _4f=_4d.panel;
if(_4c!=true){
if(_4e.onBeforeDestroy.call(_4b)==false){
return;
}
}
$(_4b).panel("clear").panel("clear","footer");
_1(_4f);
_4e.onDestroy.call(_4b);
};
function _43(_50,_51){
var _52=$.data(_50,"panel").options;
var _53=$.data(_50,"panel").panel;
var _54=_53.children(".panel-body");
var _55=_53.children(".panel-header");
var _56=_55.find("a.panel-tool-collapse");
if(_52.collapsed==true){
return;
}
_54.stop(true,true);
if(_52.onBeforeCollapse.call(_50)==false){
return;
}
_56.addClass("panel-tool-expand");
if(_51==true){
if(_52.halign=="left"||_52.halign=="right"){
_53.animate({width:_55._outerWidth()+_53.children(".panel-footer")._outerWidth()},function(){
cb();
});
}else{
_54.slideUp("normal",function(){
cb();
});
}
}else{
if(_52.halign=="left"||_52.halign=="right"){
_53._outerWidth(_55._outerWidth()+_53.children(".panel-footer")._outerWidth());
}
cb();
}
function cb(){
_54.hide();
_52.collapsed=true;
_52.onCollapse.call(_50);
};
};
function _57(_58,_59){
var _5a=$.data(_58,"panel").options;
var _5b=$.data(_58,"panel").panel;
var _5c=_5b.children(".panel-body");
var _5d=_5b.children(".panel-header").find("a.panel-tool-collapse");
if(_5a.collapsed==false){
return;
}
_5c.stop(true,true);
if(_5a.onBeforeExpand.call(_58)==false){
return;
}
_5d.removeClass("panel-tool-expand");
if(_59==true){
if(_5a.halign=="left"||_5a.halign=="right"){
_5c.show();
_5b.animate({width:_5a.panelCssWidth},function(){
cb();
});
}else{
_5c.slideDown("normal",function(){
cb();
});
}
}else{
if(_5a.halign=="left"||_5a.halign=="right"){
_5b.css("width",_5a.panelCssWidth);
}
cb();
}
function cb(){
_5c.show();
_5a.collapsed=false;
_5a.onExpand.call(_58);
_2f(_58);
_39(_58);
};
};
function _42(_5e){
var _5f=$.data(_5e,"panel").options;
var _60=$.data(_5e,"panel").panel;
var _61=_60.children(".panel-header").find("a.panel-tool-max");
if(_5f.maximized==true){
return;
}
_61.addClass("panel-tool-restore");
if(!$.data(_5e,"panel").original){
$.data(_5e,"panel").original={width:_5f.width,height:_5f.height,left:_5f.left,top:_5f.top,fit:_5f.fit};
}
_5f.left=0;
_5f.top=0;
_5f.fit=true;
_3(_5e);
_5f.minimized=false;
_5f.maximized=true;
_5f.onMaximize.call(_5e);
};
function _62(_63){
var _64=$.data(_63,"panel").options;
var _65=$.data(_63,"panel").panel;
_65._size("unfit");
_65.hide();
_64.minimized=true;
_64.maximized=false;
_64.onMinimize.call(_63);
};
function _66(_67){
var _68=$.data(_67,"panel").options;
var _69=$.data(_67,"panel").panel;
var _6a=_69.children(".panel-header").find("a.panel-tool-max");
if(_68.maximized==false){
return;
}
_69.show();
_6a.removeClass("panel-tool-restore");
$.extend(_68,$.data(_67,"panel").original);
_3(_67);
_68.minimized=false;
_68.maximized=false;
$.data(_67,"panel").original=null;
_68.onRestore.call(_67);
};
function _6b(_6c,_6d){
$.data(_6c,"panel").options.title=_6d;
$(_6c).panel("header").find("div.panel-title").html(_6d);
};
var _6e=null;
$(window)._unbind(".panel")._bind("resize.panel",function(){
if(_6e){
clearTimeout(_6e);
}
_6e=setTimeout(function(){
var _6f=$("body.layout");
if(_6f.length){
_6f.layout("resize");
$("body").children(".easyui-fluid:visible").each(function(){
$(this).triggerHandler("_resize");
});
}else{
$("body").panel("doLayout");
}
_6e=null;
},100);
});
$.fn.panel=function(_70,_71){
if(typeof _70=="string"){
return $.fn.panel.methods[_70](this,_71);
}
_70=_70||{};
return this.each(function(){
var _72=$.data(this,"panel");
var _73;
if(_72){
_73=$.extend(_72.options,_70);
_72.isLoaded=false;
}else{
_73=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_70);
$(this).attr("title","");
_72=$.data(this,"panel",{options:_73,panel:_1b(this),isLoaded:false});
}
_1f(this);
$(this).show();
if(_73.doSize==true){
_72.panel.css("display","block");
_3(this);
}
if(_73.closed==true||_73.minimized==true){
_72.panel.hide();
}else{
_3b(this);
}
});
};
$.fn.panel.methods={options:function(jq){
return $.data(jq[0],"panel").options;
},panel:function(jq){
return $.data(jq[0],"panel").panel;
},header:function(jq){
return $.data(jq[0],"panel").panel.children(".panel-header");
},footer:function(jq){
return jq.panel("panel").children(".panel-footer");
},body:function(jq){
return $.data(jq[0],"panel").panel.children(".panel-body");
},setTitle:function(jq,_74){
return jq.each(function(){
_6b(this,_74);
});
},open:function(jq,_75){
return jq.each(function(){
_3b(this,_75);
});
},close:function(jq,_76){
return jq.each(function(){
_44(this,_76);
});
},destroy:function(jq,_77){
return jq.each(function(){
_4a(this,_77);
});
},clear:function(jq,_78){
return jq.each(function(){
_37(_78=="footer"?$(this).panel("footer"):this);
});
},refresh:function(jq,_79){
return jq.each(function(){
var _7a=$.data(this,"panel");
_7a.isLoaded=false;
if(_79){
if(typeof _79=="string"){
_7a.options.href=_79;
}else{
_7a.options.queryParams=_79;
}
}
_2f(this);
});
},resize:function(jq,_7b){
return jq.each(function(){
_3(this,_7b||{});
});
},doLayout:function(jq,all){
return jq.each(function(){
_7c(this,"body");
_7c($(this).siblings(".panel-footer")[0],"footer");
function _7c(_7d,_7e){
if(!_7d){
return;
}
var _7f=_7d==$("body")[0];
var s=$(_7d).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible,.easyui-fluid:visible").filter(function(_80,el){
var p=$(el).parents(".panel-"+_7e+":first");
return _7f?p.length==0:p[0]==_7d;
});
s.each(function(){
$(this).triggerHandler("_resize",[all||false]);
});
};
});
},move:function(jq,_81){
return jq.each(function(){
_15(this,_81);
});
},maximize:function(jq){
return jq.each(function(){
_42(this);
});
},minimize:function(jq){
return jq.each(function(){
_62(this);
});
},restore:function(jq){
return jq.each(function(){
_66(this);
});
},collapse:function(jq,_82){
return jq.each(function(){
_43(this,_82);
});
},expand:function(jq,_83){
return jq.each(function(){
_57(this,_83);
});
}};
$.fn.panel.parseOptions=function(_84){
var t=$(_84);
var hh=t.children(".panel-header,header");
var ff=t.children(".panel-footer,footer");
return $.extend({},$.parser.parseOptions(_84,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href","method","header","footer","halign","titleDirection",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"},"openAnimation","closeAnimation",{openDuration:"number",closeDuration:"number"},]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined),header:(hh.length?hh.removeClass("panel-header"):undefined),footer:(ff.length?ff.removeClass("panel-footer"):undefined)});
};
$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,halign:"top",titleDirection:"down",collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,openAnimation:false,openDuration:400,closeAnimation:false,closeDuration:400,tools:null,footer:null,header:null,queryParams:{},method:"get",href:null,loadingMessage:"Loading...",loader:function(_85,_86,_87){
var _88=$(this).panel("options");
if(!_88.href){
return false;
}
$.ajax({type:_88.method,url:_88.href,cache:false,data:_85,dataType:"html",success:function(_89){
_86(_89);
},error:function(){
_87.apply(this,arguments);
}});
},extractor:function(_8a){
var _8b=/<body[^>]*>((.|[\n\r])*)<\/body>/im;
var _8c=_8b.exec(_8a);
if(_8c){
return _8c[1];
}else{
return _8a;
}
},onBeforeLoad:function(_8d){
},onLoad:function(){
},onLoadError:function(){
},onBeforeOpen:function(){
},onOpen:function(){
},onBeforeClose:function(){
},onClose:function(){
},onBeforeDestroy:function(){
},onDestroy:function(){
},onResize:function(_8e,_8f){
},onMove:function(_90,top){
},onMaximize:function(){
},onRestore:function(){
},onMinimize:function(){
},onBeforeCollapse:function(){
},onBeforeExpand:function(){
},onCollapse:function(){
},onExpand:function(){
}};
})(jQuery);
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/kindeditor-all-min.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,352 @@
/* KindEditor 4.1.7 (2013-04-21), Copyright (C) kindsoft.net, Licence: http://www.kindsoft.net/license.php */(function(b,d){function g(a){if(!a)return!1;return Object.prototype.toString.call(a)==="[object Array]"}function l(a){if(!a)return!1;return Object.prototype.toString.call(a)==="[object Function]"}function e(a,c){for(var f=0,b=c.length;f<b;f++)if(a===c[f])return f;return-1}function h(a,c){if(g(a))for(var f=0,b=a.length;f<b;f++){if(c.call(a[f],f,a[f])===!1)break}else for(f in a)if(a.hasOwnProperty(f)&&c.call(a[f],f,a[f])===!1)break}function m(a){return a.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"")}
function n(a,c,f){f=f===d?",":f;return(f+c+f).indexOf(f+a+f)>=0}function j(a,c){c=c||"px";return a&&/^\d+$/.test(a)?a+c:a}function o(a){var c;return a&&(c=/(\d+)/.exec(a))?parseInt(c[1],10):0}function s(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function t(a){return a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&amp;/g,"&")}function p(a){var c=a.split("-"),a="";h(c,function(c,b){a+=c>0?b.charAt(0).toUpperCase()+
b.substr(1):b});return a}function q(a){function c(a){a=parseInt(a,10).toString(16).toUpperCase();return a.length>1?a:"0"+a}return a.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig,function(a,b,d,k){return"#"+c(b)+c(d)+c(k)})}function z(a,c){var c=c===d?",":c,f={},b=g(a)?a:a.split(c),u;h(b,function(a,c){if(u=/^(\d+)\.\.(\d+)$/.exec(c))for(var b=parseInt(u[1],10);b<=parseInt(u[2],10);b++)f[b.toString()]=!0;else f[c]=!0});return f}function D(a,c){return Array.prototype.slice.call(a,c||0)}function r(a,
c){return a===d?c:a}function A(a,c,f){f||(f=c,c=null);var b;if(c){var d=function(){};d.prototype=c.prototype;b=new d;h(f,function(a,c){b[a]=c})}else b=f;b.constructor=a;a.prototype=b;a.parent=c?c.prototype:null}function w(a){var c;if(c=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(a))a=c[0];c=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;c.lastIndex=0;c.test(a)&&(a=a.replace(c,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));
if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+a+")");throw"JSON parse error";}function H(a,c,f){a.addEventListener?a.addEventListener(c,f,db):a.attachEvent&&a.attachEvent("on"+c,f)}function v(a,c,f){a.removeEventListener?a.removeEventListener(c,f,db):a.detachEvent&&a.detachEvent("on"+c,f)}function E(a,c){this.init(a,c)}function U(a){try{delete a[la]}catch(c){a.removeAttribute&&
a.removeAttribute(la)}}function F(a,c,f){if(c.indexOf(",")>=0)h(c.split(","),function(){F(a,this,f)});else{var b=a[la]||null;b||(a[la]=++eb,b=eb);L[b]===d&&(L[b]={});var u=L[b][c];u&&u.length>0?v(a,c,u[0]):(L[b][c]=[],L[b].el=a);u=L[b][c];u.length===0&&(u[0]=function(c){var f=c?new E(a,c):d;h(u,function(c,b){c>0&&b&&b.call(a,f)})});e(f,u)<0&&u.push(f);H(a,c,u[0])}}function N(a,c,f){if(c&&c.indexOf(",")>=0)h(c.split(","),function(){N(a,this,f)});else{var b=a[la]||null;if(b)if(c===d)b in L&&(h(L[b],
function(c,f){c!="el"&&f.length>0&&v(a,c,f[0])}),delete L[b],U(a));else if(L[b]){var u=L[b][c];if(u&&u.length>0){f===d?(v(a,c,u[0]),delete L[b][c]):(h(u,function(a,c){a>0&&c===f&&u.splice(a,1)}),u.length==1&&(v(a,c,u[0]),delete L[b][c]));var k=0;h(L[b],function(){k++});k<2&&(delete L[b],U(a))}}}}function ea(a,c){if(c.indexOf(",")>=0)h(c.split(","),function(){ea(a,this)});else{var f=a[la]||null;if(f){var b=L[f][c];if(L[f]&&b&&b.length>0)b[0]()}}}function V(a,c,f){c=/^\d{2,}$/.test(c)?c:c.toUpperCase().charCodeAt(0);
F(a,"keydown",function(b){b.ctrlKey&&b.which==c&&!b.shiftKey&&!b.altKey&&(f.call(a),b.stop())})}function Q(a){for(var c={},f=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g,b;b=f.exec(a);){var d=m(b[1].toLowerCase());b=m(q(b[2]));c[d]=b}return c}function G(a){for(var c={},f=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g,b;b=f.exec(a);){var d=(b[1]||b[2]||b[4]||b[6]).toLowerCase();c[d]=(b[2]?b[3]:b[4]?b[5]:b[7])||""}return c}function S(a,c){return a=
/\s+class\s*=/.test(a)?a.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function(a,b,d,k){return(" "+d+" ").indexOf(" "+c+" ")<0?d===""?b+c+k:b+d+" "+c+k:a}):a.substr(0,a.length-1)+' class="'+c+'">'}function Y(a){var c="";h(Q(a),function(a,b){c+=a+":"+b+";"});return c}function M(a,c,f,b){function u(a){for(var a=a.split("/"),c=[],f=0,b=a.length;f<b;f++){var d=a[f];d==".."?c.length>0&&c.pop():d!==""&&d!="."&&c.push(d)}return"/"+c.join("/")}function k(c,f){if(a.substr(0,c.length)===c){for(var d=[],u=
0;u<f;u++)d.push("..");u=".";d.length>0&&(u+="/"+d.join("/"));b=="/"&&(u+="/");return u+a.substr(c.length)}else if(i=/^(.*)\//.exec(c))return k(i[1],++f)}c=r(c,"").toLowerCase();a.substr(0,5)!="data:"&&(a=a.replace(/([^:])\/\//g,"$1/"));if(e(c,["absolute","relative","domain"])<0)return a;f=f||location.protocol+"//"+location.host;if(b===d)var B=location.pathname.match(/^(\/.*)\//),b=B?B[1]:"";var i;if(i=/^(\w+:\/\/[^\/]*)/.exec(a)){if(i[1]!==f)return a}else if(/^\w+:/.test(a))return a;/^\//.test(a)?
a=f+u(a.substr(1)):/^\w+:\/\//.test(a)||(a=f+u(b+"/"+a));c==="relative"?a=k(f+b,0).substr(2):c==="absolute"&&a.substr(0,f.length)===f&&(a=a.substr(f.length));return a}function J(a,c,f,b,d){var f=f||"",b=r(b,!1),d=r(d,"\t"),k="xx-small,x-small,small,medium,large,x-large,xx-large".split(","),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function(a,c,f,b){return c+f.replace(/<(?:br|br\s[^>]*)>/ig,"\n")+b}),a=a.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig,"</p>"),a=a.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig,
"$1<br />$2"),a=a.replace(/\u200B/g,""),a=a.replace(/\u00A9/g,"&copy;"),B={};c&&(h(c,function(a,c){for(var f=a.split(","),b=0,d=f.length;b<d;b++)B[f[b]]=z(c)}),B.script||(a=a.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/ig,"")),B.style||(a=a.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig,"")));var i=[],a=a.replace(/([ \t\n\r]*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>([ \t\n\r]*)/g,function(a,
g,j,n,o,s,l){var g=g||"",j=j||"",m=n.toLowerCase(),q=o||"",n=s?" "+s:"",l=l||"";if(c&&!B[m])return"";n===""&&fb[m]&&(n=" /");gb[m]&&(g&&(g=" "),l&&(l=" "));Ja[m]&&(j?l="\n":g="\n");b&&m=="br"&&(l="\n");if(hb[m]&&!Ja[m])if(b){j&&i.length>0&&i[i.length-1]===m?i.pop():i.push(m);l=g="\n";o=0;for(s=j?i.length:i.length-1;o<s;o++)g+=d,j||(l+=d);n?i.pop():j||(l+=d)}else g=l="";if(q!==""){var t=G(a);if(m==="font"){var p={},w="";h(t,function(a,c){if(a==="color")p.color=c,delete t[a];a==="size"&&(p["font-size"]=
k[parseInt(c,10)-1]||"",delete t[a]);a==="face"&&(p["font-family"]=c,delete t[a]);a==="style"&&(w=c)});w&&!/;$/.test(w)&&(w+=";");h(p,function(a,c){c!==""&&(/\s/.test(c)&&(c="'"+c+"'"),w+=a+":"+c+";")});t.style=w}h(t,function(a,b){Jb[a]&&(t[a]=a);e(a,["src","href"])>=0&&(t[a]=M(b,f));(c&&a!=="style"&&!B[m]["*"]&&!B[m][a]||m==="body"&&a==="contenteditable"||/^kindeditor_\d+$/.test(a))&&delete t[a];if(a==="style"&&b!==""){var d=Q(b);h(d,function(a){c&&!B[m].style&&!B[m]["."+a]&&delete d[a]});var K=
"";h(d,function(a,c){K+=a+":"+c+";"});t.style=K}});q="";h(t,function(a,c){a==="style"&&c===""||(c=c.replace(/"/g,"&quot;"),q+=" "+a+'="'+c+'"')})}m==="font"&&(m="span");return g+"<"+j+m+q+n+">"+l}),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function(a,c,f,b){return c+f.replace(/\n/g,'<span id="__kindeditor_pre_newline__">\n')+b}),a=a.replace(/\n\s*\n/g,"\n"),a=a.replace(/<span id="__kindeditor_pre_newline__">\n/g,"\n");return m(a)}function W(a,c){a=a.replace(/<meta[\s\S]*?>/ig,"").replace(/<![\s\S]*?>/ig,
"").replace(/<style[^>]*>[\s\S]*?<\/style>/ig,"").replace(/<script[^>]*>[\s\S]*?<\/script>/ig,"").replace(/<w:[^>]+>[\s\S]*?<\/w:[^>]+>/ig,"").replace(/<o:[^>]+>[\s\S]*?<\/o:[^>]+>/ig,"").replace(/<xml>[\s\S]*?<\/xml>/ig,"").replace(/<(?:table|td)[^>]*>/ig,function(a){return a.replace(/border-bottom:([#\w\s]+)/ig,"border:$1")});return J(a,c)}function T(a){if(/\.(rm|rmvb)(\?|$)/i.test(a))return"audio/x-pn-realaudio-plugin";if(/\.(swf|flv)(\?|$)/i.test(a))return"application/x-shockwave-flash";return"video/x-ms-asf-plugin"}
function fa(a){return G(unescape(a))}function Ka(a){var c="<embed ";h(a,function(a,b){c+=a+'="'+b+'" '});c+="/>";return c}function ib(a,c){var f=c.width,b=c.height,d=c.type||T(c.src),k=Ka(c),i="";f>0&&(i+="width:"+f+"px;");b>0&&(i+="height:"+b+"px;");f=/realaudio/i.test(d)?"ke-rm":/flash/i.test(d)?"ke-flash":"ke-media";f='<img class="'+f+'" src="'+a+'" ';i!==""&&(f+='style="'+i+'" ');f+='data-ke-tag="'+escape(k)+'" alt="" />';return f}function Ba(a,c){if(a.nodeType==9&&c.nodeType!=9)return!0;for(;c=
c.parentNode;)if(c==a)return!0;return!1}function Ca(a,c){var c=c.toLowerCase(),f=null;if(!Kb&&a.nodeName.toLowerCase()!="script"){var b=a.ownerDocument.createElement("div");b.appendChild(a.cloneNode(!1));b=G(t(b.innerHTML));c in b&&(f=b[c])}else try{f=a.getAttribute(c,2)}catch(d){f=a.getAttribute(c,1)}c==="style"&&f!==null&&(f=Y(f));return f}function Da(a,c){function f(a){if(typeof a!="string")return a;return a.replace(/([^\w\-])/g,"\\$1")}function b(a,c){return a==="*"||a.toLowerCase()===f(c.toLowerCase())}
function d(a,c,f){var u=[];(a=(f.ownerDocument||f).getElementById(a.replace(/\\/g,"")))&&b(c,a.nodeName)&&Ba(f,a)&&u.push(a);return u}function k(a,c,f){var d=f.ownerDocument||f,u=[],k,i,B;if(f.getElementsByClassName){d=f.getElementsByClassName(a.replace(/\\/g,""));k=0;for(i=d.length;k<i;k++)B=d[k],b(c,B.nodeName)&&u.push(B)}else if(d.querySelectorAll){d=d.querySelectorAll((f.nodeName!=="#document"?f.nodeName+" ":"")+c+"."+a);k=0;for(i=d.length;k<i;k++)B=d[k],Ba(f,B)&&u.push(B)}else{d=f.getElementsByTagName(c);
a=" "+a+" ";k=0;for(i=d.length;k<i;k++)if(B=d[k],B.nodeType==1)(c=B.className)&&(" "+c+" ").indexOf(a)>-1&&u.push(B)}return u}function i(a,c,b,d){for(var K=[],b=d.getElementsByTagName(b),u=0,k=b.length;u<k;u++)d=b[u],d.nodeType==1&&(c===null?Ca(d,a)!==null&&K.push(d):c===f(Ca(d,a))&&K.push(d));return K}function g(a,c){var f=[],e,P=(e=/^((?:\\.|[^.#\s\[<>])+)/.exec(a))?e[1]:"*";if(e=/#((?:[\w\-]|\\.)+)$/.exec(a))f=d(e[1],P,c);else if(e=/\.((?:[\w\-]|\\.)+)$/.exec(a))f=k(e[1],P,c);else if(e=/\[((?:[\w\-]|\\.)+)\]/.exec(a))f=
i(e[1].toLowerCase(),null,P,c);else if(e=/\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(a)){f=e[1].toLowerCase();e=e[2];if(f==="id")P=d(e,P,c);else if(f==="class")P=k(e,P,c);else if(f==="name"){f=[];e=(c.ownerDocument||c).getElementsByName(e.replace(/\\/g,""));for(var h,j=0,o=e.length;j<o;j++)h=e[j],b(P,h.nodeName)&&Ba(c,h)&&h.getAttributeNode("name")&&f.push(h);P=f}else P=i(f,e,P,c);f=P}else{P=c.getElementsByTagName(P);h=0;for(j=P.length;h<j;h++)e=P[h],e.nodeType==1&&f.push(e)}return f}
var j=a.split(",");if(j.length>1){var n=[];h(j,function(){h(Da(this,c),function(){e(this,n)<0&&n.push(this)})});return n}for(var c=c||document,j=[],o,m=/((?:\\.|[^\s>])+|[\s>])/g;o=m.exec(a);)o[1]!==" "&&j.push(o[1]);o=[];if(j.length==1)return g(j[0],c);var m=!1,l,s,q,t,w,p,r,N,F,v;p=0;for(lenth=j.length;p<lenth;p++)if(l=j[p],l===">")m=!0;else{if(p>0){s=[];r=0;for(F=o.length;r<F;r++){t=o[r];q=g(l,t);N=0;for(v=q.length;N<v;N++)w=q[N],m?t===w.parentNode&&s.push(w):s.push(w)}o=s}else o=g(l,c);if(o.length===
0)return[]}return o}function ga(a){if(!a)return document;return a.ownerDocument||a.document||a}function ha(a){if(!a)return b;a=ga(a);return a.parentWindow||a.defaultView}function Lb(a,c){if(a.nodeType==1){var f=ga(a);try{a.innerHTML='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+c;var b=f.getElementById("__kindeditor_temp_tag__");b.parentNode.removeChild(b)}catch(d){i(a).empty(),i("@"+c,f).each(function(){a.appendChild(this)})}}}function La(a,c,f){C&&O<8&&c.toLowerCase()==
"class"&&(c="className");a.setAttribute(c,""+f)}function Ma(a){if(!a||!a.nodeName)return"";return a.nodeName.toLowerCase()}function Mb(a,c){var f=ha(a),b=p(c),d="";f.getComputedStyle?(f=f.getComputedStyle(a,null),d=f[b]||f.getPropertyValue(c)||a.style[b]):a.currentStyle&&(d=a.currentStyle[b]||a.style[b]);return d}function X(a){a=a||document;return aa?a.body:a.documentElement}function ma(a){var a=a||document,c;C||Na?(c=X(a).scrollLeft,a=X(a).scrollTop):(c=ha(a).scrollX,a=ha(a).scrollY);return{x:c,
y:a}}function R(a){this.init(a)}function jb(a){a.collapsed=a.startContainer===a.endContainer&&a.startOffset===a.endOffset;return a}function Oa(a,c,f){function b(d,K,u){var k=d.nodeValue.length,i;c&&(i=d.cloneNode(!0),i=K>0?i.splitText(K):i,u<k&&i.splitText(u-K));if(f){var B=d;K>0&&(B=d.splitText(K),a.setStart(d,K));u<k&&(d=B.splitText(u-K),a.setEnd(d,0));e.push(B)}return i}function d(){f&&a.up().collapse(!0);for(var c=0,b=e.length;c<b;c++){var K=e[c];K.parentNode&&K.parentNode.removeChild(K)}}function k(d,
u){for(var m=d.firstChild,l;m;){l=(new Z(i)).selectNode(m);h=l.compareBoundaryPoints(qa,a);h>=0&&j<=0&&(j=l.compareBoundaryPoints(ra,a));j>=0&&o<=0&&(o=l.compareBoundaryPoints(na,a));o>=0&&n<=0&&(n=l.compareBoundaryPoints(sa,a));if(n>=0)return!1;l=m.nextSibling;if(h>0)if(m.nodeType==1)if(j>=0&&o<=0)c&&u.appendChild(m.cloneNode(!0)),f&&e.push(m);else{var s;c&&(s=m.cloneNode(!1),u.appendChild(s));if(k(m,s)===!1)return!1}else if(m.nodeType==3&&(m=m==g.startContainer?b(m,g.startOffset,m.nodeValue.length):
m==g.endContainer?b(m,0,g.endOffset):b(m,0,m.nodeValue.length),c))try{u.appendChild(m)}catch(q){}m=l}}var i=a.doc,e=[],g=a.cloneRange().down(),h=-1,j=-1,o=-1,n=-1,m=a.commonAncestor(),l=i.createDocumentFragment();if(m.nodeType==3)return m=b(m,a.startOffset,a.endOffset),c&&l.appendChild(m),d(),c?l:a;k(m,l);f&&a.up().collapse(!0);for(var m=0,s=e.length;m<s;m++){var q=e[m];q.parentNode&&q.parentNode.removeChild(q)}return c?l:a}function ta(a,c){for(var f=c;f;){var b=i(f);if(b.name=="marquee"||b.name==
"select")return;f=f.parentNode}try{a.moveToElementText(c)}catch(d){}}function kb(a,c){var f=a.parentElement().ownerDocument,b=a.duplicate();b.collapse(c);var d=b.parentElement(),k=d.childNodes;if(k.length===0)return{node:d.parentNode,offset:i(d).index()};var B=f,e=0,g=-1,h=a.duplicate();ta(h,d);for(var j=0,o=k.length;j<o;j++){var n=k[j],g=h.compareEndPoints("StartToStart",b);if(g===0)return{node:n.parentNode,offset:j};if(n.nodeType==1){var m=a.duplicate(),l,s=i(n),q=n;s.isControl()&&(l=f.createElement("span"),
s.after(l),q=l,e+=s.text().replace(/\r\n|\n|\r/g,"").length);ta(m,q);h.setEndPoint("StartToEnd",m);g>0?e+=m.text.replace(/\r\n|\n|\r/g,"").length:e=0;l&&i(l).remove()}else n.nodeType==3&&(h.moveStart("character",n.nodeValue.length),e+=n.nodeValue.length);g<0&&(B=n)}if(g<0&&B.nodeType==1)return{node:d,offset:i(d.lastChild).index()+1};if(g>0)for(;B.nextSibling&&B.nodeType==1;)B=B.nextSibling;h=a.duplicate();ta(h,d);h.setEndPoint("StartToEnd",b);e-=h.text.replace(/\r\n|\n|\r/g,"").length;if(g>0&&B.nodeType==
3)for(f=B.previousSibling;f&&f.nodeType==3;)e-=f.nodeValue.length,f=f.previousSibling;return{node:B,offset:e}}function lb(a,c){var f=a.ownerDocument||a,b=f.body.createTextRange();if(f==a)return b.collapse(!0),b;if(a.nodeType==1&&a.childNodes.length>0){var d=a.childNodes,k;c===0?(k=d[0],d=!0):(k=d[c-1],d=!1);if(!k)return b;if(i(k).name==="head")return c===1&&(d=!0),c===2&&(d=!1),b.collapse(d),b;if(k.nodeType==1){var B=i(k),e;B.isControl()&&(e=f.createElement("span"),d?B.before(e):B.after(e),k=e);ta(b,
k);b.collapse(d);e&&i(e).remove();return b}a=k;c=d?0:k.nodeValue.length}f=f.createElement("span");i(a).before(f);ta(b,f);b.moveStart("character",c);i(f).remove();return b}function mb(a){function c(a){if(i(a.node).name=="tr")a.node=a.node.cells[a.offset],a.offset=0}var f;if(C){if(a.item)return f=ga(a.item(0)),f=new Z(f),f.selectNode(a.item(0)),f;f=a.parentElement().ownerDocument;var b=kb(a,!0),a=kb(a,!1);c(b);c(a);f=new Z(f);f.setStart(b.node,b.offset);f.setEnd(a.node,a.offset);return f}b=a.startContainer;
f=b.ownerDocument||b;f=new Z(f);f.setStart(b,a.startOffset);f.setEnd(a.endContainer,a.endOffset);return f}function Z(a){this.init(a)}function Pa(a){if(!a.nodeName)return a.constructor===Z?a:mb(a);return new Z(a)}function ba(a,c,f){try{a.execCommand(c,!1,f)}catch(b){}}function nb(a,c){var f="";try{f=a.queryCommandValue(c)}catch(b){}typeof f!=="string"&&(f="");return f}function Qa(a){var c=ha(a);return a.selection||c.getSelection()}function ob(a){var c={},f,b;h(a,function(a,d){f=a.split(",");for(var i=
0,e=f.length;i<e;i++)b=f[i],c[b]=d});return c}function Ra(a,c){return pb(a,c,"*")||pb(a,c)}function pb(a,c,f){f=f||a.name;if(a.type!==1)return!1;c=ob(c);if(!c[f])return!1;for(var f=c[f].split(","),c=0,b=f.length;c<b;c++){var d=f[c];if(d==="*")return!0;var k=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(d),i=k[1]?"css":"attr",d=k[2],k=k[3]||"";if(k===""&&a[i](d)!=="")return!0;if(k!==""&&a[i](d)===k)return!0}return!1}function Sa(a,c){a.type==1&&(qb(a,c,"*"),qb(a,c))}function qb(a,c,f){f=f||a.name;if(a.type===
1&&(c=ob(c),c[f])){for(var f=c[f].split(","),c=!1,b=0,d=f.length;b<d;b++){var k=f[b];if(k==="*"){c=!0;break}var i=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(k),k=i[2];i[1]?(k=p(k),a[0].style[k]&&(a[0].style[k]="")):a.removeAttr(k)}c&&a.remove(!0)}}function Ta(a){for(;a.first();)a=a.first();return a}function oa(a){if(a.type!=1||a.isSingle())return!1;return a.html().replace(/<[^>]+>/g,"")===""}function Nb(a,c,f){h(c,function(c,f){c!=="style"&&a.attr(c,f)});h(f,function(c,f){a.css(c,f)})}function ua(a){this.init(a)}
function rb(a){a.nodeName&&(a=ga(a),a=Pa(a).selectNodeContents(a.body).collapse(!1));return new ua(a)}function Ua(a){var c=a.moveEl,f=a.moveFn,b=a.clickEl||c,u=a.beforeDrag,k=[document];(a.iframeFix===d||a.iframeFix)&&i("iframe").each(function(){if(!/^https?:\/\//.test(M(this.src||"","absolute"))){var a;try{a=Va(this)}catch(c){}if(a){var f=i(this).pos();i(a).data("pos-x",f.x);i(a).data("pos-y",f.y);k.push(a)}}});b.mousedown(function(a){function d(a){a.preventDefault();var c=i(ga(a.target)),k=ca((c.data("pos-x")||
0)+a.pageX-s),a=ca((c.data("pos-y")||0)+a.pageY-q);f.call(b,j,n,m,l,k,a)}function e(a){a.preventDefault()}function g(a){a.preventDefault();i(k).unbind("mousemove",d).unbind("mouseup",g).unbind("selectstart",e);h.releaseCapture&&h.releaseCapture()}a.stopPropagation();var h=b.get(),j=o(c.css("left")),n=o(c.css("top")),m=c.width(),l=c.height(),s=a.pageX,q=a.pageY;u&&u();i(k).mousemove(d).mouseup(g).bind("selectstart",e);h.setCapture&&h.setCapture()})}function da(a){this.init(a)}function Wa(a){return new da(a)}
function Va(a){a=i(a)[0];return a.contentDocument||a.contentWindow.document}function Ob(a,c,f,b){var d=[Xa===""?"<html>":'<html dir="'+Xa+'">','<head><meta charset="utf-8" /><title></title>',"<style>","html {margin:0;padding:0;}","body {margin:0;padding:5px;}",'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}',"body, p, div {word-wrap: break-word;}","p {margin:5px 0;}","table {border-collapse:collapse;}","img {border:0;}","noscript {display:none;}","table.ke-zeroborder td {border:1px dotted #AAA;}",
"img.ke-flash {","\tborder:1px solid #AAA;","\tbackground-image:url("+a+"common/flash.gif);","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-rm {","\tborder:1px solid #AAA;","\tbackground-image:url("+a+"common/rm.gif);","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-media {","\tborder:1px solid #AAA;","\tbackground-image:url("+a+"common/media.gif);","\tbackground-position:center center;",
"\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-anchor {","\tborder:1px dashed #666;","\twidth:16px;","\theight:16px;","}",".ke-script, .ke-noscript, .ke-display-none {","\tdisplay:none;","\tfont-size:0;","\twidth:0;","\theight:0;","}",".ke-pagebreak {","\tborder:1px dotted #AAA;","\tfont-size:0;","\theight:2px;","}","</style>"];g(f)||(f=[f]);h(f,function(a,c){c&&d.push('<link href="'+c+'" rel="stylesheet" />')});b&&d.push("<style>"+b+"</style>");d.push("</head><body "+
(c?'class="'+c+'"':"")+"></body></html>");return d.join("\n")}function va(a,c){if(a.hasVal()){if(c===d){var f=a.val();return f=f.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig,"")}return a.val(c)}return a.html(c)}function wa(a){this.init(a)}function sb(a){return new wa(a)}function tb(a,c){var f=this.get(a);f&&!f.hasClass("ke-disabled")&&c(f)}function Ea(a){this.init(a)}function ub(a){return new Ea(a)}function xa(a){this.init(a)}function Ya(a){return new xa(a)}function ya(a){this.init(a)}function vb(a){return new ya(a)}
function Za(a){this.init(a)}function za(a){this.init(a)}function wb(a){return new za(a)}function $a(a,c){var f=document.getElementsByTagName("head")[0]||(aa?document.body:document.documentElement),b=document.createElement("script");f.appendChild(b);b.src=a;b.charset="utf-8";b.onload=b.onreadystatechange=function(){if(!this.readyState||this.readyState==="loaded")c&&c(),b.onload=b.onreadystatechange=null,f.removeChild(b)}}function xb(a){var c=a.indexOf("?");return c>0?a.substr(0,c):a}function ab(a){for(var c=
document.getElementsByTagName("head")[0]||(aa?document.body:document.documentElement),f=document.createElement("link"),b=xb(M(a,"absolute")),d=i('link[rel="stylesheet"]',c),k=0,e=d.length;k<e;k++)if(xb(M(d[k].href,"absolute"))===b)return;c.appendChild(f);f.href=a;f.rel="stylesheet"}function yb(a,c){if(a===d)return ia;if(!c)return ia[a];ia[a]=c}function zb(a){var c,f="core";if(c=/^(\w+)\.(\w+)$/.exec(a))f=c[1],a=c[2];return{ns:f,key:a}}function Ab(a,c){c=c===d?i.options.langType:c;if(typeof a==="string"){if(!$[c])return"no language";
var f=a.length-1;if(a.substr(f)===".")return $[c][a.substr(0,f)];f=zb(a);return $[c][f.ns][f.key]}h(a,function(a,f){var b=zb(a);$[c]||($[c]={});$[c][b.ns]||($[c][b.ns]={});$[c][b.ns][b.key]=f})}function Fa(a,c){if(!a.collapsed){var a=a.cloneRange().up(),f=a.startContainer,b=a.startOffset;if(ja||a.isControl())if((f=i(f.childNodes[b]))&&f.name=="img"&&c(f))return f}}function Pb(){var a=this;i(a.edit.doc).contextmenu(function(c){a.menu&&a.hideMenu();if(a.useContextmenu){if(a._contextmenus.length!==0){var f=
0,b=[];for(h(a._contextmenus,function(){if(this.title=="-")b.push(this);else if(this.cond&&this.cond()&&(b.push(this),this.width&&this.width>f))f=this.width});b.length>0&&b[0].title=="-";)b.shift();for(;b.length>0&&b[b.length-1].title=="-";)b.pop();var d=null;h(b,function(a){this.title=="-"&&d.title=="-"&&delete b[a];d=this});if(b.length>0){c.preventDefault();var k=i(a.edit.iframe).pos(),e=Ya({x:k.x+c.clientX,y:k.y+c.clientY,width:f,css:{visibility:"hidden"},shadowMode:a.shadowMode});h(b,function(){this.title&&
e.addItem(this)});var k=X(e.doc),g=e.div.height();c.clientY+g>=k.clientHeight-100&&e.pos(e.x,o(e.y)-g);e.div.css("visibility","visible");a.menu=e}}}else c.preventDefault()})}function Qb(){function a(a){for(a=i(a.commonAncestor());a;){if(a.type==1&&!a.isStyle())break;a=a.parent()}return a.name}var c=this,f=c.edit.doc,b=c.newlineTag;if(!(C&&b!=="br")&&(!pa||!(O<3&&b!=="p"))&&!(Na&&O<9)){var d=z("h1,h2,h3,h4,h5,h6,pre,li"),k=z("p,h1,h2,h3,h4,h5,h6,pre,li,blockquote");i(f).keydown(function(i){if(!(i.which!=
13||i.shiftKey||i.ctrlKey||i.altKey)){c.cmd.selection();var e=a(c.cmd.range);e=="marquee"||e=="select"||(b==="br"&&!d[e]?(i.preventDefault(),c.insertHtml("<br />"+(C&&O<9?"":"\u200b"))):k[e]||ba(f,"formatblock","<p>"))}});i(f).keyup(function(d){if(!(d.which!=13||d.shiftKey||d.ctrlKey||d.altKey)&&b!="br")if(pa){var d=c.cmd.commonAncestor("p"),u=c.cmd.commonAncestor("a");u&&u.text()==""&&(u.remove(!0),c.cmd.range.selectNodeContents(d[0]).collapse(!0),c.cmd.select())}else if(c.cmd.selection(),d=a(c.cmd.range),
!(d=="marquee"||d=="select"))if(k[d]||ba(f,"formatblock","<p>"),d=c.cmd.commonAncestor("div")){for(var u=i("<p></p>"),e=d[0].firstChild;e;){var g=e.nextSibling;u.append(e);e=g}d.before(u);d.remove();c.cmd.range.selectNodeContents(u[0]);c.cmd.select()}})}}function Rb(){var a=this,c=a.edit.doc;i(c).keydown(function(f){if(f.which==9)if(f.preventDefault(),a.afterTab)a.afterTab.call(a,f);else{var f=a.cmd,b=f.range;b.shrink();b.collapsed&&b.startContainer.nodeType==1&&(b.insertNode(i("@&nbsp;",c)[0]),f.select());
a.insertHtml("&nbsp;&nbsp;&nbsp;&nbsp;")}})}function Sb(){var a=this;i(a.edit.textarea[0],a.edit.win).focus(function(c){a.afterFocus&&a.afterFocus.call(a,c)}).blur(function(c){a.afterBlur&&a.afterBlur.call(a,c)})}function ka(a){return m(a.replace(/<span [^>]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/ig,""))}function bb(a){return a.replace(/<div[^>]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/ig,"")}function Bb(a,c){if(a.length===0)a.push(c);else{var f=a[a.length-1];ka(c.html)!==
ka(f.html)&&a.push(c)}}function Cb(a,c){var f=this.edit,b=f.doc.body,d,k;if(a.length===0)return this;f.designMode?(d=this.cmd.range,k=d.createBookmark(!0),k.html=b.innerHTML):k={html:b.innerHTML};Bb(c,k);var e=a.pop();ka(k.html)===ka(e.html)&&a.length>0&&(e=a.pop());f.designMode?(f.html(e.html),e.start&&(d.moveToBookmark(e),this.select())):i(b).html(ka(e.html));return this}function Aa(a){function c(a,c){Aa.prototype[a]===d&&(f[a]=c);f.options[a]=c}var f=this;f.options={};h(a,function(f){c(f,a[f])});
h(i.options,function(a,b){f[a]===d&&c(a,b)});var b=i(f.srcElement||"<textarea/>");if(!f.width)f.width=b[0].style.width||b.width();if(!f.height)f.height=b[0].style.height||b.height();c("width",r(f.width,f.minWidth));c("height",r(f.height,f.minHeight));c("width",j(f.width));c("height",j(f.height));if(Tb&&(!Ub||O<534))f.designMode=!1;f.srcElement=b;f.initContent="";f.plugin={};f.isCreated=!1;f.isLoading=!1;f._handlers={};f._contextmenus=[];f._undoStack=[];f._redoStack=[];f._calledPlugins={};f._firstAddBookmark=
!0;f.menu=f.contextmenu=null;f.dialogs=[]}function Db(a,c){function f(a){h(ia,function(c,f){f.call(a,KindEditor)});return a.create()}c=c||{};c.basePath=r(c.basePath,i.basePath);c.themesPath=r(c.themesPath,c.basePath+"themes/");c.langPath=r(c.langPath,c.basePath+"lang/");c.pluginsPath=r(c.pluginsPath,c.basePath+"plugins/");if(r(c.loadStyleMode,i.options.loadStyleMode)){var b=r(c.themeType,i.options.themeType);ab(c.themesPath+"default/default.css");ab(c.themesPath+b+"/"+b+".css")}if((b=i(a))&&b.length!==
0){if(b.length>1)return b.each(function(){Db(this,c)}),_instances[0];c.srcElement=b[0];var d=new Aa(c);_instances.push(d);if($[d.langType])return f(d);$a(d.langPath+d.langType+".js?ver="+encodeURIComponent(i.DEBUG?Ga:Ha),function(){f(d)});return d}}function Eb(a,c){i(a).each(function(a,b){i.each(_instances,function(a,f){if(f&&f.srcElement[0]==b)return c.call(f,a,f),!1})})}if(!b.KindEditor){if(!b.console)b.console={};if(!console.log)console.log=function(){};var Ha="4.1.7 (2013-04-21)",I=navigator.userAgent.toLowerCase(),
C=I.indexOf("msie")>-1&&I.indexOf("opera")==-1,pa=I.indexOf("gecko")>-1&&I.indexOf("khtml")==-1,ja=I.indexOf("applewebkit")>-1,Na=I.indexOf("opera")>-1,Tb=I.indexOf("mobile")>-1,Ub=/ipad|iphone|ipod/.test(I),aa=document.compatMode!="CSS1Compat",O=(I=/(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(I))?I[1]:"0",Ga=(new Date).getTime(),ca=Math.round,i={DEBUG:!1,VERSION:Ha,IE:C,GECKO:pa,WEBKIT:ja,OPERA:Na,V:O,TIME:Ga,each:h,isArray:g,isFunction:l,inArray:e,inString:n,trim:m,addUnit:j,removeUnit:o,escape:s,
unescape:t,toCamel:p,toHex:q,toMap:z,toArray:D,undef:r,invalidUrl:function(a){return!a||/[<>"]/.test(a)},addParam:function(a,c){return a.indexOf("?")>=0?a+"&"+c:a+"?"+c},extend:A,json:w},gb=z("a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),hb=z("address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul"),
fb=z("area,index,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"),Fb=z("b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u"),Vb=z("img,table,input,textarea,button"),Ja=z("pre,style,script"),Ia=z("html,head,body,td,tr,table,ol,ul,li");z("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");var Jb=z("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),Gb=z("input,button,textarea,select");i.basePath=function(){for(var a=
document.getElementsByTagName("script"),c,f=0,b=a.length;f<b;f++)if(c=a[f].src||"",/kindeditor[\w\-\.]*\.js/.test(c))return c.substring(0,c.lastIndexOf("/")+1);return""}();i.options={designMode:!0,fullscreenMode:!1,filterMode:!0,wellFormatMode:!0,shadowMode:!0,loadStyleMode:!0,basePath:i.basePath,themesPath:i.basePath+"themes/",langPath:i.basePath+"lang/",pluginsPath:i.basePath+"plugins/",themeType:"default",langType:"zh_CN",urlType:"",newlineTag:"p",resizeType:2,syncType:"form",pasteType:2,dialogAlignType:"page",
useContextmenu:!0,fullscreenShortcut:!1,bodyClass:"ke-content",indentChar:"\t",cssPath:"",cssData:"",minWidth:650,minHeight:100,minChangeSize:50,zIndex:811213,items:["source","|","undo","redo","|","preview","print","template","code","cut","copy","paste","plainpaste","wordpaste","|","justifyleft","justifycenter","justifyright","justifyfull","insertorderedlist","insertunorderedlist","indent","outdent","subscript","superscript","clearhtml","quickformat","selectall","|","fullscreen","/","formatblock",
"fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","strikethrough","lineheight","removeformat","|","image","multiimage","flash","media","insertfile","table","hr","emoticons","baidumap","pagebreak","anchor","link","unlink","|","about"],noDisableItems:["source","fullscreen"],colorTable:[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],
["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]],fontSizeTable:["9px","10px","12px","14px","16px","18px","24px","32px"],htmlTags:{font:["id","class","color","size","face",".background-color"],span:["id","class",".color",".background-color",".font-size",".font-family",".background",".font-weight",".font-style",".text-decoration",".vertical-align",".line-height"],div:["id","class","align",".border",".margin",".padding",".text-align",".color",".background-color",".font-size",".font-family",
".font-weight",".background",".font-style",".text-decoration",".vertical-align",".margin-left"],table:["id","class","border","cellspacing","cellpadding","width","height","align","bordercolor",".padding",".margin",".border","bgcolor",".text-align",".color",".background-color",".font-size",".font-family",".font-weight",".font-style",".text-decoration",".background",".width",".height",".border-collapse"],"td,th":["id","class","align","valign","width","height","colspan","rowspan","bgcolor",".text-align",
".color",".background-color",".font-size",".font-family",".font-weight",".font-style",".text-decoration",".vertical-align",".background",".border"],a:["id","class","href","target","name"],embed:["id","class","src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess"],img:["id","class","src","width","height","border","alt","title","align",".width",".height",".border"],"p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":["id","class","align",".text-align",".color",
".background-color",".font-size",".font-family",".background",".font-weight",".font-style",".text-decoration",".vertical-align",".text-indent",".margin-left"],pre:["id","class"],hr:["id","class",".page-break-after"],"br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del":["id","class"],iframe:["id","class","src","frameborder","width","height",".width",".height"]},layout:'<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>'};var db=!1,Hb=z("8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222"),
I=z("33..40"),cb={};h(Hb,function(a,c){cb[a]=c});h(I,function(a,c){cb[a]=c});var Wb="altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which".split(",");A(E,{init:function(a,c){var f=this,b=a.ownerDocument||a.document||a;f.event=c;h(Wb,
function(a,b){f[b]=c[b]});if(!f.target)f.target=f.srcElement||b;if(f.target.nodeType===3)f.target=f.target.parentNode;if(!f.relatedTarget&&f.fromElement)f.relatedTarget=f.fromElement===f.target?f.toElement:f.fromElement;if(f.pageX==null&&f.clientX!=null){var i=b.documentElement,b=b.body;f.pageX=f.clientX+(i&&i.scrollLeft||b&&b.scrollLeft||0)-(i&&i.clientLeft||b&&b.clientLeft||0);f.pageY=f.clientY+(i&&i.scrollTop||b&&b.scrollTop||0)-(i&&i.clientTop||b&&b.clientTop||0)}if(!f.which&&(f.charCode||f.charCode===
0?f.charCode:f.keyCode))f.which=f.charCode||f.keyCode;if(!f.metaKey&&f.ctrlKey)f.metaKey=f.ctrlKey;if(!f.which&&f.button!==d)f.which=f.button&1?1:f.button&2?3:f.button&4?2:0;switch(f.which){case 186:f.which=59;break;case 187:case 107:case 43:f.which=61;break;case 189:case 45:f.which=109;break;case 42:f.which=106;break;case 47:f.which=111;break;case 78:f.which=110}f.which>=96&&f.which<=105&&(f.which-=48)},preventDefault:function(){var a=this.event;a.preventDefault&&a.preventDefault();a.returnValue=
!1},stopPropagation:function(){var a=this.event;a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0},stop:function(){this.preventDefault();this.stopPropagation()}});var la="kindeditor_"+Ga,eb=0,L={};C&&b.attachEvent("onunload",function(){h(L,function(a,c){c.el&&N(c.el)})});i.ctrl=V;i.ready=function(a){function c(){i||(i=!0,a(KindEditor))}function f(){if(!i){try{document.documentElement.doScroll("left")}catch(a){setTimeout(f,100);return}c()}}function d(){document.readyState==="complete"&&c()}
var i=!1;if(document.addEventListener)F(document,"DOMContentLoaded",c);else if(document.attachEvent){F(document,"readystatechange",d);var k=!1;try{k=b.frameElement==null}catch(e){}document.documentElement.doScroll&&k&&f()}F(b,"load",c)};i.formatUrl=M;i.formatHtml=J;i.getCssList=Q;i.getAttrList=G;i.mediaType=T;i.mediaAttrs=fa;i.mediaEmbed=Ka;i.mediaImg=ib;i.clearMsWord=W;i.tmpl=function(a,c){var f=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
" ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return c?f(c):f};I=document.createElement("div");I.setAttribute("className","t");var Kb=I.className!=="t";i.query=function(a,c){var f=Da(a,c);return f.length>0?f[0]:null};i.queryAll=Da;A(R,{init:function(a){for(var a=g(a)?a:[a],c=0,f=0,b=a.length;f<b;f++)a[f]&&(this[f]=a[f].constructor===R?a[f][0]:a[f],
c++);this.length=c;this.doc=ga(this[0]);this.name=Ma(this[0]);this.type=this.length>0?this[0].nodeType:null;this.win=ha(this[0])},each:function(a){for(var c=0;c<this.length;c++)if(a.call(this[c],c,this[c])===!1)break;return this},bind:function(a,c){this.each(function(){F(this,a,c)});return this},unbind:function(a,c){this.each(function(){N(this,a,c)});return this},fire:function(a){if(this.length<1)return this;ea(this[0],a);return this},hasAttr:function(a){if(this.length<1)return!1;return!!Ca(this[0],
a)},attr:function(a,c){var f=this;if(a===d)return G(f.outer());if(typeof a==="object")return h(a,function(a,c){f.attr(a,c)}),f;if(c===d)return c=f.length<1?null:Ca(f[0],a),c===null?"":c;f.each(function(){La(this,a,c)});return f},removeAttr:function(a){this.each(function(){var c=a;C&&O<8&&c.toLowerCase()=="class"&&(c="className");La(this,c,"");this.removeAttribute(c)});return this},get:function(a){if(this.length<1)return null;return this[a||0]},eq:function(a){if(this.length<1)return null;return this[a]?
new R(this[a]):null},hasClass:function(a){if(this.length<1)return!1;return n(a,this[0].className," ")},addClass:function(a){this.each(function(){if(!n(a,this.className," "))this.className=m(this.className+" "+a)});return this},removeClass:function(a){this.each(function(){if(n(a,this.className," "))this.className=m(this.className.replace(RegExp("(^|\\s)"+a+"(\\s|$)")," "))});return this},html:function(a){if(a===d){if(this.length<1||this.type!=1)return"";return J(this[0].innerHTML)}this.each(function(){Lb(this,
a)});return this},text:function(){if(this.length<1)return"";return C?this[0].innerText:this[0].textContent},hasVal:function(){if(this.length<1)return!1;return!!Gb[Ma(this[0])]},val:function(a){if(a===d){if(this.length<1)return"";return this.hasVal()?this[0].value:this.attr("value")}else return this.each(function(){Gb[Ma(this)]?this.value=a:La(this,"value",a)}),this},css:function(a,c){var f=this;if(a===d)return Q(f.attr("style"));if(typeof a==="object")return h(a,function(a,c){f.css(a,c)}),f;if(c===
d){if(f.length<1)return"";return f[0].style[p(a)]||Mb(f[0],a)||""}f.each(function(){this.style[p(a)]=c});return f},width:function(a){if(a===d){if(this.length<1)return 0;return this[0].offsetWidth}return this.css("width",j(a))},height:function(a){if(a===d){if(this.length<1)return 0;return this[0].offsetHeight}return this.css("height",j(a))},opacity:function(a){this.each(function(){this.style.opacity===d?this.style.filter=a==1?"":"alpha(opacity="+a*100+")":this.style.opacity=a==1?"":a});return this},
data:function(a,c){a="kindeditor_data_"+a;if(c===d){if(this.length<1)return null;return this[0][a]}this.each(function(){this[a]=c});return this},pos:function(){var a=this[0],c=0,f=0;if(a)if(a.getBoundingClientRect)a=a.getBoundingClientRect(),f=ma(this.doc),c=a.left+f.x,f=a.top+f.y;else for(;a;)c+=a.offsetLeft,f+=a.offsetTop,a=a.offsetParent;return{x:ca(c),y:ca(f)}},clone:function(a){if(this.length<1)return new R([]);return new R(this[0].cloneNode(a))},append:function(a){this.each(function(){this.appendChild&&
this.appendChild(i(a)[0])});return this},appendTo:function(a){this.each(function(){i(a)[0].appendChild(this)});return this},before:function(a){this.each(function(){this.parentNode.insertBefore(i(a)[0],this)});return this},after:function(a){this.each(function(){this.nextSibling?this.parentNode.insertBefore(i(a)[0],this.nextSibling):this.parentNode.appendChild(i(a)[0])});return this},replaceWith:function(a){var c=[];this.each(function(f,b){N(b);var d=i(a)[0];b.parentNode.replaceChild(d,b);c.push(d)});
return i(c)},empty:function(){this.each(function(a,c){for(var f=c.firstChild;f;){if(!c.parentNode)break;var b=f.nextSibling;f.parentNode.removeChild(f);f=b}});return this},remove:function(a){var c=this;c.each(function(f,b){if(b.parentNode){N(b);if(a)for(var d=b.firstChild;d;){var i=d.nextSibling;b.parentNode.insertBefore(d,b);d=i}b.parentNode.removeChild(b);delete c[f]}});c.length=0;return c},show:function(a){a===d&&(a=this._originDisplay||"");if(this.css("display")!="none")return this;return this.css("display",
a)},hide:function(){if(this.length<1)return this;this._originDisplay=this[0].style.display;return this.css("display","none")},outer:function(){if(this.length<1)return"";var a=this.doc.createElement("div");a.appendChild(this[0].cloneNode(!0));return J(a.innerHTML)},isSingle:function(){return!!fb[this.name]},isInline:function(){return!!gb[this.name]},isBlock:function(){return!!hb[this.name]},isStyle:function(){return!!Fb[this.name]},isControl:function(){return!!Vb[this.name]},contains:function(a){if(this.length<
1)return!1;return Ba(this[0],i(a)[0])},parent:function(){if(this.length<1)return null;var a=this[0].parentNode;return a?new R(a):null},children:function(){if(this.length<1)return new R([]);for(var a=[],c=this[0].firstChild;c;)(c.nodeType!=3||m(c.nodeValue)!=="")&&a.push(c),c=c.nextSibling;return new R(a)},first:function(){var a=this.children();return a.length>0?a.eq(0):null},last:function(){var a=this.children();return a.length>0?a.eq(a.length-1):null},index:function(){if(this.length<1)return-1;for(var a=
-1,c=this[0];c;)a++,c=c.previousSibling;return a},prev:function(){if(this.length<1)return null;var a=this[0].previousSibling;return a?new R(a):null},next:function(){if(this.length<1)return null;var a=this[0].nextSibling;return a?new R(a):null},scan:function(a,c){function b(d){for(d=c?d.firstChild:d.lastChild;d;){var i=c?d.nextSibling:d.previousSibling;if(a(d)===!1)return!1;if(b(d)===!1)return!1;d=i}}if(!(this.length<1))return c=c===d?!0:c,b(this[0]),this}});h("blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error,contextmenu".split(","),
function(a,c){R.prototype[c]=function(a){return a?this.bind(c,a):this.fire(c)}});I=i;i=function(a,c){function b(a){a[0]||(a=[]);return new R(a)}if(!(a===d||a===null)){if(typeof a==="string"){c&&(c=i(c)[0]);var e=a.length;a.charAt(0)==="@"&&(a=a.substr(1));if(a.length!==e||/<.+>/.test(a)){var e=(c?c.ownerDocument||c:document).createElement("div"),u=[];e.innerHTML='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+a;for(var k=0,h=e.childNodes.length;k<h;k++){var j=e.childNodes[k];
j.id!="__kindeditor_temp_tag__"&&u.push(j)}return b(u)}return b(Da(a,c))}if(a&&a.constructor===R)return a;a.toArray&&(a=a.toArray());if(g(a))return b(a);return b(D(arguments))}};h(I,function(a,c){i[a]=c});i.NodeClass=R;b.KindEditor=i;var ra=0,qa=1,na=2,sa=3,Ib=0;A(Z,{init:function(a){this.startContainer=a;this.startOffset=0;this.endContainer=a;this.endOffset=0;this.collapsed=!0;this.doc=a},commonAncestor:function(){function a(a){for(var c=[];a;)c.push(a),a=a.parentNode;return c}for(var c=a(this.startContainer),
b=a(this.endContainer),d=0,i=c.length,k=b.length,e,g;++d;)if(e=c[i-d],g=b[k-d],!e||!g||e!==g)break;return c[i-d+1]},setStart:function(a,c){var b=this.doc;this.startContainer=a;this.startOffset=c;if(this.endContainer===b)this.endContainer=a,this.endOffset=c;return jb(this)},setEnd:function(a,c){var b=this.doc;this.endContainer=a;this.endOffset=c;if(this.startContainer===b)this.startContainer=a,this.startOffset=c;return jb(this)},setStartBefore:function(a){return this.setStart(a.parentNode||this.doc,
i(a).index())},setStartAfter:function(a){return this.setStart(a.parentNode||this.doc,i(a).index()+1)},setEndBefore:function(a){return this.setEnd(a.parentNode||this.doc,i(a).index())},setEndAfter:function(a){return this.setEnd(a.parentNode||this.doc,i(a).index()+1)},selectNode:function(a){return this.setStartBefore(a).setEndAfter(a)},selectNodeContents:function(a){var c=i(a);if(c.type==3||c.isSingle())return this.selectNode(a);c=c.children();if(c.length>0)return this.setStartBefore(c[0]).setEndAfter(c[c.length-
1]);return this.setStart(a,0).setEnd(a,0)},collapse:function(a){if(a)return this.setEnd(this.startContainer,this.startOffset);return this.setStart(this.endContainer,this.endOffset)},compareBoundaryPoints:function(a,c){var b=this.get(),d=c.get();if(C){var e={};e[ra]="StartToStart";e[qa]="EndToStart";e[na]="EndToEnd";e[sa]="StartToEnd";b=b.compareEndPoints(e[a],d);if(b!==0)return b;var k,g,h,j;if(a===ra||a===sa)k=this.startContainer,h=this.startOffset;if(a===qa||a===na)k=this.endContainer,h=this.endOffset;
if(a===ra||a===qa)g=c.startContainer,j=c.startOffset;if(a===na||a===sa)g=c.endContainer,j=c.endOffset;if(k===g)return k=h-j,k>0?1:k<0?-1:0;for(b=g;b&&b.parentNode!==k;)b=b.parentNode;if(b)return i(b).index()>=h?-1:1;for(b=k;b&&b.parentNode!==g;)b=b.parentNode;if(b)return i(b).index()>=j?1:-1;if((b=i(g).next())&&b.contains(k))return 1;if((b=i(k).next())&&b.contains(g))return-1}else return b.compareBoundaryPoints(a,d)},cloneRange:function(){return(new Z(this.doc)).setStart(this.startContainer,this.startOffset).setEnd(this.endContainer,
this.endOffset)},toString:function(){var a=this.get();return(C?a.text:a.toString()).replace(/\r\n|\n|\r/g,"")},cloneContents:function(){return Oa(this,!0,!1)},deleteContents:function(){return Oa(this,!1,!0)},extractContents:function(){return Oa(this,!0,!0)},insertNode:function(a){var c=this.startContainer,b=this.startOffset,d=this.endContainer,i=this.endOffset,k,e,g,h=1;if(a.nodeName.toLowerCase()==="#document-fragment")k=a.firstChild,e=a.lastChild,h=a.childNodes.length;c.nodeType==1?(g=c.childNodes[b])?
(c.insertBefore(a,g),c===d&&(i+=h)):c.appendChild(a):c.nodeType==3&&(b===0?(c.parentNode.insertBefore(a,c),c.parentNode===d&&(i+=h)):b>=c.nodeValue.length?c.nextSibling?c.parentNode.insertBefore(a,c.nextSibling):c.parentNode.appendChild(a):(g=b>0?c.splitText(b):c,c.parentNode.insertBefore(a,g),c===d&&(d=g,i-=b)));k?this.setStartBefore(k).setEndAfter(e):this.selectNode(a);if(this.compareBoundaryPoints(na,this.cloneRange().setEnd(d,i))>=1)return this;return this.setEnd(d,i)},surroundContents:function(a){a.appendChild(this.extractContents());
return this.insertNode(a).selectNode(a)},isControl:function(){var a=this.startContainer,c=this.startOffset,b=this.endContainer,d=this.endOffset;return a.nodeType==1&&a===b&&c+1===d&&i(a.childNodes[c]).isControl()},get:function(a){var c=this.doc;if(!C){c=c.createRange();try{c.setStart(this.startContainer,this.startOffset),c.setEnd(this.endContainer,this.endOffset)}catch(b){}return c}if(a&&this.isControl())return c=c.body.createControlRange(),c.addElement(this.startContainer.childNodes[this.startOffset]),
c;a=this.cloneRange().down();c=c.body.createTextRange();c.setEndPoint("StartToStart",lb(a.startContainer,a.startOffset));c.setEndPoint("EndToStart",lb(a.endContainer,a.endOffset));return c},html:function(){return i(this.cloneContents()).outer()},down:function(){function a(a,b,d){if(a.nodeType==1&&(a=i(a).children(),a.length!==0)){var k,e,g,h;b>0&&(k=a.eq(b-1));b<a.length&&(e=a.eq(b));if(k&&k.type==3)g=k[0],h=g.nodeValue.length;e&&e.type==3&&(g=e[0],h=0);g&&(d?c.setStart(g,h):c.setEnd(g,h))}}var c=
this;a(c.startContainer,c.startOffset,!0);a(c.endContainer,c.endOffset,!1);return c},up:function(){function a(a,b,d){a.nodeType==3&&(b===0?d?c.setStartBefore(a):c.setEndBefore(a):b==a.nodeValue.length&&(d?c.setStartAfter(a):c.setEndAfter(a)))}var c=this;a(c.startContainer,c.startOffset,!0);a(c.endContainer,c.endOffset,!1);return c},enlarge:function(a){function c(c,d,k){c=i(c);if(!(c.type==3||Ia[c.name]||!a&&c.isBlock()))if(d===0){for(;!c.prev();){d=c.parent();if(!d||Ia[d.name]||!a&&d.isBlock())break;
c=d}k?b.setStartBefore(c[0]):b.setEndBefore(c[0])}else if(d==c.children().length){for(;!c.next();){d=c.parent();if(!d||Ia[d.name]||!a&&d.isBlock())break;c=d}k?b.setStartAfter(c[0]):b.setEndAfter(c[0])}}var b=this;b.up();c(b.startContainer,b.startOffset,!0);c(b.endContainer,b.endOffset,!1);return b},shrink:function(){for(var a,c=this.collapsed;this.startContainer.nodeType==1&&(a=this.startContainer.childNodes[this.startOffset])&&a.nodeType==1&&!i(a).isSingle();)this.setStart(a,0);if(c)return this.collapse(c);
for(;this.endContainer.nodeType==1&&this.endOffset>0&&(a=this.endContainer.childNodes[this.endOffset-1])&&a.nodeType==1&&!i(a).isSingle();)this.setEnd(a,a.childNodes.length);return this},createBookmark:function(a){var c,b=i('<span style="display:none;"></span>',this.doc)[0];b.id="__kindeditor_bookmark_start_"+Ib++ +"__";if(!this.collapsed)c=b.cloneNode(!0),c.id="__kindeditor_bookmark_end_"+Ib++ +"__";c&&this.cloneRange().collapse(!1).insertNode(c).setEndBefore(c);this.insertNode(b).setStartAfter(b);
return{start:a?"#"+b.id:b,end:c?a?"#"+c.id:c:null}},moveToBookmark:function(a){var c=this.doc,b=i(a.start,c),a=a.end?i(a.end,c):null;if(!b||b.length<1)return this;this.setStartBefore(b[0]);b.remove();a&&a.length>0?(this.setEndBefore(a[0]),a.remove()):this.collapse(!0);return this},dump:function(){console.log("--------------------");console.log(this.startContainer.nodeType==3?this.startContainer.nodeValue:this.startContainer,this.startOffset);console.log(this.endContainer.nodeType==3?this.endContainer.nodeValue:
this.endContainer,this.endOffset)}});i.RangeClass=Z;i.range=Pa;i.START_TO_START=ra;i.START_TO_END=qa;i.END_TO_END=na;i.END_TO_START=sa;A(ua,{init:function(a){var c=a.doc;this.doc=c;this.win=ha(c);this.sel=Qa(c);this.range=a},selection:function(a){var c=this.doc,b;b=Qa(c);var d;try{d=b.rangeCount>0?b.getRangeAt(0):b.createRange()}catch(e){}b=C&&(!d||!d.item&&d.parentElement().ownerDocument!==c)?null:d;this.sel=Qa(c);if(b)return this.range=Pa(b),i(this.range.startContainer).name=="html"&&this.range.selectNodeContents(c.body).collapse(!1),
this;a&&this.range.selectNodeContents(c.body).collapse(!1);return this},select:function(a){var a=r(a,!0),c=this.sel,b=this.range.cloneRange().shrink(),d=b.startContainer,e=b.startOffset,k=ga(d),g=this.win,h,j=!1;if(a&&d.nodeType==1&&b.collapsed){if(C){c=i("<span>&nbsp;</span>",k);b.insertNode(c[0]);h=k.body.createTextRange();try{h.moveToElementText(c[0])}catch(n){}h.collapse(!1);h.select();c.remove();g.focus();return this}if(ja&&(a=d.childNodes,i(d).isInline()||e>0&&i(a[e-1]).isInline()||a[e]&&i(a[e]).isInline()))b.insertNode(k.createTextNode("\u200b")),
j=!0}if(C)try{h=b.get(!0),h.select()}catch(o){}else j&&b.collapse(!1),h=b.get(!0),c.removeAllRanges(),c.addRange(h),k!==document&&(b=i(h.endContainer).pos(),g.scrollTo(b.x,b.y));g.focus();return this},wrap:function(a){var c=this.range,b;b=i(a,this.doc);if(c.collapsed)return c.shrink(),c.insertNode(b[0]).selectNodeContents(b[0]),this;if(b.isBlock()){for(var d=a=b.clone(!0);d.first();)d=d.first();d.append(c.extractContents());c.insertNode(a[0]).selectNode(a[0]);return this}c.enlarge();var e=c.createBookmark(),
a=c.commonAncestor(),k=!1;i(a).scan(function(a){if(!k&&a==e.start)k=!0;else if(k){if(a==e.end)return!1;var c=i(a),d;a:{for(d=c;d&&d.name!="body";){if(Ja[d.name]||d.name=="div"&&d.hasClass("ke-script")){d=!0;break a}d=d.parent()}d=!1}if(!d&&c.type==3&&m(a.nodeValue).length>0){for(var g;(g=c.parent())&&g.isStyle()&&g.children().length==1;)c=g;g=b;g=g.clone(!0);if(c.type==3)Ta(g).append(c.clone(!1)),c.replaceWith(g);else{for(var a=c,h;(h=c.first())&&h.children().length==1;)c=h;h=c.first();for(c=c.doc.createDocumentFragment();h;)c.appendChild(h[0]),
h=h.next();h=a.clone(!0);d=Ta(h);for(var j=h,n=!1;g;){for(;j;)j.name===g.name&&(Nb(j,g.attr(),g.css()),n=!0),j=j.first();n||d.append(g.clone(!1));n=!1;g=g.first()}g=h;c.firstChild&&Ta(g).append(c);a.replaceWith(g)}}}});c.moveToBookmark(e);return this},split:function(a,c){for(var b=this.range,d=b.doc,e=b.cloneRange().collapse(a),k=e.startContainer,g=e.startOffset,h=k.nodeType==3?k.parentNode:k,j=!1,n;h&&h.parentNode;){n=i(h);if(c){if(!n.isStyle())break;if(!Ra(n,c))break}else if(Ia[n.name])break;j=
!0;h=h.parentNode}if(j)d=d.createElement("span"),b.cloneRange().collapse(!a).insertNode(d),a?e.setStartBefore(h.firstChild).setEnd(k,g):e.setStart(k,g).setEndAfter(h.lastChild),k=e.extractContents(),g=k.firstChild,j=k.lastChild,a?(e.insertNode(k),b.setStartAfter(j).setEndBefore(d)):(h.appendChild(k),b.setStartBefore(d).setEndBefore(g)),e=d.parentNode,e==b.endContainer&&(h=i(d).prev(),k=i(d).next(),h&&k&&h.type==3&&k.type==3?b.setEnd(h[0],h[0].nodeValue.length):a||b.setEnd(b.endContainer,b.endOffset-
1)),e.removeChild(d);return this},remove:function(a){var c=this.doc,b=this.range;b.enlarge();if(b.startOffset===0){for(var d=i(b.startContainer),e;(e=d.parent())&&e.isStyle()&&e.children().length==1;)d=e;b.setStart(d[0],0);d=i(b.startContainer);d.isBlock()&&Sa(d,a);(d=d.parent())&&d.isBlock()&&Sa(d,a)}if(b.collapsed){this.split(!0,a);c=b.startContainer;d=b.startOffset;if(d>0&&(e=i(c.childNodes[d-1]))&&oa(e))e.remove(),b.setStart(c,d-1);(d=i(c.childNodes[d]))&&oa(d)&&d.remove();oa(c)&&(b.startBefore(c),
c.remove());b.collapse(!0);return this}this.split(!0,a);this.split(!1,a);var k=c.createElement("span"),g=c.createElement("span");b.cloneRange().collapse(!1).insertNode(g);b.cloneRange().collapse(!0).insertNode(k);var j=[],n=!1;i(b.commonAncestor()).scan(function(a){if(!n&&a==k)n=!0;else{if(a==g)return!1;n&&j.push(a)}});i(k).remove();i(g).remove();c=b.startContainer;d=b.startOffset;e=b.endContainer;var o=b.endOffset;if(d>0){var m=i(c.childNodes[d-1]);m&&oa(m)&&(m.remove(),b.setStart(c,d-1),c==e&&b.setEnd(e,
o-1));if((d=i(c.childNodes[d]))&&oa(d))d.remove(),c==e&&b.setEnd(e,o-1)}(c=i(e.childNodes[b.endOffset]))&&oa(c)&&c.remove();c=b.createBookmark(!0);h(j,function(c,b){Sa(i(b),a)});b.moveToBookmark(c);return this},commonNode:function(a){function c(c){for(var b=c;c;){if(Ra(i(c),a))return i(c);c=c.parentNode}for(;b&&(b=b.lastChild);)if(Ra(i(b),a))return i(b);return null}var b=this.range,d=b.endContainer,b=b.endOffset,e=d.nodeType==3||b===0?d:d.childNodes[b-1],k=c(e);if(k)return k;if(e.nodeType==1||d.nodeType==
3&&b===0)if(d=i(e).prev())return c(d);return null},commonAncestor:function(a){function c(c){for(;c;){if(c.nodeType==1&&c.tagName.toLowerCase()===a)return c;c=c.parentNode}return null}var b=this.range,d=b.startContainer,e=b.startOffset,k=b.endContainer,b=b.endOffset,k=k.nodeType==3||b===0?k:k.childNodes[b-1],d=c(d.nodeType==3||e===0?d:d.childNodes[e-1]),e=c(k);if(d&&e&&d===e)return i(d);return null},state:function(a){var c=this.doc,b=!1;try{b=c.queryCommandState(a)}catch(d){}return b},val:function(a){var c=
this.doc,a=a.toLowerCase(),b="";if(a==="fontfamily"||a==="fontname")return b=nb(c,"fontname"),b=b.replace(/['"]/g,""),b.toLowerCase();if(a==="formatblock"){b=nb(c,a);if(b===""&&(a=this.commonNode({"h1,h2,h3,h4,h5,h6,p,div,pre,address":"*"})))b=a.name;b==="Normal"&&(b="p");return b.toLowerCase()}if(a==="fontsize")return(a=this.commonNode({"*":".font-size"}))&&(b=a.css("font-size")),b.toLowerCase();if(a==="forecolor")return(a=this.commonNode({"*":".color"}))&&(b=a.css("color")),b=q(b),b===""&&(b="default"),
b.toLowerCase();if(a==="hilitecolor")return(a=this.commonNode({"*":".background-color"}))&&(b=a.css("background-color")),b=q(b),b===""&&(b="default"),b.toLowerCase();return b},toggle:function(a,c){this.commonNode(c)?this.remove(c):this.wrap(a);return this.select()},bold:function(){return this.toggle("<strong></strong>",{span:".font-weight=bold",strong:"*",b:"*"})},italic:function(){return this.toggle("<em></em>",{span:".font-style=italic",em:"*",i:"*"})},underline:function(){return this.toggle("<u></u>",
{span:".text-decoration=underline",u:"*"})},strikethrough:function(){return this.toggle("<s></s>",{span:".text-decoration=line-through",s:"*"})},forecolor:function(a){return this.toggle('<span style="color:'+a+';"></span>',{span:".color="+a,font:"color"})},hilitecolor:function(a){return this.toggle('<span style="background-color:'+a+';"></span>',{span:".background-color="+a})},fontsize:function(a){return this.toggle('<span style="font-size:'+a+';"></span>',{span:".font-size="+a,font:"size"})},fontname:function(a){return this.fontfamily(a)},
fontfamily:function(a){return this.toggle('<span style="font-family:'+a+';"></span>',{span:".font-family="+a,font:"face"})},removeformat:function(){var a={"*":".font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent"};h(Fb,function(c){a[c]="*"});this.remove(a);return this.select()},inserthtml:function(a,c){function b(a,c){var c='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+c,d=a.get();d.item?d.item(0).outerHTML=c:
d.pasteHTML(c);var f=a.doc.getElementById("__kindeditor_temp_tag__");f.parentNode.removeChild(f);d=mb(d);a.setEnd(d.endContainer,d.endOffset);a.collapse(!1);e.select(!1)}function d(a,c){var b=a.doc,f=b.createDocumentFragment();i("@"+c,b).each(function(){f.appendChild(this)});a.deleteContents();a.insertNode(f);a.collapse(!1);e.select(!1)}var e=this,k=e.range;if(a==="")return e;if(C&&c){try{b(k,a)}catch(g){d(k,a)}return e}d(k,a);return e},hr:function(){return this.inserthtml("<hr />")},print:function(){this.win.print();
return this},insertimage:function(a,c,b,d,e,i){c=r(c,"");r(e,0);a='<img src="'+s(a)+'" data-ke-src="'+s(a)+'" ';b&&(a+='width="'+s(b)+'" ');d&&(a+='height="'+s(d)+'" ');c&&(a+='title="'+s(c)+'" ');i&&(a+='align="'+s(i)+'" ');a+='alt="'+s(c)+'" ';a+="/>";return this.inserthtml(a)},createlink:function(a,c){var b=this.doc,d=this.range;this.select();var e=this.commonNode({a:"*"});e&&!d.isControl()&&(d.selectNode(e.get()),this.select());e='<a href="'+s(a)+'" data-ke-src="'+s(a)+'" ';c&&(e+=' target="'+
s(c)+'"');if(d.collapsed)return e+=">"+s(a)+"</a>",this.inserthtml(e);if(d.isControl()){var k=i(d.startContainer.childNodes[d.startOffset]);e+="></a>";k.after(i(e,b));k.next().append(k);d.selectNode(k[0]);return this.select()}ba(b,"createlink","__kindeditor_temp_url__");i('a[href="__kindeditor_temp_url__"]',b).each(function(){i(this).attr("href",a).attr("data-ke-src",a);c?i(this).attr("target",c):i(this).removeAttr("target")});return this},unlink:function(){var a=this.doc,c=this.range;this.select();
if(c.collapsed){var b=this.commonNode({a:"*"});b&&(c.selectNode(b.get()),this.select());ba(a,"unlink",null);ja&&i(c.startContainer).name==="img"&&(a=i(c.startContainer).parent(),a.name==="a"&&a.remove(!0))}else ba(a,"unlink",null);return this}});h("formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript".split(","),function(a,c){ua.prototype[c]=function(a){this.select();ba(this.doc,c,a);(!C||e(c,"formatblock,selectall,insertorderedlist,insertunorderedlist".split(","))>=
0)&&this.selection();return this}});h("cut,copy,paste".split(","),function(a,c){ua.prototype[c]=function(){if(!this.doc.queryCommandSupported(c))throw"not supported";this.select();ba(this.doc,c,null);return this}});i.CmdClass=ua;i.cmd=rb;A(da,{init:function(a){var c=this;c.name=a.name||"";c.doc=a.doc||document;c.win=ha(c.doc);c.x=j(a.x);c.y=j(a.y);c.z=a.z;c.width=j(a.width);c.height=j(a.height);c.div=i('<div style="display:block;"></div>');c.options=a;c._alignEl=a.alignEl;c.width&&c.div.css("width",
c.width);c.height&&c.div.css("height",c.height);c.z&&c.div.css({position:"absolute",left:c.x,top:c.y,"z-index":c.z});c.z&&(c.x===d||c.y===d)&&c.autoPos(c.width,c.height);a.cls&&c.div.addClass(a.cls);a.shadowMode&&c.div.addClass("ke-shadow");a.css&&c.div.css(a.css);a.src?i(a.src).replaceWith(c.div):i(c.doc.body).append(c.div);a.html&&c.div.html(a.html);if(a.autoScroll)if(C&&O<7||aa){var b=ma();i(c.win).bind("scroll",function(){var a=ma(),d=a.x-b.x,a=a.y-b.y;c.pos(o(c.x)+d,o(c.y)+a,!1)})}else c.div.css("position",
"fixed")},pos:function(a,c,b){b=r(b,!0);if(a!==null&&(a=a<0?0:j(a),this.div.css("left",a),b))this.x=a;if(c!==null&&(c=c<0?0:j(c),this.div.css("top",c),b))this.y=c;return this},autoPos:function(a,c){var b=o(a)||0,d=o(c)||0,e=ma();if(this._alignEl){var k=i(this._alignEl),g=k.pos(),b=ca(k[0].clientWidth/2-b/2),d=ca(k[0].clientHeight/2-d/2);x=b<0?g.x:g.x+b;y=d<0?g.y:g.y+d}else g=X(this.doc),x=ca(e.x+(g.clientWidth-b)/2),y=ca(e.y+(g.clientHeight-d)/2);C&&O<7||aa||(x-=e.x,y-=e.y);return this.pos(x,y)},
remove:function(){var a=this;(C&&O<7||aa)&&i(a.win).unbind("scroll");a.div.remove();h(a,function(c){a[c]=null});return this},show:function(){this.div.show();return this},hide:function(){this.div.hide();return this},draggable:function(a){var c=this,a=a||{};a.moveEl=c.div;a.moveFn=function(a,b,d,e,i,g){if((a+=i)<0)a=0;if((b+=g)<0)b=0;c.pos(a,b)};Ua(a);return c}});i.WidgetClass=da;i.widget=Wa;var Xa="";if(I=document.getElementsByTagName("html"))Xa=I[0].dir;A(wa,da,{init:function(a){function c(){var c=
Va(b.iframe);c.open();if(h)c.domain=document.domain;c.write(Ob(d,e,k,g));c.close();b.win=b.iframe[0].contentWindow;b.doc=c;var j=rb(c);b.afterChange(function(){j.selection()});ja&&i(c).click(function(a){i(a.target).name==="img"&&(j.selection(!0),j.range.selectNode(a.target),j.select())});if(C)b._mousedownHandler=function(){var a=j.range.cloneRange();a.shrink();a.isControl()&&b.blur()},i(document).mousedown(b._mousedownHandler),i(c).keydown(function(a){if(a.which==8){j.selection();var c=j.range;c.isControl()&&
(c.collapse(!0),i(c.startContainer.childNodes[c.startOffset]).remove(),a.preventDefault())}});b.cmd=j;b.html(va(b.srcElement));C?(c.body.disabled=!0,c.body.contentEditable=!0,c.body.removeAttribute("disabled")):c.designMode="on";a.afterCreate&&a.afterCreate.call(b)}var b=this;wa.parent.init.call(b,a);b.srcElement=i(a.srcElement);b.div.addClass("ke-edit");b.designMode=r(a.designMode,!0);b.beforeGetHtml=a.beforeGetHtml;b.beforeSetHtml=a.beforeSetHtml;b.afterSetHtml=a.afterSetHtml;var d=r(a.themesPath,
""),e=a.bodyClass,k=a.cssPath,g=a.cssData,h=location.host.replace(/:\d+/,"")!==document.domain,j="document.open();"+(h?'document.domain="'+document.domain+'";':"")+"document.close();",j=C?' src="javascript:void(function(){'+encodeURIComponent(j)+'}())"':"";b.iframe=i('<iframe class="ke-edit-iframe" hidefocus="true" frameborder="0"'+j+"></iframe>").css("width","100%");b.textarea=i('<textarea class="ke-edit-textarea" hidefocus="true"></textarea>').css("width","100%");b.width&&b.setWidth(b.width);b.height&&
b.setHeight(b.height);b.designMode?b.textarea.hide():b.iframe.hide();h&&b.iframe.bind("load",function(){b.iframe.unbind("load");C?c():setTimeout(c,0)});b.div.append(b.iframe);b.div.append(b.textarea);b.srcElement.hide();!h&&c()},setWidth:function(a){this.div.css("width",j(a));return this},setHeight:function(a){a=j(a);this.div.css("height",a);this.iframe.css("height",a);if(C&&O<8||aa)a=j(o(a)-2);this.textarea.css("height",a);return this},remove:function(){var a=this.doc;i(a.body).unbind();i(a).unbind();
i(this.win).unbind();this._mousedownHandler&&i(document).unbind("mousedown",this._mousedownHandler);va(this.srcElement,this.html());this.srcElement.show();a.write("");this.iframe.unbind();this.textarea.unbind();wa.parent.remove.call(this)},html:function(a,c){var b=this.doc;if(this.designMode){b=b.body;if(a===d)return a=c?"<!doctype html><html>"+b.parentNode.innerHTML+"</html>":b.innerHTML,this.beforeGetHtml&&(a=this.beforeGetHtml(a)),pa&&a=="<br />"&&(a=""),a;this.beforeSetHtml&&(a=this.beforeSetHtml(a));
C&&O>=9&&(a=a.replace(/(<.*?checked=")checked(".*>)/ig,"$1$2"));i(b).html(a);this.afterSetHtml&&this.afterSetHtml();return this}if(a===d)return this.textarea.val();this.textarea.val(a);return this},design:function(a){if(a===d?!this.designMode:a){if(!this.designMode)a=this.html(),this.designMode=!0,this.html(a),this.textarea.hide(),this.iframe.show()}else if(this.designMode)a=this.html(),this.designMode=!1,this.html(a),this.iframe.hide(),this.textarea.show();return this.focus()},focus:function(){this.designMode?
this.win.focus():this.textarea[0].focus();return this},blur:function(){if(C){var a=i('<input type="text" style="float:left;width:0;height:0;padding:0;margin:0;border:0;" value="" />',this.div);this.div.append(a);a[0].focus();a.remove()}else this.designMode?this.win.blur():this.textarea[0].blur();return this},afterChange:function(a){function c(c){setTimeout(function(){a(c)},1)}var b=this.doc,d=b.body;i(b).keyup(function(c){!c.ctrlKey&&!c.altKey&&cb[c.which]&&a(c)});i(b).mouseup(a).contextmenu(a);i(this.win).blur(a);
i(d).bind("paste",c);i(d).bind("cut",c);return this}});i.EditClass=wa;i.edit=sb;i.iframeDoc=Va;A(Ea,da,{init:function(a){function c(a){a=i(a);if(a.hasClass("ke-outline"))return a;if(a.hasClass("ke-toolbar-icon"))return a.parent()}function b(a,d){var f=c(a.target);if(f&&!f.hasClass("ke-disabled")&&!f.hasClass("ke-selected"))f[d]("ke-on")}var d=this;Ea.parent.init.call(d,a);d.disableMode=r(a.disableMode,!1);d.noDisableItemMap=z(r(a.noDisableItems,[]));d._itemMap={};d.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",
function(a){a.preventDefault()}).attr("unselectable","on");d.div.mouseover(function(a){b(a,"addClass")}).mouseout(function(a){b(a,"removeClass")}).click(function(a){var b=c(a.target);b&&!b.hasClass("ke-disabled")&&d.options.click.call(this,a,b.attr("data-name"))})},get:function(a){if(this._itemMap[a])return this._itemMap[a];return this._itemMap[a]=i("span.ke-icon-"+a,this.div).parent()},select:function(a){tb.call(this,a,function(a){a.addClass("ke-selected")});return self},unselect:function(a){tb.call(this,
a,function(a){a.removeClass("ke-selected").removeClass("ke-on")});return self},enable:function(a){if(a=a.get?a:this.get(a))a.removeClass("ke-disabled"),a.opacity(1);return this},disable:function(a){if(a=a.get?a:this.get(a))a.removeClass("ke-selected").addClass("ke-disabled"),a.opacity(0.5);return this},disableAll:function(a,c){var b=this,e=b.noDisableItemMap;c&&(e=z(c));(a===d?!b.disableMode:a)?(i("span.ke-outline",b.div).each(function(){var a=i(this),c=a[0].getAttribute("data-name",2);e[c]||b.disable(a)}),
b.disableMode=!0):(i("span.ke-outline",b.div).each(function(){var a=i(this),c=a[0].getAttribute("data-name",2);e[c]||b.enable(a)}),b.disableMode=!1);return b}});i.ToolbarClass=Ea;i.toolbar=ub;A(xa,da,{init:function(a){a.z=a.z||811213;xa.parent.init.call(this,a);this.centerLineMode=r(a.centerLineMode,!0);this.div.addClass("ke-menu").bind("click,mousedown",function(a){a.stopPropagation()}).attr("unselectable","on")},addItem:function(a){if(a.title==="-")this.div.append(i('<div class="ke-menu-separator"></div>'));
else{var c=i('<div class="ke-menu-item" unselectable="on"></div>'),b=i('<div class="ke-inline-block ke-menu-item-left"></div>'),d=i('<div class="ke-inline-block ke-menu-item-right"></div>'),e=j(a.height),k=r(a.iconClass,"");this.div.append(c);e&&(c.css("height",e),d.css("line-height",e));var g;this.centerLineMode&&(g=i('<div class="ke-inline-block ke-menu-item-center"></div>'),e&&g.css("height",e));c.mouseover(function(){i(this).addClass("ke-menu-item-on");g&&g.addClass("ke-menu-item-center-on")}).mouseout(function(){i(this).removeClass("ke-menu-item-on");
g&&g.removeClass("ke-menu-item-center-on")}).click(function(c){a.click.call(i(this));c.stopPropagation()}).append(b);g&&c.append(g);c.append(d);a.checked&&(k="ke-icon-checked");k!==""&&b.html('<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url '+k+'"></span>');d.html(a.title);return this}},remove:function(){this.options.beforeRemove&&this.options.beforeRemove.call(this);i(".ke-menu-item",this.div[0]).unbind();xa.parent.remove.call(this);return this}});i.MenuClass=xa;i.menu=Ya;A(ya,da,
{init:function(a){a.z=a.z||811213;ya.parent.init.call(this,a);var c=a.colors||[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]];this.selectedColor=(a.selectedColor||"").toLowerCase();this._cells=[];this.div.addClass("ke-colorpicker").bind("click,mousedown",function(a){a.stopPropagation()}).attr("unselectable",
"on");a=this.doc.createElement("table");this.div.append(a);a.className="ke-colorpicker-table";a.cellPadding=0;a.cellSpacing=0;a.border=0;var b=a.insertRow(0),d=b.insertCell(0);d.colSpan=c[0].length;this._addAttr(d,"","ke-colorpicker-cell-top");for(var e=0;e<c.length;e++)for(var b=a.insertRow(e+1),i=0;i<c[e].length;i++)d=b.insertCell(i),this._addAttr(d,c[e][i],"ke-colorpicker-cell")},_addAttr:function(a,c,b){var d=this,a=i(a).addClass(b);d.selectedColor===c.toLowerCase()&&a.addClass("ke-colorpicker-cell-selected");
a.attr("title",c||d.options.noColor);a.mouseover(function(){i(this).addClass("ke-colorpicker-cell-on")});a.mouseout(function(){i(this).removeClass("ke-colorpicker-cell-on")});a.click(function(a){a.stop();d.options.click.call(i(this),c)});c?a.append(i('<div class="ke-colorpicker-cell-color" unselectable="on"></div>').css("background-color",c)):a.html(d.options.noColor);i(a).attr("unselectable","on");d._cells.push(a)},remove:function(){h(this._cells,function(){this.unbind()});ya.parent.remove.call(this);
return this}});i.ColorPickerClass=ya;i.colorpicker=vb;A(Za,{init:function(a){var c=i(a.button),b=a.fieldName||"file",d=a.url||"",e=c.val(),k=a.extraParams||{},g=c[0].className||"",h=a.target||"kindeditor_upload_iframe_"+(new Date).getTime();a.afterError=a.afterError||function(a){alert(a)};var j=[],n;for(n in k)j.push('<input type="hidden" name="'+n+'" value="'+k[n]+'" />');b=['<div class="ke-inline-block '+g+'">',a.target?"":'<iframe name="'+h+'" style="display:none;"></iframe>',a.form?'<div class="ke-upload-area">':
'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="'+h+'" action="'+d+'">','<span class="ke-button-common">',j.join(""),'<input type="button" class="ke-button-common ke-button" value="'+e+'" />',"</span>",'<input type="file" class="ke-upload-file" name="'+b+'" tabindex="-1" />',a.form?"</div>":"</form>","</div>"].join("");b=i(b,c.doc);c.hide();c.before(b);this.div=b;this.button=c;this.iframe=a.target?i('iframe[name="'+h+'"]'):i("iframe",b);this.form=a.form?i(a.form):
i("form",b);c=a.width||i(".ke-button-common",b).width();this.fileBox=i(".ke-upload-file",b).width(c);this.options=a},submit:function(){var a=this,c=a.iframe;c.bind("load",function(){c.unbind();var b=document.createElement("form");a.fileBox.before(b);i(b).append(a.fileBox);b.reset();i(b).remove(!0);var b=i.iframeDoc(c),d=b.getElementsByTagName("pre")[0],e="",k,e=d?d.innerHTML:b.body.innerHTML,e=t(e);c[0].src="javascript:false";try{k=i.json(e)}catch(g){a.options.afterError.call(a,"<!doctype html><html>"+
b.body.parentNode.innerHTML+"</html>")}k&&a.options.afterUpload.call(a,k)});a.form[0].submit();return a},remove:function(){this.fileBox&&this.fileBox.unbind();this.iframe.remove();this.div.remove();this.button.show();return this}});i.UploadButtonClass=Za;i.uploadbutton=function(a){return new Za(a)};A(za,da,{init:function(a){var c=r(a.shadowMode,!0);a.z=a.z||811213;a.shadowMode=!1;a.autoScroll=r(a.autoScroll,!0);za.parent.init.call(this,a);var b=a.title,d=i(a.body,this.doc),e=a.previewBtn,k=a.yesBtn,
g=a.noBtn,j=a.closeBtn,n=r(a.showMask,!0);this.div.addClass("ke-dialog").bind("click,mousedown",function(a){a.stopPropagation()});var m=i('<div class="ke-dialog-content"></div>').appendTo(this.div);C&&O<7?this.iframeMask=i('<iframe src="about:blank" class="ke-dialog-shadow"></iframe>').appendTo(this.div):c&&i('<div class="ke-dialog-shadow"></div>').appendTo(this.div);c=i('<div class="ke-dialog-header"></div>');m.append(c);c.html(b);this.closeIcon=i('<span class="ke-dialog-icon-close" title="'+j.name+
'"></span>').click(j.click);c.append(this.closeIcon);this.draggable({clickEl:c,beforeDrag:a.beforeDrag});a=i('<div class="ke-dialog-body"></div>');m.append(a);a.append(d);var l=i('<div class="ke-dialog-footer"></div>');(e||k||g)&&m.append(l);h([{btn:e,name:"preview"},{btn:k,name:"yes"},{btn:g,name:"no"}],function(){if(this.btn){var a=this.btn,a=a||{},c=a.name||"",b=i('<span class="ke-button-common ke-button-outer" title="'+c+'"></span>'),c=i('<input class="ke-button-common ke-button" type="button" value="'+
c+'" />');a.click&&c.click(a.click);b.append(c);b.addClass("ke-dialog-"+this.name);l.append(b)}});this.height&&a.height(o(this.height)-c.height()-l.height());this.div.width(this.div.width());this.div.height(this.div.height());this.mask=null;if(n)d=X(this.doc),this.mask=Wa({x:0,y:0,z:this.z-1,cls:"ke-dialog-mask",width:Math.max(d.scrollWidth,d.clientWidth),height:Math.max(d.scrollHeight,d.clientHeight)});this.autoPos(this.div.width(),this.div.height());this.footerDiv=l;this.bodyDiv=a;this.headerDiv=
c;this.isLoading=!1},setMaskIndex:function(a){this.mask.div.css("z-index",a)},showLoading:function(a){var a=r(a,""),c=this.bodyDiv;this.loading=i('<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:'+Math.round(c.height()/3)+'px;">'+a+"</div></div>").width(c.width()).height(c.height()).css("top",this.headerDiv.height()+"px");c.css("visibility","hidden").after(this.loading);this.isLoading=!0;return this},hideLoading:function(){this.loading&&this.loading.remove();
this.bodyDiv.css("visibility","visible");this.isLoading=!1;return this},remove:function(){this.options.beforeRemove&&this.options.beforeRemove.call(this);this.mask&&this.mask.remove();this.iframeMask&&this.iframeMask.remove();this.closeIcon.unbind();i("input",this.div).unbind();i("button",this.div).unbind();this.footerDiv.unbind();this.bodyDiv.unbind();this.headerDiv.unbind();i("iframe",this.div).each(function(){i(this).remove()});za.parent.remove.call(this);return this}});i.DialogClass=za;i.dialog=
wb;i.tabs=function(a){var c=Wa(a),b=c.remove,d=a.afterSelect,a=c.div,e=[];a.addClass("ke-tabs").bind("contextmenu,mousedown,mousemove",function(a){a.preventDefault()});var g=i('<ul class="ke-tabs-ul ke-clearfix"></ul>');a.append(g);c.add=function(a){var c=i('<li class="ke-tabs-li">'+a.title+"</li>");c.data("tab",a);e.push(c);g.append(c)};c.selectedIndex=0;c.select=function(a){c.selectedIndex=a;h(e,function(b,d){d.unbind();b===a?(d.addClass("ke-tabs-li-selected"),i(d.data("tab").panel).show("")):(d.removeClass("ke-tabs-li-selected").removeClass("ke-tabs-li-on").mouseover(function(){i(this).addClass("ke-tabs-li-on")}).mouseout(function(){i(this).removeClass("ke-tabs-li-on")}).click(function(){c.select(b)}),
i(d.data("tab").panel).hide())});d&&d.call(c,a)};c.remove=function(){h(e,function(){this.remove()});g.remove();b.call(c)};return c};i.loadScript=$a;i.loadStyle=ab;i.ajax=function(a,c,d,e,i){var d=d||"GET",i=i||"json",g=b.XMLHttpRequest?new b.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");g.open(d,a,!0);g.onreadystatechange=function(){if(g.readyState==4&&g.status==200&&c){var a=m(g.responseText);i=="json"&&(a=w(a));c(a)}};if(d=="POST"){var j=[];h(e,function(a,c){j.push(encodeURIComponent(a)+
"="+encodeURIComponent(c))});try{g.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(n){}g.send(j.join("&"))}else g.send(null)};var ia={},$={};Aa.prototype={lang:function(a){return Ab(a,this.langType)},loadPlugin:function(a,c){var b=this;if(ia[a]){if(b._calledPlugins[a])return c&&c.call(b),b;ia[a].call(b,KindEditor);c&&c.call(b);b._calledPlugins[a]=!0;return b}if(b.isLoading)return b;b.isLoading=!0;$a(b.pluginsPath+a+"/"+a+".js?ver="+encodeURIComponent(i.DEBUG?Ga:Ha),function(){b.isLoading=
!1;ia[a]&&b.loadPlugin(a,c)});return b},handler:function(a,c){var b=this;b._handlers[a]||(b._handlers[a]=[]);if(l(c))return b._handlers[a].push(c),b;h(b._handlers[a],function(){c=this.call(b,c)});return c},clickToolbar:function(a,c){var b=this,e="clickToolbar"+a;if(c===d){if(b._handlers[e])return b.handler(e);b.loadPlugin(a,function(){b.handler(e)});return b}return b.handler(e,c)},updateState:function(){var a=this;h("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,subscript,superscript,bold,italic,underline,strikethrough".split(","),
function(c,b){a.cmd.state(b)?a.toolbar.select(b):a.toolbar.unselect(b)});return a},addContextmenu:function(a){this._contextmenus.push(a);return this},afterCreate:function(a){return this.handler("afterCreate",a)},beforeRemove:function(a){return this.handler("beforeRemove",a)},beforeGetHtml:function(a){return this.handler("beforeGetHtml",a)},beforeSetHtml:function(a){return this.handler("beforeSetHtml",a)},afterSetHtml:function(a){return this.handler("afterSetHtml",a)},create:function(){function a(){m.height()===
0?setTimeout(a,100):c.resize(e,g,!1)}var c=this,d=c.fullscreenMode;if(c.isCreated)return c;if(c.srcElement.data("kindeditor"))return c;c.srcElement.data("kindeditor","true");d?X().style.overflow="hidden":X().style.overflow="";var e=d?X().clientWidth+"px":c.width,g=d?X().clientHeight+"px":c.height;if(C&&O<8||aa)g=j(o(g)+2);var k=c.container=i(c.layout);d?i(document.body).append(k):c.srcElement.before(k);var h=i(".toolbar",k),n=i(".edit",k),m=c.statusbar=i(".statusbar",k);k.removeClass("container").addClass("ke-container ke-container-"+
c.themeType).css("width",e);if(d){k.css({position:"absolute",left:0,top:0,"z-index":811211});if(!pa)c._scrollPos=ma();b.scrollTo(0,0);i(document.body).css({height:"1px",overflow:"hidden"});i(document.body.parentNode).css("overflow","hidden");c._fullscreenExecuted=!0}else c._fullscreenExecuted&&(i(document.body).css({height:"",overflow:""}),i(document.body.parentNode).css("overflow","")),c._scrollPos&&b.scrollTo(c._scrollPos.x,c._scrollPos.y);var l=[];i.each(c.items,function(a,b){b=="|"?l.push('<span class="ke-inline-block ke-separator"></span>'):
b=="/"?l.push('<div class="ke-hr"></div>'):(l.push('<span class="ke-outline" data-name="'+b+'" title="'+c.lang(b)+'" unselectable="on">'),l.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-'+b+'" unselectable="on"></span></span>'))});var h=c.toolbar=ub({src:h,html:l.join(""),noDisableItems:c.noDisableItems,click:function(a,b){a.stop();if(c.menu){var d=c.menu.name;c.hideMenu();if(d===b)return}c.clickToolbar(b)}}),s=o(g)-h.div.height(),q=c.edit=sb({height:s>0&&o(g)>c.minHeight?s:c.minHeight,
src:n,srcElement:c.srcElement,designMode:c.designMode,themesPath:c.themesPath,bodyClass:c.bodyClass,cssPath:c.cssPath,cssData:c.cssData,beforeGetHtml:function(a){a=c.beforeGetHtml(a);return J(a,c.filterMode?c.htmlTags:null,c.urlType,c.wellFormatMode,c.indentChar)},beforeSetHtml:function(a){a=J(a,c.filterMode?c.htmlTags:null,"",!1);return c.beforeSetHtml(a)},afterSetHtml:function(){c.edit=q=this;c.afterSetHtml()},afterCreate:function(){c.edit=q=this;c.cmd=q.cmd;c._docMousedownFn=function(){c.menu&&
c.hideMenu()};i(q.doc,document).mousedown(c._docMousedownFn);Pb.call(c);Qb.call(c);Rb.call(c);Sb.call(c);q.afterChange(function(){q.designMode&&(c.updateState(),c.addBookmark(),c.options.afterChange&&c.options.afterChange.call(c))});q.textarea.keyup(function(a){!a.ctrlKey&&!a.altKey&&Hb[a.which]&&c.options.afterChange&&c.options.afterChange.call(c)});c.readonlyMode&&c.readonly();c.isCreated=!0;if(c.initContent==="")c.initContent=c.html();c.afterCreate();c.options.afterCreate&&c.options.afterCreate.call(c)}});
m.removeClass("statusbar").addClass("ke-statusbar").append('<span class="ke-inline-block ke-statusbar-center-icon"></span>').append('<span class="ke-inline-block ke-statusbar-right-icon"></span>');if(c._fullscreenResizeHandler)i(b).unbind("resize",c._fullscreenResizeHandler),c._fullscreenResizeHandler=null;a();d?(c._fullscreenResizeHandler=function(){c.isCreated&&c.resize(X().clientWidth,X().clientHeight,!1)},i(b).bind("resize",c._fullscreenResizeHandler),h.select("fullscreen"),m.first().css("visibility",
"hidden"),m.last().css("visibility","hidden")):(pa&&i(b).bind("scroll",function(){c._scrollPos=ma()}),c.resizeType>0?Ua({moveEl:k,clickEl:m,moveFn:function(a,b,d,f,e,i){f+=i;c.resize(null,f)}}):m.first().css("visibility","hidden"),c.resizeType===2?Ua({moveEl:k,clickEl:m.last(),moveFn:function(a,b,d,f,e,i){d+=e;f+=i;c.resize(d,f)}}):m.last().css("visibility","hidden"));return c},remove:function(){var a=this;if(!a.isCreated)return a;a.beforeRemove();a.srcElement.data("kindeditor","");a.menu&&a.hideMenu();
h(a.dialogs,function(){a.hideDialog()});i(document).unbind("mousedown",a._docMousedownFn);a.toolbar.remove();a.edit.remove();a.statusbar.last().unbind();a.statusbar.unbind();a.container.remove();a.container=a.toolbar=a.edit=a.menu=null;a.dialogs=[];a.isCreated=!1;return a},resize:function(a,c,b){b=r(b,!0);if(a&&(/%/.test(a)||(a=o(a),a=a<this.minWidth?this.minWidth:a),this.container.css("width",j(a)),b))this.width=j(a);if(c&&(c=o(c),editHeight=o(c)-this.toolbar.div.height()-this.statusbar.height(),
editHeight=editHeight<this.minHeight?this.minHeight:editHeight,this.edit.setHeight(editHeight),b))this.height=j(c);return this},select:function(){this.isCreated&&this.cmd.select();return this},html:function(a){if(a===d)return this.isCreated?this.edit.html():va(this.srcElement);this.isCreated?this.edit.html(a):va(this.srcElement,a);this.isCreated&&this.cmd.selection();return this},fullHtml:function(){return this.isCreated?this.edit.html(d,!0):""},text:function(a){return a===d?m(this.html().replace(/<(?!img|embed).*?>/ig,
"").replace(/&nbsp;/ig," ")):this.html(s(a))},isEmpty:function(){return m(this.text().replace(/\r\n|\n|\r/,""))===""},isDirty:function(){return m(this.initContent.replace(/\r\n|\n|\r|t/g,""))!==m(this.html().replace(/\r\n|\n|\r|t/g,""))},selectedHtml:function(){return this.isCreated?this.cmd.range.html():""},count:function(a){a=(a||"html").toLowerCase();if(a==="html")return ka(bb(this.html())).length;if(a==="text")return this.text().replace(/<(?:img|embed).*?>/ig,"K").replace(/\r\n|\n|\r/g,"").length;
return 0},exec:function(a){var a=a.toLowerCase(),c=this.cmd,b=e(a,"selectall,copy,paste,print".split(","))<0;b&&this.addBookmark(!1);c[a].apply(c,D(arguments,1));b&&(this.updateState(),this.addBookmark(!1),this.options.afterChange&&this.options.afterChange.call(this));return this},insertHtml:function(a,b){if(!this.isCreated)return this;a=this.beforeSetHtml(a);this.exec("inserthtml",a,b);return this},appendHtml:function(a){this.html(this.html()+a);if(this.isCreated)a=this.cmd,a.range.selectNodeContents(a.doc.body).collapse(!1),
a.select();return this},sync:function(){va(this.srcElement,this.html());return this},focus:function(){this.isCreated?this.edit.focus():this.srcElement[0].focus();return this},blur:function(){this.isCreated?this.edit.blur():this.srcElement[0].blur();return this},addBookmark:function(a){var a=r(a,!0),b=this.edit,d=b.doc.body,e=bb(d.innerHTML);if(a&&this._undoStack.length>0&&Math.abs(e.length-ka(this._undoStack[this._undoStack.length-1].html).length)<this.minChangeSize)return this;b.designMode&&!this._firstAddBookmark?
(b=this.cmd.range,a=b.createBookmark(!0),a.html=bb(d.innerHTML),b.moveToBookmark(a)):a={html:e};this._firstAddBookmark=!1;Bb(this._undoStack,a);return this},undo:function(){return Cb.call(this,this._undoStack,this._redoStack)},redo:function(){return Cb.call(this,this._redoStack,this._undoStack)},fullscreen:function(a){this.fullscreenMode=a===d?!this.fullscreenMode:a;return this.remove().create()},readonly:function(a){var a=r(a,!0),b=this,d=b.edit,e=d.doc;b.designMode?b.toolbar.disableAll(a,[]):h(b.noDisableItems,
function(){b.toolbar[a?"disable":"enable"](this)});C?e.body.contentEditable=!a:e.designMode=a?"off":"on";d.textarea[0].disabled=a},createMenu:function(a){var b=this.toolbar.get(a.name),f=b.pos();a.x=f.x;a.y=f.y+b.height();a.z=this.options.zIndex;a.shadowMode=r(a.shadowMode,this.shadowMode);a.selectedColor!==d?(a.cls="ke-colorpicker-"+this.themeType,a.noColor=this.lang("noColor"),this.menu=vb(a)):(a.cls="ke-menu-"+this.themeType,a.centerLineMode=!1,this.menu=Ya(a));return this.menu},hideMenu:function(){this.menu.remove();
this.menu=null;return this},hideContextmenu:function(){this.contextmenu.remove();this.contextmenu=null;return this},createDialog:function(a){var b=this;a.z=b.options.zIndex;a.shadowMode=r(a.shadowMode,b.shadowMode);a.closeBtn=r(a.closeBtn,{name:b.lang("close"),click:function(){b.hideDialog();C&&b.cmd&&b.cmd.select()}});a.noBtn=r(a.noBtn,{name:b.lang(a.yesBtn?"no":"close"),click:function(){b.hideDialog();C&&b.cmd&&b.cmd.select()}});if(b.dialogAlignType!="page")a.alignEl=b.container;a.cls="ke-dialog-"+
b.themeType;if(b.dialogs.length>0){var d=b.dialogs[b.dialogs.length-1];b.dialogs[0].setMaskIndex(d.z+2);a.z=d.z+3;a.showMask=!1}a=wb(a);b.dialogs.push(a);return a},hideDialog:function(){this.dialogs.length>0&&this.dialogs.pop().remove();this.dialogs.length>0&&this.dialogs[0].setMaskIndex(this.dialogs[this.dialogs.length-1].z-1);return this},errorDialog:function(a){var b=this.createDialog({width:750,title:this.lang("uploadError"),body:'<div style="padding:10px 20px;"><iframe frameborder="0" style="width:708px;height:400px;"></iframe></div>'}),
b=i("iframe",b.div),d=i.iframeDoc(b);d.open();d.write(a);d.close();i(d.body).css("background-color","#FFF");b[0].contentWindow.focus();return this}};_instances=[];i.remove=function(a){Eb(a,function(a){this.remove();_instances.splice(a,1)})};i.sync=function(a){Eb(a,function(){this.sync()})};C&&O<7&&ba(document,"BackgroundImageCache",!0);i.EditorClass=Aa;i.editor=function(a){return new Aa(a)};i.create=Db;i.instances=_instances;i.plugin=yb;i.lang=Ab;yb("core",function(a){var c=this,f={undo:"Z",redo:"Y",
bold:"B",italic:"I",underline:"U",print:"P",selectall:"A"};c.afterSetHtml(function(){c.options.afterChange&&c.options.afterChange.call(c)});c.afterCreate(function(){if(c.syncType=="form"){for(var d=a(c.srcElement),f=!1;d=d.parent();)if(d.name=="form"){f=!0;break}if(f){d.bind("submit",function(){c.sync();a(b).bind("unload",function(){c.edit.textarea.remove()})});var e=a('[type="reset"]',d);e.click(function(){c.html(c.initContent);c.cmd.selection()});c.beforeRemove(function(){d.unbind();e.unbind()})}}});
c.clickToolbar("source",function(){c.edit.designMode?(c.toolbar.disableAll(!0),c.edit.design(!1),c.toolbar.select("source")):(c.toolbar.disableAll(!1),c.edit.design(!0),c.toolbar.unselect("source"),c.cmd.selection());c.designMode=c.edit.designMode});c.afterCreate(function(){c.designMode||c.toolbar.disableAll(!0).select("source")});c.clickToolbar("fullscreen",function(){c.fullscreen()});if(c.fullscreenShortcut){var i=!1;c.afterCreate(function(){a(c.edit.doc,c.edit.textarea).keyup(function(a){a.which==
27&&setTimeout(function(){c.fullscreen()},0)});if(i){if(C&&!c.designMode)return;c.focus()}i||(i=!0)})}h("undo,redo".split(","),function(a,b){f[b]&&c.afterCreate(function(){V(this.edit.doc,f[b],function(){c.clickToolbar(b)})});c.clickToolbar(b,function(){c[b]()})});c.clickToolbar("formatblock",function(){var a=c.lang("formatblock.formatBlock"),b={h1:28,h2:24,h3:18,H4:14,p:12},d=c.cmd.val("formatblock"),f=c.createMenu({name:"formatblock",width:c.langType=="en"?200:150});h(a,function(a,e){var i="font-size:"+
b[a]+"px;";a.charAt(0)==="h"&&(i+="font-weight:bold;");f.addItem({title:'<span style="'+i+'" unselectable="on">'+e+"</span>",height:b[a]+12,checked:d===a||d===e,click:function(){c.select().exec("formatblock","<"+a+">").hideMenu()}})})});c.clickToolbar("fontname",function(){var a=c.cmd.val("fontname"),b=c.createMenu({name:"fontname",width:150});h(c.lang("fontname.fontName"),function(d,f){b.addItem({title:'<span style="font-family: '+d+';" unselectable="on">'+f+"</span>",checked:a===d.toLowerCase()||
a===f.toLowerCase(),click:function(){c.exec("fontname",d).hideMenu()}})})});c.clickToolbar("fontsize",function(){var a=c.cmd.val("fontsize"),b=c.createMenu({name:"fontsize",width:150});h(c.fontSizeTable,function(d,f){b.addItem({title:'<span style="font-size:'+f+';" unselectable="on">'+f+"</span>",height:o(f)+12,checked:a===f,click:function(){c.exec("fontsize",f).hideMenu()}})})});h("forecolor,hilitecolor".split(","),function(a,b){c.clickToolbar(b,function(){c.createMenu({name:b,selectedColor:c.cmd.val(b)||
"default",colors:c.colorTable,click:function(a){c.exec(b,a).hideMenu()}})})});h("cut,copy,paste".split(","),function(a,b){c.clickToolbar(b,function(){c.focus();try{c.exec(b,null)}catch(a){alert(c.lang(b+"Error"))}})});c.clickToolbar("about",function(){var a='<div style="margin:20px;"><div>KindEditor '+Ha+'</div><div>Copyright &copy; <a href="http://www.kindsoft.net/" target="_blank">kindsoft.net</a> All rights reserved.</div></div>';c.createDialog({name:"about",width:350,title:c.lang("about"),body:a})});
c.plugin.getSelectedLink=function(){return c.cmd.commonAncestor("a")};c.plugin.getSelectedImage=function(){return Fa(c.edit.cmd.range,function(a){return!/^ke-\w+$/i.test(a[0].className)})};c.plugin.getSelectedFlash=function(){return Fa(c.edit.cmd.range,function(a){return a[0].className=="ke-flash"})};c.plugin.getSelectedMedia=function(){return Fa(c.edit.cmd.range,function(a){return a[0].className=="ke-media"||a[0].className=="ke-rm"})};c.plugin.getSelectedAnchor=function(){return Fa(c.edit.cmd.range,
function(a){return a[0].className=="ke-anchor"})};h("link,image,flash,media,anchor".split(","),function(a,b){var f=b.charAt(0).toUpperCase()+b.substr(1);h("edit,delete".split(","),function(a,e){c.addContextmenu({title:c.lang(e+f),click:function(){c.loadPlugin(b,function(){c.plugin[b][e]();c.hideMenu()})},cond:c.plugin["getSelected"+f],width:150,iconClass:e=="edit"?"ke-icon-"+b:d})});c.addContextmenu({title:"-"})});c.plugin.getSelectedTable=function(){return c.cmd.commonAncestor("table")};c.plugin.getSelectedRow=
function(){return c.cmd.commonAncestor("tr")};c.plugin.getSelectedCell=function(){return c.cmd.commonAncestor("td")};h("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,insert,delete".split(","),function(a,b){var d=e(b,["prop","delete"])<0?c.plugin.getSelectedCell:c.plugin.getSelectedTable;c.addContextmenu({title:c.lang("table"+b),click:function(){c.loadPlugin("table",function(){c.plugin.table[b]();c.hideMenu()})},cond:d,
width:170,iconClass:"ke-icon-table"+b})});c.addContextmenu({title:"-"});h("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript,hr,print,bold,italic,underline,strikethrough,removeformat,unlink".split(","),function(a,b){f[b]&&c.afterCreate(function(){V(this.edit.doc,f[b],function(){c.cmd.selection();c.clickToolbar(b)})});c.clickToolbar(b,function(){c.focus().exec(b,null)})});c.afterCreate(function(){function b(){f.range.moveToBookmark(e);
f.select();ja&&(a("div."+g,i).each(function(){a(this).after("<br />").remove(!0)}),a("span.Apple-style-span",i).remove(!0),a("span.Apple-tab-span",i).remove(!0),a("span[style]",i).each(function(){a(this).css("white-space")=="nowrap"&&a(this).remove(!0)}),a("meta",i).remove());var d=i[0].innerHTML;i.remove();d!==""&&(ja&&(d=d.replace(/(<br>)\1/ig,"$1")),c.pasteType===2&&(d=d.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig,""),/schemas-microsoft-com|worddocument|mso-\w+/i.test(d)?d=W(d,c.filterMode?c.htmlTags:
a.options.htmlTags):(d=J(d,c.filterMode?c.htmlTags:null),d=c.beforeSetHtml(d))),c.pasteType===1&&(d=d.replace(/&nbsp;/ig," "),d=d.replace(/\n\s*\n/g,"\n"),d=d.replace(/<br[^>]*>/ig,"\n"),d=d.replace(/<\/p><p[^>]*>/ig,"\n"),d=d.replace(/<[^>]+>/g,""),d=d.replace(/ {2}/g," &nbsp;"),c.newlineTag=="p"?/\n/.test(d)&&(d=d.replace(/^/,"<p>").replace(/$/,"<br /></p>").replace(/\n/g,"<br /></p><p>")):d=d.replace(/\n/g,"<br />$&")),c.insertHtml(d,!0))}var d=c.edit.doc,f,e,i,g="__kindeditor_paste__",h=!1;a(d.body).bind("paste",
function(j){if(c.pasteType===0)j.stop();else if(!h){h=!0;a("div."+g,d).remove();f=c.cmd.selection();e=f.range.createBookmark();i=a('<div class="'+g+'"></div>',d).css({position:"absolute",width:"1px",height:"1px",overflow:"hidden",left:"-1981px",top:a(e.start).pos().y+"px","white-space":"nowrap"});a(d.body).append(i);if(C){var n=f.range.get(!0);n.moveToElementText(i[0]);n.select();n.execCommand("paste");j.preventDefault()}else f.range.selectNodeContents(i[0]),f.select();setTimeout(function(){b();h=
!1},0)}})});c.beforeGetHtml(function(a){C&&O<=8&&(a=a.replace(/<div\s+[^>]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig,function(a,b){return unescape(b)}),a=a.replace(/(<input)((?:\s+[^>]*)?>)/ig,function(a,b,c){if(!/\s+type="[^"]+"/i.test(a))return b+' type="text"'+c;return a}));return a.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/ig,function(a,b,c,d){return b+t(c).replace(/\s+/g," ")+d}).replace(/<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/ig,function(a){var a=G(a),
b=Q(a.style||""),c=fa(a["data-ke-tag"]);c.width=r(a.width,o(r(b.width,"")));c.height=r(a.height,o(r(b.height,"")));return Ka(c)}).replace(/<img[^>]*class="?ke-anchor"?[^>]*>/ig,function(a){a=G(a);return'<a name="'+unescape(a["data-ke-name"])+'"></a>'}).replace(/<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig,function(a,b,c){return"<script"+unescape(b)+">"+unescape(c)+"<\/script>"}).replace(/<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig,function(a,b,c){return"<noscript"+
unescape(b)+">"+unescape(c)+"</noscript>"}).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/ig,function(a,b,c){a=a.replace(/(\s+(?:href|src)=")[^"]*(")/i,function(a,b,d){return b+t(c)+d});return a=a.replace(/\s+data-ke-src="[^"]*"/i,"")}).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/ig,function(a,b,c){return b+c})});c.beforeSetHtml(function(a){C&&O<=8&&(a=a.replace(/<input[^>]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/ig,function(a){var b=G(a);if(Q(b.style||"").display=="none")return'<div class="ke-display-none" data-ke-input-tag="'+
escape(a)+'"></div>';return a}));return a.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/ig,function(a){a=G(a);a.src=r(a.src,"");a.width=r(a.width,0);a.height=r(a.height,0);return ib(c.themesPath+"common/blank.gif",a)}).replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/ig,function(a){var b=G(a);if(b.href!==d)return a;return'<img class="ke-anchor" src="'+c.themesPath+'common/anchor.gif" data-ke-name="'+escape(b.name)+'" />'}).replace(/<script([^>]*)>([\s\S]*?)<\/script>/ig,function(a,b,c){return'<div class="ke-script" data-ke-script-attr="'+
escape(b)+'">'+escape(c)+"</div>"}).replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/ig,function(a,b,c){return'<div class="ke-noscript" data-ke-noscript-attr="'+escape(b)+'">'+escape(c)+"</div>"}).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/ig,function(a,b,c,d,f){if(a.match(/\sdata-ke-src="[^"]*"/i))return a;return a=b+c+'="'+d+'" data-ke-src="'+s(d)+'"'+f}).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/ig,function(a,b,c){return b+"data-ke-"+c}).replace(/<table[^>]*\s+border="0"[^>]*>/ig,function(a){if(a.indexOf("ke-zeroborder")>=
0)return a;return S(a,"ke-zeroborder")})})})}})(window);
KindEditor.lang({source:"HTML\u4ee3\u7801",preview:"\u9884\u89c8",undo:"\u540e\u9000(Ctrl+Z)",redo:"\u524d\u8fdb(Ctrl+Y)",cut:"\u526a\u5207(Ctrl+X)",copy:"\u590d\u5236(Ctrl+C)",paste:"\u7c98\u8d34(Ctrl+V)",plainpaste:"\u7c98\u8d34\u4e3a\u65e0\u683c\u5f0f\u6587\u672c",wordpaste:"\u4eceWord\u7c98\u8d34",selectall:"\u5168\u9009(Ctrl+A)",justifyleft:"\u5de6\u5bf9\u9f50",justifycenter:"\u5c45\u4e2d",justifyright:"\u53f3\u5bf9\u9f50",justifyfull:"\u4e24\u7aef\u5bf9\u9f50",insertorderedlist:"\u7f16\u53f7",
insertunorderedlist:"\u9879\u76ee\u7b26\u53f7",indent:"\u589e\u52a0\u7f29\u8fdb",outdent:"\u51cf\u5c11\u7f29\u8fdb",subscript:"\u4e0b\u6807",superscript:"\u4e0a\u6807",formatblock:"\u6bb5\u843d",fontname:"\u5b57\u4f53",fontsize:"\u6587\u5b57\u5927\u5c0f",forecolor:"\u6587\u5b57\u989c\u8272",hilitecolor:"\u6587\u5b57\u80cc\u666f",bold:"\u7c97\u4f53(Ctrl+B)",italic:"\u659c\u4f53(Ctrl+I)",underline:"\u4e0b\u5212\u7ebf(Ctrl+U)",strikethrough:"\u5220\u9664\u7ebf",removeformat:"\u5220\u9664\u683c\u5f0f",
image:"\u56fe\u7247",multiimage:"\u6279\u91cf\u56fe\u7247\u4e0a\u4f20",flash:"Flash",media:"\u89c6\u97f3\u9891",table:"\u8868\u683c",tablecell:"\u5355\u5143\u683c",hr:"\u63d2\u5165\u6a2a\u7ebf",emoticons:"\u63d2\u5165\u8868\u60c5",link:"\u8d85\u7ea7\u94fe\u63a5",unlink:"\u53d6\u6d88\u8d85\u7ea7\u94fe\u63a5",fullscreen:"\u5168\u5c4f\u663e\u793a",about:"\u5173\u4e8e",print:"\u6253\u5370(Ctrl+P)",filemanager:"\u6587\u4ef6\u7a7a\u95f4",code:"\u63d2\u5165\u7a0b\u5e8f\u4ee3\u7801",map:"Google\u5730\u56fe",
baidumap:"\u767e\u5ea6\u5730\u56fe",lineheight:"\u884c\u8ddd",clearhtml:"\u6e05\u7406HTML\u4ee3\u7801",pagebreak:"\u63d2\u5165\u5206\u9875\u7b26",quickformat:"\u4e00\u952e\u6392\u7248",insertfile:"\u63d2\u5165\u6587\u4ef6",template:"\u63d2\u5165\u6a21\u677f",anchor:"\u951a\u70b9",yes:"\u786e\u5b9a",no:"\u53d6\u6d88",close:"\u5173\u95ed",editImage:"\u56fe\u7247\u5c5e\u6027",deleteImage:"\u5220\u9664\u56fe\u7247",editFlash:"Flash\u5c5e\u6027",deleteFlash:"\u5220\u9664Flash",editMedia:"\u89c6\u97f3\u9891\u5c5e\u6027",
deleteMedia:"\u5220\u9664\u89c6\u97f3\u9891",editLink:"\u8d85\u7ea7\u94fe\u63a5\u5c5e\u6027",deleteLink:"\u53d6\u6d88\u8d85\u7ea7\u94fe\u63a5",editAnchor:"\u951a\u70b9\u5c5e\u6027",deleteAnchor:"\u5220\u9664\u951a\u70b9",tableprop:"\u8868\u683c\u5c5e\u6027",tablecellprop:"\u5355\u5143\u683c\u5c5e\u6027",tableinsert:"\u63d2\u5165\u8868\u683c",tabledelete:"\u5220\u9664\u8868\u683c",tablecolinsertleft:"\u5de6\u4fa7\u63d2\u5165\u5217",tablecolinsertright:"\u53f3\u4fa7\u63d2\u5165\u5217",tablerowinsertabove:"\u4e0a\u65b9\u63d2\u5165\u884c",
tablerowinsertbelow:"\u4e0b\u65b9\u63d2\u5165\u884c",tablerowmerge:"\u5411\u4e0b\u5408\u5e76\u5355\u5143\u683c",tablecolmerge:"\u5411\u53f3\u5408\u5e76\u5355\u5143\u683c",tablerowsplit:"\u62c6\u5206\u884c",tablecolsplit:"\u62c6\u5206\u5217",tablecoldelete:"\u5220\u9664\u5217",tablerowdelete:"\u5220\u9664\u884c",noColor:"\u65e0\u989c\u8272",pleaseSelectFile:"\u8bf7\u9009\u62e9\u6587\u4ef6\u3002",invalidImg:"\u8bf7\u8f93\u5165\u6709\u6548\u7684URL\u5730\u5740\u3002\n\u53ea\u5141\u8bb8jpg,gif,bmp,png\u683c\u5f0f\u3002",
invalidMedia:"\u8bf7\u8f93\u5165\u6709\u6548\u7684URL\u5730\u5740\u3002\n\u53ea\u5141\u8bb8swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb\u683c\u5f0f\u3002",invalidWidth:"\u5bbd\u5ea6\u5fc5\u987b\u4e3a\u6570\u5b57\u3002",invalidHeight:"\u9ad8\u5ea6\u5fc5\u987b\u4e3a\u6570\u5b57\u3002",invalidBorder:"\u8fb9\u6846\u5fc5\u987b\u4e3a\u6570\u5b57\u3002",invalidUrl:"\u8bf7\u8f93\u5165\u6709\u6548\u7684URL\u5730\u5740\u3002",invalidRows:"\u884c\u6570\u4e3a\u5fc5\u9009\u9879\uff0c\u53ea\u5141\u8bb8\u8f93\u5165\u5927\u4e8e0\u7684\u6570\u5b57\u3002",
invalidCols:"\u5217\u6570\u4e3a\u5fc5\u9009\u9879\uff0c\u53ea\u5141\u8bb8\u8f93\u5165\u5927\u4e8e0\u7684\u6570\u5b57\u3002",invalidPadding:"\u8fb9\u8ddd\u5fc5\u987b\u4e3a\u6570\u5b57\u3002",invalidSpacing:"\u95f4\u8ddd\u5fc5\u987b\u4e3a\u6570\u5b57\u3002",invalidJson:"\u670d\u52a1\u5668\u53d1\u751f\u6545\u969c\u3002",uploadSuccess:"\u4e0a\u4f20\u6210\u529f\u3002",cutError:"\u60a8\u7684\u6d4f\u89c8\u5668\u5b89\u5168\u8bbe\u7f6e\u4e0d\u5141\u8bb8\u4f7f\u7528\u526a\u5207\u64cd\u4f5c\uff0c\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+X)\u6765\u5b8c\u6210\u3002",
copyError:"\u60a8\u7684\u6d4f\u89c8\u5668\u5b89\u5168\u8bbe\u7f6e\u4e0d\u5141\u8bb8\u4f7f\u7528\u590d\u5236\u64cd\u4f5c\uff0c\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+C)\u6765\u5b8c\u6210\u3002",pasteError:"\u60a8\u7684\u6d4f\u89c8\u5668\u5b89\u5168\u8bbe\u7f6e\u4e0d\u5141\u8bb8\u4f7f\u7528\u7c98\u8d34\u64cd\u4f5c\uff0c\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+V)\u6765\u5b8c\u6210\u3002",ajaxLoading:"\u52a0\u8f7d\u4e2d\uff0c\u8bf7\u7a0d\u5019 ...",uploadLoading:"\u4e0a\u4f20\u4e2d\uff0c\u8bf7\u7a0d\u5019 ...",
uploadError:"\u4e0a\u4f20\u9519\u8bef","plainpaste.comment":"\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+V)\u628a\u5185\u5bb9\u7c98\u8d34\u5230\u4e0b\u9762\u7684\u65b9\u6846\u91cc\u3002","wordpaste.comment":"\u8bf7\u4f7f\u7528\u5feb\u6377\u952e(Ctrl+V)\u628a\u5185\u5bb9\u7c98\u8d34\u5230\u4e0b\u9762\u7684\u65b9\u6846\u91cc\u3002","code.pleaseInput":"\u8bf7\u8f93\u5165\u7a0b\u5e8f\u4ee3\u7801\u3002","link.url":"URL","link.linkType":"\u6253\u5f00\u7c7b\u578b","link.newWindow":"\u65b0\u7a97\u53e3","link.selfWindow":"\u5f53\u524d\u7a97\u53e3",
"flash.url":"URL","flash.width":"\u5bbd\u5ea6","flash.height":"\u9ad8\u5ea6","flash.upload":"\u4e0a\u4f20","flash.viewServer":"\u6587\u4ef6\u7a7a\u95f4","media.url":"URL","media.width":"\u5bbd\u5ea6","media.height":"\u9ad8\u5ea6","media.autostart":"\u81ea\u52a8\u64ad\u653e","media.upload":"\u4e0a\u4f20","media.viewServer":"\u6587\u4ef6\u7a7a\u95f4","image.remoteImage":"\u7f51\u7edc\u56fe\u7247","image.localImage":"\u672c\u5730\u4e0a\u4f20","image.remoteUrl":"\u56fe\u7247\u5730\u5740","image.localUrl":"\u4e0a\u4f20\u6587\u4ef6",
"image.size":"\u56fe\u7247\u5927\u5c0f","image.width":"\u5bbd","image.height":"\u9ad8","image.resetSize":"\u91cd\u7f6e\u5927\u5c0f","image.align":"\u5bf9\u9f50\u65b9\u5f0f","image.defaultAlign":"\u9ed8\u8ba4\u65b9\u5f0f","image.leftAlign":"\u5de6\u5bf9\u9f50","image.rightAlign":"\u53f3\u5bf9\u9f50","image.imgTitle":"\u56fe\u7247\u8bf4\u660e","image.upload":"\u6d4f\u89c8...","image.viewServer":"\u56fe\u7247\u7a7a\u95f4","multiimage.uploadDesc":"\u5141\u8bb8\u7528\u6237\u540c\u65f6\u4e0a\u4f20<%=uploadLimit%>\u5f20\u56fe\u7247\uff0c\u5355\u5f20\u56fe\u7247\u5bb9\u91cf\u4e0d\u8d85\u8fc7<%=sizeLimit%>",
"multiimage.startUpload":"\u5f00\u59cb\u4e0a\u4f20","multiimage.clearAll":"\u5168\u90e8\u6e05\u7a7a","multiimage.insertAll":"\u5168\u90e8\u63d2\u5165","multiimage.queueLimitExceeded":"\u6587\u4ef6\u6570\u91cf\u8d85\u8fc7\u9650\u5236\u3002","multiimage.fileExceedsSizeLimit":"\u6587\u4ef6\u5927\u5c0f\u8d85\u8fc7\u9650\u5236\u3002","multiimage.zeroByteFile":"\u65e0\u6cd5\u4e0a\u4f20\u7a7a\u6587\u4ef6\u3002","multiimage.invalidFiletype":"\u6587\u4ef6\u7c7b\u578b\u4e0d\u6b63\u786e\u3002","multiimage.unknownError":"\u53d1\u751f\u5f02\u5e38\uff0c\u65e0\u6cd5\u4e0a\u4f20\u3002",
"multiimage.pending":"\u7b49\u5f85\u4e0a\u4f20","multiimage.uploadError":"\u4e0a\u4f20\u5931\u8d25","filemanager.emptyFolder":"\u7a7a\u6587\u4ef6\u5939","filemanager.moveup":"\u79fb\u5230\u4e0a\u4e00\u7ea7\u6587\u4ef6\u5939","filemanager.viewType":"\u663e\u793a\u65b9\u5f0f\uff1a","filemanager.viewImage":"\u7f29\u7565\u56fe","filemanager.listImage":"\u8be6\u7ec6\u4fe1\u606f","filemanager.orderType":"\u6392\u5e8f\u65b9\u5f0f\uff1a","filemanager.fileName":"\u540d\u79f0","filemanager.fileSize":"\u5927\u5c0f",
"filemanager.fileType":"\u7c7b\u578b","insertfile.url":"URL","insertfile.title":"\u6587\u4ef6\u8bf4\u660e","insertfile.upload":"\u4e0a\u4f20","insertfile.viewServer":"\u6587\u4ef6\u7a7a\u95f4","table.cells":"\u5355\u5143\u683c\u6570","table.rows":"\u884c\u6570","table.cols":"\u5217\u6570","table.size":"\u5927\u5c0f","table.width":"\u5bbd\u5ea6","table.height":"\u9ad8\u5ea6","table.percent":"%","table.px":"px","table.space":"\u8fb9\u8ddd\u95f4\u8ddd","table.padding":"\u8fb9\u8ddd","table.spacing":"\u95f4\u8ddd",
"table.align":"\u5bf9\u9f50\u65b9\u5f0f","table.textAlign":"\u6c34\u5e73\u5bf9\u9f50","table.verticalAlign":"\u5782\u76f4\u5bf9\u9f50","table.alignDefault":"\u9ed8\u8ba4","table.alignLeft":"\u5de6\u5bf9\u9f50","table.alignCenter":"\u5c45\u4e2d","table.alignRight":"\u53f3\u5bf9\u9f50","table.alignTop":"\u9876\u90e8","table.alignMiddle":"\u4e2d\u90e8","table.alignBottom":"\u5e95\u90e8","table.alignBaseline":"\u57fa\u7ebf","table.border":"\u8fb9\u6846","table.borderWidth":"\u8fb9\u6846","table.borderColor":"\u989c\u8272",
"table.backgroundColor":"\u80cc\u666f\u989c\u8272","map.address":"\u5730\u5740: ","map.search":"\u641c\u7d22","baidumap.address":"\u5730\u5740: ","baidumap.search":"\u641c\u7d22","baidumap.insertDynamicMap":"\u63d2\u5165\u52a8\u6001\u5730\u56fe","anchor.name":"\u951a\u70b9\u540d\u79f0","formatblock.formatBlock":{h1:"\u6807\u9898 1",h2:"\u6807\u9898 2",h3:"\u6807\u9898 3",h4:"\u6807\u9898 4",p:"\u6b63 \u6587"},"fontname.fontName":{SimSun:"\u5b8b\u4f53",NSimSun:"\u65b0\u5b8b\u4f53",FangSong_GB2312:"\u4eff\u5b8b_GB2312",
KaiTi_GB2312:"\u6977\u4f53_GB2312",SimHei:"\u9ed1\u4f53","Microsoft YaHei":"\u5fae\u8f6f\u96c5\u9ed1",Arial:"Arial","Arial Black":"Arial Black","Times New Roman":"Times New Roman","Courier New":"Courier New",Tahoma:"Tahoma",Verdana:"Verdana"},"lineheight.lineHeight":[{1:"\u5355\u500d\u884c\u8ddd"},{"1.5":"1.5\u500d\u884c\u8ddd"},{2:"2\u500d\u884c\u8ddd"},{"2.5":"2.5\u500d\u884c\u8ddd"},{3:"3\u500d\u884c\u8ddd"}],"template.selectTemplate":"\u53ef\u9009\u6a21\u677f","template.replaceContent":"\u66ff\u6362\u5f53\u524d\u5185\u5bb9",
"template.fileList":{"1.html":"\u56fe\u7247\u548c\u6587\u5b57","2.html":"\u8868\u683c","3.html":"\u9879\u76ee\u7f16\u53f7"}},"zh_CN");
KindEditor.plugin("anchor",function(b){var d=this,g=d.lang("anchor.");d.plugin.anchor={edit:function(){var l=['<div style="padding:20px;"><div class="ke-dialog-row">','<label for="keName">'+g.name+"</label>",'<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" /></div></div>'].join(""),l=d.createDialog({name:"anchor",width:300,title:d.lang("anchor"),body:l,yesBtn:{name:d.lang("yes"),click:function(){d.insertHtml('<a name="'+e.val()+'">').hideDialog().focus()}}}).div,
e=b('input[name="name"]',l);(l=d.plugin.getSelectedAnchor())&&e.val(unescape(l.attr("data-ke-name")));e[0].focus();e[0].select()},"delete":function(){d.plugin.getSelectedAnchor().remove()}};d.clickToolbar("anchor",d.plugin.anchor.edit)});
KindEditor.plugin("baidumap",function(b){var d=this,g=d.lang("baidumap."),l=b.undef(d.mapWidth,558),e=b.undef(d.mapHeight,360);d.clickToolbar("baidumap",function(){function h(){t=q[0].contentWindow;p=b.iframeDoc(q)}var m=['<div style="padding:10px 20px;"><div class="ke-header"><div class="ke-left">',g.address+' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" name="searchBtn" class="ke-button-common ke-button" value="'+
g.search+'" />','</span></div><div class="ke-right">','<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">'+g.insertDynamicMap+"</label>",'</div><div class="ke-clearfix"></div></div>','<div class="ke-map" style="width:'+l+"px;height:"+e+'px;"></div>',"</div>"].join(""),m=d.createDialog({name:"baidumap",width:l+42,title:d.lang("baidumap"),body:m,yesBtn:{name:d.lang("yes"),click:function(){var b=t.map,g=b.getCenter(),g=g.lng+","+g.lat,
b=b.getZoom(),b=[s[0].checked?d.pluginsPath+"baidumap/index.html":"http://api.map.baidu.com/staticimage","?center="+encodeURIComponent(g),"&zoom="+encodeURIComponent(b),"&width="+l,"&height="+e,"&markers="+encodeURIComponent(g),"&markerStyles="+encodeURIComponent("l,A")].join("");s[0].checked?d.insertHtml('<iframe src="'+b+'" frameborder="0" style="width:'+(l+2)+"px;height:"+(e+2)+'px;"></iframe>'):d.exec("insertimage",b);d.hideDialog().focus()}},beforeRemove:function(){o.remove();p&&p.write("");
q.remove()}}),n=m.div,j=b('[name="address"]',n),o=b('[name="searchBtn"]',n),s=b('[name="insertDynamicMap"]',m.div),t,p,q=b('<iframe class="ke-textarea" frameborder="0" src="'+d.pluginsPath+'baidumap/map.html" style="width:'+l+"px;height:"+e+'px;"></iframe>');q.bind("load",function(){q.unbind("load");b.IE?h():setTimeout(h,0)});b(".ke-map",n).replaceWith(q);o.click(function(){t.search(j.val())})})});
KindEditor.plugin("clearhtml",function(b){var d=this;d.clickToolbar("clearhtml",function(){d.focus();var g=d.html(),g=g.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/ig,""),g=g.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/ig,""),g=b.formatHtml(g,{a:["href","target"],embed:["src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess"],img:["src","width","height","border","alt","title",".width",".height"],table:["border"],"td,th":["rowspan","colspan"],"div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":[]});
d.html(g);d.cmd.selection(!0);d.addBookmark()})});
KindEditor.plugin("code",function(b){var d=this;d.clickToolbar("code",function(){var g=d.lang("code."),l=d.createDialog({name:"code",width:450,title:d.lang("code"),body:'<div style="padding:10px 20px;"><div class="ke-dialog-row"><select class="ke-code-type"><option value="js">JavaScript</option><option value="html">HTML</option><option value="css">CSS</option><option value="php">PHP</option><option value="pl">Perl</option><option value="py">Python</option><option value="rb">Ruby</option><option value="java">Java</option><option value="vb">ASP/VB</option><option value="cpp">C/C++</option><option value="cs">C#</option><option value="xml">XML</option><option value="bsh">Shell</option><option value="">Other</option></select></div><textarea class="ke-textarea" style="width:408px;height:260px;"></textarea></div>',yesBtn:{name:d.lang("yes"),
click:function(){var h=b(".ke-code-type",l.div).val(),m=e.val(),h='<pre class="prettyprint'+(h===""?"":" lang-"+h)+'">\n'+b.escape(m)+"</pre> ";b.trim(m)===""?(alert(g.pleaseInput),e[0].focus()):d.insertHtml(h).hideDialog().focus()}}}),e=b("textarea",l.div);e[0].focus()})});
KindEditor.plugin("emoticons",function(b){var d=this,g=d.emoticonsPath||d.pluginsPath+"emoticons/images/",l=d.allowPreviewEmoticons===void 0?!0:d.allowPreviewEmoticons,e=1;d.clickToolbar("emoticons",function(){function h(e,h,j){w?e.mouseover(function(){h>D?(w.css("left",0),w.css("right","")):(w.css("left",""),w.css("right",0));H.attr("src",g+j+".gif");b(this).addClass("ke-on")}):e.mouseover(function(){b(this).addClass("ke-on")});e.mouseout(function(){b(this).removeClass("ke-on")});e.click(function(b){d.insertHtml('<img src="'+
g+j+'.gif" border="0" alt="" />').hideMenu().focus();b.stop()})}function m(d,e){var j=document.createElement("table");e.append(j);w&&(b(j).mouseover(function(){w.show("block")}),b(j).mouseout(function(){w.hide()}),A.push(b(j)));j.className="ke-table";j.cellPadding=0;j.cellSpacing=0;j.border=0;for(var n=(d-1)*q+p,m=0;m<s;m++)for(var o=j.insertRow(m),l=0;l<t;l++){var r=b(o.insertCell(l));r.addClass("ke-cell");h(r,l,n);var v=b('<span class="ke-img"></span>').css("background-position","-"+24*n+"px 0px").css("background-image",
"url("+g+"static.gif)");r.append(v);A.push(r);n++}return j}function n(){b.each(A,function(){this.unbind()})}function j(b,d){b.click(function(b){n();v.parentNode.removeChild(v);E.remove();v=m(d,r);o(d);e=d;b.stop()})}function o(d){E=b('<div class="ke-page"></div>');r.append(E);for(var e=1;e<=z;e++){if(d!==e){var g=b('<a href="javascript:;">['+e+"]</a>");j(g,e);E.append(g);A.push(g)}else E.append(b("@["+e+"]"));E.append(b("@&nbsp;"))}}var s=5,t=9,p=0,q=s*t,z=Math.ceil(135/q),D=Math.floor(t/2),r=b('<div class="ke-plugin-emoticons"></div>'),
A=[];d.createMenu({name:"emoticons",beforeRemove:function(){n()}}).div.append(r);var w,H;l&&(w=b('<div class="ke-preview"></div>').css("right",0),H=b('<img class="ke-preview-img" src="'+g+p+'.gif" />'),r.append(w),w.append(H));var v=m(e,r),E;o(e)})});
KindEditor.plugin("filemanager",function(b){function d(b,d){d.is_dir?b.attr("title",d.filename):b.attr("title",d.filename+" ("+Math.ceil(d.filesize/1024)+"KB, "+d.datetime+")")}var g=this,l=b.undef(g.fileManagerJson,g.basePath+"php/file_manager_json.php"),e=g.pluginsPath+"filemanager/images/",h=g.lang("filemanager.");g.plugin.filemanagerDialog=function(m){function n(d,e,h){d="path="+d+"&order="+e+"&dir="+z;A.showLoading(g.lang("ajaxLoading"));b.ajax(b.addParam(l,d+"&"+(new Date).getTime()),function(b){A.hideLoading();
h(b)})}function j(d,e,g,h){var j=b.formatUrl(e.current_url+g.filename,"absolute"),o=encodeURIComponent(e.current_dir_path+g.filename+"/");g.is_dir?d.click(function(){n(o,E.val(),h)}):g.is_photo?d.click(function(){r.call(this,j,g.filename)}):d.click(function(){r.call(this,j,g.filename)});U.push(d)}function o(d,e){function g(){v.val()=="VIEW"?n(d.current_dir_path,E.val(),t):n(d.current_dir_path,E.val(),s)}b.each(U,function(){this.unbind()});H.unbind();v.unbind();E.unbind();d.current_dir_path&&H.click(function(){n(d.moveup_dir_path,
E.val(),e)});v.change(g);E.change(g);w.html("")}function s(d){o(d,s);var g=document.createElement("table");g.className="ke-table";g.cellPadding=0;g.cellSpacing=0;g.border=0;w.append(g);for(var n=d.file_list,m=0,l=n.length;m<l;m++){var q=n[m],t=b(g.insertRow(m));t.mouseover(function(){b(this).addClass("ke-on")}).mouseout(function(){b(this).removeClass("ke-on")});var p=b('<img src="'+(e+(q.is_dir?"folder-16.gif":"file-16.gif"))+'" width="16" height="16" alt="'+q.filename+'" align="absmiddle" />'),p=
b(t[0].insertCell(0)).addClass("ke-cell ke-name").append(p).append(document.createTextNode(" "+q.filename));!q.is_dir||q.has_file?(t.css("cursor","pointer"),p.attr("title",q.filename),j(p,d,q,s)):p.attr("title",h.emptyFolder);b(t[0].insertCell(1)).addClass("ke-cell ke-size").html(q.is_dir?"-":Math.ceil(q.filesize/1024)+"KB");b(t[0].insertCell(2)).addClass("ke-cell ke-datetime").html(q.datetime)}}function t(g){o(g,t);for(var n=g.file_list,m=0,l=n.length;m<l;m++){var s=n[m],q=b('<div class="ke-inline-block ke-item"></div>');
w.append(q);var p=b('<div class="ke-inline-block ke-photo"></div>').mouseover(function(){b(this).addClass("ke-on")}).mouseout(function(){b(this).removeClass("ke-on")});q.append(p);var r=g.current_url+s.filename,r=b('<img src="'+(s.is_dir?e+"folder-64.gif":s.is_photo?r:e+"file-64.gif")+'" width="80" height="80" alt="'+s.filename+'" />');!s.is_dir||s.has_file?(p.css("cursor","pointer"),d(p,s),j(p,g,s,t)):p.attr("title",h.emptyFolder);p.append(r);q.append('<div class="ke-name" title="'+s.filename+'">'+
s.filename+"</div>")}}var p=b.undef(m.width,650),q=b.undef(m.height,510),z=b.undef(m.dirName,""),D=b.undef(m.viewType,"VIEW").toUpperCase(),r=m.clickFn,m=['<div style="padding:10px 20px;"><div class="ke-plugin-filemanager-header"><div class="ke-left">','<img class="ke-inline-block" name="moveupImg" src="'+e+'go-up.gif" width="16" height="16" border="0" alt="" /> ','<a class="ke-inline-block" name="moveupLink" href="javascript:;">'+h.moveup+"</a>",'</div><div class="ke-right">',h.viewType+' <select class="ke-inline-block" name="viewType">',
'<option value="VIEW">'+h.viewImage+"</option>",'<option value="LIST">'+h.listImage+"</option>","</select> ",h.orderType+' <select class="ke-inline-block" name="orderType">','<option value="NAME">'+h.fileName+"</option>",'<option value="SIZE">'+h.fileSize+"</option>",'<option value="TYPE">'+h.fileType+"</option>",'</select></div><div class="ke-clearfix"></div></div><div class="ke-plugin-filemanager-body"></div></div>'].join(""),A=g.createDialog({name:"filemanager",width:p,height:q,title:g.lang("filemanager"),
body:m}),p=A.div,w=b(".ke-plugin-filemanager-body",p);b('[name="moveupImg"]',p);var H=b('[name="moveupLink"]',p);b('[name="viewServer"]',p);var v=b('[name="viewType"]',p),E=b('[name="orderType"]',p),U=[];v.val(D);n("",E.val(),D=="VIEW"?t:s);return A}});
KindEditor.plugin("flash",function(b){var d=this,g=d.lang("flash."),l=b.undef(d.allowFlashUpload,!0),e=b.undef(d.allowFileManager,!1),h=b.undef(d.formatUploadUrl,!0),m=b.undef(d.extraFileUploadParams,{}),n=b.undef(d.filePostName,"imgFile"),j=b.undef(d.uploadJson,d.basePath+"php/upload_json.php");d.plugin.flash={edit:function(){var o=['<div style="padding:20px;"><div class="ke-dialog-row">','<label for="keUrl" style="width:60px;">'+g.url+"</label>",'<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> &nbsp;',
'<input type="button" class="ke-upload-button" value="'+g.upload+'" /> &nbsp;','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+g.viewServer+'" />','</span></div><div class="ke-dialog-row">','<label for="keWidth" style="width:60px;">'+g.width+"</label>",'<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> </div><div class="ke-dialog-row">','<label for="keHeight" style="width:60px;">'+
g.height+"</label>",'<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> </div></div>'].join(""),s=d.createDialog({name:"flash",width:450,title:d.lang("flash"),body:o,yesBtn:{name:d.lang("yes"),click:function(){var e=b.trim(p.val()),g=q.val(),h=z.val();e=="http://"||b.invalidUrl(e)?(alert(d.lang("invalidUrl")),p[0].focus()):/^\d*$/.test(g)?/^\d*$/.test(h)?(e=b.mediaImg(d.themesPath+"common/blank.gif",{src:e,type:b.mediaType(".swf"),width:g,
height:h,quality:"high"}),d.insertHtml(e).hideDialog().focus()):(alert(d.lang("invalidHeight")),z[0].focus()):(alert(d.lang("invalidWidth")),q[0].focus())}}}),t=s.div,p=b('[name="url"]',t),o=b('[name="viewServer"]',t),q=b('[name="width"]',t),z=b('[name="height"]',t);p.val("http://");if(l){var D=b.uploadbutton({button:b(".ke-upload-button",t)[0],fieldName:n,extraParams:m,url:b.addParam(j,"dir=flash"),afterUpload:function(e){s.hideLoading();if(e.error===0){var g=e.url;h&&(g=b.formatUrl(g,"absolute"));
p.val(g);d.afterUpload&&d.afterUpload.call(d,g,e,"flash");alert(d.lang("uploadSuccess"))}else alert(e.message)},afterError:function(b){s.hideLoading();d.errorDialog(b)}});D.fileBox.change(function(){s.showLoading(d.lang("uploadLoading"));D.submit()})}else b(".ke-upload-button",t).hide();e?o.click(function(){d.loadPlugin("filemanager",function(){d.plugin.filemanagerDialog({viewType:"LIST",dirName:"flash",clickFn:function(e){d.dialogs.length>1&&(b('[name="url"]',t).val(e),d.afterSelectFile&&d.afterSelectFile.call(d,
e),d.hideDialog())}})})}):o.hide();if(o=d.plugin.getSelectedFlash()){var r=b.mediaAttrs(o.attr("data-ke-tag"));p.val(r.src);q.val(b.removeUnit(o.css("width"))||r.width||0);z.val(b.removeUnit(o.css("height"))||r.height||0)}p[0].focus();p[0].select()},"delete":function(){d.plugin.getSelectedFlash().remove();d.addBookmark()}};d.clickToolbar("flash",d.plugin.flash.edit)});
KindEditor.plugin("image",function(b){var d=this,g=b.undef(d.allowImageUpload,!0),l=b.undef(d.allowImageRemote,!0),e=b.undef(d.formatUploadUrl,!0),h=b.undef(d.allowFileManager,!1),m=b.undef(d.uploadJson,d.basePath+"php/upload_json.php"),n=b.undef(d.imageTabIndex,0),j=d.pluginsPath+"image/images/",o=b.undef(d.extraFileUploadParams,{}),s=b.undef(d.filePostName,"imgFile"),t=b.undef(d.fillDescAfterUploadImage,!1),p=d.lang("image.");d.plugin.imageDialog=function(g){function n(b,d){Q.val(b);G.val(d);T=
b;fa=d}b.undef(g.imageWidth,"");b.undef(g.imageHeight,"");b.undef(g.imageTitle,"");b.undef(g.imageAlign,"");var l=b.undef(g.showRemote,!0),r=b.undef(g.showLocal,!0),A=b.undef(g.tabIndex,0),w=g.clickFn,H="kindeditor_upload_iframe_"+(new Date).getTime(),v=[],E;for(E in o)v.push('<input type="hidden" name="'+E+'" value="'+o[E]+'" />');var v=['<div style="padding:20px;"><div class="tabs"></div><div class="tab1" style="display:none;"><div class="ke-dialog-row">','<label for="remoteUrl" style="width:60px;">'+
p.remoteUrl+"</label>",'<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:200px;" /> &nbsp;<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+p.viewServer+'" />','</span></div><div class="ke-dialog-row">','<label for="remoteWidth" style="width:60px;">'+p.size+"</label>",p.width+' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',
p.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ','<img class="ke-refresh-btn" src="'+j+'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="'+p.resetSize+'" />','</div><div class="ke-dialog-row">','<label style="width:60px;">'+p.align+"</label>",'<input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> <img name="defaultImg" src="'+j+'align_top.gif" width="23" height="25" alt="" />',' <input type="radio" name="align" class="ke-inline-block" value="left" /> <img name="leftImg" src="'+
j+'align_left.gif" width="23" height="25" alt="" />',' <input type="radio" name="align" class="ke-inline-block" value="right" /> <img name="rightImg" src="'+j+'align_right.gif" width="23" height="25" alt="" />','</div><div class="ke-dialog-row">','<label for="remoteTitle" style="width:60px;">'+p.imgTitle+"</label>",'<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:200px;" /></div></div><div class="tab2" style="display:none;">','<iframe name="'+H+'" style="display:none;"></iframe>',
'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="'+H+'" action="'+b.addParam(m,"dir=image")+'">','<div class="ke-dialog-row">',v.join(""),'<label style="width:60px;">'+p.localUrl+"</label>",'<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> &nbsp;','<input type="button" class="ke-upload-button" value="'+p.upload+'" />',"</div></form></div></div>"].join(""),U=d.createDialog({name:"image",width:r||
h?450:400,height:r&&l?300:250,title:d.lang("image"),body:v,yesBtn:{name:d.lang("yes"),click:function(){if(!U.isLoading)if(r&&l&&J&&J.selectedIndex===1||!l)W.fileBox.val()==""?alert(d.lang("pleaseSelectFile")):(U.showLoading(d.lang("uploadLoading")),W.submit(),ea.val(""));else{var e=b.trim(N.val()),g=Q.val(),h=G.val(),j=Y.val(),n="";M.each(function(){if(this.checked)return n=this.value,!1});e=="http://"||b.invalidUrl(e)?(alert(d.lang("invalidUrl")),N[0].focus()):/^\d*$/.test(g)?/^\d*$/.test(h)?w.call(d,
e,j,g,h,0,n):(alert(d.lang("invalidHeight")),G[0].focus()):(alert(d.lang("invalidWidth")),Q[0].focus())}}},beforeRemove:function(){V.unbind();Q.unbind();G.unbind();S.unbind()}}),F=U.div,N=b('[name="url"]',F),ea=b('[name="localUrl"]',F),V=b('[name="viewServer"]',F),Q=b('.tab1 [name="width"]',F),G=b('.tab1 [name="height"]',F),S=b(".ke-refresh-btn",F),Y=b('.tab1 [name="title"]',F),M=b('.tab1 [name="align"]',F),J;l&&r?(J=b.tabs({src:b(".tabs",F),afterSelect:function(){}}),J.add({title:p.remoteImage,panel:b(".tab1",
F)}),J.add({title:p.localImage,panel:b(".tab2",F)}),J.select(A)):l?b(".tab1",F).show():r&&b(".tab2",F).show();var W=b.uploadbutton({button:b(".ke-upload-button",F)[0],fieldName:s,form:b(".ke-form",F),target:H,width:60,afterUpload:function(g){U.hideLoading();if(g.error===0){var h=g.url;e&&(h=b.formatUrl(h,"absolute"));d.afterUpload&&d.afterUpload.call(d,h,g,"image");t?(b(".ke-dialog-row #remoteUrl",F).val(h),b(".ke-tabs-li",F)[0].click(),b(".ke-refresh-btn",F).click()):w.call(d,h,g.title,g.width,g.height,
g.border,g.align)}else alert(g.message)},afterError:function(b){U.hideLoading();d.errorDialog(b)}});W.fileBox.change(function(){ea.val(W.fileBox.val())});h?V.click(function(){d.loadPlugin("filemanager",function(){d.plugin.filemanagerDialog({viewType:"VIEW",dirName:"image",clickFn:function(e){d.dialogs.length>1&&(b('[name="url"]',F).val(e),d.afterSelectFile&&d.afterSelectFile.call(d,e),d.hideDialog())}})})}):V.hide();var T=0,fa=0;S.click(function(){var d=b('<img src="'+N.val()+'" />',document).css({position:"absolute",
visibility:"hidden",top:0,left:"-1000px"});d.bind("load",function(){n(d.width(),d.height());d.remove()});b(document.body).append(d)});Q.change(function(){T>0&&G.val(Math.round(fa/T*parseInt(this.value,10)))});G.change(function(){fa>0&&Q.val(Math.round(T/fa*parseInt(this.value,10)))});N.val(g.imageUrl);n(g.imageWidth,g.imageHeight);Y.val(g.imageTitle);M.each(function(){if(this.value===g.imageAlign)return this.checked=!0,!1});l&&A===0&&(N[0].focus(),N[0].select());return U};d.plugin.image={edit:function(){var b=
d.plugin.getSelectedImage();d.plugin.imageDialog({imageUrl:b?b.attr("data-ke-src"):"http://",imageWidth:b?b.width():"",imageHeight:b?b.height():"",imageTitle:b?b.attr("title"):"",imageAlign:b?b.attr("align"):"",showRemote:l,showLocal:g,tabIndex:b?0:n,clickFn:function(b,e,g,h,j,n){d.exec("insertimage",b,e,g,h,j,n);setTimeout(function(){d.hideDialog().focus()},0)}})},"delete":function(){var b=d.plugin.getSelectedImage();b.parent().name=="a"&&(b=b.parent());b.remove();d.addBookmark()}};d.clickToolbar("image",
d.plugin.image.edit)});
KindEditor.plugin("insertfile",function(b){var d=this,g=b.undef(d.allowFileUpload,!0),l=b.undef(d.allowFileManager,!1),e=b.undef(d.formatUploadUrl,!0),h=b.undef(d.uploadJson,d.basePath+"php/upload_json.php"),m=b.undef(d.extraFileUploadParams,{}),n=b.undef(d.filePostName,"imgFile"),j=d.lang("insertfile.");d.plugin.fileDialog=function(o){var s=b.undef(o.fileUrl,"http://"),t=b.undef(o.fileTitle,""),p=o.clickFn,o=['<div style="padding:20px;"><div class="ke-dialog-row">','<label for="keUrl" style="width:60px;">'+j.url+
"</label>",'<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> &nbsp;','<input type="button" class="ke-upload-button" value="'+j.upload+'" /> &nbsp;','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+j.viewServer+'" />','</span></div><div class="ke-dialog-row">','<label for="keTitle" style="width:60px;">'+j.title+"</label>",'<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div></div></form></div>'].join(""),
q=d.createDialog({name:"insertfile",width:450,title:d.lang("insertfile"),body:o,yesBtn:{name:d.lang("yes"),click:function(){var e=b.trim(D.val()),g=r.val();e=="http://"||b.invalidUrl(e)?(alert(d.lang("invalidUrl")),D[0].focus()):(b.trim(g)===""&&(g=e),p.call(d,e,g))}}}),z=q.div,D=b('[name="url"]',z),o=b('[name="viewServer"]',z),r=b('[name="title"]',z);if(g){var A=b.uploadbutton({button:b(".ke-upload-button",z)[0],fieldName:n,url:b.addParam(h,"dir=file"),extraParams:m,afterUpload:function(g){q.hideLoading();
if(g.error===0){var h=g.url;e&&(h=b.formatUrl(h,"absolute"));D.val(h);d.afterUpload&&d.afterUpload.call(d,h,g,"insertfile");alert(d.lang("uploadSuccess"))}else alert(g.message)},afterError:function(b){q.hideLoading();d.errorDialog(b)}});A.fileBox.change(function(){q.showLoading(d.lang("uploadLoading"));A.submit()})}else b(".ke-upload-button",z).hide();l?o.click(function(){d.loadPlugin("filemanager",function(){d.plugin.filemanagerDialog({viewType:"LIST",dirName:"file",clickFn:function(e){d.dialogs.length>
1&&(b('[name="url"]',z).val(e),d.afterSelectFile&&d.afterSelectFile.call(d,e),d.hideDialog())}})})}):o.hide();D.val(s);r.val(t);D[0].focus();D[0].select()};d.clickToolbar("insertfile",function(){d.plugin.fileDialog({clickFn:function(b,e){d.insertHtml('<a class="ke-insertfile" href="'+b+'" data-ke-src="'+b+'" target="_blank">'+e+"</a>").hideDialog().focus()}})})});
KindEditor.plugin("lineheight",function(b){var d=this,g=d.lang("lineheight.");d.clickToolbar("lineheight",function(){var l="",e=d.cmd.commonNode({"*":".line-height"});e&&(l=e.css("line-height"));var h=d.createMenu({name:"lineheight",width:150});b.each(g.lineHeight,function(e,g){b.each(g,function(b,e){h.addItem({title:e,checked:l===b,click:function(){d.cmd.toggle('<span style="line-height:'+b+';"></span>',{span:".line-height="+b});d.updateState();d.addBookmark();d.hideMenu()}})})})})});
KindEditor.plugin("link",function(b){var d=this;d.plugin.link={edit:function(){var g=d.lang("link."),l='<div style="padding:20px;"><div class="ke-dialog-row"><label for="keUrl" style="width:60px;">'+g.url+'</label><input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" /></div><div class="ke-dialog-row""><label for="keType" style="width:60px;">'+g.linkType+'</label><select id="keType" name="type"></select></div></div>',l=d.createDialog({name:"link",width:450,title:d.lang("link"),
body:l,yesBtn:{name:d.lang("yes"),click:function(){var g=b.trim(e.val());g=="http://"||b.invalidUrl(g)?(alert(d.lang("invalidUrl")),e[0].focus()):d.exec("createlink",g,h.val()).hideDialog().focus()}}}).div,e=b('input[name="url"]',l),h=b('select[name="type"]',l);e.val("http://");h[0].options[0]=new Option(g.newWindow,"_blank");h[0].options[1]=new Option(g.selfWindow,"");d.cmd.selection();if(g=d.plugin.getSelectedLink())d.cmd.range.selectNode(g[0]),d.cmd.select(),e.val(g.attr("data-ke-src")),h.val(g.attr("target"));
e[0].focus();e[0].select()},"delete":function(){d.exec("unlink",null)}};d.clickToolbar("link",d.plugin.link.edit)});
KindEditor.plugin("map",function(b){var d=this,g=d.lang("map.");d.clickToolbar("map",function(){function l(){n=o[0].contentWindow;j=b.iframeDoc(o)}var e=['<div style="padding:10px 20px;"><div class="ke-dialog-row">',g.address+' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" name="searchBtn" class="ke-button-common ke-button" value="'+g.search+'" />','</span></div><div class="ke-map" style="width:558px;height:360px;"></div></div>'].join(""),
e=d.createDialog({name:"map",width:600,title:d.lang("map"),body:e,yesBtn:{name:d.lang("yes"),click:function(){var b=n.map,e=b.getCenter().lat()+","+b.getCenter().lng(),g=b.getZoom(),b=b.getMapTypeId(),h="http://maps.googleapis.com/maps/api/staticmap";h+="?center="+encodeURIComponent(e);h+="&zoom="+encodeURIComponent(g);h+="&size=558x360";h+="&maptype="+encodeURIComponent(b);h+="&markers="+encodeURIComponent(e);h+="&language="+d.langType;h+="&sensor=false";d.exec("insertimage",h).hideDialog().focus()}},
beforeRemove:function(){m.remove();j&&j.write("");o.remove()}}).div,h=b('[name="address"]',e),m=b('[name="searchBtn"]',e),n,j;['<!doctype html><html><head>\n<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />\n<style>\n\thtml { height: 100% }\n\tbody { height: 100%; margin: 0; padding: 0; background-color: #FFF }\n\t#map_canvas { height: 100% }\n</style>','<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language='+d.langType+'"><\/script>','<script>\nvar map, geocoder;\nfunction initialize() {\n\tvar latlng = new google.maps.LatLng(31.230393, 121.473704);\n\tvar options = {\n\t\tzoom: 11,\n\t\tcenter: latlng,\n\t\tdisableDefaultUI: true,\n\t\tpanControl: true,\n\t\tzoomControl: true,\n\t\tmapTypeControl: true,\n\t\tscaleControl: true,\n\t\tstreetViewControl: false,\n\t\toverviewMapControl: true,\n\t\tmapTypeId: google.maps.MapTypeId.ROADMAP\n\t};\n\tmap = new google.maps.Map(document.getElementById("map_canvas"), options);\n\tgeocoder = new google.maps.Geocoder();\n\tgeocoder.geocode({latLng: latlng}, function(results, status) {\n\t\tif (status == google.maps.GeocoderStatus.OK) {\n\t\t\tif (results[3]) {\n\t\t\t\tparent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;\n\t\t\t}\n\t\t}\n\t});\n}\nfunction search(address) {\n\tif (!map) return;\n\tgeocoder.geocode({address : address}, function(results, status) {\n\t\tif (status == google.maps.GeocoderStatus.OK) {\n\t\t\tmap.setZoom(11);\n\t\t\tmap.setCenter(results[0].geometry.location);\n\t\t\tvar marker = new google.maps.Marker({\n\t\t\t\tmap: map,\n\t\t\t\tposition: results[0].geometry.location\n\t\t\t});\n\t\t} else {\n\t\t\talert("Invalid address: " + address);\n\t\t}\n\t});\n}\n<\/script>\n</head>\n<body onload="initialize();">\n<div id="map_canvas" style="width:100%; height:100%"></div>\n</body></html>'].join("\n");
var o=b('<iframe class="ke-textarea" frameborder="0" src="'+d.pluginsPath+'map/map.html" style="width:558px;height:360px;"></iframe>');o.bind("load",function(){o.unbind("load");b.IE?l():setTimeout(l,0)});b(".ke-map",e).replaceWith(o);m.click(function(){n.search(h.val())})})});
KindEditor.plugin("media",function(b){var d=this,g=d.lang("media."),l=b.undef(d.allowMediaUpload,!0),e=b.undef(d.allowFileManager,!1),h=b.undef(d.formatUploadUrl,!0),m=b.undef(d.extraFileUploadParams,{}),n=b.undef(d.filePostName,"imgFile"),j=b.undef(d.uploadJson,d.basePath+"php/upload_json.php");d.plugin.media={edit:function(){var o=['<div style="padding:20px;"><div class="ke-dialog-row">','<label for="keUrl" style="width:60px;">'+g.url+"</label>",'<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> &nbsp;',
'<input type="button" class="ke-upload-button" value="'+g.upload+'" /> &nbsp;','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+g.viewServer+'" />','</span></div><div class="ke-dialog-row">','<label for="keWidth" style="width:60px;">'+g.width+"</label>",'<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /></div><div class="ke-dialog-row">','<label for="keHeight" style="width:60px;">'+
g.height+"</label>",'<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /></div><div class="ke-dialog-row">','<label for="keAutostart">'+g.autostart+"</label>",'<input type="checkbox" id="keAutostart" name="autostart" value="" /> </div></div>'].join(""),s=d.createDialog({name:"media",width:450,height:230,title:d.lang("media"),body:o,yesBtn:{name:d.lang("yes"),click:function(){var e=b.trim(p.val()),g=q.val(),h=z.val();e=="http://"||b.invalidUrl(e)?
(alert(d.lang("invalidUrl")),p[0].focus()):/^\d*$/.test(g)?/^\d*$/.test(h)?(e=b.mediaImg(d.themesPath+"common/blank.gif",{src:e,type:b.mediaType(e),width:g,height:h,autostart:D[0].checked?"true":"false",loop:"true"}),d.insertHtml(e).hideDialog().focus()):(alert(d.lang("invalidHeight")),z[0].focus()):(alert(d.lang("invalidWidth")),q[0].focus())}}}),t=s.div,p=b('[name="url"]',t),o=b('[name="viewServer"]',t),q=b('[name="width"]',t),z=b('[name="height"]',t),D=b('[name="autostart"]',t);p.val("http://");
if(l){var r=b.uploadbutton({button:b(".ke-upload-button",t)[0],fieldName:n,extraParams:m,url:b.addParam(j,"dir=media"),afterUpload:function(e){s.hideLoading();if(e.error===0){var g=e.url;h&&(g=b.formatUrl(g,"absolute"));p.val(g);d.afterUpload&&d.afterUpload.call(d,g,e,"media");alert(d.lang("uploadSuccess"))}else alert(e.message)},afterError:function(b){s.hideLoading();d.errorDialog(b)}});r.fileBox.change(function(){s.showLoading(d.lang("uploadLoading"));r.submit()})}else b(".ke-upload-button",t).hide();
e?o.click(function(){d.loadPlugin("filemanager",function(){d.plugin.filemanagerDialog({viewType:"LIST",dirName:"media",clickFn:function(e){d.dialogs.length>1&&(b('[name="url"]',t).val(e),d.afterSelectFile&&d.afterSelectFile.call(d,e),d.hideDialog())}})})}):o.hide();if(o=d.plugin.getSelectedMedia()){var A=b.mediaAttrs(o.attr("data-ke-tag"));p.val(A.src);q.val(b.removeUnit(o.css("width"))||A.width||0);z.val(b.removeUnit(o.css("height"))||A.height||0);D[0].checked=A.autostart==="true"}p[0].focus();p[0].select()},
"delete":function(){d.plugin.getSelectedMedia().remove();d.addBookmark()}};d.clickToolbar("media",d.plugin.media.edit)});
(function(b){function d(b){this.init(b)}b.extend(d,{init:function(d){function l(d,e){b(".ke-status > div",d).hide();b(".ke-message",d).addClass("ke-error").show().html(b.escape(e))}var e=this;d.afterError=d.afterError||function(b){alert(b)};e.options=d;e.progressbars={};e.div=b(d.container).html(['<div class="ke-swfupload"><div class="ke-swfupload-top"><div class="ke-inline-block ke-swfupload-button"><input type="button" value="Browse" /></div>','<div class="ke-inline-block ke-swfupload-desc">'+d.uploadDesc+
"</div>",'<span class="ke-button-common ke-button-outer ke-swfupload-startupload">','<input type="button" class="ke-button-common ke-button" value="'+d.startButtonValue+'" />','</span></div><div class="ke-swfupload-body"></div></div>'].join(""));e.bodyDiv=b(".ke-swfupload-body",e.div);var h={debug:!1,upload_url:d.uploadUrl,flash_url:d.flashUrl,file_post_name:d.filePostName,button_placeholder:b(".ke-swfupload-button > input",e.div)[0],button_image_url:d.buttonImageUrl,button_width:d.buttonWidth,button_height:d.buttonHeight,
button_cursor:SWFUpload.CURSOR.HAND,file_types:d.fileTypes,file_types_description:d.fileTypesDesc,file_upload_limit:d.fileUploadLimit,file_size_limit:d.fileSizeLimit,post_params:d.postParams,file_queued_handler:function(b){b.url=e.options.fileIconUrl;e.appendFile(b)},file_queue_error_handler:function(e,h){var j="";switch(h){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:j=d.queueLimitExceeded;break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:j=d.fileExceedsSizeLimit;break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:j=
d.zeroByteFile;break;case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:j=d.invalidFiletype;break;default:j=d.unknownError}b.DEBUG&&alert(j)},upload_start_handler:function(d){d=b('div[data-id="'+d.id+'"]',this.bodyDiv);b(".ke-status > div",d).hide();b(".ke-progressbar",d).show()},upload_progress_handler:function(b,d,g){d=Math.round(d*100/g);b=e.progressbars[b.id];b.bar.css("width",Math.round(d*80/100)+"px");b.percent.html(d+"%")},upload_error_handler:function(d){d&&d.filestatus==SWFUpload.FILE_STATUS.ERROR&&
(d=b('div[data-id="'+d.id+'"]',e.bodyDiv).eq(0),l(d,e.options.errorMessage))},upload_success_handler:function(d,g){var h=b('div[data-id="'+d.id+'"]',e.bodyDiv).eq(0),o={};try{o=b.json(g)}catch(s){e.options.afterError.call(this,"<!doctype html><html>"+g+"</html>")}o.error!==0?l(h,b.DEBUG?o.message:e.options.errorMessage):(d.url=o.url,b(".ke-img",h).attr("src",d.url).attr("data-status",d.filestatus).data("data",o),b(".ke-status > div",h).hide())}};e.swfu=new SWFUpload(h);b(".ke-swfupload-startupload input",
e.div).click(function(){e.swfu.startUpload()})},getUrlList:function(){var d=[];b(".ke-img",self.bodyDiv).each(function(){var l=b(this);l.attr("data-status")==SWFUpload.FILE_STATUS.COMPLETE&&d.push(l.data("data"))});return d},removeFile:function(d){this.swfu.cancelUpload(d);d=b('div[data-id="'+d+'"]',this.bodyDiv);b(".ke-photo",d).unbind();b(".ke-delete",d).unbind();d.remove()},removeFiles:function(){var d=this;b(".ke-item",d.bodyDiv).each(function(){d.removeFile(b(this).attr("data-id"))})},appendFile:function(d){var l=
this,e=b('<div class="ke-inline-block ke-item" data-id="'+d.id+'"></div>');l.bodyDiv.append(e);var h=b('<div class="ke-inline-block ke-photo"></div>').mouseover(function(){b(this).addClass("ke-on")}).mouseout(function(){b(this).removeClass("ke-on")});e.append(h);var m=b('<img src="'+d.url+'" class="ke-img" data-status="'+d.filestatus+'" width="80" height="80" alt="'+d.name+'" />');h.append(m);b('<span class="ke-delete"></span>').appendTo(h).click(function(){l.removeFile(d.id)});m=b('<div class="ke-status"></div>').appendTo(h);
b('<div class="ke-progressbar"><div class="ke-progressbar-bar"><div class="ke-progressbar-bar-inner"></div></div><div class="ke-progressbar-percent">0%</div></div>').hide().appendTo(m);b('<div class="ke-message">'+l.options.pendingMessage+"</div>").appendTo(m);e.append('<div class="ke-name">'+d.name+"</div>");l.progressbars[d.id]={bar:b(".ke-progressbar-bar-inner",h),percent:b(".ke-progressbar-percent",h)}},remove:function(){this.removeFiles();this.swfu.destroy();this.div.html("")}});b.swfupload=
function(b,l){return new d(b,l)}})(KindEditor);
KindEditor.plugin("multiimage",function(b){var d=this;b.undef(d.formatUploadUrl,!0);var g=b.undef(d.uploadJson,d.basePath+"php/upload_json.php"),l=d.pluginsPath+"multiimage/images/",e=b.undef(d.imageSizeLimit,"1MB");b.undef(d.imageFileTypes,"*.jpg;*.gif;*.png");var h=b.undef(d.imageUploadLimit,20),m=b.undef(d.filePostName,"imgFile"),n=d.lang("multiimage.");d.plugin.multiImageDialog=function(j){var o=j.clickFn,j=b.tmpl(n.uploadDesc,{uploadLimit:h,sizeLimit:e}),s=d.createDialog({name:"multiimage",width:650,
height:510,title:d.lang("multiimage"),body:'<div style="padding:20px;"><div class="swfupload"></div></div>',previewBtn:{name:n.insertAll,click:function(){o.call(d,t.getUrlList())}},yesBtn:{name:n.clearAll,click:function(){t.removeFiles()}},beforeRemove:function(){(!b.IE||b.V<=8)&&t.remove()}}),t=b.swfupload({container:b(".swfupload",s.div),buttonImageUrl:l+(d.langType=="zh_CN"?"select-files-zh_CN.png":"select-files-en.png"),buttonWidth:d.langType=="zh_CN"?72:88,buttonHeight:23,fileIconUrl:l+"image.png",
uploadDesc:j,startButtonValue:n.startUpload,uploadUrl:b.addParam(g,"dir=image"),flashUrl:l+"swfupload.swf",filePostName:m,fileTypes:"*.jpg;*.jpeg;*.gif;*.png;*.bmp",fileTypesDesc:"Image Files",fileUploadLimit:h,fileSizeLimit:e,postParams:b.undef(d.extraFileUploadParams,{}),queueLimitExceeded:n.queueLimitExceeded,fileExceedsSizeLimit:n.fileExceedsSizeLimit,zeroByteFile:n.zeroByteFile,invalidFiletype:n.invalidFiletype,unknownError:n.unknownError,pendingMessage:n.pending,errorMessage:n.uploadError,afterError:function(b){d.errorDialog(b)}});
return s};d.clickToolbar("multiimage",function(){d.plugin.multiImageDialog({clickFn:function(e){e.length!==0&&(b.each(e,function(b,e){d.afterUpload&&d.afterUpload.call(d,e.url,e,"multiimage");d.exec("insertimage",e.url,e.title,e.width,e.height,e.border,e.align)}),setTimeout(function(){d.hideDialog().focus()},0))}})})});
(function(){if(!window.SWFUpload)window.SWFUpload=function(b){this.initSWFUpload(b)},SWFUpload.prototype.initSWFUpload=function(b){try{this.customSettings={},this.settings=b,this.eventQueue=[],this.movieName="SWFUpload_"+SWFUpload.movieCount++,this.movieElement=null,SWFUpload.instances[this.movieName]=this,this.initSettings(),this.loadFlash(),this.displayDebugInfo()}catch(d){throw delete SWFUpload.instances[this.movieName],d;}},SWFUpload.instances={},SWFUpload.movieCount=0,SWFUpload.version="2.2.0 2009-03-25",
SWFUpload.QUEUE_ERROR={QUEUE_LIMIT_EXCEEDED:-100,FILE_EXCEEDS_SIZE_LIMIT:-110,ZERO_BYTE_FILE:-120,INVALID_FILETYPE:-130},SWFUpload.UPLOAD_ERROR={HTTP_ERROR:-200,MISSING_UPLOAD_URL:-210,IO_ERROR:-220,SECURITY_ERROR:-230,UPLOAD_LIMIT_EXCEEDED:-240,UPLOAD_FAILED:-250,SPECIFIED_FILE_ID_NOT_FOUND:-260,FILE_VALIDATION_FAILED:-270,FILE_CANCELLED:-280,UPLOAD_STOPPED:-290},SWFUpload.FILE_STATUS={QUEUED:-1,IN_PROGRESS:-2,ERROR:-3,COMPLETE:-4,CANCELLED:-5},SWFUpload.BUTTON_ACTION={SELECT_FILE:-100,SELECT_FILES:-110,
START_UPLOAD:-120},SWFUpload.CURSOR={ARROW:-1,HAND:-2},SWFUpload.WINDOW_MODE={WINDOW:"window",TRANSPARENT:"transparent",OPAQUE:"opaque"},SWFUpload.completeURL=function(b){if(typeof b!=="string"||b.match(/^https?:\/\//i)||b.match(/^\//))return b;var d=window.location.pathname.lastIndexOf("/");path=d<=0?"/":window.location.pathname.substr(0,d)+"/";return path+b},SWFUpload.prototype.initSettings=function(){this.ensureDefault=function(b,d){this.settings[b]=this.settings[b]==void 0?d:this.settings[b]};
this.ensureDefault("upload_url","");this.ensureDefault("preserve_relative_urls",!1);this.ensureDefault("file_post_name","Filedata");this.ensureDefault("post_params",{});this.ensureDefault("use_query_string",!1);this.ensureDefault("requeue_on_error",!1);this.ensureDefault("http_success",[]);this.ensureDefault("assume_success_timeout",0);this.ensureDefault("file_types","*.*");this.ensureDefault("file_types_description","All Files");this.ensureDefault("file_size_limit",0);this.ensureDefault("file_upload_limit",
0);this.ensureDefault("file_queue_limit",0);this.ensureDefault("flash_url","swfupload.swf");this.ensureDefault("prevent_swf_caching",!0);this.ensureDefault("button_image_url","");this.ensureDefault("button_width",1);this.ensureDefault("button_height",1);this.ensureDefault("button_text","");this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;");this.ensureDefault("button_text_top_padding",0);this.ensureDefault("button_text_left_padding",0);this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES);
this.ensureDefault("button_disabled",!1);this.ensureDefault("button_placeholder_id","");this.ensureDefault("button_placeholder",null);this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW);this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW);this.ensureDefault("debug",!1);this.settings.debug_enabled=this.settings.debug;this.settings.return_upload_start_handler=this.returnUploadStart;this.ensureDefault("swfupload_loaded_handler",null);this.ensureDefault("file_dialog_start_handler",
null);this.ensureDefault("file_queued_handler",null);this.ensureDefault("file_queue_error_handler",null);this.ensureDefault("file_dialog_complete_handler",null);this.ensureDefault("upload_start_handler",null);this.ensureDefault("upload_progress_handler",null);this.ensureDefault("upload_error_handler",null);this.ensureDefault("upload_success_handler",null);this.ensureDefault("upload_complete_handler",null);this.ensureDefault("debug_handler",this.debugMessage);this.ensureDefault("custom_settings",{});
this.customSettings=this.settings.custom_settings;if(this.settings.prevent_swf_caching)this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+(new Date).getTime();if(!this.settings.preserve_relative_urls)this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url),this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url);delete this.ensureDefault},SWFUpload.prototype.loadFlash=function(){var b,d;
if(document.getElementById(this.movieName)!==null)throw"ID "+this.movieName+" is already in use. The Flash Object could not be added";b=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder;if(b==void 0)throw"Could not find the placeholder element: "+this.settings.button_placeholder_id;d=document.createElement("div");d.innerHTML=this.getFlashHTML();b.parentNode.replaceChild(d.firstChild,b);window[this.movieName]==void 0&&(window[this.movieName]=this.getMovieElement())},
SWFUpload.prototype.getFlashHTML=function(){var b="";KindEditor.IE&&KindEditor.V>8&&(b=' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"');return['<object id="',this.movieName,'"'+b+' type="application/x-shockwave-flash" data="',this.settings.flash_url,'" width="',this.settings.button_width,'" height="',this.settings.button_height,'" class="swfupload"><param name="wmode" value="',this.settings.button_window_mode,'" /><param name="movie" value="',this.settings.flash_url,'" /><param name="quality" value="high" /><param name="menu" value="false" /><param name="allowScriptAccess" value="always" />',
'<param name="flashvars" value="'+this.getFlashVars()+'" />',"</object>"].join("")},SWFUpload.prototype.getFlashVars=function(){var b=this.buildParamString(),d=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&amp;uploadURL=",encodeURIComponent(this.settings.upload_url),"&amp;useQueryString=",encodeURIComponent(this.settings.use_query_string),"&amp;requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&amp;httpSuccess=",encodeURIComponent(d),
"&amp;assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&amp;params=",encodeURIComponent(b),"&amp;filePostName=",encodeURIComponent(this.settings.file_post_name),"&amp;fileTypes=",encodeURIComponent(this.settings.file_types),"&amp;fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&amp;fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&amp;fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&amp;fileQueueLimit=",
encodeURIComponent(this.settings.file_queue_limit),"&amp;debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&amp;buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&amp;buttonWidth=",encodeURIComponent(this.settings.button_width),"&amp;buttonHeight=",encodeURIComponent(this.settings.button_height),"&amp;buttonText=",encodeURIComponent(this.settings.button_text),"&amp;buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&amp;buttonTextLeftPadding=",
encodeURIComponent(this.settings.button_text_left_padding),"&amp;buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&amp;buttonAction=",encodeURIComponent(this.settings.button_action),"&amp;buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&amp;buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("")},SWFUpload.prototype.getMovieElement=function(){if(this.movieElement==void 0)this.movieElement=document.getElementById(this.movieName);if(this.movieElement===
null)throw"Could not find Flash element";return this.movieElement},SWFUpload.prototype.buildParamString=function(){var b=this.settings.post_params,d=[];if(typeof b==="object")for(var g in b)b.hasOwnProperty(g)&&d.push(encodeURIComponent(g.toString())+"="+encodeURIComponent(b[g].toString()));return d.join("&amp;")},SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,!1);var b=null;if((b=this.getMovieElement())&&typeof b.CallFunction==="unknown"){for(var d in b)try{typeof b[d]==="function"&&
(b[d]=null)}catch(g){}try{b.parentNode.removeChild(b)}catch(l){}}window[this.movieName]=null;SWFUpload.instances[this.movieName]=null;delete SWFUpload.instances[this.movieName];this.movieName=this.eventQueue=this.customSettings=this.settings=this.movieElement=null;return!0}catch(e){return!1}},SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\nVersion: ",SWFUpload.version,"\nMovie Name: ",this.movieName,"\nSettings:\n\tupload_url:               ",this.settings.upload_url,
"\n\tflash_url:                ",this.settings.flash_url,"\n\tuse_query_string:         ",this.settings.use_query_string.toString(),"\n\trequeue_on_error:         ",this.settings.requeue_on_error.toString(),"\n\thttp_success:             ",this.settings.http_success.join(", "),"\n\tassume_success_timeout:   ",this.settings.assume_success_timeout,"\n\tfile_post_name:           ",this.settings.file_post_name,"\n\tpost_params:              ",this.settings.post_params.toString(),"\n\tfile_types:               ",
this.settings.file_types,"\n\tfile_types_description:   ",this.settings.file_types_description,"\n\tfile_size_limit:          ",this.settings.file_size_limit,"\n\tfile_upload_limit:        ",this.settings.file_upload_limit,"\n\tfile_queue_limit:         ",this.settings.file_queue_limit,"\n\tdebug:                    ",this.settings.debug.toString(),"\n\tprevent_swf_caching:      ",this.settings.prevent_swf_caching.toString(),"\n\tbutton_placeholder_id:    ",this.settings.button_placeholder_id.toString(),
"\n\tbutton_placeholder:       ",this.settings.button_placeholder?"Set":"Not Set","\n\tbutton_image_url:         ",this.settings.button_image_url.toString(),"\n\tbutton_width:             ",this.settings.button_width.toString(),"\n\tbutton_height:            ",this.settings.button_height.toString(),"\n\tbutton_text:              ",this.settings.button_text.toString(),"\n\tbutton_text_style:        ",this.settings.button_text_style.toString(),"\n\tbutton_text_top_padding:  ",this.settings.button_text_top_padding.toString(),
"\n\tbutton_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n\tbutton_action:            ",this.settings.button_action.toString(),"\n\tbutton_disabled:          ",this.settings.button_disabled.toString(),"\n\tcustom_settings:          ",this.settings.custom_settings.toString(),"\nEvent Handlers:\n\tswfupload_loaded_handler assigned:  ",(typeof this.settings.swfupload_loaded_handler==="function").toString(),"\n\tfile_dialog_start_handler assigned: ",(typeof this.settings.file_dialog_start_handler===
"function").toString(),"\n\tfile_queued_handler assigned:       ",(typeof this.settings.file_queued_handler==="function").toString(),"\n\tfile_queue_error_handler assigned:  ",(typeof this.settings.file_queue_error_handler==="function").toString(),"\n\tupload_start_handler assigned:      ",(typeof this.settings.upload_start_handler==="function").toString(),"\n\tupload_progress_handler assigned:   ",(typeof this.settings.upload_progress_handler==="function").toString(),"\n\tupload_error_handler assigned:      ",
(typeof this.settings.upload_error_handler==="function").toString(),"\n\tupload_success_handler assigned:    ",(typeof this.settings.upload_success_handler==="function").toString(),"\n\tupload_complete_handler assigned:   ",(typeof this.settings.upload_complete_handler==="function").toString(),"\n\tdebug_handler assigned:             ",(typeof this.settings.debug_handler==="function").toString(),"\n"].join(""))},SWFUpload.prototype.addSetting=function(b,d,g){return d==void 0?this.settings[b]=g:this.settings[b]=
d},SWFUpload.prototype.getSetting=function(b){if(this.settings[b]!=void 0)return this.settings[b];return""},SWFUpload.prototype.callFlash=function(b,d){var d=d||[],g=this.getMovieElement(),l,e;try{e=g.CallFunction('<invoke name="'+b+'" returntype="javascript">'+__flash__argumentsToXML(d,0)+"</invoke>"),l=eval(e)}catch(h){throw"Call to "+b+" failed";}l!=void 0&&typeof l.post==="object"&&(l=this.unescapeFilePostParams(l));return l},SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile")},
SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles")},SWFUpload.prototype.startUpload=function(b){this.callFlash("StartUpload",[b])},SWFUpload.prototype.cancelUpload=function(b,d){d!==!1&&(d=!0);this.callFlash("CancelUpload",[b,d])},SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload")},SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats")},SWFUpload.prototype.setStats=function(b){this.callFlash("SetStats",[b])},SWFUpload.prototype.getFile=
function(b){return typeof b==="number"?this.callFlash("GetFileByIndex",[b]):this.callFlash("GetFile",[b])},SWFUpload.prototype.addFileParam=function(b,d,g){return this.callFlash("AddFileParam",[b,d,g])},SWFUpload.prototype.removeFileParam=function(b,d){this.callFlash("RemoveFileParam",[b,d])},SWFUpload.prototype.setUploadURL=function(b){this.settings.upload_url=b.toString();this.callFlash("SetUploadURL",[b])},SWFUpload.prototype.setPostParams=function(b){this.settings.post_params=b;this.callFlash("SetPostParams",
[b])},SWFUpload.prototype.addPostParam=function(b,d){this.settings.post_params[b]=d;this.callFlash("SetPostParams",[this.settings.post_params])},SWFUpload.prototype.removePostParam=function(b){delete this.settings.post_params[b];this.callFlash("SetPostParams",[this.settings.post_params])},SWFUpload.prototype.setFileTypes=function(b,d){this.settings.file_types=b;this.settings.file_types_description=d;this.callFlash("SetFileTypes",[b,d])},SWFUpload.prototype.setFileSizeLimit=function(b){this.settings.file_size_limit=
b;this.callFlash("SetFileSizeLimit",[b])},SWFUpload.prototype.setFileUploadLimit=function(b){this.settings.file_upload_limit=b;this.callFlash("SetFileUploadLimit",[b])},SWFUpload.prototype.setFileQueueLimit=function(b){this.settings.file_queue_limit=b;this.callFlash("SetFileQueueLimit",[b])},SWFUpload.prototype.setFilePostName=function(b){this.settings.file_post_name=b;this.callFlash("SetFilePostName",[b])},SWFUpload.prototype.setUseQueryString=function(b){this.settings.use_query_string=b;this.callFlash("SetUseQueryString",
[b])},SWFUpload.prototype.setRequeueOnError=function(b){this.settings.requeue_on_error=b;this.callFlash("SetRequeueOnError",[b])},SWFUpload.prototype.setHTTPSuccess=function(b){typeof b==="string"&&(b=b.replace(" ","").split(","));this.settings.http_success=b;this.callFlash("SetHTTPSuccess",[b])},SWFUpload.prototype.setAssumeSuccessTimeout=function(b){this.settings.assume_success_timeout=b;this.callFlash("SetAssumeSuccessTimeout",[b])},SWFUpload.prototype.setDebugEnabled=function(b){this.settings.debug_enabled=
b;this.callFlash("SetDebugEnabled",[b])},SWFUpload.prototype.setButtonImageURL=function(b){b==void 0&&(b="");this.settings.button_image_url=b;this.callFlash("SetButtonImageURL",[b])},SWFUpload.prototype.setButtonDimensions=function(b,d){this.settings.button_width=b;this.settings.button_height=d;var g=this.getMovieElement();if(g!=void 0)g.style.width=b+"px",g.style.height=d+"px";this.callFlash("SetButtonDimensions",[b,d])},SWFUpload.prototype.setButtonText=function(b){this.settings.button_text=b;this.callFlash("SetButtonText",
[b])},SWFUpload.prototype.setButtonTextPadding=function(b,d){this.settings.button_text_top_padding=d;this.settings.button_text_left_padding=b;this.callFlash("SetButtonTextPadding",[b,d])},SWFUpload.prototype.setButtonTextStyle=function(b){this.settings.button_text_style=b;this.callFlash("SetButtonTextStyle",[b])},SWFUpload.prototype.setButtonDisabled=function(b){this.settings.button_disabled=b;this.callFlash("SetButtonDisabled",[b])},SWFUpload.prototype.setButtonAction=function(b){this.settings.button_action=
b;this.callFlash("SetButtonAction",[b])},SWFUpload.prototype.setButtonCursor=function(b){this.settings.button_cursor=b;this.callFlash("SetButtonCursor",[b])},SWFUpload.prototype.queueEvent=function(b,d){d==void 0?d=[]:d instanceof Array||(d=[d]);var g=this;if(typeof this.settings[b]==="function")this.eventQueue.push(function(){this.settings[b].apply(this,d)}),setTimeout(function(){g.executeNextEvent()},0);else if(this.settings[b]!==null)throw"Event handler "+b+" is unknown or is not a function";},
SWFUpload.prototype.executeNextEvent=function(){var b=this.eventQueue?this.eventQueue.shift():null;typeof b==="function"&&b.apply(this)},SWFUpload.prototype.unescapeFilePostParams=function(b){var d=/[$]([0-9a-f]{4})/i,g={},l;if(b!=void 0){for(var e in b.post)if(b.post.hasOwnProperty(e)){l=e;for(var h;(h=d.exec(l))!==null;)l=l.replace(h[0],String.fromCharCode(parseInt("0x"+h[1],16)));g[l]=b.post[e]}b.post=g}return b},SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(b){return!1}},
SWFUpload.prototype.flashReady=function(){var b=this.getMovieElement();b?(this.cleanUp(b),this.queueEvent("swfupload_loaded_handler")):this.debug("Flash called back ready but the flash movie can't be found.")},SWFUpload.prototype.cleanUp=function(b){try{if(this.movieElement&&typeof b.CallFunction==="unknown"){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var d in b)try{typeof b[d]==="function"&&(b[d]=null)}catch(g){}}}catch(l){}window.__flash__removeCallback=
function(b,d){try{b&&(b[d]=null)}catch(g){}}},SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")},SWFUpload.prototype.fileQueued=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("file_queued_handler",b)},SWFUpload.prototype.fileQueueError=function(b,d,g){b=this.unescapeFilePostParams(b);this.queueEvent("file_queue_error_handler",[b,d,g])},SWFUpload.prototype.fileDialogComplete=function(b,d,g){this.queueEvent("file_dialog_complete_handler",[b,d,
g])},SWFUpload.prototype.uploadStart=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("return_upload_start_handler",b)},SWFUpload.prototype.returnUploadStart=function(b){var d;if(typeof this.settings.upload_start_handler==="function")b=this.unescapeFilePostParams(b),d=this.settings.upload_start_handler.call(this,b);else if(this.settings.upload_start_handler!=void 0)throw"upload_start_handler must be a function";d===void 0&&(d=!0);this.callFlash("ReturnUploadStart",[!!d])},SWFUpload.prototype.uploadProgress=
function(b,d,g){b=this.unescapeFilePostParams(b);this.queueEvent("upload_progress_handler",[b,d,g])},SWFUpload.prototype.uploadError=function(b,d,g){b=this.unescapeFilePostParams(b);this.queueEvent("upload_error_handler",[b,d,g])},SWFUpload.prototype.uploadSuccess=function(b,d,g){b=this.unescapeFilePostParams(b);this.queueEvent("upload_success_handler",[b,d,g])},SWFUpload.prototype.uploadComplete=function(b){b=this.unescapeFilePostParams(b);this.queueEvent("upload_complete_handler",b)},SWFUpload.prototype.debug=
function(b){this.queueEvent("debug_handler",b)},SWFUpload.prototype.debugMessage=function(b){if(this.settings.debug){var d=[];if(typeof b==="object"&&typeof b.name==="string"&&typeof b.message==="string"){for(var g in b)b.hasOwnProperty(g)&&d.push(g+": "+b[g]);b=d.join("\n")||"";d=b.split("\n");b="EXCEPTION: "+d.join("\nEXCEPTION: ")}SWFUpload.Console.writeLine(b)}},SWFUpload.Console={},SWFUpload.Console.writeLine=function(b){var d,g;try{d=document.getElementById("SWFUpload_Console");if(!d)g=document.createElement("form"),
document.getElementsByTagName("body")[0].appendChild(g),d=document.createElement("textarea"),d.id="SWFUpload_Console",d.style.fontFamily="monospace",d.setAttribute("wrap","off"),d.wrap="off",d.style.overflow="auto",d.style.width="700px",d.style.height="350px",d.style.margin="5px",g.appendChild(d);d.value+=b+"\n";d.scrollTop=d.scrollHeight-d.clientHeight}catch(l){alert("Exception: "+l.name+" Message: "+l.message)}}})();
(function(){if(typeof SWFUpload==="function")SWFUpload.queue={},SWFUpload.prototype.initSettings=function(b){return function(){typeof b==="function"&&b.call(this);this.queueSettings={};this.queueSettings.queue_cancelled_flag=!1;this.queueSettings.queue_upload_count=0;this.queueSettings.user_upload_complete_handler=this.settings.upload_complete_handler;this.queueSettings.user_upload_start_handler=this.settings.upload_start_handler;this.settings.upload_complete_handler=SWFUpload.queue.uploadCompleteHandler;
this.settings.upload_start_handler=SWFUpload.queue.uploadStartHandler;this.settings.queue_complete_handler=this.settings.queue_complete_handler||null}}(SWFUpload.prototype.initSettings),SWFUpload.prototype.startUpload=function(b){this.queueSettings.queue_cancelled_flag=!1;this.callFlash("StartUpload",[b])},SWFUpload.prototype.cancelQueue=function(){this.queueSettings.queue_cancelled_flag=!0;this.stopUpload();for(var b=this.getStats();b.files_queued>0;)this.cancelUpload(),b=this.getStats()},SWFUpload.queue.uploadStartHandler=
function(b){var d;typeof this.queueSettings.user_upload_start_handler==="function"&&(d=this.queueSettings.user_upload_start_handler.call(this,b));d=d===!1?!1:!0;this.queueSettings.queue_cancelled_flag=!d;return d},SWFUpload.queue.uploadCompleteHandler=function(b){var d=this.queueSettings.user_upload_complete_handler;b.filestatus===SWFUpload.FILE_STATUS.COMPLETE&&this.queueSettings.queue_upload_count++;if(typeof d==="function"?d.call(this,b)!==!1:b.filestatus!==SWFUpload.FILE_STATUS.QUEUED)this.getStats().files_queued>
0&&this.queueSettings.queue_cancelled_flag===!1?this.startUpload():(this.queueSettings.queue_cancelled_flag===!1?this.queueEvent("queue_complete_handler",[this.queueSettings.queue_upload_count]):this.queueSettings.queue_cancelled_flag=!1,this.queueSettings.queue_upload_count=0)}})();
KindEditor.plugin("pagebreak",function(b){var d=this,g=b.undef(d.pagebreakHtml,'<hr style="page-break-after: always;" class="ke-pagebreak" />');d.clickToolbar("pagebreak",function(){var l=d.cmd,e=l.range;d.focus();e.enlarge(!0);l.split(!0);var h=d.newlineTag=="br"||b.WEBKIT?"":'<p id="__kindeditor_tail_tag__"></p>';d.insertHtml(g+h);h!==""&&(h=b("#__kindeditor_tail_tag__",d.edit.doc),e.selectNodeContents(h[0]),h.removeAttr("id"),l.select())})});
KindEditor.plugin("plainpaste",function(b){var d=this;d.clickToolbar("plainpaste",function(){var g='<div style="padding:10px 20px;"><div style="margin-bottom:10px;">'+d.lang("plainpaste.").comment+'</div><textarea class="ke-textarea" style="width:408px;height:260px;"></textarea></div>',g=d.createDialog({name:"plainpaste",width:450,title:d.lang("plainpaste"),body:g,yesBtn:{name:d.lang("yes"),click:function(){var e=l.val(),e=b.escape(e),e=e.replace(/ {2}/g," &nbsp;"),e=d.newlineTag=="p"?e.replace(/^/,
"<p>").replace(/$/,"</p>").replace(/\n/g,"</p><p>"):e.replace(/\n/g,"<br />$&");d.insertHtml(e).hideDialog().focus()}}}),l=b("textarea",g.div);l[0].focus()})});
KindEditor.plugin("preview",function(b){var d=this;d.clickToolbar("preview",function(){d.lang("preview.");var g=d.createDialog({name:"preview",width:750,title:d.lang("preview"),body:'<div style="padding:10px 20px;"><iframe class="ke-textarea" frameborder="0" style="width:708px;height:400px;"></iframe></div>'}),g=b("iframe",g.div),l=b.iframeDoc(g);l.open();l.write(d.fullHtml());l.close();b(l.body).css("background-color","#FFF");g[0].contentWindow.focus()})});
KindEditor.plugin("quickformat",function(b){function d(b){for(b=b.first();b&&b.first();)b=b.first();return b}var g=this,l=b.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");g.clickToolbar("quickformat",function(){g.focus();for(var e=g.edit.doc,h=g.cmd.range,m=b(e.body).first(),n,j=[],o=[],s=h.createBookmark(!0);m;){n=m.next();var t=d(m);if(!t||t.name!="img")if(l[m.name]?(m.html(m.html().replace(/^(\s|&nbsp;|\u3000)+/ig,"")),m.css("text-indent","2em")):o.push(m),!n||l[n.name]||l[m.name]&&!l[n.name])o.length>
0&&j.push(o),o=[];m=n}b.each(j,function(d,g){var h=b('<p style="text-indent:2em;"></p>',e);g[0].before(h);b.each(g,function(b,d){h.append(d)})});h.moveToBookmark(s);g.addBookmark()})});
KindEditor.plugin("table",function(b){function d(b,d){d=d.toUpperCase();b.css("background-color",d);b.css("color",d==="#000000"?"#FFFFFF":"#000000");b.html(d)}function g(g,h){function o(){b.each(m,function(){this.remove()});m=[];b(document).unbind("click,mousedown",o);g.unbind("click,mousedown",o)}h.bind("click,mousedown",function(b){b.stopPropagation()});h.click(function(){o();var h=b(this),j=h.pos(),j=b.colorpicker({x:j.x,y:j.y+h.height(),z:811214,selectedColor:b(this).html(),colors:e.colorTable,
noColor:e.lang("noColor"),shadowMode:e.shadowMode,click:function(b){d(h,b);o()}});m.push(j);b(document).bind("click,mousedown",o);g.bind("click,mousedown",o)})}function l(b,d,e){for(var g=b=0,h=d.cells.length;g<h;g++){if(d.cells[g]==e)break;b+=d.cells[g].rowSpan-1}return e.cellIndex-b}var e=this,h=e.lang("table."),m=[];e.plugin.table={prop:function(n){var j=['<div style="padding:20px;"><div class="ke-dialog-row">','<label for="keRows" style="width:90px;">'+h.cells+"</label>",h.rows+' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> &nbsp; ',
h.cols+' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />','</div><div class="ke-dialog-row">','<label for="keWidth" style="width:90px;">'+h.size+"</label>",h.width+' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> &nbsp; ','<select name="widthType">','<option value="%">'+h.percent+"</option>",'<option value="px">'+h.px+"</option>","</select> &nbsp; ",h.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> &nbsp; ',
'<select name="heightType">','<option value="%">'+h.percent+"</option>",'<option value="px">'+h.px+"</option>",'</select></div><div class="ke-dialog-row">','<label for="kePadding" style="width:90px;">'+h.space+"</label>",h.padding+' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> &nbsp; ',h.spacing+' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />','</div><div class="ke-dialog-row">',
'<label for="keAlign" style="width:90px;">'+h.align+"</label>",'<select id="keAlign" name="align">','<option value="">'+h.alignDefault+"</option>",'<option value="left">'+h.alignLeft+"</option>",'<option value="center">'+h.alignCenter+"</option>",'<option value="right">'+h.alignRight+"</option>",'</select></div><div class="ke-dialog-row">','<label for="keBorder" style="width:90px;">'+h.border+"</label>",h.borderWidth+' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> &nbsp; ',
h.borderColor+' <span class="ke-inline-block ke-input-color"></span>','</div><div class="ke-dialog-row">','<label for="keBgColor" style="width:90px;">'+h.backgroundColor+"</label>",'<span class="ke-inline-block ke-input-color"></span></div></div>'].join(""),j=e.createDialog({name:"table",width:500,title:e.lang("table"),body:j,beforeRemove:function(){H.unbind()},yesBtn:{name:e.lang("yes"),click:function(){var d=o.val(),g=l.val(),h=m.val(),j=p.val(),n=q.val(),E=z.val(),G=D.val(),S=r.val(),Y=A.val(),
M=w.val(),J=b(H[0]).html()||"",W=b(H[1]).html()||"";if(d==0||!/^\d+$/.test(d))alert(e.lang("invalidRows")),o[0].focus();else if(g==0||!/^\d+$/.test(g))alert(e.lang("invalidRows")),l[0].focus();else if(/^\d*$/.test(h))if(/^\d*$/.test(j))if(/^\d*$/.test(G))if(/^\d*$/.test(S))if(/^\d*$/.test(M))if(v)h!==""?v.width(h+n):v.css("width",""),v[0].width!==void 0&&v.removeAttr("width"),j!==""?v.height(j+E):v.css("height",""),v[0].height!==void 0&&v.removeAttr("height"),v.css("background-color",W),v[0].bgColor!==
void 0&&v.removeAttr("bgColor"),G!==""?v[0].cellPadding=G:v.removeAttr("cellPadding"),S!==""?v[0].cellSpacing=S:v.removeAttr("cellSpacing"),Y!==""?v[0].align=Y:v.removeAttr("align"),M!==""?v.attr("border",M):v.removeAttr("border"),M===""||M==="0"?v.addClass("ke-zeroborder"):v.removeClass("ke-zeroborder"),J!==""?v.attr("borderColor",J):v.removeAttr("borderColor"),e.hideDialog().focus();else{var T="";h!==""&&(T+="width:"+h+n+";");j!==""&&(T+="height:"+j+E+";");W!==""&&(T+="background-color:"+W+";");
h="<table";T!==""&&(h+=' style="'+T+'"');G!==""&&(h+=' cellpadding="'+G+'"');S!==""&&(h+=' cellspacing="'+S+'"');Y!==""&&(h+=' align="'+Y+'"');M!==""&&(h+=' border="'+M+'"');if(M===""||M==="0")h+=' class="ke-zeroborder"';J!==""&&(h+=' bordercolor="'+J+'"');h+=">";for(G=0;G<d;G++){h+="<tr>";for(S=0;S<g;S++)h+="<td>"+(b.IE?"&nbsp;":"<br />")+"</td>";h+="</tr>"}h+="</table>";b.IE||(h+="<br />");e.insertHtml(h);e.select().hideDialog().focus();e.addBookmark()}else alert(e.lang("invalidBorder")),w[0].focus();
else alert(e.lang("invalidSpacing")),r[0].focus();else alert(e.lang("invalidPadding")),D[0].focus();else alert(e.lang("invalidHeight")),p[0].focus();else alert(e.lang("invalidWidth")),m[0].focus()}}}).div,o=b('[name="rows"]',j).val(3),l=b('[name="cols"]',j).val(2),m=b('[name="width"]',j).val(100),p=b('[name="height"]',j),q=b('[name="widthType"]',j),z=b('[name="heightType"]',j),D=b('[name="padding"]',j).val(2),r=b('[name="spacing"]',j).val(0),A=b('[name="align"]',j),w=b('[name="border"]',j).val(1),
H=b(".ke-input-color",j);g(j,H.eq(0));g(j,H.eq(1));d(H.eq(0),"#000000");d(H.eq(1),"");o[0].focus();o[0].select();var v;if(!n&&(v=e.plugin.getSelectedTable())){o.val(v[0].rows.length);l.val(v[0].rows.length>0?v[0].rows[0].cells.length:0);o.attr("disabled",!0);l.attr("disabled",!0);var E,n=v[0].style.width||v[0].width,j=v[0].style.height||v[0].height;n!==void 0&&(E=/^(\d+)((?:px|%)*)$/.exec(n))?(m.val(E[1]),q.val(E[2])):m.val("");if(j!==void 0&&(E=/^(\d+)((?:px|%)*)$/.exec(j)))p.val(E[1]),z.val(E[2]);
D.val(v[0].cellPadding||"");r.val(v[0].cellSpacing||"");A.val(v[0].align||"");w.val(v[0].border===void 0?"":v[0].border);d(H.eq(0),b.toHex(v.attr("borderColor")||""));d(H.eq(1),b.toHex(v[0].style.backgroundColor||v[0].bgColor||""));m[0].focus();m[0].select()}},cellprop:function(){var n=['<div style="padding:20px;"><div class="ke-dialog-row">','<label for="keWidth" style="width:90px;">'+h.size+"</label>",h.width+' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> &nbsp; ',
'<select name="widthType">','<option value="%">'+h.percent+"</option>",'<option value="px">'+h.px+"</option>","</select> &nbsp; ",h.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> &nbsp; ','<select name="heightType">','<option value="%">'+h.percent+"</option>",'<option value="px">'+h.px+"</option>",'</select></div><div class="ke-dialog-row">','<label for="keAlign" style="width:90px;">'+h.align+"</label>",h.textAlign+' <select id="keAlign" name="textAlign">',
'<option value="">'+h.alignDefault+"</option>",'<option value="left">'+h.alignLeft+"</option>",'<option value="center">'+h.alignCenter+"</option>",'<option value="right">'+h.alignRight+"</option>","</select> ",h.verticalAlign+' <select name="verticalAlign">','<option value="">'+h.alignDefault+"</option>",'<option value="top">'+h.alignTop+"</option>",'<option value="middle">'+h.alignMiddle+"</option>",'<option value="bottom">'+h.alignBottom+"</option>",'<option value="baseline">'+h.alignBaseline+"</option>",
'</select></div><div class="ke-dialog-row">','<label for="keBorder" style="width:90px;">'+h.border+"</label>",h.borderWidth+' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> &nbsp; ',h.borderColor+' <span class="ke-inline-block ke-input-color"></span>','</div><div class="ke-dialog-row">','<label for="keBgColor" style="width:90px;">'+h.backgroundColor+"</label>",'<span class="ke-inline-block ke-input-color"></span></div></div>'].join(""),
n=e.createDialog({name:"table",width:500,title:e.lang("tablecell"),body:n,beforeRemove:function(){A.unbind()},yesBtn:{name:e.lang("yes"),click:function(){var d=j.val(),g=o.val(),h=l.val(),n=m.val();p.val();q.val();var H=z.val(),ea=D.val(),V=r.val(),Q=b(A[0]).html()||"",G=b(A[1]).html()||"";/^\d*$/.test(d)?/^\d*$/.test(g)?/^\d*$/.test(V)?(w.css({width:d!==""?d+h:"",height:g!==""?g+n:"","background-color":G,"text-align":H,"vertical-align":ea,"border-width":V,"border-style":V!==""?"solid":"","border-color":Q}),
e.hideDialog().focus(),e.addBookmark()):(alert(e.lang("invalidBorder")),r[0].focus()):(alert(e.lang("invalidHeight")),o[0].focus()):(alert(e.lang("invalidWidth")),j[0].focus())}}}).div,j=b('[name="width"]',n).val(100),o=b('[name="height"]',n),l=b('[name="widthType"]',n),m=b('[name="heightType"]',n),p=b('[name="padding"]',n).val(2),q=b('[name="spacing"]',n).val(0),z=b('[name="textAlign"]',n),D=b('[name="verticalAlign"]',n),r=b('[name="border"]',n).val(1),A=b(".ke-input-color",n);g(n,A.eq(0));g(n,A.eq(1));
d(A.eq(0),"#000000");d(A.eq(1),"");j[0].focus();j[0].select();var w=e.plugin.getSelectedCell(),H=w[0].style.height||w[0].height||"";(n=/^(\d+)((?:px|%)*)$/.exec(w[0].style.width||w[0].width||""))?(j.val(n[1]),l.val(n[2])):j.val("");if(n=/^(\d+)((?:px|%)*)$/.exec(H))o.val(n[1]),m.val(n[2]);z.val(w[0].style.textAlign||"");D.val(w[0].style.verticalAlign||"");(n=w[0].style.borderWidth||"")&&(n=parseInt(n));r.val(n);d(A.eq(0),b.toHex(w[0].style.borderColor||""));d(A.eq(1),b.toHex(w[0].style.backgroundColor||
""));j[0].focus();j[0].select()},insert:function(){this.prop(!0)},"delete":function(){var b=e.plugin.getSelectedTable();e.cmd.range.setStartBefore(b[0]).collapse(!0);e.cmd.select();b.remove();e.addBookmark()},colinsert:function(d){var g=e.plugin.getSelectedTable()[0],h=e.plugin.getSelectedRow()[0],m=e.plugin.getSelectedCell()[0],d=m.cellIndex+d;d+=g.rows[0].cells.length-h.cells.length;for(var h=0,t=g.rows.length;h<t;h++){var p=g.rows[h],d=p.insertCell(d);d.innerHTML=b.IE?"":"<br />";d=l(g,p,d)}e.cmd.range.selectNodeContents(m).collapse(!0);
e.cmd.select();e.addBookmark()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(d){var g=e.plugin.getSelectedTable()[0],h=e.plugin.getSelectedRow()[0],l=e.plugin.getSelectedCell()[0],m=h.rowIndex;d===1&&(m=h.rowIndex+(l.rowSpan-1)+d);for(var p=g.insertRow(m),q=0,z=h.cells.length;q<z;q++){h.cells[q].rowSpan>1&&(z-=h.cells[q].rowSpan-1);var D=p.insertCell(q);if(d===1&&h.cells[q].colSpan>1)D.colSpan=h.cells[q].colSpan;D.innerHTML=b.IE?"":"<br />"}for(h=
m;h>=0;h--)if(d=g.rows[h].cells,d.length>q){for(g=l.cellIndex;g>=0;g--)d[g].rowSpan>1&&(d[g].rowSpan+=1);break}e.cmd.range.selectNodeContents(l).collapse(!0);e.cmd.select();e.addBookmark()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1)},rowmerge:function(){var b=e.plugin.getSelectedTable()[0],d=e.plugin.getSelectedRow()[0],g=e.plugin.getSelectedCell()[0],h=d.rowIndex+g.rowSpan,d=b.rows[h];if(!(b.rows.length<=h))b=g.cellIndex,d.cells.length<=b||(h=d.cells[b],
g.colSpan===h.colSpan&&(g.rowSpan+=h.rowSpan,d.deleteCell(b),e.cmd.range.selectNodeContents(g).collapse(!0),e.cmd.select(),e.addBookmark()))},colmerge:function(){e.plugin.getSelectedTable();var b=e.plugin.getSelectedRow()[0],d=e.plugin.getSelectedCell()[0],g=d.cellIndex+1;if(!(b.cells.length<=g)){var h=b.cells[g];d.rowSpan===h.rowSpan&&(d.colSpan+=h.colSpan,b.deleteCell(g),e.cmd.range.selectNodeContents(d).collapse(!0),e.cmd.select(),e.addBookmark())}},rowsplit:function(){var d=e.plugin.getSelectedTable()[0],
g=e.plugin.getSelectedRow()[0],h=e.plugin.getSelectedCell()[0],m=g.rowIndex;if(h.rowSpan!==1){for(var t=l(d,g,h),g=1,p=h.rowSpan;g<p;g++){var q=d.rows[m+g],t=q.insertCell(t);if(h.colSpan>1)t.colSpan=h.colSpan;t.innerHTML=b.IE?"":"<br />";t=l(d,q,t)}b(h).removeAttr("rowSpan");e.cmd.range.selectNodeContents(h).collapse(!0);e.cmd.select();e.addBookmark()}},colsplit:function(){e.plugin.getSelectedTable();var d=e.plugin.getSelectedRow()[0],g=e.plugin.getSelectedCell()[0],h=g.cellIndex;if(g.colSpan!==1){for(var l=
1,m=g.colSpan;l<m;l++){var p=d.insertCell(h+l);if(g.rowSpan>1)p.rowSpan=g.rowSpan;p.innerHTML=b.IE?"":"<br />"}b(g).removeAttr("colSpan");e.cmd.range.selectNodeContents(g).collapse(!0);e.cmd.select();e.addBookmark()}},coldelete:function(){for(var d=e.plugin.getSelectedTable()[0],g=e.plugin.getSelectedRow()[0],h=e.plugin.getSelectedCell()[0].cellIndex,l=0,m=d.rows.length;l<m;l++){var p=d.rows[l],q=p.cells[h];q.colSpan>1?(q.colSpan-=1,q.colSpan===1&&b(q).removeAttr("colSpan")):p.deleteCell(h);q.rowSpan>
1&&(l+=q.rowSpan-1)}g.cells.length===0?(e.cmd.range.setStartBefore(d).collapse(!0),e.cmd.select(),b(d).remove()):e.cmd.selection(!0);e.addBookmark()},rowdelete:function(){for(var d=e.plugin.getSelectedTable()[0],g=e.plugin.getSelectedRow()[0],h=e.plugin.getSelectedCell()[0],g=g.rowIndex,h=h.rowSpan-1;h>=0;h--)d.deleteRow(g+h);d.rows.length===0?(e.cmd.range.setStartBefore(d).collapse(!0),e.cmd.select(),b(d).remove()):e.cmd.selection(!0);e.addBookmark()}};e.clickToolbar("table",e.plugin.table.prop)});
KindEditor.plugin("template",function(b){function d(d){return l+d+"?ver="+encodeURIComponent(b.DEBUG?b.TIME:b.VERSION)}var g=this;g.lang("template.");var l=g.pluginsPath+"template/html/";g.clickToolbar("template",function(){var e=g.lang("template."),h=['<div style="padding:10px 20px;">','<div class="ke-header">','<div class="ke-left">',e.selectTemplate+" <select>"];b.each(e.fileList,function(b,d){h.push('<option value="'+b+'">'+d+"</option>")});html=[h.join(""),'</select></div><div class="ke-right">',
'<input type="checkbox" id="keReplaceFlag" name="replaceFlag" value="1" /> <label for="keReplaceFlag">'+e.replaceContent+"</label>",'</div><div class="ke-clearfix"></div></div><iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe></div>'].join("");var e=g.createDialog({name:"template",width:500,title:g.lang("template"),body:html,yesBtn:{name:g.lang("yes"),click:function(){var d=b.iframeDoc(j);g[n[0].checked?"html":"insertHtml"](d.body.innerHTML).hideDialog().focus()}}}),
l=b("select",e.div),n=b('[name="replaceFlag"]',e.div),j=b("iframe",e.div);n[0].checked=!0;j.attr("src",d(l.val()));l.change(function(){j.attr("src",d(this.value))})})});
KindEditor.plugin("wordpaste",function(b){var d=this;d.clickToolbar("wordpaste",function(){var g='<div style="padding:10px 20px;"><div style="margin-bottom:10px;">'+d.lang("wordpaste.").comment+'</div><iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe></div>',g=d.createDialog({name:"wordpaste",width:450,title:d.lang("wordpaste"),body:g,yesBtn:{name:d.lang("yes"),click:function(){var e=l.body.innerHTML,e=b.clearMsWord(e,d.filterMode?d.htmlTags:b.options.htmlTags);
d.insertHtml(e).hideDialog().focus()}}}).div,g=b("iframe",g),l=b.iframeDoc(g);if(!b.IE)l.designMode="on";l.open();l.write("<!doctype html><html><head><title>WordPaste</title></head>");l.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">');b.IE||l.write("<br />");l.write("</body></html>");l.close();if(b.IE)l.body.contentEditable="true";g[0].contentWindow.focus()})});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/kindeditor-all.js
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/kindeditor-min.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,181 @@
/* KindEditor 4.1.7 (2013-04-21), Copyright (C) kindsoft.net, Licence: http://www.kindsoft.net/license.php */(function(A,o){function Y(a){if(!a)return!1;return Object.prototype.toString.call(a)==="[object Array]"}function bb(a){if(!a)return!1;return Object.prototype.toString.call(a)==="[object Function]"}function N(a,b){for(var c=0,d=b.length;c<d;c++)if(a===b[c])return c;return-1}function m(a,b){if(Y(a))for(var c=0,d=a.length;c<d;c++){if(b.call(a[c],c,a[c])===!1)break}else for(c in a)if(a.hasOwnProperty(c)&&b.call(a[c],c,a[c])===!1)break}function B(a){return a.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,
"")}function ua(a,b,c){c=c===o?",":c;return(c+b+c).indexOf(c+a+c)>=0}function s(a,b){b=b||"px";return a&&/^\d+$/.test(a)?a+b:a}function t(a){var b;return a&&(b=/(\d+)/.exec(a))?parseInt(b[1],10):0}function C(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function fa(a){return a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&amp;/g,"&")}function ga(a){var b=a.split("-"),a="";m(b,function(b,d){a+=b>0?d.charAt(0).toUpperCase()+
d.substr(1):d});return a}function va(a){function b(a){a=parseInt(a,10).toString(16).toUpperCase();return a.length>1?a:"0"+a}return a.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig,function(a,d,e,g){return"#"+b(d)+b(e)+b(g)})}function u(a,b){var b=b===o?",":b,c={},d=Y(a)?a:a.split(b),e;m(d,function(a,b){if(e=/^(\d+)\.\.(\d+)$/.exec(b))for(var d=parseInt(e[1],10);d<=parseInt(e[2],10);d++)c[d.toString()]=!0;else c[b]=!0});return c}function Fa(a,b){return Array.prototype.slice.call(a,b||0)}
function j(a,b){return a===o?b:a}function E(a,b,c){c||(c=b,b=null);var d;if(b){var e=function(){};e.prototype=b.prototype;d=new e;m(c,function(a,b){d[a]=b})}else d=c;d.constructor=a;a.prototype=d;a.parent=b?b.prototype:null}function cb(a){var b;if(b=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(a))a=b[0];b=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;b.lastIndex=0;b.test(a)&&(a=a.replace(b,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));
if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return eval("("+a+")");throw"JSON parse error";}function Pb(a,b,c){a.addEventListener?a.addEventListener(b,c,db):a.attachEvent&&a.attachEvent("on"+b,c)}function wa(a,b,c){a.removeEventListener?a.removeEventListener(b,c,db):a.detachEvent&&a.detachEvent("on"+b,c)}function eb(a,b){this.init(a,b)}function fb(a){try{delete a[Z]}catch(b){a.removeAttribute&&
a.removeAttribute(Z)}}function $(a,b,c){if(b.indexOf(",")>=0)m(b.split(","),function(){$(a,this,c)});else{var d=a[Z]||null;d||(a[Z]=++gb,d=gb);v[d]===o&&(v[d]={});var e=v[d][b];e&&e.length>0?wa(a,b,e[0]):(v[d][b]=[],v[d].el=a);e=v[d][b];e.length===0&&(e[0]=function(b){var c=b?new eb(a,b):o;m(e,function(b,d){b>0&&d&&d.call(a,c)})});N(c,e)<0&&e.push(c);Pb(a,b,e[0])}}function ha(a,b,c){if(b&&b.indexOf(",")>=0)m(b.split(","),function(){ha(a,this,c)});else{var d=a[Z]||null;if(d)if(b===o)d in v&&(m(v[d],
function(b,c){b!="el"&&c.length>0&&wa(a,b,c[0])}),delete v[d],fb(a));else if(v[d]){var e=v[d][b];if(e&&e.length>0){c===o?(wa(a,b,e[0]),delete v[d][b]):(m(e,function(a,b){a>0&&b===c&&e.splice(a,1)}),e.length==1&&(wa(a,b,e[0]),delete v[d][b]));var g=0;m(v[d],function(){g++});g<2&&(delete v[d],fb(a))}}}}function hb(a,b){if(b.indexOf(",")>=0)m(b.split(","),function(){hb(a,this)});else{var c=a[Z]||null;if(c){var d=v[c][b];if(v[c]&&d&&d.length>0)d[0]()}}}function Ga(a,b,c){b=/^\d{2,}$/.test(b)?b:b.toUpperCase().charCodeAt(0);
$(a,"keydown",function(d){d.ctrlKey&&d.which==b&&!d.shiftKey&&!d.altKey&&(c.call(a),d.stop())})}function aa(a){for(var b={},c=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g,d;d=c.exec(a);){var e=B(d[1].toLowerCase());d=B(va(d[2]));b[e]=d}return b}function H(a){for(var b={},c=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g,d;d=c.exec(a);){var e=(d[1]||d[2]||d[4]||d[6]).toLowerCase();b[e]=(d[2]?d[3]:d[4]?d[5]:d[7])||""}return b}function Qb(a,b){return a=
/\s+class\s*=/.test(a)?a.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function(a,d,e,g){return(" "+e+" ").indexOf(" "+b+" ")<0?e===""?d+b+g:d+e+" "+b+g:a}):a.substr(0,a.length-1)+' class="'+b+'">'}function Rb(a){var b="";m(aa(a),function(a,d){b+=a+":"+d+";"});return b}function ia(a,b,c,d){function e(a){for(var a=a.split("/"),b=[],c=0,d=a.length;c<d;c++){var e=a[c];e==".."?b.length>0&&b.pop():e!==""&&e!="."&&b.push(e)}return"/"+b.join("/")}function g(b,c){if(a.substr(0,b.length)===b){for(var e=[],
h=0;h<c;h++)e.push("..");h=".";e.length>0&&(h+="/"+e.join("/"));d=="/"&&(h+="/");return h+a.substr(b.length)}else if(f=/^(.*)\//.exec(b))return g(f[1],++c)}b=j(b,"").toLowerCase();a.substr(0,5)!="data:"&&(a=a.replace(/([^:])\/\//g,"$1/"));if(N(b,["absolute","relative","domain"])<0)return a;c=c||location.protocol+"//"+location.host;if(d===o)var h=location.pathname.match(/^(\/.*)\//),d=h?h[1]:"";var f;if(f=/^(\w+:\/\/[^\/]*)/.exec(a)){if(f[1]!==c)return a}else if(/^\w+:/.test(a))return a;/^\//.test(a)?
a=c+e(a.substr(1)):/^\w+:\/\//.test(a)||(a=c+e(d+"/"+a));b==="relative"?a=g(c+d,0).substr(2):b==="absolute"&&a.substr(0,c.length)===c&&(a=a.substr(c.length));return a}function S(a,b,c,d,e){var c=c||"",d=j(d,!1),e=j(e,"\t"),g="xx-small,x-small,small,medium,large,x-large,xx-large".split(","),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function(a,b,c,d){return b+c.replace(/<(?:br|br\s[^>]*)>/ig,"\n")+d}),a=a.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig,"</p>"),a=a.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig,
"$1<br />$2"),a=a.replace(/\u200B/g,""),a=a.replace(/\u00A9/g,"&copy;"),h={};b&&(m(b,function(a,b){for(var c=a.split(","),d=0,e=c.length;d<e;d++)h[c[d]]=u(b)}),h.script||(a=a.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/ig,"")),h.style||(a=a.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig,"")));var f=[],a=a.replace(/([ \t\n\r]*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>([ \t\n\r]*)/g,function(a,
n,r,p,I,o,j){var n=n||"",r=r||"",l=p.toLowerCase(),J=I||"",p=o?" "+o:"",j=j||"";if(b&&!h[l])return"";p===""&&ib[l]&&(p=" /");jb[l]&&(n&&(n=" "),j&&(j=" "));Ha[l]&&(r?j="\n":n="\n");d&&l=="br"&&(j="\n");if(kb[l]&&!Ha[l])if(d){r&&f.length>0&&f[f.length-1]===l?f.pop():f.push(l);j=n="\n";I=0;for(o=r?f.length:f.length-1;I<o;I++)n+=e,r||(j+=e);p?f.pop():r||(j+=e)}else n=j="";if(J!==""){var w=H(a);if(l==="font"){var K={},F="";m(w,function(a,b){if(a==="color")K.color=b,delete w[a];a==="size"&&(K["font-size"]=
g[parseInt(b,10)-1]||"",delete w[a]);a==="face"&&(K["font-family"]=b,delete w[a]);a==="style"&&(F=b)});F&&!/;$/.test(F)&&(F+=";");m(K,function(a,b){b!==""&&(/\s/.test(b)&&(b="'"+b+"'"),F+=a+":"+b+";")});w.style=F}m(w,function(a,d){Sb[a]&&(w[a]=a);N(a,["src","href"])>=0&&(w[a]=ia(d,c));(b&&a!=="style"&&!h[l]["*"]&&!h[l][a]||l==="body"&&a==="contenteditable"||/^kindeditor_\d+$/.test(a))&&delete w[a];if(a==="style"&&d!==""){var e=aa(d);m(e,function(a){b&&!h[l].style&&!h[l]["."+a]&&delete e[a]});var g=
"";m(e,function(a,b){g+=a+":"+b+";"});w.style=g}});J="";m(w,function(a,b){a==="style"&&b===""||(b=b.replace(/"/g,"&quot;"),J+=" "+a+'="'+b+'"')})}l==="font"&&(l="span");return n+"<"+r+l+J+p+">"+j}),a=a.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig,function(a,b,c,d){return b+c.replace(/\n/g,'<span id="__kindeditor_pre_newline__">\n')+d}),a=a.replace(/\n\s*\n/g,"\n"),a=a.replace(/<span id="__kindeditor_pre_newline__">\n/g,"\n");return B(a)}function lb(a,b){a=a.replace(/<meta[\s\S]*?>/ig,"").replace(/<![\s\S]*?>/ig,
"").replace(/<style[^>]*>[\s\S]*?<\/style>/ig,"").replace(/<script[^>]*>[\s\S]*?<\/script>/ig,"").replace(/<w:[^>]+>[\s\S]*?<\/w:[^>]+>/ig,"").replace(/<o:[^>]+>[\s\S]*?<\/o:[^>]+>/ig,"").replace(/<xml>[\s\S]*?<\/xml>/ig,"").replace(/<(?:table|td)[^>]*>/ig,function(a){return a.replace(/border-bottom:([#\w\s]+)/ig,"border:$1")});return S(a,b)}function mb(a){if(/\.(rm|rmvb)(\?|$)/i.test(a))return"audio/x-pn-realaudio-plugin";if(/\.(swf|flv)(\?|$)/i.test(a))return"application/x-shockwave-flash";return"video/x-ms-asf-plugin"}
function nb(a){return H(unescape(a))}function Ia(a){var b="<embed ";m(a,function(a,d){b+=a+'="'+d+'" '});b+="/>";return b}function ob(a,b){var c=b.width,d=b.height,e=b.type||mb(b.src),g=Ia(b),h="";c>0&&(h+="width:"+c+"px;");d>0&&(h+="height:"+d+"px;");c=/realaudio/i.test(e)?"ke-rm":/flash/i.test(e)?"ke-flash":"ke-media";c='<img class="'+c+'" src="'+a+'" ';h!==""&&(c+='style="'+h+'" ');c+='data-ke-tag="'+escape(g)+'" alt="" />';return c}function xa(a,b){if(a.nodeType==9&&b.nodeType!=9)return!0;for(;b=
b.parentNode;)if(b==a)return!0;return!1}function ya(a,b){var b=b.toLowerCase(),c=null;if(!Tb&&a.nodeName.toLowerCase()!="script"){var d=a.ownerDocument.createElement("div");d.appendChild(a.cloneNode(!1));d=H(fa(d.innerHTML));b in d&&(c=d[b])}else try{c=a.getAttribute(b,2)}catch(e){c=a.getAttribute(b,1)}b==="style"&&c!==null&&(c=Rb(c));return c}function za(a,b){function c(a){if(typeof a!="string")return a;return a.replace(/([^\w\-])/g,"\\$1")}function d(a,b){return a==="*"||a.toLowerCase()===c(b.toLowerCase())}
function e(a,b,c){var e=[];(a=(c.ownerDocument||c).getElementById(a.replace(/\\/g,"")))&&d(b,a.nodeName)&&xa(c,a)&&e.push(a);return e}function g(a,b,c){var e=c.ownerDocument||c,g=[],h,f,i;if(c.getElementsByClassName){e=c.getElementsByClassName(a.replace(/\\/g,""));h=0;for(f=e.length;h<f;h++)i=e[h],d(b,i.nodeName)&&g.push(i)}else if(e.querySelectorAll){e=e.querySelectorAll((c.nodeName!=="#document"?c.nodeName+" ":"")+b+"."+a);h=0;for(f=e.length;h<f;h++)i=e[h],xa(c,i)&&g.push(i)}else{e=c.getElementsByTagName(b);
a=" "+a+" ";h=0;for(f=e.length;h<f;h++)if(i=e[h],i.nodeType==1)(b=i.className)&&(" "+b+" ").indexOf(a)>-1&&g.push(i)}return g}function h(a,b,d,e){for(var g=[],d=e.getElementsByTagName(d),h=0,f=d.length;h<f;h++)e=d[h],e.nodeType==1&&(b===null?ya(e,a)!==null&&g.push(e):b===c(ya(e,a))&&g.push(e));return g}function f(a,b){var c=[],i,k=(i=/^((?:\\.|[^.#\s\[<>])+)/.exec(a))?i[1]:"*";if(i=/#((?:[\w\-]|\\.)+)$/.exec(a))c=e(i[1],k,b);else if(i=/\.((?:[\w\-]|\\.)+)$/.exec(a))c=g(i[1],k,b);else if(i=/\[((?:[\w\-]|\\.)+)\]/.exec(a))c=
h(i[1].toLowerCase(),null,k,b);else if(i=/\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(a)){c=i[1].toLowerCase();i=i[2];if(c==="id")k=e(i,k,b);else if(c==="class")k=g(i,k,b);else if(c==="name"){c=[];i=(b.ownerDocument||b).getElementsByName(i.replace(/\\/g,""));for(var n,p=0,r=i.length;p<r;p++)n=i[p],d(k,n.nodeName)&&xa(b,n)&&n.getAttributeNode("name")&&c.push(n);k=c}else k=h(c,i,k,b);c=k}else{k=b.getElementsByTagName(k);n=0;for(p=k.length;n<p;n++)i=k[n],i.nodeType==1&&c.push(i)}return c}
var k=a.split(",");if(k.length>1){var n=[];m(k,function(){m(za(this,b),function(){N(this,n)<0&&n.push(this)})});return n}for(var b=b||document,k=[],r,p=/((?:\\.|[^\s>])+|[\s>])/g;r=p.exec(a);)r[1]!==" "&&k.push(r[1]);r=[];if(k.length==1)return f(k[0],b);var p=!1,I,l,j,o,J,w,K,F,q,s;w=0;for(lenth=k.length;w<lenth;w++)if(I=k[w],I===">")p=!0;else{if(w>0){l=[];K=0;for(q=r.length;K<q;K++){o=r[K];j=f(I,o);F=0;for(s=j.length;F<s;F++)J=j[F],p?o===J.parentNode&&l.push(J):l.push(J)}r=l}else r=f(I,b);if(r.length===
0)return[]}return r}function T(a){if(!a)return document;return a.ownerDocument||a.document||a}function U(a){if(!a)return A;a=T(a);return a.parentWindow||a.defaultView}function Ub(a,b){if(a.nodeType==1){var c=T(a);try{a.innerHTML='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+b;var d=c.getElementById("__kindeditor_temp_tag__");d.parentNode.removeChild(d)}catch(e){f(a).empty(),f("@"+b,c).each(function(){a.appendChild(this)})}}}function Ja(a,b,c){l&&z<8&&b.toLowerCase()==
"class"&&(b="className");a.setAttribute(b,""+c)}function Ka(a){if(!a||!a.nodeName)return"";return a.nodeName.toLowerCase()}function Vb(a,b){var c=U(a),d=ga(b),e="";c.getComputedStyle?(c=c.getComputedStyle(a,null),e=c[d]||c.getPropertyValue(b)||a.style[d]):a.currentStyle&&(e=a.currentStyle[d]||a.style[d]);return e}function G(a){a=a||document;return O?a.body:a.documentElement}function ba(a){var a=a||document,b;l||La?(b=G(a).scrollLeft,a=G(a).scrollTop):(b=U(a).scrollX,a=U(a).scrollY);return{x:b,y:a}}
function D(a){this.init(a)}function pb(a){a.collapsed=a.startContainer===a.endContainer&&a.startOffset===a.endOffset;return a}function Ma(a,b,c){function d(d,e,g){var h=d.nodeValue.length,k;b&&(k=d.cloneNode(!0),k=e>0?k.splitText(e):k,g<h&&k.splitText(g-e));if(c){var n=d;e>0&&(n=d.splitText(e),a.setStart(d,e));g<h&&(d=n.splitText(g-e),a.setEnd(d,0));f.push(n)}return k}function e(){c&&a.up().collapse(!0);for(var b=0,d=f.length;b<d;b++){var e=f[b];e.parentNode&&e.parentNode.removeChild(e)}}function g(e,
l){for(var j=e.firstChild,o;j;){o=(new L(h)).selectNode(j);n=o.compareBoundaryPoints(ja,a);n>=0&&r<=0&&(r=o.compareBoundaryPoints(ka,a));r>=0&&p<=0&&(p=o.compareBoundaryPoints(ca,a));p>=0&&m<=0&&(m=o.compareBoundaryPoints(la,a));if(m>=0)return!1;o=j.nextSibling;if(n>0)if(j.nodeType==1)if(r>=0&&p<=0)b&&l.appendChild(j.cloneNode(!0)),c&&f.push(j);else{var q;b&&(q=j.cloneNode(!1),l.appendChild(q));if(g(j,q)===!1)return!1}else if(j.nodeType==3&&(j=j==k.startContainer?d(j,k.startOffset,j.nodeValue.length):
j==k.endContainer?d(j,0,k.endOffset):d(j,0,j.nodeValue.length),b))try{l.appendChild(j)}catch(s){}j=o}}var h=a.doc,f=[],k=a.cloneRange().down(),n=-1,r=-1,p=-1,m=-1,l=a.commonAncestor(),j=h.createDocumentFragment();if(l.nodeType==3)return l=d(l,a.startOffset,a.endOffset),b&&j.appendChild(l),e(),b?j:a;g(l,j);c&&a.up().collapse(!0);for(var l=0,o=f.length;l<o;l++){var q=f[l];q.parentNode&&q.parentNode.removeChild(q)}return b?j:a}function ma(a,b){for(var c=b;c;){var d=f(c);if(d.name=="marquee"||d.name==
"select")return;c=c.parentNode}try{a.moveToElementText(b)}catch(e){}}function qb(a,b){var c=a.parentElement().ownerDocument,d=a.duplicate();d.collapse(b);var e=d.parentElement(),g=e.childNodes;if(g.length===0)return{node:e.parentNode,offset:f(e).index()};var h=c,i=0,k=-1,n=a.duplicate();ma(n,e);for(var r=0,p=g.length;r<p;r++){var j=g[r],k=n.compareEndPoints("StartToStart",d);if(k===0)return{node:j.parentNode,offset:r};if(j.nodeType==1){var l=a.duplicate(),m,o=f(j),q=j;o.isControl()&&(m=c.createElement("span"),
o.after(m),q=m,i+=o.text().replace(/\r\n|\n|\r/g,"").length);ma(l,q);n.setEndPoint("StartToEnd",l);k>0?i+=l.text.replace(/\r\n|\n|\r/g,"").length:i=0;m&&f(m).remove()}else j.nodeType==3&&(n.moveStart("character",j.nodeValue.length),i+=j.nodeValue.length);k<0&&(h=j)}if(k<0&&h.nodeType==1)return{node:e,offset:f(e.lastChild).index()+1};if(k>0)for(;h.nextSibling&&h.nodeType==1;)h=h.nextSibling;n=a.duplicate();ma(n,e);n.setEndPoint("StartToEnd",d);i-=n.text.replace(/\r\n|\n|\r/g,"").length;if(k>0&&h.nodeType==
3)for(c=h.previousSibling;c&&c.nodeType==3;)i-=c.nodeValue.length,c=c.previousSibling;return{node:h,offset:i}}function rb(a,b){var c=a.ownerDocument||a,d=c.body.createTextRange();if(c==a)return d.collapse(!0),d;if(a.nodeType==1&&a.childNodes.length>0){var e=a.childNodes,g;b===0?(g=e[0],e=!0):(g=e[b-1],e=!1);if(!g)return d;if(f(g).name==="head")return b===1&&(e=!0),b===2&&(e=!1),d.collapse(e),d;if(g.nodeType==1){var h=f(g),i;h.isControl()&&(i=c.createElement("span"),e?h.before(i):h.after(i),g=i);ma(d,
g);d.collapse(e);i&&f(i).remove();return d}a=g;b=e?0:g.nodeValue.length}c=c.createElement("span");f(a).before(c);ma(d,c);d.moveStart("character",b);f(c).remove();return d}function sb(a){function b(a){if(f(a.node).name=="tr")a.node=a.node.cells[a.offset],a.offset=0}var c;if(l){if(a.item)return c=T(a.item(0)),c=new L(c),c.selectNode(a.item(0)),c;c=a.parentElement().ownerDocument;var d=qb(a,!0),a=qb(a,!1);b(d);b(a);c=new L(c);c.setStart(d.node,d.offset);c.setEnd(a.node,a.offset);return c}d=a.startContainer;
c=d.ownerDocument||d;c=new L(c);c.setStart(d,a.startOffset);c.setEnd(a.endContainer,a.endOffset);return c}function L(a){this.init(a)}function Na(a){if(!a.nodeName)return a.constructor===L?a:sb(a);return new L(a)}function P(a,b,c){try{a.execCommand(b,!1,c)}catch(d){}}function tb(a,b){var c="";try{c=a.queryCommandValue(b)}catch(d){}typeof c!=="string"&&(c="");return c}function Oa(a){var b=U(a);return a.selection||b.getSelection()}function ub(a){var b={},c,d;m(a,function(a,g){c=a.split(",");for(var h=
0,f=c.length;h<f;h++)d=c[h],b[d]=g});return b}function Pa(a,b){return vb(a,b,"*")||vb(a,b)}function vb(a,b,c){c=c||a.name;if(a.type!==1)return!1;b=ub(b);if(!b[c])return!1;for(var c=b[c].split(","),b=0,d=c.length;b<d;b++){var e=c[b];if(e==="*")return!0;var g=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(e),h=g[1]?"css":"attr",e=g[2],g=g[3]||"";if(g===""&&a[h](e)!=="")return!0;if(g!==""&&a[h](e)===g)return!0}return!1}function Qa(a,b){a.type==1&&(wb(a,b,"*"),wb(a,b))}function wb(a,b,c){c=c||a.name;if(a.type===
1&&(b=ub(b),b[c])){for(var c=b[c].split(","),b=!1,d=0,e=c.length;d<e;d++){var g=c[d];if(g==="*"){b=!0;break}var h=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(g),g=h[2];h[1]?(g=ga(g),a[0].style[g]&&(a[0].style[g]="")):a.removeAttr(g)}b&&a.remove(!0)}}function Ra(a){for(;a.first();)a=a.first();return a}function da(a){if(a.type!=1||a.isSingle())return!1;return a.html().replace(/<[^>]+>/g,"")===""}function Wb(a,b,c){m(b,function(b,c){b!=="style"&&a.attr(b,c)});m(c,function(b,c){a.css(b,c)})}function na(a){this.init(a)}
function xb(a){a.nodeName&&(a=T(a),a=Na(a).selectNodeContents(a.body).collapse(!1));return new na(a)}function Sa(a){var b=a.moveEl,c=a.moveFn,d=a.clickEl||b,e=a.beforeDrag,g=[document];(a.iframeFix===o||a.iframeFix)&&f("iframe").each(function(){if(!/^https?:\/\//.test(ia(this.src||"","absolute"))){var a;try{a=Ta(this)}catch(b){}if(a){var c=f(this).pos();f(a).data("pos-x",c.x);f(a).data("pos-y",c.y);g.push(a)}}});d.mousedown(function(a){function i(a){a.preventDefault();var b=f(T(a.target)),e=Q((b.data("pos-x")||
0)+a.pageX-q),a=Q((b.data("pos-y")||0)+a.pageY-s);c.call(d,p,l,m,o,e,a)}function k(a){a.preventDefault()}function n(a){a.preventDefault();f(g).unbind("mousemove",i).unbind("mouseup",n).unbind("selectstart",k);j.releaseCapture&&j.releaseCapture()}a.stopPropagation();var j=d.get(),p=t(b.css("left")),l=t(b.css("top")),m=b.width(),o=b.height(),q=a.pageX,s=a.pageY;e&&e();f(g).mousemove(i).mouseup(n).bind("selectstart",k);j.setCapture&&j.setCapture()})}function R(a){this.init(a)}function Ua(a){return new R(a)}
function Ta(a){a=f(a)[0];return a.contentDocument||a.contentWindow.document}function Xb(a,b,c,d){var e=[Va===""?"<html>":'<html dir="'+Va+'">','<head><meta charset="utf-8" /><title></title>',"<style>","html {margin:0;padding:0;}","body {margin:0;padding:5px;}",'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}',"body, p, div {word-wrap: break-word;}","p {margin:5px 0;}","table {border-collapse:collapse;}","img {border:0;}","noscript {display:none;}","table.ke-zeroborder td {border:1px dotted #AAA;}",
"img.ke-flash {","\tborder:1px solid #AAA;","\tbackground-image:url("+a+"common/flash.gif);","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-rm {","\tborder:1px solid #AAA;","\tbackground-image:url("+a+"common/rm.gif);","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-media {","\tborder:1px solid #AAA;","\tbackground-image:url("+a+"common/media.gif);","\tbackground-position:center center;",
"\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-anchor {","\tborder:1px dashed #666;","\twidth:16px;","\theight:16px;","}",".ke-script, .ke-noscript, .ke-display-none {","\tdisplay:none;","\tfont-size:0;","\twidth:0;","\theight:0;","}",".ke-pagebreak {","\tborder:1px dotted #AAA;","\tfont-size:0;","\theight:2px;","}","</style>"];Y(c)||(c=[c]);m(c,function(a,b){b&&e.push('<link href="'+b+'" rel="stylesheet" />')});d&&e.push("<style>"+d+"</style>");e.push("</head><body "+
(b?'class="'+b+'"':"")+"></body></html>");return e.join("\n")}function oa(a,b){if(a.hasVal()){if(b===o){var c=a.val();return c=c.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig,"")}return a.val(b)}return a.html(b)}function pa(a){this.init(a)}function yb(a){return new pa(a)}function zb(a,b){var c=this.get(a);c&&!c.hasClass("ke-disabled")&&b(c)}function Aa(a){this.init(a)}function Ab(a){return new Aa(a)}function qa(a){this.init(a)}function Wa(a){return new qa(a)}function ra(a){this.init(a)}function Bb(a){return new ra(a)}
function Xa(a){this.init(a)}function sa(a){this.init(a)}function Cb(a){return new sa(a)}function Ya(a,b){var c=document.getElementsByTagName("head")[0]||(O?document.body:document.documentElement),d=document.createElement("script");c.appendChild(d);d.src=a;d.charset="utf-8";d.onload=d.onreadystatechange=function(){if(!this.readyState||this.readyState==="loaded")b&&b(),d.onload=d.onreadystatechange=null,c.removeChild(d)}}function Db(a){var b=a.indexOf("?");return b>0?a.substr(0,b):a}function Za(a){for(var b=
document.getElementsByTagName("head")[0]||(O?document.body:document.documentElement),c=document.createElement("link"),d=Db(ia(a,"absolute")),e=f('link[rel="stylesheet"]',b),g=0,h=e.length;g<h;g++)if(Db(ia(e[g].href,"absolute"))===d)return;b.appendChild(c);c.href=a;c.rel="stylesheet"}function Eb(a,b){if(a===o)return V;if(!b)return V[a];V[a]=b}function Fb(a){var b,c="core";if(b=/^(\w+)\.(\w+)$/.exec(a))c=b[1],a=b[2];return{ns:c,key:a}}function Gb(a,b){b=b===o?f.options.langType:b;if(typeof a==="string"){if(!M[b])return"no language";
var c=a.length-1;if(a.substr(c)===".")return M[b][a.substr(0,c)];c=Fb(a);return M[b][c.ns][c.key]}m(a,function(a,c){var g=Fb(a);M[b]||(M[b]={});M[b][g.ns]||(M[b][g.ns]={});M[b][g.ns][g.key]=c})}function Ba(a,b){if(!a.collapsed){var a=a.cloneRange().up(),c=a.startContainer,d=a.startOffset;if(W||a.isControl())if((c=f(c.childNodes[d]))&&c.name=="img"&&b(c))return c}}function Yb(){var a=this;f(a.edit.doc).contextmenu(function(b){a.menu&&a.hideMenu();if(a.useContextmenu){if(a._contextmenus.length!==0){var c=
0,d=[];for(m(a._contextmenus,function(){if(this.title=="-")d.push(this);else if(this.cond&&this.cond()&&(d.push(this),this.width&&this.width>c))c=this.width});d.length>0&&d[0].title=="-";)d.shift();for(;d.length>0&&d[d.length-1].title=="-";)d.pop();var e=null;m(d,function(a){this.title=="-"&&e.title=="-"&&delete d[a];e=this});if(d.length>0){b.preventDefault();var g=f(a.edit.iframe).pos(),h=Wa({x:g.x+b.clientX,y:g.y+b.clientY,width:c,css:{visibility:"hidden"},shadowMode:a.shadowMode});m(d,function(){this.title&&
h.addItem(this)});var g=G(h.doc),i=h.div.height();b.clientY+i>=g.clientHeight-100&&h.pos(h.x,t(h.y)-i);h.div.css("visibility","visible");a.menu=h}}}else b.preventDefault()})}function Zb(){function a(a){for(a=f(a.commonAncestor());a;){if(a.type==1&&!a.isStyle())break;a=a.parent()}return a.name}var b=this,c=b.edit.doc,d=b.newlineTag;if(!(l&&d!=="br")&&(!ea||!(z<3&&d!=="p"))&&!(La&&z<9)){var e=u("h1,h2,h3,h4,h5,h6,pre,li"),g=u("p,h1,h2,h3,h4,h5,h6,pre,li,blockquote");f(c).keydown(function(f){if(!(f.which!=
13||f.shiftKey||f.ctrlKey||f.altKey)){b.cmd.selection();var i=a(b.cmd.range);i=="marquee"||i=="select"||(d==="br"&&!e[i]?(f.preventDefault(),b.insertHtml("<br />"+(l&&z<9?"":"\u200b"))):g[i]||P(c,"formatblock","<p>"))}});f(c).keyup(function(e){if(!(e.which!=13||e.shiftKey||e.ctrlKey||e.altKey)&&d!="br")if(ea){var e=b.cmd.commonAncestor("p"),i=b.cmd.commonAncestor("a");i&&i.text()==""&&(i.remove(!0),b.cmd.range.selectNodeContents(e[0]).collapse(!0),b.cmd.select())}else if(b.cmd.selection(),e=a(b.cmd.range),
!(e=="marquee"||e=="select"))if(g[e]||P(c,"formatblock","<p>"),e=b.cmd.commonAncestor("div")){for(var i=f("<p></p>"),k=e[0].firstChild;k;){var n=k.nextSibling;i.append(k);k=n}e.before(i);e.remove();b.cmd.range.selectNodeContents(i[0]);b.cmd.select()}})}}function $b(){var a=this,b=a.edit.doc;f(b).keydown(function(c){if(c.which==9)if(c.preventDefault(),a.afterTab)a.afterTab.call(a,c);else{var c=a.cmd,d=c.range;d.shrink();d.collapsed&&d.startContainer.nodeType==1&&(d.insertNode(f("@&nbsp;",b)[0]),c.select());
a.insertHtml("&nbsp;&nbsp;&nbsp;&nbsp;")}})}function ac(){var a=this;f(a.edit.textarea[0],a.edit.win).focus(function(b){a.afterFocus&&a.afterFocus.call(a,b)}).blur(function(b){a.afterBlur&&a.afterBlur.call(a,b)})}function X(a){return B(a.replace(/<span [^>]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/ig,""))}function $a(a){return a.replace(/<div[^>]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/ig,"")}function Hb(a,b){if(a.length===0)a.push(b);else{var c=a[a.length-1];X(b.html)!==X(c.html)&&
a.push(b)}}function Ib(a,b){var c=this.edit,d=c.doc.body,e,g;if(a.length===0)return this;c.designMode?(e=this.cmd.range,g=e.createBookmark(!0),g.html=d.innerHTML):g={html:d.innerHTML};Hb(b,g);var h=a.pop();X(g.html)===X(h.html)&&a.length>0&&(h=a.pop());c.designMode?(c.html(h.html),h.start&&(e.moveToBookmark(h),this.select())):f(d).html(X(h.html));return this}function ta(a){function b(a,b){ta.prototype[a]===o&&(c[a]=b);c.options[a]=b}var c=this;c.options={};m(a,function(c){b(c,a[c])});m(f.options,
function(a,d){c[a]===o&&b(a,d)});var d=f(c.srcElement||"<textarea/>");if(!c.width)c.width=d[0].style.width||d.width();if(!c.height)c.height=d[0].style.height||d.height();b("width",j(c.width,c.minWidth));b("height",j(c.height,c.minHeight));b("width",s(c.width));b("height",s(c.height));if(bc&&(!cc||z<534))c.designMode=!1;c.srcElement=d;c.initContent="";c.plugin={};c.isCreated=!1;c.isLoading=!1;c._handlers={};c._contextmenus=[];c._undoStack=[];c._redoStack=[];c._calledPlugins={};c._firstAddBookmark=
!0;c.menu=c.contextmenu=null;c.dialogs=[]}function Jb(a,b){function c(a){m(V,function(b,c){c.call(a,KindEditor)});return a.create()}b=b||{};b.basePath=j(b.basePath,f.basePath);b.themesPath=j(b.themesPath,b.basePath+"themes/");b.langPath=j(b.langPath,b.basePath+"lang/");b.pluginsPath=j(b.pluginsPath,b.basePath+"plugins/");if(j(b.loadStyleMode,f.options.loadStyleMode)){var d=j(b.themeType,f.options.themeType);Za(b.themesPath+"default/default.css");Za(b.themesPath+d+"/"+d+".css")}if((d=f(a))&&d.length!==
0){if(d.length>1)return d.each(function(){Jb(this,b)}),_instances[0];b.srcElement=d[0];var e=new ta(b);_instances.push(e);if(M[e.langType])return c(e);Ya(e.langPath+e.langType+".js?ver="+encodeURIComponent(f.DEBUG?Ca:Da),function(){c(e)});return e}}function Kb(a,b){f(a).each(function(a,d){f.each(_instances,function(a,c){if(c&&c.srcElement[0]==d)return b.call(c,a,c),!1})})}if(!A.KindEditor){if(!A.console)A.console={};if(!console.log)console.log=function(){};var Da="4.1.7 (2013-04-21)",q=navigator.userAgent.toLowerCase(),
l=q.indexOf("msie")>-1&&q.indexOf("opera")==-1,ea=q.indexOf("gecko")>-1&&q.indexOf("khtml")==-1,W=q.indexOf("applewebkit")>-1,La=q.indexOf("opera")>-1,bc=q.indexOf("mobile")>-1,cc=/ipad|iphone|ipod/.test(q),O=document.compatMode!="CSS1Compat",z=(q=/(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(q))?q[1]:"0",Ca=(new Date).getTime(),Q=Math.round,f={DEBUG:!1,VERSION:Da,IE:l,GECKO:ea,WEBKIT:W,OPERA:La,V:z,TIME:Ca,each:m,isArray:Y,isFunction:bb,inArray:N,inString:ua,trim:B,addUnit:s,removeUnit:t,escape:C,
unescape:fa,toCamel:ga,toHex:va,toMap:u,toArray:Fa,undef:j,invalidUrl:function(a){return!a||/[<>"]/.test(a)},addParam:function(a,b){return a.indexOf("?")>=0?a+"&"+b:a+"?"+b},extend:E,json:cb},jb=u("a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),kb=u("address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul"),
ib=u("area,index,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"),Lb=u("b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u"),dc=u("img,table,input,textarea,button"),Ha=u("pre,style,script"),Ea=u("html,head,body,td,tr,table,ol,ul,li");u("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");var Sb=u("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),Mb=u("input,button,textarea,select");f.basePath=function(){for(var a=
document.getElementsByTagName("script"),b,c=0,d=a.length;c<d;c++)if(b=a[c].src||"",/kindeditor[\w\-\.]*\.js/.test(b))return b.substring(0,b.lastIndexOf("/")+1);return""}();f.options={designMode:!0,fullscreenMode:!1,filterMode:!0,wellFormatMode:!0,shadowMode:!0,loadStyleMode:!0,basePath:f.basePath,themesPath:f.basePath+"themes/",langPath:f.basePath+"lang/",pluginsPath:f.basePath+"plugins/",themeType:"default",langType:"zh_CN",urlType:"",newlineTag:"p",resizeType:2,syncType:"form",pasteType:2,dialogAlignType:"page",
useContextmenu:!0,fullscreenShortcut:!1,bodyClass:"ke-content",indentChar:"\t",cssPath:"",cssData:"",minWidth:650,minHeight:100,minChangeSize:50,zIndex:811213,items:["source","|","undo","redo","|","preview","print","template","code","cut","copy","paste","plainpaste","wordpaste","|","justifyleft","justifycenter","justifyright","justifyfull","insertorderedlist","insertunorderedlist","indent","outdent","subscript","superscript","clearhtml","quickformat","selectall","|","fullscreen","/","formatblock",
"fontname","fontsize","|","forecolor","hilitecolor","bold","italic","underline","strikethrough","lineheight","removeformat","|","image","multiimage","flash","media","insertfile","table","hr","emoticons","baidumap","pagebreak","anchor","link","unlink","|","about"],noDisableItems:["source","fullscreen"],colorTable:[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],
["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]],fontSizeTable:["9px","10px","12px","14px","16px","18px","24px","32px"],htmlTags:{font:["id","class","color","size","face",".background-color"],span:["id","class",".color",".background-color",".font-size",".font-family",".background",".font-weight",".font-style",".text-decoration",".vertical-align",".line-height"],div:["id","class","align",".border",".margin",".padding",".text-align",".color",".background-color",".font-size",".font-family",
".font-weight",".background",".font-style",".text-decoration",".vertical-align",".margin-left"],table:["id","class","border","cellspacing","cellpadding","width","height","align","bordercolor",".padding",".margin",".border","bgcolor",".text-align",".color",".background-color",".font-size",".font-family",".font-weight",".font-style",".text-decoration",".background",".width",".height",".border-collapse"],"td,th":["id","class","align","valign","width","height","colspan","rowspan","bgcolor",".text-align",
".color",".background-color",".font-size",".font-family",".font-weight",".font-style",".text-decoration",".vertical-align",".background",".border"],a:["id","class","href","target","name"],embed:["id","class","src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess"],img:["id","class","src","width","height","border","alt","title","align",".width",".height",".border"],"p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":["id","class","align",".text-align",".color",
".background-color",".font-size",".font-family",".background",".font-weight",".font-style",".text-decoration",".vertical-align",".text-indent",".margin-left"],pre:["id","class"],hr:["id","class",".page-break-after"],"br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del":["id","class"],iframe:["id","class","src","frameborder","width","height",".width",".height"]},layout:'<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>'};var db=!1,Nb=u("8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222"),
q=u("33..40"),ab={};m(Nb,function(a,b){ab[a]=b});m(q,function(a,b){ab[a]=b});var ec="altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which".split(",");E(eb,{init:function(a,b){var c=this,d=a.ownerDocument||a.document||a;c.event=b;m(ec,
function(a,d){c[d]=b[d]});if(!c.target)c.target=c.srcElement||d;if(c.target.nodeType===3)c.target=c.target.parentNode;if(!c.relatedTarget&&c.fromElement)c.relatedTarget=c.fromElement===c.target?c.toElement:c.fromElement;if(c.pageX==null&&c.clientX!=null){var e=d.documentElement,d=d.body;c.pageX=c.clientX+(e&&e.scrollLeft||d&&d.scrollLeft||0)-(e&&e.clientLeft||d&&d.clientLeft||0);c.pageY=c.clientY+(e&&e.scrollTop||d&&d.scrollTop||0)-(e&&e.clientTop||d&&d.clientTop||0)}if(!c.which&&(c.charCode||c.charCode===
0?c.charCode:c.keyCode))c.which=c.charCode||c.keyCode;if(!c.metaKey&&c.ctrlKey)c.metaKey=c.ctrlKey;if(!c.which&&c.button!==o)c.which=c.button&1?1:c.button&2?3:c.button&4?2:0;switch(c.which){case 186:c.which=59;break;case 187:case 107:case 43:c.which=61;break;case 189:case 45:c.which=109;break;case 42:c.which=106;break;case 47:c.which=111;break;case 78:c.which=110}c.which>=96&&c.which<=105&&(c.which-=48)},preventDefault:function(){var a=this.event;a.preventDefault&&a.preventDefault();a.returnValue=
!1},stopPropagation:function(){var a=this.event;a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0},stop:function(){this.preventDefault();this.stopPropagation()}});var Z="kindeditor_"+Ca,gb=0,v={};l&&A.attachEvent("onunload",function(){m(v,function(a,b){b.el&&ha(b.el)})});f.ctrl=Ga;f.ready=function(a){function b(){e||(e=!0,a(KindEditor))}function c(){if(!e){try{document.documentElement.doScroll("left")}catch(a){setTimeout(c,100);return}b()}}function d(){document.readyState==="complete"&&b()}
var e=!1;if(document.addEventListener)$(document,"DOMContentLoaded",b);else if(document.attachEvent){$(document,"readystatechange",d);var g=!1;try{g=A.frameElement==null}catch(f){}document.documentElement.doScroll&&g&&c()}$(A,"load",b)};f.formatUrl=ia;f.formatHtml=S;f.getCssList=aa;f.getAttrList=H;f.mediaType=mb;f.mediaAttrs=nb;f.mediaEmbed=Ia;f.mediaImg=ob;f.clearMsWord=lb;f.tmpl=function(a,b){var c=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
" ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return b?c(b):c};q=document.createElement("div");q.setAttribute("className","t");var Tb=q.className!=="t";f.query=function(a,b){var c=za(a,b);return c.length>0?c[0]:null};f.queryAll=za;E(D,{init:function(a){for(var a=Y(a)?a:[a],b=0,c=0,d=a.length;c<d;c++)a[c]&&(this[c]=a[c].constructor===D?a[c][0]:a[c],
b++);this.length=b;this.doc=T(this[0]);this.name=Ka(this[0]);this.type=this.length>0?this[0].nodeType:null;this.win=U(this[0])},each:function(a){for(var b=0;b<this.length;b++)if(a.call(this[b],b,this[b])===!1)break;return this},bind:function(a,b){this.each(function(){$(this,a,b)});return this},unbind:function(a,b){this.each(function(){ha(this,a,b)});return this},fire:function(a){if(this.length<1)return this;hb(this[0],a);return this},hasAttr:function(a){if(this.length<1)return!1;return!!ya(this[0],
a)},attr:function(a,b){var c=this;if(a===o)return H(c.outer());if(typeof a==="object")return m(a,function(a,b){c.attr(a,b)}),c;if(b===o)return b=c.length<1?null:ya(c[0],a),b===null?"":b;c.each(function(){Ja(this,a,b)});return c},removeAttr:function(a){this.each(function(){var b=a;l&&z<8&&b.toLowerCase()=="class"&&(b="className");Ja(this,b,"");this.removeAttribute(b)});return this},get:function(a){if(this.length<1)return null;return this[a||0]},eq:function(a){if(this.length<1)return null;return this[a]?
new D(this[a]):null},hasClass:function(a){if(this.length<1)return!1;return ua(a,this[0].className," ")},addClass:function(a){this.each(function(){if(!ua(a,this.className," "))this.className=B(this.className+" "+a)});return this},removeClass:function(a){this.each(function(){if(ua(a,this.className," "))this.className=B(this.className.replace(RegExp("(^|\\s)"+a+"(\\s|$)")," "))});return this},html:function(a){if(a===o){if(this.length<1||this.type!=1)return"";return S(this[0].innerHTML)}this.each(function(){Ub(this,
a)});return this},text:function(){if(this.length<1)return"";return l?this[0].innerText:this[0].textContent},hasVal:function(){if(this.length<1)return!1;return!!Mb[Ka(this[0])]},val:function(a){if(a===o){if(this.length<1)return"";return this.hasVal()?this[0].value:this.attr("value")}else return this.each(function(){Mb[Ka(this)]?this.value=a:Ja(this,"value",a)}),this},css:function(a,b){var c=this;if(a===o)return aa(c.attr("style"));if(typeof a==="object")return m(a,function(a,b){c.css(a,b)}),c;if(b===
o){if(c.length<1)return"";return c[0].style[ga(a)]||Vb(c[0],a)||""}c.each(function(){this.style[ga(a)]=b});return c},width:function(a){if(a===o){if(this.length<1)return 0;return this[0].offsetWidth}return this.css("width",s(a))},height:function(a){if(a===o){if(this.length<1)return 0;return this[0].offsetHeight}return this.css("height",s(a))},opacity:function(a){this.each(function(){this.style.opacity===o?this.style.filter=a==1?"":"alpha(opacity="+a*100+")":this.style.opacity=a==1?"":a});return this},
data:function(a,b){a="kindeditor_data_"+a;if(b===o){if(this.length<1)return null;return this[0][a]}this.each(function(){this[a]=b});return this},pos:function(){var a=this[0],b=0,c=0;if(a)if(a.getBoundingClientRect)a=a.getBoundingClientRect(),c=ba(this.doc),b=a.left+c.x,c=a.top+c.y;else for(;a;)b+=a.offsetLeft,c+=a.offsetTop,a=a.offsetParent;return{x:Q(b),y:Q(c)}},clone:function(a){if(this.length<1)return new D([]);return new D(this[0].cloneNode(a))},append:function(a){this.each(function(){this.appendChild&&
this.appendChild(f(a)[0])});return this},appendTo:function(a){this.each(function(){f(a)[0].appendChild(this)});return this},before:function(a){this.each(function(){this.parentNode.insertBefore(f(a)[0],this)});return this},after:function(a){this.each(function(){this.nextSibling?this.parentNode.insertBefore(f(a)[0],this.nextSibling):this.parentNode.appendChild(f(a)[0])});return this},replaceWith:function(a){var b=[];this.each(function(c,d){ha(d);var e=f(a)[0];d.parentNode.replaceChild(e,d);b.push(e)});
return f(b)},empty:function(){this.each(function(a,b){for(var c=b.firstChild;c;){if(!b.parentNode)break;var d=c.nextSibling;c.parentNode.removeChild(c);c=d}});return this},remove:function(a){var b=this;b.each(function(c,d){if(d.parentNode){ha(d);if(a)for(var e=d.firstChild;e;){var g=e.nextSibling;d.parentNode.insertBefore(e,d);e=g}d.parentNode.removeChild(d);delete b[c]}});b.length=0;return b},show:function(a){a===o&&(a=this._originDisplay||"");if(this.css("display")!="none")return this;return this.css("display",
a)},hide:function(){if(this.length<1)return this;this._originDisplay=this[0].style.display;return this.css("display","none")},outer:function(){if(this.length<1)return"";var a=this.doc.createElement("div");a.appendChild(this[0].cloneNode(!0));return S(a.innerHTML)},isSingle:function(){return!!ib[this.name]},isInline:function(){return!!jb[this.name]},isBlock:function(){return!!kb[this.name]},isStyle:function(){return!!Lb[this.name]},isControl:function(){return!!dc[this.name]},contains:function(a){if(this.length<
1)return!1;return xa(this[0],f(a)[0])},parent:function(){if(this.length<1)return null;var a=this[0].parentNode;return a?new D(a):null},children:function(){if(this.length<1)return new D([]);for(var a=[],b=this[0].firstChild;b;)(b.nodeType!=3||B(b.nodeValue)!=="")&&a.push(b),b=b.nextSibling;return new D(a)},first:function(){var a=this.children();return a.length>0?a.eq(0):null},last:function(){var a=this.children();return a.length>0?a.eq(a.length-1):null},index:function(){if(this.length<1)return-1;for(var a=
-1,b=this[0];b;)a++,b=b.previousSibling;return a},prev:function(){if(this.length<1)return null;var a=this[0].previousSibling;return a?new D(a):null},next:function(){if(this.length<1)return null;var a=this[0].nextSibling;return a?new D(a):null},scan:function(a,b){function c(d){for(d=b?d.firstChild:d.lastChild;d;){var e=b?d.nextSibling:d.previousSibling;if(a(d)===!1)return!1;if(c(d)===!1)return!1;d=e}}if(!(this.length<1))return b=b===o?!0:b,c(this[0]),this}});m("blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error,contextmenu".split(","),
function(a,b){D.prototype[b]=function(a){return a?this.bind(b,a):this.fire(b)}});q=f;f=function(a,b){function c(a){a[0]||(a=[]);return new D(a)}if(!(a===o||a===null)){if(typeof a==="string"){b&&(b=f(b)[0]);var d=a.length;a.charAt(0)==="@"&&(a=a.substr(1));if(a.length!==d||/<.+>/.test(a)){var d=(b?b.ownerDocument||b:document).createElement("div"),e=[];d.innerHTML='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+a;for(var g=0,h=d.childNodes.length;g<h;g++){var i=d.childNodes[g];
i.id!="__kindeditor_temp_tag__"&&e.push(i)}return c(e)}return c(za(a,b))}if(a&&a.constructor===D)return a;a.toArray&&(a=a.toArray());if(Y(a))return c(a);return c(Fa(arguments))}};m(q,function(a,b){f[a]=b});f.NodeClass=D;A.KindEditor=f;var ka=0,ja=1,ca=2,la=3,Ob=0;E(L,{init:function(a){this.startContainer=a;this.startOffset=0;this.endContainer=a;this.endOffset=0;this.collapsed=!0;this.doc=a},commonAncestor:function(){function a(a){for(var b=[];a;)b.push(a),a=a.parentNode;return b}for(var b=a(this.startContainer),
c=a(this.endContainer),d=0,e=b.length,g=c.length,f,i;++d;)if(f=b[e-d],i=c[g-d],!f||!i||f!==i)break;return b[e-d+1]},setStart:function(a,b){var c=this.doc;this.startContainer=a;this.startOffset=b;if(this.endContainer===c)this.endContainer=a,this.endOffset=b;return pb(this)},setEnd:function(a,b){var c=this.doc;this.endContainer=a;this.endOffset=b;if(this.startContainer===c)this.startContainer=a,this.startOffset=b;return pb(this)},setStartBefore:function(a){return this.setStart(a.parentNode||this.doc,
f(a).index())},setStartAfter:function(a){return this.setStart(a.parentNode||this.doc,f(a).index()+1)},setEndBefore:function(a){return this.setEnd(a.parentNode||this.doc,f(a).index())},setEndAfter:function(a){return this.setEnd(a.parentNode||this.doc,f(a).index()+1)},selectNode:function(a){return this.setStartBefore(a).setEndAfter(a)},selectNodeContents:function(a){var b=f(a);if(b.type==3||b.isSingle())return this.selectNode(a);b=b.children();if(b.length>0)return this.setStartBefore(b[0]).setEndAfter(b[b.length-
1]);return this.setStart(a,0).setEnd(a,0)},collapse:function(a){if(a)return this.setEnd(this.startContainer,this.startOffset);return this.setStart(this.endContainer,this.endOffset)},compareBoundaryPoints:function(a,b){var c=this.get(),d=b.get();if(l){var e={};e[ka]="StartToStart";e[ja]="EndToStart";e[ca]="EndToEnd";e[la]="StartToEnd";c=c.compareEndPoints(e[a],d);if(c!==0)return c;var g,h,i,k;if(a===ka||a===la)g=this.startContainer,i=this.startOffset;if(a===ja||a===ca)g=this.endContainer,i=this.endOffset;
if(a===ka||a===ja)h=b.startContainer,k=b.startOffset;if(a===ca||a===la)h=b.endContainer,k=b.endOffset;if(g===h)return g=i-k,g>0?1:g<0?-1:0;for(c=h;c&&c.parentNode!==g;)c=c.parentNode;if(c)return f(c).index()>=i?-1:1;for(c=g;c&&c.parentNode!==h;)c=c.parentNode;if(c)return f(c).index()>=k?1:-1;if((c=f(h).next())&&c.contains(g))return 1;if((c=f(g).next())&&c.contains(h))return-1}else return c.compareBoundaryPoints(a,d)},cloneRange:function(){return(new L(this.doc)).setStart(this.startContainer,this.startOffset).setEnd(this.endContainer,
this.endOffset)},toString:function(){var a=this.get();return(l?a.text:a.toString()).replace(/\r\n|\n|\r/g,"")},cloneContents:function(){return Ma(this,!0,!1)},deleteContents:function(){return Ma(this,!1,!0)},extractContents:function(){return Ma(this,!0,!0)},insertNode:function(a){var b=this.startContainer,c=this.startOffset,d=this.endContainer,e=this.endOffset,g,f,i,k=1;if(a.nodeName.toLowerCase()==="#document-fragment")g=a.firstChild,f=a.lastChild,k=a.childNodes.length;b.nodeType==1?(i=b.childNodes[c])?
(b.insertBefore(a,i),b===d&&(e+=k)):b.appendChild(a):b.nodeType==3&&(c===0?(b.parentNode.insertBefore(a,b),b.parentNode===d&&(e+=k)):c>=b.nodeValue.length?b.nextSibling?b.parentNode.insertBefore(a,b.nextSibling):b.parentNode.appendChild(a):(i=c>0?b.splitText(c):b,b.parentNode.insertBefore(a,i),b===d&&(d=i,e-=c)));g?this.setStartBefore(g).setEndAfter(f):this.selectNode(a);if(this.compareBoundaryPoints(ca,this.cloneRange().setEnd(d,e))>=1)return this;return this.setEnd(d,e)},surroundContents:function(a){a.appendChild(this.extractContents());
return this.insertNode(a).selectNode(a)},isControl:function(){var a=this.startContainer,b=this.startOffset,c=this.endContainer,d=this.endOffset;return a.nodeType==1&&a===c&&b+1===d&&f(a.childNodes[b]).isControl()},get:function(a){var b=this.doc;if(!l){b=b.createRange();try{b.setStart(this.startContainer,this.startOffset),b.setEnd(this.endContainer,this.endOffset)}catch(c){}return b}if(a&&this.isControl())return b=b.body.createControlRange(),b.addElement(this.startContainer.childNodes[this.startOffset]),
b;a=this.cloneRange().down();b=b.body.createTextRange();b.setEndPoint("StartToStart",rb(a.startContainer,a.startOffset));b.setEndPoint("EndToStart",rb(a.endContainer,a.endOffset));return b},html:function(){return f(this.cloneContents()).outer()},down:function(){function a(a,d,e){if(a.nodeType==1&&(a=f(a).children(),a.length!==0)){var g,h,i,k;d>0&&(g=a.eq(d-1));d<a.length&&(h=a.eq(d));if(g&&g.type==3)i=g[0],k=i.nodeValue.length;h&&h.type==3&&(i=h[0],k=0);i&&(e?b.setStart(i,k):b.setEnd(i,k))}}var b=
this;a(b.startContainer,b.startOffset,!0);a(b.endContainer,b.endOffset,!1);return b},up:function(){function a(a,d,e){a.nodeType==3&&(d===0?e?b.setStartBefore(a):b.setEndBefore(a):d==a.nodeValue.length&&(e?b.setStartAfter(a):b.setEndAfter(a)))}var b=this;a(b.startContainer,b.startOffset,!0);a(b.endContainer,b.endOffset,!1);return b},enlarge:function(a){function b(b,e,g){b=f(b);if(!(b.type==3||Ea[b.name]||!a&&b.isBlock()))if(e===0){for(;!b.prev();){e=b.parent();if(!e||Ea[e.name]||!a&&e.isBlock())break;
b=e}g?c.setStartBefore(b[0]):c.setEndBefore(b[0])}else if(e==b.children().length){for(;!b.next();){e=b.parent();if(!e||Ea[e.name]||!a&&e.isBlock())break;b=e}g?c.setStartAfter(b[0]):c.setEndAfter(b[0])}}var c=this;c.up();b(c.startContainer,c.startOffset,!0);b(c.endContainer,c.endOffset,!1);return c},shrink:function(){for(var a,b=this.collapsed;this.startContainer.nodeType==1&&(a=this.startContainer.childNodes[this.startOffset])&&a.nodeType==1&&!f(a).isSingle();)this.setStart(a,0);if(b)return this.collapse(b);
for(;this.endContainer.nodeType==1&&this.endOffset>0&&(a=this.endContainer.childNodes[this.endOffset-1])&&a.nodeType==1&&!f(a).isSingle();)this.setEnd(a,a.childNodes.length);return this},createBookmark:function(a){var b,c=f('<span style="display:none;"></span>',this.doc)[0];c.id="__kindeditor_bookmark_start_"+Ob++ +"__";if(!this.collapsed)b=c.cloneNode(!0),b.id="__kindeditor_bookmark_end_"+Ob++ +"__";b&&this.cloneRange().collapse(!1).insertNode(b).setEndBefore(b);this.insertNode(c).setStartAfter(c);
return{start:a?"#"+c.id:c,end:b?a?"#"+b.id:b:null}},moveToBookmark:function(a){var b=this.doc,c=f(a.start,b),a=a.end?f(a.end,b):null;if(!c||c.length<1)return this;this.setStartBefore(c[0]);c.remove();a&&a.length>0?(this.setEndBefore(a[0]),a.remove()):this.collapse(!0);return this},dump:function(){console.log("--------------------");console.log(this.startContainer.nodeType==3?this.startContainer.nodeValue:this.startContainer,this.startOffset);console.log(this.endContainer.nodeType==3?this.endContainer.nodeValue:
this.endContainer,this.endOffset)}});f.RangeClass=L;f.range=Na;f.START_TO_START=ka;f.START_TO_END=ja;f.END_TO_END=ca;f.END_TO_START=la;E(na,{init:function(a){var b=a.doc;this.doc=b;this.win=U(b);this.sel=Oa(b);this.range=a},selection:function(a){var b=this.doc,c;c=Oa(b);var d;try{d=c.rangeCount>0?c.getRangeAt(0):c.createRange()}catch(e){}c=l&&(!d||!d.item&&d.parentElement().ownerDocument!==b)?null:d;this.sel=Oa(b);if(c)return this.range=Na(c),f(this.range.startContainer).name=="html"&&this.range.selectNodeContents(b.body).collapse(!1),
this;a&&this.range.selectNodeContents(b.body).collapse(!1);return this},select:function(a){var a=j(a,!0),b=this.sel,c=this.range.cloneRange().shrink(),d=c.startContainer,e=c.startOffset,g=T(d),h=this.win,i,k=!1;if(a&&d.nodeType==1&&c.collapsed){if(l){b=f("<span>&nbsp;</span>",g);c.insertNode(b[0]);i=g.body.createTextRange();try{i.moveToElementText(b[0])}catch(n){}i.collapse(!1);i.select();b.remove();h.focus();return this}if(W&&(a=d.childNodes,f(d).isInline()||e>0&&f(a[e-1]).isInline()||a[e]&&f(a[e]).isInline()))c.insertNode(g.createTextNode("\u200b")),
k=!0}if(l)try{i=c.get(!0),i.select()}catch(r){}else k&&c.collapse(!1),i=c.get(!0),b.removeAllRanges(),b.addRange(i),g!==document&&(c=f(i.endContainer).pos(),h.scrollTo(c.x,c.y));h.focus();return this},wrap:function(a){var b=this.range,c;c=f(a,this.doc);if(b.collapsed)return b.shrink(),b.insertNode(c[0]).selectNodeContents(c[0]),this;if(c.isBlock()){for(var d=a=c.clone(!0);d.first();)d=d.first();d.append(b.extractContents());b.insertNode(a[0]).selectNode(a[0]);return this}b.enlarge();var e=b.createBookmark(),
a=b.commonAncestor(),g=!1;f(a).scan(function(a){if(!g&&a==e.start)g=!0;else if(g){if(a==e.end)return!1;var b=f(a),d;a:{for(d=b;d&&d.name!="body";){if(Ha[d.name]||d.name=="div"&&d.hasClass("ke-script")){d=!0;break a}d=d.parent()}d=!1}if(!d&&b.type==3&&B(a.nodeValue).length>0){for(var n;(n=b.parent())&&n.isStyle()&&n.children().length==1;)b=n;n=c;n=n.clone(!0);if(b.type==3)Ra(n).append(b.clone(!1)),b.replaceWith(n);else{for(var a=b,j;(j=b.first())&&j.children().length==1;)b=j;j=b.first();for(b=b.doc.createDocumentFragment();j;)b.appendChild(j[0]),
j=j.next();j=a.clone(!0);d=Ra(j);for(var p=j,l=!1;n;){for(;p;)p.name===n.name&&(Wb(p,n.attr(),n.css()),l=!0),p=p.first();l||d.append(n.clone(!1));l=!1;n=n.first()}n=j;b.firstChild&&Ra(n).append(b);a.replaceWith(n)}}}});b.moveToBookmark(e);return this},split:function(a,b){for(var c=this.range,d=c.doc,e=c.cloneRange().collapse(a),g=e.startContainer,h=e.startOffset,i=g.nodeType==3?g.parentNode:g,k=!1,n;i&&i.parentNode;){n=f(i);if(b){if(!n.isStyle())break;if(!Pa(n,b))break}else if(Ea[n.name])break;k=
!0;i=i.parentNode}if(k)d=d.createElement("span"),c.cloneRange().collapse(!a).insertNode(d),a?e.setStartBefore(i.firstChild).setEnd(g,h):e.setStart(g,h).setEndAfter(i.lastChild),g=e.extractContents(),h=g.firstChild,k=g.lastChild,a?(e.insertNode(g),c.setStartAfter(k).setEndBefore(d)):(i.appendChild(g),c.setStartBefore(d).setEndBefore(h)),e=d.parentNode,e==c.endContainer&&(i=f(d).prev(),g=f(d).next(),i&&g&&i.type==3&&g.type==3?c.setEnd(i[0],i[0].nodeValue.length):a||c.setEnd(c.endContainer,c.endOffset-
1)),e.removeChild(d);return this},remove:function(a){var b=this.doc,c=this.range;c.enlarge();if(c.startOffset===0){for(var d=f(c.startContainer),e;(e=d.parent())&&e.isStyle()&&e.children().length==1;)d=e;c.setStart(d[0],0);d=f(c.startContainer);d.isBlock()&&Qa(d,a);(d=d.parent())&&d.isBlock()&&Qa(d,a)}if(c.collapsed){this.split(!0,a);b=c.startContainer;d=c.startOffset;if(d>0&&(e=f(b.childNodes[d-1]))&&da(e))e.remove(),c.setStart(b,d-1);(d=f(b.childNodes[d]))&&da(d)&&d.remove();da(b)&&(c.startBefore(b),
b.remove());c.collapse(!0);return this}this.split(!0,a);this.split(!1,a);var g=b.createElement("span"),h=b.createElement("span");c.cloneRange().collapse(!1).insertNode(h);c.cloneRange().collapse(!0).insertNode(g);var i=[],k=!1;f(c.commonAncestor()).scan(function(a){if(!k&&a==g)k=!0;else{if(a==h)return!1;k&&i.push(a)}});f(g).remove();f(h).remove();b=c.startContainer;d=c.startOffset;e=c.endContainer;var n=c.endOffset;if(d>0){var j=f(b.childNodes[d-1]);j&&da(j)&&(j.remove(),c.setStart(b,d-1),b==e&&c.setEnd(e,
n-1));if((d=f(b.childNodes[d]))&&da(d))d.remove(),b==e&&c.setEnd(e,n-1)}(b=f(e.childNodes[c.endOffset]))&&da(b)&&b.remove();b=c.createBookmark(!0);m(i,function(b,c){Qa(f(c),a)});c.moveToBookmark(b);return this},commonNode:function(a){function b(b){for(var c=b;b;){if(Pa(f(b),a))return f(b);b=b.parentNode}for(;c&&(c=c.lastChild);)if(Pa(f(c),a))return f(c);return null}var c=this.range,d=c.endContainer,c=c.endOffset,e=d.nodeType==3||c===0?d:d.childNodes[c-1],g=b(e);if(g)return g;if(e.nodeType==1||d.nodeType==
3&&c===0)if(d=f(e).prev())return b(d);return null},commonAncestor:function(a){function b(b){for(;b;){if(b.nodeType==1&&b.tagName.toLowerCase()===a)return b;b=b.parentNode}return null}var c=this.range,d=c.startContainer,e=c.startOffset,g=c.endContainer,c=c.endOffset,g=g.nodeType==3||c===0?g:g.childNodes[c-1],d=b(d.nodeType==3||e===0?d:d.childNodes[e-1]),e=b(g);if(d&&e&&d===e)return f(d);return null},state:function(a){var b=this.doc,c=!1;try{c=b.queryCommandState(a)}catch(d){}return c},val:function(a){var b=
this.doc,a=a.toLowerCase(),c="";if(a==="fontfamily"||a==="fontname")return c=tb(b,"fontname"),c=c.replace(/['"]/g,""),c.toLowerCase();if(a==="formatblock"){c=tb(b,a);if(c===""&&(a=this.commonNode({"h1,h2,h3,h4,h5,h6,p,div,pre,address":"*"})))c=a.name;c==="Normal"&&(c="p");return c.toLowerCase()}if(a==="fontsize")return(a=this.commonNode({"*":".font-size"}))&&(c=a.css("font-size")),c.toLowerCase();if(a==="forecolor")return(a=this.commonNode({"*":".color"}))&&(c=a.css("color")),c=va(c),c===""&&(c="default"),
c.toLowerCase();if(a==="hilitecolor")return(a=this.commonNode({"*":".background-color"}))&&(c=a.css("background-color")),c=va(c),c===""&&(c="default"),c.toLowerCase();return c},toggle:function(a,b){this.commonNode(b)?this.remove(b):this.wrap(a);return this.select()},bold:function(){return this.toggle("<strong></strong>",{span:".font-weight=bold",strong:"*",b:"*"})},italic:function(){return this.toggle("<em></em>",{span:".font-style=italic",em:"*",i:"*"})},underline:function(){return this.toggle("<u></u>",
{span:".text-decoration=underline",u:"*"})},strikethrough:function(){return this.toggle("<s></s>",{span:".text-decoration=line-through",s:"*"})},forecolor:function(a){return this.toggle('<span style="color:'+a+';"></span>',{span:".color="+a,font:"color"})},hilitecolor:function(a){return this.toggle('<span style="background-color:'+a+';"></span>',{span:".background-color="+a})},fontsize:function(a){return this.toggle('<span style="font-size:'+a+';"></span>',{span:".font-size="+a,font:"size"})},fontname:function(a){return this.fontfamily(a)},
fontfamily:function(a){return this.toggle('<span style="font-family:'+a+';"></span>',{span:".font-family="+a,font:"face"})},removeformat:function(){var a={"*":".font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent"};m(Lb,function(b){a[b]="*"});this.remove(a);return this.select()},inserthtml:function(a,b){function c(a,b){var b='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+b,c=a.get();c.item?c.item(0).outerHTML=b:
c.pasteHTML(b);var d=a.doc.getElementById("__kindeditor_temp_tag__");d.parentNode.removeChild(d);c=sb(c);a.setEnd(c.endContainer,c.endOffset);a.collapse(!1);e.select(!1)}function d(a,b){var c=a.doc,d=c.createDocumentFragment();f("@"+b,c).each(function(){d.appendChild(this)});a.deleteContents();a.insertNode(d);a.collapse(!1);e.select(!1)}var e=this,g=e.range;if(a==="")return e;if(l&&b){try{c(g,a)}catch(h){d(g,a)}return e}d(g,a);return e},hr:function(){return this.inserthtml("<hr />")},print:function(){this.win.print();
return this},insertimage:function(a,b,c,d,e,g){b=j(b,"");j(e,0);a='<img src="'+C(a)+'" data-ke-src="'+C(a)+'" ';c&&(a+='width="'+C(c)+'" ');d&&(a+='height="'+C(d)+'" ');b&&(a+='title="'+C(b)+'" ');g&&(a+='align="'+C(g)+'" ');a+='alt="'+C(b)+'" ';a+="/>";return this.inserthtml(a)},createlink:function(a,b){var c=this.doc,d=this.range;this.select();var e=this.commonNode({a:"*"});e&&!d.isControl()&&(d.selectNode(e.get()),this.select());e='<a href="'+C(a)+'" data-ke-src="'+C(a)+'" ';b&&(e+=' target="'+
C(b)+'"');if(d.collapsed)return e+=">"+C(a)+"</a>",this.inserthtml(e);if(d.isControl()){var g=f(d.startContainer.childNodes[d.startOffset]);e+="></a>";g.after(f(e,c));g.next().append(g);d.selectNode(g[0]);return this.select()}P(c,"createlink","__kindeditor_temp_url__");f('a[href="__kindeditor_temp_url__"]',c).each(function(){f(this).attr("href",a).attr("data-ke-src",a);b?f(this).attr("target",b):f(this).removeAttr("target")});return this},unlink:function(){var a=this.doc,b=this.range;this.select();
if(b.collapsed){var c=this.commonNode({a:"*"});c&&(b.selectNode(c.get()),this.select());P(a,"unlink",null);W&&f(b.startContainer).name==="img"&&(a=f(b.startContainer).parent(),a.name==="a"&&a.remove(!0))}else P(a,"unlink",null);return this}});m("formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript".split(","),function(a,b){na.prototype[b]=function(a){this.select();P(this.doc,b,a);(!l||N(b,"formatblock,selectall,insertorderedlist,insertunorderedlist".split(","))>=
0)&&this.selection();return this}});m("cut,copy,paste".split(","),function(a,b){na.prototype[b]=function(){if(!this.doc.queryCommandSupported(b))throw"not supported";this.select();P(this.doc,b,null);return this}});f.CmdClass=na;f.cmd=xb;E(R,{init:function(a){var b=this;b.name=a.name||"";b.doc=a.doc||document;b.win=U(b.doc);b.x=s(a.x);b.y=s(a.y);b.z=a.z;b.width=s(a.width);b.height=s(a.height);b.div=f('<div style="display:block;"></div>');b.options=a;b._alignEl=a.alignEl;b.width&&b.div.css("width",
b.width);b.height&&b.div.css("height",b.height);b.z&&b.div.css({position:"absolute",left:b.x,top:b.y,"z-index":b.z});b.z&&(b.x===o||b.y===o)&&b.autoPos(b.width,b.height);a.cls&&b.div.addClass(a.cls);a.shadowMode&&b.div.addClass("ke-shadow");a.css&&b.div.css(a.css);a.src?f(a.src).replaceWith(b.div):f(b.doc.body).append(b.div);a.html&&b.div.html(a.html);if(a.autoScroll)if(l&&z<7||O){var c=ba();f(b.win).bind("scroll",function(){var a=ba(),e=a.x-c.x,a=a.y-c.y;b.pos(t(b.x)+e,t(b.y)+a,!1)})}else b.div.css("position",
"fixed")},pos:function(a,b,c){c=j(c,!0);if(a!==null&&(a=a<0?0:s(a),this.div.css("left",a),c))this.x=a;if(b!==null&&(b=b<0?0:s(b),this.div.css("top",b),c))this.y=b;return this},autoPos:function(a,b){var c=t(a)||0,d=t(b)||0,e=ba();if(this._alignEl){var g=f(this._alignEl),h=g.pos(),c=Q(g[0].clientWidth/2-c/2),d=Q(g[0].clientHeight/2-d/2);x=c<0?h.x:h.x+c;y=d<0?h.y:h.y+d}else h=G(this.doc),x=Q(e.x+(h.clientWidth-c)/2),y=Q(e.y+(h.clientHeight-d)/2);l&&z<7||O||(x-=e.x,y-=e.y);return this.pos(x,y)},remove:function(){var a=
this;(l&&z<7||O)&&f(a.win).unbind("scroll");a.div.remove();m(a,function(b){a[b]=null});return this},show:function(){this.div.show();return this},hide:function(){this.div.hide();return this},draggable:function(a){var b=this,a=a||{};a.moveEl=b.div;a.moveFn=function(a,d,e,g,f,i){if((a+=f)<0)a=0;if((d+=i)<0)d=0;b.pos(a,d)};Sa(a);return b}});f.WidgetClass=R;f.widget=Ua;var Va="";if(q=document.getElementsByTagName("html"))Va=q[0].dir;E(pa,R,{init:function(a){function b(){var b=Ta(c.iframe);b.open();if(i)b.domain=
document.domain;b.write(Xb(d,e,g,h));b.close();c.win=c.iframe[0].contentWindow;c.doc=b;var k=xb(b);c.afterChange(function(){k.selection()});W&&f(b).click(function(a){f(a.target).name==="img"&&(k.selection(!0),k.range.selectNode(a.target),k.select())});if(l)c._mousedownHandler=function(){var a=k.range.cloneRange();a.shrink();a.isControl()&&c.blur()},f(document).mousedown(c._mousedownHandler),f(b).keydown(function(a){if(a.which==8){k.selection();var b=k.range;b.isControl()&&(b.collapse(!0),f(b.startContainer.childNodes[b.startOffset]).remove(),
a.preventDefault())}});c.cmd=k;c.html(oa(c.srcElement));l?(b.body.disabled=!0,b.body.contentEditable=!0,b.body.removeAttribute("disabled")):b.designMode="on";a.afterCreate&&a.afterCreate.call(c)}var c=this;pa.parent.init.call(c,a);c.srcElement=f(a.srcElement);c.div.addClass("ke-edit");c.designMode=j(a.designMode,!0);c.beforeGetHtml=a.beforeGetHtml;c.beforeSetHtml=a.beforeSetHtml;c.afterSetHtml=a.afterSetHtml;var d=j(a.themesPath,""),e=a.bodyClass,g=a.cssPath,h=a.cssData,i=location.host.replace(/:\d+/,
"")!==document.domain,k="document.open();"+(i?'document.domain="'+document.domain+'";':"")+"document.close();",k=l?' src="javascript:void(function(){'+encodeURIComponent(k)+'}())"':"";c.iframe=f('<iframe class="ke-edit-iframe" hidefocus="true" frameborder="0"'+k+"></iframe>").css("width","100%");c.textarea=f('<textarea class="ke-edit-textarea" hidefocus="true"></textarea>').css("width","100%");c.width&&c.setWidth(c.width);c.height&&c.setHeight(c.height);c.designMode?c.textarea.hide():c.iframe.hide();
i&&c.iframe.bind("load",function(){c.iframe.unbind("load");l?b():setTimeout(b,0)});c.div.append(c.iframe);c.div.append(c.textarea);c.srcElement.hide();!i&&b()},setWidth:function(a){this.div.css("width",s(a));return this},setHeight:function(a){a=s(a);this.div.css("height",a);this.iframe.css("height",a);if(l&&z<8||O)a=s(t(a)-2);this.textarea.css("height",a);return this},remove:function(){var a=this.doc;f(a.body).unbind();f(a).unbind();f(this.win).unbind();this._mousedownHandler&&f(document).unbind("mousedown",
this._mousedownHandler);oa(this.srcElement,this.html());this.srcElement.show();a.write("");this.iframe.unbind();this.textarea.unbind();pa.parent.remove.call(this)},html:function(a,b){var c=this.doc;if(this.designMode){c=c.body;if(a===o)return a=b?"<!doctype html><html>"+c.parentNode.innerHTML+"</html>":c.innerHTML,this.beforeGetHtml&&(a=this.beforeGetHtml(a)),ea&&a=="<br />"&&(a=""),a;this.beforeSetHtml&&(a=this.beforeSetHtml(a));l&&z>=9&&(a=a.replace(/(<.*?checked=")checked(".*>)/ig,"$1$2"));f(c).html(a);
this.afterSetHtml&&this.afterSetHtml();return this}if(a===o)return this.textarea.val();this.textarea.val(a);return this},design:function(a){if(a===o?!this.designMode:a){if(!this.designMode)a=this.html(),this.designMode=!0,this.html(a),this.textarea.hide(),this.iframe.show()}else if(this.designMode)a=this.html(),this.designMode=!1,this.html(a),this.iframe.hide(),this.textarea.show();return this.focus()},focus:function(){this.designMode?this.win.focus():this.textarea[0].focus();return this},blur:function(){if(l){var a=
f('<input type="text" style="float:left;width:0;height:0;padding:0;margin:0;border:0;" value="" />',this.div);this.div.append(a);a[0].focus();a.remove()}else this.designMode?this.win.blur():this.textarea[0].blur();return this},afterChange:function(a){function b(b){setTimeout(function(){a(b)},1)}var c=this.doc,d=c.body;f(c).keyup(function(b){!b.ctrlKey&&!b.altKey&&ab[b.which]&&a(b)});f(c).mouseup(a).contextmenu(a);f(this.win).blur(a);f(d).bind("paste",b);f(d).bind("cut",b);return this}});f.EditClass=
pa;f.edit=yb;f.iframeDoc=Ta;E(Aa,R,{init:function(a){function b(a){a=f(a);if(a.hasClass("ke-outline"))return a;if(a.hasClass("ke-toolbar-icon"))return a.parent()}function c(a,c){var d=b(a.target);if(d&&!d.hasClass("ke-disabled")&&!d.hasClass("ke-selected"))d[c]("ke-on")}var d=this;Aa.parent.init.call(d,a);d.disableMode=j(a.disableMode,!1);d.noDisableItemMap=u(j(a.noDisableItems,[]));d._itemMap={};d.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",function(a){a.preventDefault()}).attr("unselectable",
"on");d.div.mouseover(function(a){c(a,"addClass")}).mouseout(function(a){c(a,"removeClass")}).click(function(a){var c=b(a.target);c&&!c.hasClass("ke-disabled")&&d.options.click.call(this,a,c.attr("data-name"))})},get:function(a){if(this._itemMap[a])return this._itemMap[a];return this._itemMap[a]=f("span.ke-icon-"+a,this.div).parent()},select:function(a){zb.call(this,a,function(a){a.addClass("ke-selected")});return self},unselect:function(a){zb.call(this,a,function(a){a.removeClass("ke-selected").removeClass("ke-on")});
return self},enable:function(a){if(a=a.get?a:this.get(a))a.removeClass("ke-disabled"),a.opacity(1);return this},disable:function(a){if(a=a.get?a:this.get(a))a.removeClass("ke-selected").addClass("ke-disabled"),a.opacity(0.5);return this},disableAll:function(a,b){var c=this,d=c.noDisableItemMap;b&&(d=u(b));(a===o?!c.disableMode:a)?(f("span.ke-outline",c.div).each(function(){var a=f(this),b=a[0].getAttribute("data-name",2);d[b]||c.disable(a)}),c.disableMode=!0):(f("span.ke-outline",c.div).each(function(){var a=
f(this),b=a[0].getAttribute("data-name",2);d[b]||c.enable(a)}),c.disableMode=!1);return c}});f.ToolbarClass=Aa;f.toolbar=Ab;E(qa,R,{init:function(a){a.z=a.z||811213;qa.parent.init.call(this,a);this.centerLineMode=j(a.centerLineMode,!0);this.div.addClass("ke-menu").bind("click,mousedown",function(a){a.stopPropagation()}).attr("unselectable","on")},addItem:function(a){if(a.title==="-")this.div.append(f('<div class="ke-menu-separator"></div>'));else{var b=f('<div class="ke-menu-item" unselectable="on"></div>'),
c=f('<div class="ke-inline-block ke-menu-item-left"></div>'),d=f('<div class="ke-inline-block ke-menu-item-right"></div>'),e=s(a.height),g=j(a.iconClass,"");this.div.append(b);e&&(b.css("height",e),d.css("line-height",e));var h;this.centerLineMode&&(h=f('<div class="ke-inline-block ke-menu-item-center"></div>'),e&&h.css("height",e));b.mouseover(function(){f(this).addClass("ke-menu-item-on");h&&h.addClass("ke-menu-item-center-on")}).mouseout(function(){f(this).removeClass("ke-menu-item-on");h&&h.removeClass("ke-menu-item-center-on")}).click(function(b){a.click.call(f(this));
b.stopPropagation()}).append(c);h&&b.append(h);b.append(d);a.checked&&(g="ke-icon-checked");g!==""&&c.html('<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url '+g+'"></span>');d.html(a.title);return this}},remove:function(){this.options.beforeRemove&&this.options.beforeRemove.call(this);f(".ke-menu-item",this.div[0]).unbind();qa.parent.remove.call(this);return this}});f.MenuClass=qa;f.menu=Wa;E(ra,R,{init:function(a){a.z=a.z||811213;ra.parent.init.call(this,a);var b=a.colors||[["#E53333",
"#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]];this.selectedColor=(a.selectedColor||"").toLowerCase();this._cells=[];this.div.addClass("ke-colorpicker").bind("click,mousedown",function(a){a.stopPropagation()}).attr("unselectable","on");a=this.doc.createElement("table");this.div.append(a);a.className="ke-colorpicker-table";
a.cellPadding=0;a.cellSpacing=0;a.border=0;var c=a.insertRow(0),d=c.insertCell(0);d.colSpan=b[0].length;this._addAttr(d,"","ke-colorpicker-cell-top");for(var e=0;e<b.length;e++)for(var c=a.insertRow(e+1),g=0;g<b[e].length;g++)d=c.insertCell(g),this._addAttr(d,b[e][g],"ke-colorpicker-cell")},_addAttr:function(a,b,c){var d=this,a=f(a).addClass(c);d.selectedColor===b.toLowerCase()&&a.addClass("ke-colorpicker-cell-selected");a.attr("title",b||d.options.noColor);a.mouseover(function(){f(this).addClass("ke-colorpicker-cell-on")});
a.mouseout(function(){f(this).removeClass("ke-colorpicker-cell-on")});a.click(function(a){a.stop();d.options.click.call(f(this),b)});b?a.append(f('<div class="ke-colorpicker-cell-color" unselectable="on"></div>').css("background-color",b)):a.html(d.options.noColor);f(a).attr("unselectable","on");d._cells.push(a)},remove:function(){m(this._cells,function(){this.unbind()});ra.parent.remove.call(this);return this}});f.ColorPickerClass=ra;f.colorpicker=Bb;E(Xa,{init:function(a){var b=f(a.button),c=a.fieldName||
"file",d=a.url||"",e=b.val(),g=a.extraParams||{},h=b[0].className||"",i=a.target||"kindeditor_upload_iframe_"+(new Date).getTime();a.afterError=a.afterError||function(a){alert(a)};var k=[],j;for(j in g)k.push('<input type="hidden" name="'+j+'" value="'+g[j]+'" />');c=['<div class="ke-inline-block '+h+'">',a.target?"":'<iframe name="'+i+'" style="display:none;"></iframe>',a.form?'<div class="ke-upload-area">':'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="'+
i+'" action="'+d+'">','<span class="ke-button-common">',k.join(""),'<input type="button" class="ke-button-common ke-button" value="'+e+'" />',"</span>",'<input type="file" class="ke-upload-file" name="'+c+'" tabindex="-1" />',a.form?"</div>":"</form>","</div>"].join("");c=f(c,b.doc);b.hide();b.before(c);this.div=c;this.button=b;this.iframe=a.target?f('iframe[name="'+i+'"]'):f("iframe",c);this.form=a.form?f(a.form):f("form",c);b=a.width||f(".ke-button-common",c).width();this.fileBox=f(".ke-upload-file",
c).width(b);this.options=a},submit:function(){var a=this,b=a.iframe;b.bind("load",function(){b.unbind();var c=document.createElement("form");a.fileBox.before(c);f(c).append(a.fileBox);c.reset();f(c).remove(!0);var c=f.iframeDoc(b),d=c.getElementsByTagName("pre")[0],e="",g,e=d?d.innerHTML:c.body.innerHTML,e=fa(e);b[0].src="javascript:false";try{g=f.json(e)}catch(h){a.options.afterError.call(a,"<!doctype html><html>"+c.body.parentNode.innerHTML+"</html>")}g&&a.options.afterUpload.call(a,g)});a.form[0].submit();
return a},remove:function(){this.fileBox&&this.fileBox.unbind();this.iframe.remove();this.div.remove();this.button.show();return this}});f.UploadButtonClass=Xa;f.uploadbutton=function(a){return new Xa(a)};E(sa,R,{init:function(a){var b=j(a.shadowMode,!0);a.z=a.z||811213;a.shadowMode=!1;a.autoScroll=j(a.autoScroll,!0);sa.parent.init.call(this,a);var c=a.title,d=f(a.body,this.doc),e=a.previewBtn,g=a.yesBtn,h=a.noBtn,i=a.closeBtn,k=j(a.showMask,!0);this.div.addClass("ke-dialog").bind("click,mousedown",
function(a){a.stopPropagation()});var n=f('<div class="ke-dialog-content"></div>').appendTo(this.div);l&&z<7?this.iframeMask=f('<iframe src="about:blank" class="ke-dialog-shadow"></iframe>').appendTo(this.div):b&&f('<div class="ke-dialog-shadow"></div>').appendTo(this.div);b=f('<div class="ke-dialog-header"></div>');n.append(b);b.html(c);this.closeIcon=f('<span class="ke-dialog-icon-close" title="'+i.name+'"></span>').click(i.click);b.append(this.closeIcon);this.draggable({clickEl:b,beforeDrag:a.beforeDrag});
a=f('<div class="ke-dialog-body"></div>');n.append(a);a.append(d);var o=f('<div class="ke-dialog-footer"></div>');(e||g||h)&&n.append(o);m([{btn:e,name:"preview"},{btn:g,name:"yes"},{btn:h,name:"no"}],function(){if(this.btn){var a=this.btn,a=a||{},b=a.name||"",c=f('<span class="ke-button-common ke-button-outer" title="'+b+'"></span>'),b=f('<input class="ke-button-common ke-button" type="button" value="'+b+'" />');a.click&&b.click(a.click);c.append(b);c.addClass("ke-dialog-"+this.name);o.append(c)}});
this.height&&a.height(t(this.height)-b.height()-o.height());this.div.width(this.div.width());this.div.height(this.div.height());this.mask=null;if(k)d=G(this.doc),this.mask=Ua({x:0,y:0,z:this.z-1,cls:"ke-dialog-mask",width:Math.max(d.scrollWidth,d.clientWidth),height:Math.max(d.scrollHeight,d.clientHeight)});this.autoPos(this.div.width(),this.div.height());this.footerDiv=o;this.bodyDiv=a;this.headerDiv=b;this.isLoading=!1},setMaskIndex:function(a){this.mask.div.css("z-index",a)},showLoading:function(a){var a=
j(a,""),b=this.bodyDiv;this.loading=f('<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:'+Math.round(b.height()/3)+'px;">'+a+"</div></div>").width(b.width()).height(b.height()).css("top",this.headerDiv.height()+"px");b.css("visibility","hidden").after(this.loading);this.isLoading=!0;return this},hideLoading:function(){this.loading&&this.loading.remove();this.bodyDiv.css("visibility","visible");this.isLoading=!1;return this},remove:function(){this.options.beforeRemove&&
this.options.beforeRemove.call(this);this.mask&&this.mask.remove();this.iframeMask&&this.iframeMask.remove();this.closeIcon.unbind();f("input",this.div).unbind();f("button",this.div).unbind();this.footerDiv.unbind();this.bodyDiv.unbind();this.headerDiv.unbind();f("iframe",this.div).each(function(){f(this).remove()});sa.parent.remove.call(this);return this}});f.DialogClass=sa;f.dialog=Cb;f.tabs=function(a){var b=Ua(a),c=b.remove,d=a.afterSelect,a=b.div,e=[];a.addClass("ke-tabs").bind("contextmenu,mousedown,mousemove",
function(a){a.preventDefault()});var g=f('<ul class="ke-tabs-ul ke-clearfix"></ul>');a.append(g);b.add=function(a){var b=f('<li class="ke-tabs-li">'+a.title+"</li>");b.data("tab",a);e.push(b);g.append(b)};b.selectedIndex=0;b.select=function(a){b.selectedIndex=a;m(e,function(c,d){d.unbind();c===a?(d.addClass("ke-tabs-li-selected"),f(d.data("tab").panel).show("")):(d.removeClass("ke-tabs-li-selected").removeClass("ke-tabs-li-on").mouseover(function(){f(this).addClass("ke-tabs-li-on")}).mouseout(function(){f(this).removeClass("ke-tabs-li-on")}).click(function(){b.select(c)}),
f(d.data("tab").panel).hide())});d&&d.call(b,a)};b.remove=function(){m(e,function(){this.remove()});g.remove();c.call(b)};return b};f.loadScript=Ya;f.loadStyle=Za;f.ajax=function(a,b,c,d,e){var c=c||"GET",e=e||"json",g=A.XMLHttpRequest?new A.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");g.open(c,a,!0);g.onreadystatechange=function(){if(g.readyState==4&&g.status==200&&b){var a=B(g.responseText);e=="json"&&(a=cb(a));b(a)}};if(c=="POST"){var f=[];m(d,function(a,b){f.push(encodeURIComponent(a)+
"="+encodeURIComponent(b))});try{g.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(i){}g.send(f.join("&"))}else g.send(null)};var V={},M={};ta.prototype={lang:function(a){return Gb(a,this.langType)},loadPlugin:function(a,b){var c=this;if(V[a]){if(c._calledPlugins[a])return b&&b.call(c),c;V[a].call(c,KindEditor);b&&b.call(c);c._calledPlugins[a]=!0;return c}if(c.isLoading)return c;c.isLoading=!0;Ya(c.pluginsPath+a+"/"+a+".js?ver="+encodeURIComponent(f.DEBUG?Ca:Da),function(){c.isLoading=
!1;V[a]&&c.loadPlugin(a,b)});return c},handler:function(a,b){var c=this;c._handlers[a]||(c._handlers[a]=[]);if(bb(b))return c._handlers[a].push(b),c;m(c._handlers[a],function(){b=this.call(c,b)});return b},clickToolbar:function(a,b){var c=this,d="clickToolbar"+a;if(b===o){if(c._handlers[d])return c.handler(d);c.loadPlugin(a,function(){c.handler(d)});return c}return c.handler(d,b)},updateState:function(){var a=this;m("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,subscript,superscript,bold,italic,underline,strikethrough".split(","),
function(b,c){a.cmd.state(c)?a.toolbar.select(c):a.toolbar.unselect(c)});return a},addContextmenu:function(a){this._contextmenus.push(a);return this},afterCreate:function(a){return this.handler("afterCreate",a)},beforeRemove:function(a){return this.handler("beforeRemove",a)},beforeGetHtml:function(a){return this.handler("beforeGetHtml",a)},beforeSetHtml:function(a){return this.handler("beforeSetHtml",a)},afterSetHtml:function(a){return this.handler("afterSetHtml",a)},create:function(){function a(){k.height()===
0?setTimeout(a,100):b.resize(d,e,!1)}var b=this,c=b.fullscreenMode;if(b.isCreated)return b;if(b.srcElement.data("kindeditor"))return b;b.srcElement.data("kindeditor","true");c?G().style.overflow="hidden":G().style.overflow="";var d=c?G().clientWidth+"px":b.width,e=c?G().clientHeight+"px":b.height;if(l&&z<8||O)e=s(t(e)+2);var g=b.container=f(b.layout);c?f(document.body).append(g):b.srcElement.before(g);var h=f(".toolbar",g),i=f(".edit",g),k=b.statusbar=f(".statusbar",g);g.removeClass("container").addClass("ke-container ke-container-"+
b.themeType).css("width",d);if(c){g.css({position:"absolute",left:0,top:0,"z-index":811211});if(!ea)b._scrollPos=ba();A.scrollTo(0,0);f(document.body).css({height:"1px",overflow:"hidden"});f(document.body.parentNode).css("overflow","hidden");b._fullscreenExecuted=!0}else b._fullscreenExecuted&&(f(document.body).css({height:"",overflow:""}),f(document.body.parentNode).css("overflow","")),b._scrollPos&&A.scrollTo(b._scrollPos.x,b._scrollPos.y);var j=[];f.each(b.items,function(a,c){c=="|"?j.push('<span class="ke-inline-block ke-separator"></span>'):
c=="/"?j.push('<div class="ke-hr"></div>'):(j.push('<span class="ke-outline" data-name="'+c+'" title="'+b.lang(c)+'" unselectable="on">'),j.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-'+c+'" unselectable="on"></span></span>'))});var h=b.toolbar=Ab({src:h,html:j.join(""),noDisableItems:b.noDisableItems,click:function(a,c){a.stop();if(b.menu){var d=b.menu.name;b.hideMenu();if(d===c)return}b.clickToolbar(c)}}),m=t(e)-h.div.height(),p=b.edit=yb({height:m>0&&t(e)>b.minHeight?m:b.minHeight,
src:i,srcElement:b.srcElement,designMode:b.designMode,themesPath:b.themesPath,bodyClass:b.bodyClass,cssPath:b.cssPath,cssData:b.cssData,beforeGetHtml:function(a){a=b.beforeGetHtml(a);return S(a,b.filterMode?b.htmlTags:null,b.urlType,b.wellFormatMode,b.indentChar)},beforeSetHtml:function(a){a=S(a,b.filterMode?b.htmlTags:null,"",!1);return b.beforeSetHtml(a)},afterSetHtml:function(){b.edit=p=this;b.afterSetHtml()},afterCreate:function(){b.edit=p=this;b.cmd=p.cmd;b._docMousedownFn=function(){b.menu&&
b.hideMenu()};f(p.doc,document).mousedown(b._docMousedownFn);Yb.call(b);Zb.call(b);$b.call(b);ac.call(b);p.afterChange(function(){p.designMode&&(b.updateState(),b.addBookmark(),b.options.afterChange&&b.options.afterChange.call(b))});p.textarea.keyup(function(a){!a.ctrlKey&&!a.altKey&&Nb[a.which]&&b.options.afterChange&&b.options.afterChange.call(b)});b.readonlyMode&&b.readonly();b.isCreated=!0;if(b.initContent==="")b.initContent=b.html();b.afterCreate();b.options.afterCreate&&b.options.afterCreate.call(b)}});
k.removeClass("statusbar").addClass("ke-statusbar").append('<span class="ke-inline-block ke-statusbar-center-icon"></span>').append('<span class="ke-inline-block ke-statusbar-right-icon"></span>');if(b._fullscreenResizeHandler)f(A).unbind("resize",b._fullscreenResizeHandler),b._fullscreenResizeHandler=null;a();c?(b._fullscreenResizeHandler=function(){b.isCreated&&b.resize(G().clientWidth,G().clientHeight,!1)},f(A).bind("resize",b._fullscreenResizeHandler),h.select("fullscreen"),k.first().css("visibility",
"hidden"),k.last().css("visibility","hidden")):(ea&&f(A).bind("scroll",function(){b._scrollPos=ba()}),b.resizeType>0?Sa({moveEl:g,clickEl:k,moveFn:function(a,c,d,e,g,f){e+=f;b.resize(null,e)}}):k.first().css("visibility","hidden"),b.resizeType===2?Sa({moveEl:g,clickEl:k.last(),moveFn:function(a,c,d,e,g,f){d+=g;e+=f;b.resize(d,e)}}):k.last().css("visibility","hidden"));return b},remove:function(){var a=this;if(!a.isCreated)return a;a.beforeRemove();a.srcElement.data("kindeditor","");a.menu&&a.hideMenu();
m(a.dialogs,function(){a.hideDialog()});f(document).unbind("mousedown",a._docMousedownFn);a.toolbar.remove();a.edit.remove();a.statusbar.last().unbind();a.statusbar.unbind();a.container.remove();a.container=a.toolbar=a.edit=a.menu=null;a.dialogs=[];a.isCreated=!1;return a},resize:function(a,b,c){c=j(c,!0);if(a&&(/%/.test(a)||(a=t(a),a=a<this.minWidth?this.minWidth:a),this.container.css("width",s(a)),c))this.width=s(a);if(b&&(b=t(b),editHeight=t(b)-this.toolbar.div.height()-this.statusbar.height(),
editHeight=editHeight<this.minHeight?this.minHeight:editHeight,this.edit.setHeight(editHeight),c))this.height=s(b);return this},select:function(){this.isCreated&&this.cmd.select();return this},html:function(a){if(a===o)return this.isCreated?this.edit.html():oa(this.srcElement);this.isCreated?this.edit.html(a):oa(this.srcElement,a);this.isCreated&&this.cmd.selection();return this},fullHtml:function(){return this.isCreated?this.edit.html(o,!0):""},text:function(a){return a===o?B(this.html().replace(/<(?!img|embed).*?>/ig,
"").replace(/&nbsp;/ig," ")):this.html(C(a))},isEmpty:function(){return B(this.text().replace(/\r\n|\n|\r/,""))===""},isDirty:function(){return B(this.initContent.replace(/\r\n|\n|\r|t/g,""))!==B(this.html().replace(/\r\n|\n|\r|t/g,""))},selectedHtml:function(){return this.isCreated?this.cmd.range.html():""},count:function(a){a=(a||"html").toLowerCase();if(a==="html")return X($a(this.html())).length;if(a==="text")return this.text().replace(/<(?:img|embed).*?>/ig,"K").replace(/\r\n|\n|\r/g,"").length;
return 0},exec:function(a){var a=a.toLowerCase(),b=this.cmd,c=N(a,"selectall,copy,paste,print".split(","))<0;c&&this.addBookmark(!1);b[a].apply(b,Fa(arguments,1));c&&(this.updateState(),this.addBookmark(!1),this.options.afterChange&&this.options.afterChange.call(this));return this},insertHtml:function(a,b){if(!this.isCreated)return this;a=this.beforeSetHtml(a);this.exec("inserthtml",a,b);return this},appendHtml:function(a){this.html(this.html()+a);if(this.isCreated)a=this.cmd,a.range.selectNodeContents(a.doc.body).collapse(!1),
a.select();return this},sync:function(){oa(this.srcElement,this.html());return this},focus:function(){this.isCreated?this.edit.focus():this.srcElement[0].focus();return this},blur:function(){this.isCreated?this.edit.blur():this.srcElement[0].blur();return this},addBookmark:function(a){var a=j(a,!0),b=this.edit,c=b.doc.body,d=$a(c.innerHTML);if(a&&this._undoStack.length>0&&Math.abs(d.length-X(this._undoStack[this._undoStack.length-1].html).length)<this.minChangeSize)return this;b.designMode&&!this._firstAddBookmark?
(b=this.cmd.range,a=b.createBookmark(!0),a.html=$a(c.innerHTML),b.moveToBookmark(a)):a={html:d};this._firstAddBookmark=!1;Hb(this._undoStack,a);return this},undo:function(){return Ib.call(this,this._undoStack,this._redoStack)},redo:function(){return Ib.call(this,this._redoStack,this._undoStack)},fullscreen:function(a){this.fullscreenMode=a===o?!this.fullscreenMode:a;return this.remove().create()},readonly:function(a){var a=j(a,!0),b=this,c=b.edit,d=c.doc;b.designMode?b.toolbar.disableAll(a,[]):m(b.noDisableItems,
function(){b.toolbar[a?"disable":"enable"](this)});l?d.body.contentEditable=!a:d.designMode=a?"off":"on";c.textarea[0].disabled=a},createMenu:function(a){var b=this.toolbar.get(a.name),c=b.pos();a.x=c.x;a.y=c.y+b.height();a.z=this.options.zIndex;a.shadowMode=j(a.shadowMode,this.shadowMode);a.selectedColor!==o?(a.cls="ke-colorpicker-"+this.themeType,a.noColor=this.lang("noColor"),this.menu=Bb(a)):(a.cls="ke-menu-"+this.themeType,a.centerLineMode=!1,this.menu=Wa(a));return this.menu},hideMenu:function(){this.menu.remove();
this.menu=null;return this},hideContextmenu:function(){this.contextmenu.remove();this.contextmenu=null;return this},createDialog:function(a){var b=this;a.z=b.options.zIndex;a.shadowMode=j(a.shadowMode,b.shadowMode);a.closeBtn=j(a.closeBtn,{name:b.lang("close"),click:function(){b.hideDialog();l&&b.cmd&&b.cmd.select()}});a.noBtn=j(a.noBtn,{name:b.lang(a.yesBtn?"no":"close"),click:function(){b.hideDialog();l&&b.cmd&&b.cmd.select()}});if(b.dialogAlignType!="page")a.alignEl=b.container;a.cls="ke-dialog-"+
b.themeType;if(b.dialogs.length>0){var c=b.dialogs[b.dialogs.length-1];b.dialogs[0].setMaskIndex(c.z+2);a.z=c.z+3;a.showMask=!1}a=Cb(a);b.dialogs.push(a);return a},hideDialog:function(){this.dialogs.length>0&&this.dialogs.pop().remove();this.dialogs.length>0&&this.dialogs[0].setMaskIndex(this.dialogs[this.dialogs.length-1].z-1);return this},errorDialog:function(a){var b=this.createDialog({width:750,title:this.lang("uploadError"),body:'<div style="padding:10px 20px;"><iframe frameborder="0" style="width:708px;height:400px;"></iframe></div>'}),
b=f("iframe",b.div),c=f.iframeDoc(b);c.open();c.write(a);c.close();f(c.body).css("background-color","#FFF");b[0].contentWindow.focus();return this}};_instances=[];f.remove=function(a){Kb(a,function(a){this.remove();_instances.splice(a,1)})};f.sync=function(a){Kb(a,function(){this.sync()})};l&&z<7&&P(document,"BackgroundImageCache",!0);f.EditorClass=ta;f.editor=function(a){return new ta(a)};f.create=Jb;f.instances=_instances;f.plugin=Eb;f.lang=Gb;Eb("core",function(a){var b=this,c={undo:"Z",redo:"Y",
bold:"B",italic:"I",underline:"U",print:"P",selectall:"A"};b.afterSetHtml(function(){b.options.afterChange&&b.options.afterChange.call(b)});b.afterCreate(function(){if(b.syncType=="form"){for(var c=a(b.srcElement),d=!1;c=c.parent();)if(c.name=="form"){d=!0;break}if(d){c.bind("submit",function(){b.sync();a(A).bind("unload",function(){b.edit.textarea.remove()})});var f=a('[type="reset"]',c);f.click(function(){b.html(b.initContent);b.cmd.selection()});b.beforeRemove(function(){c.unbind();f.unbind()})}}});
b.clickToolbar("source",function(){b.edit.designMode?(b.toolbar.disableAll(!0),b.edit.design(!1),b.toolbar.select("source")):(b.toolbar.disableAll(!1),b.edit.design(!0),b.toolbar.unselect("source"),b.cmd.selection());b.designMode=b.edit.designMode});b.afterCreate(function(){b.designMode||b.toolbar.disableAll(!0).select("source")});b.clickToolbar("fullscreen",function(){b.fullscreen()});if(b.fullscreenShortcut){var d=!1;b.afterCreate(function(){a(b.edit.doc,b.edit.textarea).keyup(function(a){a.which==
27&&setTimeout(function(){b.fullscreen()},0)});if(d){if(l&&!b.designMode)return;b.focus()}d||(d=!0)})}m("undo,redo".split(","),function(a,d){c[d]&&b.afterCreate(function(){Ga(this.edit.doc,c[d],function(){b.clickToolbar(d)})});b.clickToolbar(d,function(){b[d]()})});b.clickToolbar("formatblock",function(){var a=b.lang("formatblock.formatBlock"),c={h1:28,h2:24,h3:18,H4:14,p:12},d=b.cmd.val("formatblock"),f=b.createMenu({name:"formatblock",width:b.langType=="en"?200:150});m(a,function(a,e){var j="font-size:"+
c[a]+"px;";a.charAt(0)==="h"&&(j+="font-weight:bold;");f.addItem({title:'<span style="'+j+'" unselectable="on">'+e+"</span>",height:c[a]+12,checked:d===a||d===e,click:function(){b.select().exec("formatblock","<"+a+">").hideMenu()}})})});b.clickToolbar("fontname",function(){var a=b.cmd.val("fontname"),c=b.createMenu({name:"fontname",width:150});m(b.lang("fontname.fontName"),function(d,f){c.addItem({title:'<span style="font-family: '+d+';" unselectable="on">'+f+"</span>",checked:a===d.toLowerCase()||
a===f.toLowerCase(),click:function(){b.exec("fontname",d).hideMenu()}})})});b.clickToolbar("fontsize",function(){var a=b.cmd.val("fontsize"),c=b.createMenu({name:"fontsize",width:150});m(b.fontSizeTable,function(d,f){c.addItem({title:'<span style="font-size:'+f+';" unselectable="on">'+f+"</span>",height:t(f)+12,checked:a===f,click:function(){b.exec("fontsize",f).hideMenu()}})})});m("forecolor,hilitecolor".split(","),function(a,c){b.clickToolbar(c,function(){b.createMenu({name:c,selectedColor:b.cmd.val(c)||
"default",colors:b.colorTable,click:function(a){b.exec(c,a).hideMenu()}})})});m("cut,copy,paste".split(","),function(a,c){b.clickToolbar(c,function(){b.focus();try{b.exec(c,null)}catch(a){alert(b.lang(c+"Error"))}})});b.clickToolbar("about",function(){var a='<div style="margin:20px;"><div>KindEditor '+Da+'</div><div>Copyright &copy; <a href="http://www.kindsoft.net/" target="_blank">kindsoft.net</a> All rights reserved.</div></div>';b.createDialog({name:"about",width:350,title:b.lang("about"),body:a})});
b.plugin.getSelectedLink=function(){return b.cmd.commonAncestor("a")};b.plugin.getSelectedImage=function(){return Ba(b.edit.cmd.range,function(a){return!/^ke-\w+$/i.test(a[0].className)})};b.plugin.getSelectedFlash=function(){return Ba(b.edit.cmd.range,function(a){return a[0].className=="ke-flash"})};b.plugin.getSelectedMedia=function(){return Ba(b.edit.cmd.range,function(a){return a[0].className=="ke-media"||a[0].className=="ke-rm"})};b.plugin.getSelectedAnchor=function(){return Ba(b.edit.cmd.range,
function(a){return a[0].className=="ke-anchor"})};m("link,image,flash,media,anchor".split(","),function(a,c){var d=c.charAt(0).toUpperCase()+c.substr(1);m("edit,delete".split(","),function(a,e){b.addContextmenu({title:b.lang(e+d),click:function(){b.loadPlugin(c,function(){b.plugin[c][e]();b.hideMenu()})},cond:b.plugin["getSelected"+d],width:150,iconClass:e=="edit"?"ke-icon-"+c:o})});b.addContextmenu({title:"-"})});b.plugin.getSelectedTable=function(){return b.cmd.commonAncestor("table")};b.plugin.getSelectedRow=
function(){return b.cmd.commonAncestor("tr")};b.plugin.getSelectedCell=function(){return b.cmd.commonAncestor("td")};m("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,rowsplit,colsplit,coldelete,rowdelete,insert,delete".split(","),function(a,c){var d=N(c,["prop","delete"])<0?b.plugin.getSelectedCell:b.plugin.getSelectedTable;b.addContextmenu({title:b.lang("table"+c),click:function(){b.loadPlugin("table",function(){b.plugin.table[c]();b.hideMenu()})},cond:d,
width:170,iconClass:"ke-icon-table"+c})});b.addContextmenu({title:"-"});m("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,indent,outdent,subscript,superscript,hr,print,bold,italic,underline,strikethrough,removeformat,unlink".split(","),function(a,d){c[d]&&b.afterCreate(function(){Ga(this.edit.doc,c[d],function(){b.cmd.selection();b.clickToolbar(d)})});b.clickToolbar(d,function(){b.focus().exec(d,null)})});b.afterCreate(function(){function c(){f.range.moveToBookmark(i);
f.select();W&&(a("div."+n,j).each(function(){a(this).after("<br />").remove(!0)}),a("span.Apple-style-span",j).remove(!0),a("span.Apple-tab-span",j).remove(!0),a("span[style]",j).each(function(){a(this).css("white-space")=="nowrap"&&a(this).remove(!0)}),a("meta",j).remove());var d=j[0].innerHTML;j.remove();d!==""&&(W&&(d=d.replace(/(<br>)\1/ig,"$1")),b.pasteType===2&&(d=d.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig,""),/schemas-microsoft-com|worddocument|mso-\w+/i.test(d)?d=lb(d,b.filterMode?b.htmlTags:
a.options.htmlTags):(d=S(d,b.filterMode?b.htmlTags:null),d=b.beforeSetHtml(d))),b.pasteType===1&&(d=d.replace(/&nbsp;/ig," "),d=d.replace(/\n\s*\n/g,"\n"),d=d.replace(/<br[^>]*>/ig,"\n"),d=d.replace(/<\/p><p[^>]*>/ig,"\n"),d=d.replace(/<[^>]+>/g,""),d=d.replace(/ {2}/g," &nbsp;"),b.newlineTag=="p"?/\n/.test(d)&&(d=d.replace(/^/,"<p>").replace(/$/,"<br /></p>").replace(/\n/g,"<br /></p><p>")):d=d.replace(/\n/g,"<br />$&")),b.insertHtml(d,!0))}var d=b.edit.doc,f,i,j,n="__kindeditor_paste__",m=!1;a(d.body).bind("paste",
function(o){if(b.pasteType===0)o.stop();else if(!m){m=!0;a("div."+n,d).remove();f=b.cmd.selection();i=f.range.createBookmark();j=a('<div class="'+n+'"></div>',d).css({position:"absolute",width:"1px",height:"1px",overflow:"hidden",left:"-1981px",top:a(i.start).pos().y+"px","white-space":"nowrap"});a(d.body).append(j);if(l){var q=f.range.get(!0);q.moveToElementText(j[0]);q.select();q.execCommand("paste");o.preventDefault()}else f.range.selectNodeContents(j[0]),f.select();setTimeout(function(){c();m=
!1},0)}})});b.beforeGetHtml(function(a){l&&z<=8&&(a=a.replace(/<div\s+[^>]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig,function(a,b){return unescape(b)}),a=a.replace(/(<input)((?:\s+[^>]*)?>)/ig,function(a,b,c){if(!/\s+type="[^"]+"/i.test(a))return b+' type="text"'+c;return a}));return a.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/ig,function(a,b,c,d){return b+fa(c).replace(/\s+/g," ")+d}).replace(/<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/ig,function(a){var a=H(a),
b=aa(a.style||""),c=nb(a["data-ke-tag"]);c.width=j(a.width,t(j(b.width,"")));c.height=j(a.height,t(j(b.height,"")));return Ia(c)}).replace(/<img[^>]*class="?ke-anchor"?[^>]*>/ig,function(a){a=H(a);return'<a name="'+unescape(a["data-ke-name"])+'"></a>'}).replace(/<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig,function(a,b,c){return"<script"+unescape(b)+">"+unescape(c)+"<\/script>"}).replace(/<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig,function(a,b,c){return"<noscript"+
unescape(b)+">"+unescape(c)+"</noscript>"}).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/ig,function(a,b,c){a=a.replace(/(\s+(?:href|src)=")[^"]*(")/i,function(a,b,d){return b+fa(c)+d});return a=a.replace(/\s+data-ke-src="[^"]*"/i,"")}).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/ig,function(a,b,c){return b+c})});b.beforeSetHtml(function(a){l&&z<=8&&(a=a.replace(/<input[^>]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/ig,function(a){var b=H(a);if(aa(b.style||"").display=="none")return'<div class="ke-display-none" data-ke-input-tag="'+
escape(a)+'"></div>';return a}));return a.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/ig,function(a){a=H(a);a.src=j(a.src,"");a.width=j(a.width,0);a.height=j(a.height,0);return ob(b.themesPath+"common/blank.gif",a)}).replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/ig,function(a){var c=H(a);if(c.href!==o)return a;return'<img class="ke-anchor" src="'+b.themesPath+'common/anchor.gif" data-ke-name="'+escape(c.name)+'" />'}).replace(/<script([^>]*)>([\s\S]*?)<\/script>/ig,function(a,b,c){return'<div class="ke-script" data-ke-script-attr="'+
escape(b)+'">'+escape(c)+"</div>"}).replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/ig,function(a,b,c){return'<div class="ke-noscript" data-ke-noscript-attr="'+escape(b)+'">'+escape(c)+"</div>"}).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/ig,function(a,b,c,d,e){if(a.match(/\sdata-ke-src="[^"]*"/i))return a;return a=b+c+'="'+d+'" data-ke-src="'+C(d)+'"'+e}).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/ig,function(a,b,c){return b+"data-ke-"+c}).replace(/<table[^>]*\s+border="0"[^>]*>/ig,function(a){if(a.indexOf("ke-zeroborder")>=
0)return a;return Qb(a,"ke-zeroborder")})})})}})(window);
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/kindeditor.js
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/ar.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,233 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
* Arabic Translation By daif alotaibi (http://daif.net/)
*******************************************************************************/
KindEditor.lang({
    source : 'عرض Ø§Ù„مصدر',
    preview : 'معاينة Ø§Ù„صفحة',
    undo : 'تراجع(Ctrl+Z)',
    redo : 'إعادة Ø§Ù„تراجع(Ctrl+Y)',
    cut : 'قص(Ctrl+X)',
    copy : 'نسخ(Ctrl+C)',
    paste : 'لصق(Ctrl+V)',
    plainpaste : 'لصق ÙƒÙ†Øµ Ø¹Ø§Ø¯ÙŠ',
    wordpaste : 'لصق Ù…Ù† Ù…ايكروسفت ÙˆØ±Ø¯',
    selectall : 'تحديد Ø§Ù„كل',
    justifyleft : 'محاذاه Ù„ليسار',
    justifycenter : 'محاذاه Ù„لوسط',
    justifyright : 'محاذاه Ù„ليمين',
    justifyfull : 'محاذاه ØªÙ„قائية',
    insertorderedlist : 'قائمة Ù…رقمه',
    insertunorderedlist : 'قائمة Ù†Ù‚طية',
    indent : 'إزاحه Ø§Ù„نص',
    outdent : 'إلغاء Ø§Ù„ازاحة',
    subscript : 'أسفل Ø§Ù„نص',
    superscript : 'أعلى Ø§Ù„نص',
    formatblock : 'Paragraph format',
    fontname : 'نوع Ø§Ù„خط',
    fontsize : 'حجم Ø§Ù„خط',
    forecolor : 'لون Ø§Ù„نص',
    hilitecolor : 'لون Ø®Ù„فية Ø§Ù„نص',
    bold : 'عريض(Ctrl+B)',
    italic : 'مائل(Ctrl+I)',
    underline : 'خط ØªØ­Øª Ø§Ù„نص(Ctrl+U)',
    strikethrough : 'خط Ø¹Ù„Ù‰ Ø§Ù„نص',
    removeformat : 'إزالة Ø§Ù„تنسيق',
    image : 'إدراج ØµÙˆØ±Ø©',
    multiimage : 'Multi image',
    flash : 'إدراج ÙÙ„اش',
    media : 'إدراج ÙˆØ³Ø§Ø¦Ø· Ù…تعددة',
    table : 'إدراج Ø¬Ø¯ÙˆÙ„',
    tablecell : 'خلية',
    hr : 'إدراج Ø®Ø· Ø£ÙÙ‚ÙŠ',
    emoticons : 'إدراج ÙˆØ¬Ù‡ Ø¶Ø§Ø­Ùƒ',
    link : 'رابط',
    unlink : 'إزالة Ø§Ù„رابط',
    fullscreen : 'محرر Ù…لئ Ø§Ù„شاشة',
    about : 'حول',
    print : 'طباعة',
    filemanager : 'مدير Ø§Ù„ملفات',
    code : 'إدراج Ù†Øµ Ø¨Ø±Ù…جي',
    map : 'خرائط Ù‚ووقل',
    baidumap : 'خرائط Ù‚ووقل',
    lineheight : 'إرتفاع Ø§Ù„سطر',
    clearhtml : 'مسح ÙƒÙˆØ¯ HTML',
    pagebreak : 'إدراج ÙØ§ØµÙ„ ØµÙØ­Ø§Øª',
    quickformat : 'تنسيق Ø³Ø±ÙŠØ¹',
    insertfile : 'إدراج Ù…لف',
    template : 'إدراج Ù‚الب',
    anchor : 'رابط',
    yes : 'موافق',
    no : 'إلغاء',
    close : 'إغلاق',
    editImage : 'خصائص Ø§Ù„صورة',
    deleteImage : 'حذفالصورة',
    editFlash : 'خصائص Ø§Ù„فلاش',
    deleteFlash : 'حذف Ø§Ù„فلاش',
    editMedia : 'خصائص Ø§Ù„وسائط',
    deleteMedia : 'حذف Ø§Ù„وسائط',
    editLink : 'خصائص Ø§Ù„رابط',
    deleteLink : 'إزالة Ø§Ù„رابط',
    tableprop : 'خصائص Ø§Ù„جدول',
    tablecellprop : 'خصائص Ø§Ù„خلية',
    tableinsert : 'إدراج Ø¬Ø¯ÙˆÙ„',
    tabledelete : 'حذف Ø¬Ø¯ÙˆÙ„',
    tablecolinsertleft : 'إدراج Ø¹Ù…ود Ù„ليسار',
    tablecolinsertright : 'إدراج Ø¹Ù…ود Ù„ليسار',
    tablerowinsertabove : 'إدراج ØµÙ Ù„لأعلى',
    tablerowinsertbelow : 'إدراج ØµÙ Ù„لأسفل',
    tablerowmerge : 'دمج Ù„لأسفل',
    tablecolmerge : 'دمج Ù„ليمين',
    tablerowsplit : 'تقسم Ø§Ù„صف',
    tablecolsplit : 'تقسيم Ø§Ù„عمود',
    tablecoldelete : 'حذف Ø§Ù„عمود',
    tablerowdelete : 'حذف Ø§Ù„صف',
    noColor : 'إفتراضي',
    pleaseSelectFile : 'Please select file.',
    invalidImg : "الرجاء Ø¥Ø¯Ø®Ø§Ù„ Ø±Ø§Ø¨Ø· ØµØ­ÙŠØ­.\nالملفات Ø§Ù„مسموح Ø¨Ù‡Ø§: jpg,gif,bmp,png",
    invalidMedia : "الرجاء Ø¥Ø¯Ø®Ø§Ù„ Ø±Ø§Ø¨Ø· ØµØ­ÙŠØ­.\nالملفات Ø§Ù„مسموح Ø¨Ù‡Ø§: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb",
    invalidWidth : "العرض ÙŠØ¬Ø¨ Ø£Ù† ÙŠÙƒÙˆÙ† Ø±Ù‚Ù….",
    invalidHeight : "الإرتفاع ÙŠØ¬Ø¨ Ø£Ù† ÙŠÙƒÙˆÙ† Ø±Ù‚Ù….",
    invalidBorder : "عرض Ø§Ù„حد ÙŠØ¬Ø¨ Ø£Ù† ÙŠÙƒÙˆÙ† Ø±Ù‚Ù….",
    invalidUrl : "الرجاء Ø¥Ø¯Ø®Ø§Ù„ Ø±Ø§Ø¨Ø· Ø­ÙŠØ­.",
    invalidRows : 'صفوف ØºÙŠØ± ØµØ­ÙŠØ­.',
    invalidCols : 'أعمدة ØºÙŠØ± ØµØ­ÙŠØ­Ø©.',
    invalidPadding : 'The padding must be number.',
    invalidSpacing : 'The spacing must be number.',
    invalidJson : 'Invalid JSON string.',
    uploadSuccess : 'تم Ø±ÙØ¹ Ø§Ù„ملف Ø¨Ù†Ø¬Ø§Ø­.',
    cutError : 'حاليا ØºÙŠØ± Ù…دعومة Ù…Ù† Ø§Ù„متصفح, Ø¥Ø³ØªØ®Ø¯Ù… Ø¥Ø®ØªØµØ§Ø± Ù„وحة Ø§Ù„مفاتيح (Ctrl+X).',
    copyError : 'حاليا ØºÙŠØ± Ù…دعومة Ù…Ù† Ø§Ù„متصفح, Ø¥Ø³ØªØ®Ø¯Ù… Ø¥Ø®ØªØµØ§Ø± Ù„وحة Ø§Ù„مفاتيح (Ctrl+C).',
    pasteError : 'حاليا ØºÙŠØ± Ù…دعومة Ù…Ù† Ø§Ù„متصفح, Ø¥Ø³ØªØ®Ø¯Ù… Ø¥Ø®ØªØµØ§Ø± Ù„وحة Ø§Ù„مفاتيح (Ctrl+V).',
    ajaxLoading : 'Loading ...',
    uploadLoading : 'Uploading ...',
    uploadError : 'Upload Error',
    'plainpaste.comment' : 'إستخدم Ø¥Ø®ØªØµØ§Ø± Ù„وحة Ø§Ù„مفاتيح (Ctrl+V) Ù„لصق Ø¯Ø§Ø®Ù„ Ø§Ù„نافذة.',
    'wordpaste.comment' : 'إستخدم Ø¥Ø®ØªØµØ§Ø± Ù„وحة Ø§Ù„مفاتيح (Ctrl+V) Ù„لصق Ø¯Ø§Ø®Ù„ Ø§Ù„نافذة.',
    'code.pleaseInput' : 'Please input code.',
    'link.url' : 'الرابط',
    'link.linkType' : 'الهدف',
    'link.newWindow' : 'نافذة Ø¬Ø¯ÙŠØ¯Ø©',
    'link.selfWindow' : 'نفس Ø§Ù„نافذة',
    'flash.url' : 'الرابط',
    'flash.width' : 'العرض',
    'flash.height' : 'الإرتفاع',
    'flash.upload' : 'رفع',
    'flash.viewServer' : 'أستعراض',
    'media.url' : 'الرابط',
    'media.width' : 'العرض',
    'media.height' : 'الإرتفاع',
    'media.autostart' : 'تشغيل ØªÙ„قائي',
    'media.upload' : 'رفع',
    'media.viewServer' : 'أستعراض',
    'image.remoteImage' : 'إدراج Ø§Ù„رابط',
    'image.localImage' : 'رفع',
    'image.remoteUrl' : 'الرابط',
    'image.localUrl' : 'الملف',
    'image.size' : 'الحجم',
    'image.width' : 'العرض',
    'image.height' : 'الإرتفاع',
    'image.resetSize' : 'إستعادة Ø§Ù„أبعاد',
    'image.align' : 'محاذاة',
    'image.defaultAlign' : 'الإفتراضي',
    'image.leftAlign' : 'اليسار',
    'image.rightAlign' : 'اليمين',
    'image.imgTitle' : 'العنوان',
    'image.upload' : 'أستعراض',
    'image.viewServer' : 'أستعراض',
    'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>',
    'multiimage.startUpload' : 'Start upload',
    'multiimage.clearAll' : 'Clear all',
    'multiimage.insertAll' : 'Insert all',
    'multiimage.queueLimitExceeded' : 'Queue limit exceeded.',
    'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.',
    'multiimage.zeroByteFile' : 'Zero byte file.',
    'multiimage.invalidFiletype' : 'Invalid file type.',
    'multiimage.unknownError' : 'Unknown upload error.',
    'multiimage.pending' : 'Pending ...',
    'multiimage.uploadError' : 'Upload error',
    'filemanager.emptyFolder' : 'فارغ',
    'filemanager.moveup' : 'المجلد Ø§Ù„أب',
    'filemanager.viewType' : 'العرض: ',
    'filemanager.viewImage' : 'مصغرات',
    'filemanager.listImage' : 'قائمة',
    'filemanager.orderType' : 'الترتيب: ',
    'filemanager.fileName' : 'بالإسم',
    'filemanager.fileSize' : 'بالحجم',
    'filemanager.fileType' : 'بالنوع',
    'insertfile.url' : 'الرابط',
    'insertfile.title' : 'العنوان',
    'insertfile.upload' : 'رفع',
    'insertfile.viewServer' : 'أستعراض',
    'table.cells' : 'خلايا',
    'table.rows' : 'صفوف',
    'table.cols' : 'أعمدة',
    'table.size' : 'الأبعاد',
    'table.width' : 'العرض',
    'table.height' : 'الإرتفاع',
    'table.percent' : '%',
    'table.px' : 'px',
    'table.space' : 'الخارج',
    'table.padding' : 'الداخل',
    'table.spacing' : 'الفراغات',
    'table.align' : 'محاذاه',
    'table.textAlign' : 'افقى',
    'table.verticalAlign' : 'رأسي',
    'table.alignDefault' : 'إفتراضي',
    'table.alignLeft' : 'يسار',
    'table.alignCenter' : 'وسط',
    'table.alignRight' : 'يمين',
    'table.alignTop' : 'أعلى',
    'table.alignMiddle' : 'منتصف',
    'table.alignBottom' : 'أسفل',
    'table.alignBaseline' : 'Baseline',
    'table.border' : 'الحدود',
    'table.borderWidth' : 'العرض',
    'table.borderColor' : 'اللون',
    'table.backgroundColor' : 'الخلفية',
    'map.address' : 'العنوان: ',
    'map.search' : 'بحث',
    'baidumap.address' : 'العنوان: ',
    'baidumap.search' : 'بحث',
    'baidumap.insertDynamicMap' : 'Dynamic Map',
    'anchor.name' : 'إسم Ø§Ù„رابط',
    'formatblock.formatBlock' : {
        h1 : 'عنوان 1',
        h2 : 'عنوان 2',
        h3 : 'عنوان 3',
        h4 : 'عنوان 4',
        p : 'عادي'
    },
    'fontname.fontName' : {
        'Arial' : 'Arial',
        'Arial Black' : 'Arial Black',
        'Comic Sans MS' : 'Comic Sans MS',
        'Courier New' : 'Courier New',
        'Garamond' : 'Garamond',
        'Georgia' : 'Georgia',
        'Tahoma' : 'Tahoma',
        'Times New Roman' : 'Times New Roman',
        'Trebuchet MS' : 'Trebuchet MS',
        'Verdana' : 'Verdana'
    },
    'lineheight.lineHeight' : [
        {'1' : 'إرتفاع Ø§Ù„سطر 1'},
        {'1.5' : 'إرتفاع Ø§Ù„سطر 1.5'},
        {'2' : 'إرتفاع Ø§Ù„سطر 2'},
        {'2.5' : 'إرتفاع Ø§Ù„سطر 2.5'},
        {'3' : 'إرتفاع Ø§Ù„سطر 3'}
    ],
    'template.selectTemplate' : 'قالب',
    'template.replaceContent' : 'إستبدال Ø§Ù„محتوى Ø§Ù„حالي',
    'template.fileList' : {
        '1.html' : 'صورة ÙˆÙ†Øµ',
        '2.html' : 'جدول',
        '3.html' : 'قائمة'
    }
}, 'ar');
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/en.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,232 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.lang({
    source : 'Source',
    preview : 'Preview',
    undo : 'Undo(Ctrl+Z)',
    redo : 'Redo(Ctrl+Y)',
    cut : 'Cut(Ctrl+X)',
    copy : 'Copy(Ctrl+C)',
    paste : 'Paste(Ctrl+V)',
    plainpaste : 'Paste as plain text',
    wordpaste : 'Paste from Word',
    selectall : 'Select all',
    justifyleft : 'Align left',
    justifycenter : 'Align center',
    justifyright : 'Align right',
    justifyfull : 'Align full',
    insertorderedlist : 'Ordered list',
    insertunorderedlist : 'Unordered list',
    indent : 'Increase indent',
    outdent : 'Decrease indent',
    subscript : 'Subscript',
    superscript : 'Superscript',
    formatblock : 'Paragraph format',
    fontname : 'Font family',
    fontsize : 'Font size',
    forecolor : 'Text color',
    hilitecolor : 'Highlight color',
    bold : 'Bold(Ctrl+B)',
    italic : 'Italic(Ctrl+I)',
    underline : 'Underline(Ctrl+U)',
    strikethrough : 'Strikethrough',
    removeformat : 'Remove format',
    image : 'Image',
    multiimage : 'Multi image',
    flash : 'Flash',
    media : 'Embeded media',
    table : 'Table',
    tablecell : 'Cell',
    hr : 'Insert horizontal line',
    emoticons : 'Insert emoticon',
    link : 'Link',
    unlink : 'Unlink',
    fullscreen : 'Toggle fullscreen mode',
    about : 'About',
    print : 'Print',
    filemanager : 'File Manager',
    code : 'Insert code',
    map : 'Google Maps',
    baidumap : 'Baidu Maps',
    lineheight : 'Line height',
    clearhtml : 'Clear HTML code',
    pagebreak : 'Insert Page Break',
    quickformat : 'Quick Format',
    insertfile : 'Insert file',
    template : 'Insert Template',
    anchor : 'Anchor',
    yes : 'OK',
    no : 'Cancel',
    close : 'Close',
    editImage : 'Image properties',
    deleteImage : 'Delete image',
    editFlash : 'Flash properties',
    deleteFlash : 'Delete flash',
    editMedia : 'Media properties',
    deleteMedia : 'Delete media',
    editLink : 'Link properties',
    deleteLink : 'Unlink',
    tableprop : 'Table properties',
    tablecellprop : 'Cell properties',
    tableinsert : 'Insert table',
    tabledelete : 'Delete table',
    tablecolinsertleft : 'Insert column left',
    tablecolinsertright : 'Insert column right',
    tablerowinsertabove : 'Insert row above',
    tablerowinsertbelow : 'Insert row below',
    tablerowmerge : 'Merge down',
    tablecolmerge : 'Merge right',
    tablerowsplit : 'Split row',
    tablecolsplit : 'Split column',
    tablecoldelete : 'Delete column',
    tablerowdelete : 'Delete row',
    noColor : 'Default',
    pleaseSelectFile : 'Please select file.',
    invalidImg : "Please type valid URL.\nAllowed file extension: jpg,gif,bmp,png",
    invalidMedia : "Please type valid URL.\nAllowed file extension: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb",
    invalidWidth : "The width must be number.",
    invalidHeight : "The height must be number.",
    invalidBorder : "The border must be number.",
    invalidUrl : "Please type valid URL.",
    invalidRows : 'Invalid rows.',
    invalidCols : 'Invalid columns.',
    invalidPadding : 'The padding must be number.',
    invalidSpacing : 'The spacing must be number.',
    invalidJson : 'Invalid JSON string.',
    uploadSuccess : 'Upload success.',
    cutError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+X) instead.',
    copyError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+C) instead.',
    pasteError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+V) instead.',
    ajaxLoading : 'Loading ...',
    uploadLoading : 'Uploading ...',
    uploadError : 'Upload Error',
    'plainpaste.comment' : 'Use keyboard shortcut(Ctrl+V) to paste the text into the window.',
    'wordpaste.comment' : 'Use keyboard shortcut(Ctrl+V) to paste the text into the window.',
    'code.pleaseInput' : 'Please input code.',
    'link.url' : 'URL',
    'link.linkType' : 'Target',
    'link.newWindow' : 'New window',
    'link.selfWindow' : 'Same window',
    'flash.url' : 'URL',
    'flash.width' : 'Width',
    'flash.height' : 'Height',
    'flash.upload' : 'Upload',
    'flash.viewServer' : 'Browse',
    'media.url' : 'URL',
    'media.width' : 'Width',
    'media.height' : 'Height',
    'media.autostart' : 'Auto start',
    'media.upload' : 'Upload',
    'media.viewServer' : 'Browse',
    'image.remoteImage' : 'Insert URL',
    'image.localImage' : 'Upload',
    'image.remoteUrl' : 'URL',
    'image.localUrl' : 'File',
    'image.size' : 'Size',
    'image.width' : 'Width',
    'image.height' : 'Height',
    'image.resetSize' : 'Reset dimensions',
    'image.align' : 'Align',
    'image.defaultAlign' : 'Default',
    'image.leftAlign' : 'Left',
    'image.rightAlign' : 'Right',
    'image.imgTitle' : 'Title',
    'image.upload' : 'Browse',
    'image.viewServer' : 'Browse',
    'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>',
    'multiimage.startUpload' : 'Start upload',
    'multiimage.clearAll' : 'Clear all',
    'multiimage.insertAll' : 'Insert all',
    'multiimage.queueLimitExceeded' : 'Queue limit exceeded.',
    'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.',
    'multiimage.zeroByteFile' : 'Zero byte file.',
    'multiimage.invalidFiletype' : 'Invalid file type.',
    'multiimage.unknownError' : 'Unknown upload error.',
    'multiimage.pending' : 'Pending ...',
    'multiimage.uploadError' : 'Upload error',
    'filemanager.emptyFolder' : 'Blank',
    'filemanager.moveup' : 'Parent folder',
    'filemanager.viewType' : 'Display: ',
    'filemanager.viewImage' : 'Thumbnails',
    'filemanager.listImage' : 'List',
    'filemanager.orderType' : 'Sorting: ',
    'filemanager.fileName' : 'By name',
    'filemanager.fileSize' : 'By size',
    'filemanager.fileType' : 'By type',
    'insertfile.url' : 'URL',
    'insertfile.title' : 'Title',
    'insertfile.upload' : 'Upload',
    'insertfile.viewServer' : 'Browse',
    'table.cells' : 'Cells',
    'table.rows' : 'Rows',
    'table.cols' : 'Columns',
    'table.size' : 'Dimensions',
    'table.width' : 'Width',
    'table.height' : 'Height',
    'table.percent' : '%',
    'table.px' : 'px',
    'table.space' : 'Space',
    'table.padding' : 'Padding',
    'table.spacing' : 'Spacing',
    'table.align' : 'Align',
    'table.textAlign' : 'Horizontal',
    'table.verticalAlign' : 'Vertical',
    'table.alignDefault' : 'Default',
    'table.alignLeft' : 'Left',
    'table.alignCenter' : 'Center',
    'table.alignRight' : 'Right',
    'table.alignTop' : 'Top',
    'table.alignMiddle' : 'Middle',
    'table.alignBottom' : 'Bottom',
    'table.alignBaseline' : 'Baseline',
    'table.border' : 'Border',
    'table.borderWidth' : 'Width',
    'table.borderColor' : 'Color',
    'table.backgroundColor' : 'Background',
    'map.address' : 'Address: ',
    'map.search' : 'Search',
    'baidumap.address' : 'Address: ',
    'baidumap.search' : 'Search',
    'baidumap.insertDynamicMap' : 'Dynamic Map',
    'anchor.name' : 'Anchor name',
    'formatblock.formatBlock' : {
        h1 : 'Heading 1',
        h2 : 'Heading 2',
        h3 : 'Heading 3',
        h4 : 'Heading 4',
        p : 'Normal'
    },
    'fontname.fontName' : {
        'Arial' : 'Arial',
        'Arial Black' : 'Arial Black',
        'Comic Sans MS' : 'Comic Sans MS',
        'Courier New' : 'Courier New',
        'Garamond' : 'Garamond',
        'Georgia' : 'Georgia',
        'Tahoma' : 'Tahoma',
        'Times New Roman' : 'Times New Roman',
        'Trebuchet MS' : 'Trebuchet MS',
        'Verdana' : 'Verdana'
    },
    'lineheight.lineHeight' : [
        {'1' : 'Line height 1'},
        {'1.5' : 'Line height 1.5'},
        {'2' : 'Line height 2'},
        {'2.5' : 'Line height 2.5'},
        {'3' : 'Line height 3'}
    ],
    'template.selectTemplate' : 'Template',
    'template.replaceContent' : 'Replace current content',
    'template.fileList' : {
        '1.html' : 'Image and Text',
        '2.html' : 'Table',
        '3.html' : 'List'
    }
}, 'en');
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/ko.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,237 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Composite <ukjinplant@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.lang({
    source : '소스',
    preview : '미리보기',
    undo : '작업취소(Ctrl+Z)',
    redo : '작업재개(Ctrl+Y)',
    cut : '잘라내기(Ctrl+X)',
    copy : '복사(Ctrl+C)',
    paste : '붙여넣기(Ctrl+V)',
    plainpaste : '일반 í…ìŠ¤íŠ¸ë¡œ ë¶™ì—¬ë„£ê¸°',
    wordpaste : '워드 ë¬¸ì„œë¡œ ë¶™ì—¬ë„£ê¸°',
    selectall : '전체 ì„ íƒ',
    justifyleft : '왼쪽 ì •ë ¬',
    justifycenter : '가운데 ì •ë ¬',
    justifyright : '오른쪽 ì •ë ¬',
    justifyfull : '양쪽 ì •ë ¬',
    insertorderedlist : '순서 ëª©ë¡',
    insertunorderedlist : '비순서 ëª©ë¡',
    indent : '들여쓰기',
    outdent : '내어쓰기',
    subscript : '아랫첨자',
    superscript : '윗첨자',
    formatblock : '문단 í˜•식',
    fontname : '글꼴',
    fontsize : '글자 í¬ê¸°',
    forecolor : '글자색',
    hilitecolor : '강조색',
    bold : '굵게(Ctrl+B)',
    italic : '이텔릭(Ctrl+I)',
    underline : '빝줄(Ctrl+U)',
    strikethrough : '취소선',
    removeformat : '형식 ì œê±°',
    image : '이미지 ì¶”ê°€',
    multiimage : '여러 ì´ë¯¸ì§€ ì¶”ê°€',
    flash : '플래시 ì¶”ê°€',
    media : '미디어 ì¶”ê°€',
    table : '표',
    tablecell : '열',
    hr : '구분선 ì¶”ê°€',
    emoticons : '이모티콘 ì¶”ê°€',
    link : '링크',
    unlink : '링크 ì œê±°',
    fullscreen : '전체 í™”ë©´ ëª¨ë“œ',
    about : '이 ì—ë””터는...',
    print : '인쇄',
    filemanager : '파일 ê´€ë¦¬ìž',
    code : '코드 ì¶”ê°€',
    map : '구글 ë§µ ì¶”ê°€',
    baidumap : '바이두 ë§µ ì¶”ê°€',
    lineheight : '행 ê°„격',
    clearhtml : 'HTML ì½”드 ì •리',
    pagebreak : '페이지 êµ¬ë¶„ ì¶”ê°€',
    quickformat : '빠른 í˜•식',
    insertfile : '파일 ì¶”ê°€',
    template : '템플릿 ì¶”ê°€',
    anchor : '책갈피',
    yes : '확인',
    no : '취소',
    close : '닫기',
    editImage : '이미지 ì†ì„±',
    deleteImage : '이미지 ì‚­ì œ',
    editFlash : '플래시 ì†ì„±',
    deleteFlash : '플래시 ì‚­ì œ',
    editMedia : '미디어 ì†ì„±',
    deleteMedia : '미디어 ì‚­ì œ',
    editLink : '링크 ì†ì„±',
    deleteLink : '링크 ì‚­ì œ',
    tableprop : '표 ì†ì„±',
    tablecellprop : '열 ì†ì„±',
    tableinsert : '표 ì¶”ê°€',
    tabledelete : '표 ì‚­ì œ',
    tablecolinsertleft : '왼쪽으로 ì—´ ì¶”ê°€',
    tablecolinsertright : '오른쪽으로 ì—´ ì¶”ê°€',
    tablerowinsertabove : '위쪽으로 ì—´ ì¶”ê°€',
    tablerowinsertbelow : '아래쪽으로 ì—´ ì¶”ê°€',
    tablerowmerge : '아래로 ë³‘í•©',
    tablecolmerge : '오른쪽으로 ë³‘í•©',
    tablerowsplit : '행 ë‚˜ëˆ„기',
    tablecolsplit : '열 ë‚˜ëˆ„기',
    tablecoldelete : '열 ì‚­ì œ',
    tablerowdelete : '행 ì‚­ì œ',
    noColor : '기본색',
    pleaseSelectFile : '파일 ì„ íƒ',
    invalidImg : "올바른 ì£¼ì†Œë¥¼ ìž…력하세요.\njpg,gif,bmp,png í˜•식이 ê°€ëŠ¥í•©ë‹ˆë‹¤.",
    invalidMedia : "올바른 ì£¼ì†Œë¥¼ ìž…력하세요.\nswf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb í˜•식이 ê°€ëŠ¥í•©ë‹ˆë‹¤.",
    invalidWidth : "넓이 ê°’은 ìˆ«ìžì—¬ì•¼ í•©ë‹ˆë‹¤.",
    invalidHeight : "높이 ê°’은 ìˆ«ìžì—¬ì•¼ í•©ë‹ˆë‹¤.",
    invalidBorder : "굵기 ê°’은 ìˆ«ìžì—¬ì•¼ í•©ë‹ˆë‹¤.",
    invalidUrl : "올바른 ì£¼ì†Œë¥¼ ìž…력하세요.",
    invalidRows : '올바른 í–‰ì´ ì•„닙니다.',
    invalidCols : '올바른 ì—´ì´ ì•„닙니다.',
    invalidPadding : '안쪽 ì—¬ë°± ê°’은 ìˆ«ìžì—¬ì•¼ í•©ë‹ˆë‹¤.',
    invalidSpacing : '간격 ê¸¸ì´ ê°’은 ìˆ«ìžì—¬ì•¼ í•©ë‹ˆë‹¤.',
    invalidJson : '올바른 JSON í˜•식이 ì•„닙니다.',
    uploadSuccess : '업로드가 ì™„료되었습니다.',
    cutError : '브라우저가 ìž˜ë¼ë‚´ê¸° ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ ì•ŠìŠµë‹ˆë‹¤, ë‹¨ì¶•키로 ëŒ€ì‹  ì‚¬ìš©í•˜ì„¸ìš”. (Ctrl+X)',
    copyError : '브라우저가 ë³µì‚¬ ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ ì•ŠìŠµë‹ˆë‹¤, ë‹¨ì¶•키로 ëŒ€ì‹  ì‚¬ìš©í•˜ì„¸ìš”. (Ctrl+X)',
    pasteError : '브라우저가 ë¶™ì—¬ë„£ê¸° ê¸°ëŠ¥ì„ ì§€ì›í•˜ì§€ ì•ŠìŠµë‹ˆë‹¤, ë‹¨ì¶•키로 ëŒ€ì‹  ì‚¬ìš©í•˜ì„¸ìš”. (Ctrl+X)',
    ajaxLoading : '불러오는 ì¤‘ ...',
    uploadLoading : '업로드 ì¤‘ ...',
    uploadError : '업로드 ì˜¤ë¥˜',
    'plainpaste.comment' : '단축키(Ctrl+V)를 í†µí•˜ì—¬ ì—¬ê¸°ì— í…ìŠ¤íŠ¸ë¥¼ ë¶™ì—¬ë„£ìœ¼ì„¸ìš”.',
    'wordpaste.comment' : '단축키(Ctrl+V)를 í†µí•˜ì—¬ ì—¬ê¸°ì— ì›Œë“œ í…ìŠ¤íŠ¸ë¥¼ ë¶™ì—¬ë„£ìœ¼ì„¸ìš”.',
    'code.pleaseInput' : 'Please input code.',
    'link.url' : '주소',
    'link.linkType' : 'ì°½',
    'link.newWindow' : '새 ì°½',
    'link.selfWindow' : '현재 ì°½',
    'flash.url' : '주소',
    'flash.width' : '넓이',
    'flash.height' : '높이',
    'flash.upload' : '업로드',
    'flash.viewServer' : '찾아보기',
    'media.url' : '주소',
    'media.width' : '넓이',
    'media.height' : '높이',
    'media.autostart' : '자동 ì‹œìž‘',
    'media.upload' : '업로드',
    'media.viewServer' : '찾아보기',
    'image.remoteImage' : '외부 ì´ë¯¸ì§€',
    'image.localImage' : '내부 ì´ë¯¸ì§€',
    'image.remoteUrl' : '주소',
    'image.localUrl' : '파일',
    'image.size' : '크기',
    'image.width' : '넓이',
    'image.height' : '높이',
    'image.resetSize' : '기본 í¬ê¸°ë¡œ',
    'image.align' : '정렬',
    'image.defaultAlign' : '기본',
    'image.leftAlign' : '왼쪽',
    'image.rightAlign' : '오른쪽',
    'image.imgTitle' : '제목',
    'image.upload' : '찾아보기',
    'image.viewServer' : '찾아보기',
    'multiimage.uploadDesc' : '최대 ì´ë¯¸ì§€ ê°œìˆ˜: <%=uploadLimit%>개, ê°œë‹¹ ì´ë¯¸ì§€ í¬ê¸°: <%=sizeLimit%>',
    'multiimage.startUpload' : '업로드 ì‹œìž‘',
    'multiimage.clearAll' : '모두 ì‚­ì œ',
    'multiimage.insertAll' : '모두 ì‚½ìž…',
    'multiimage.queueLimitExceeded' : '업로드 ê°œìˆ˜ê°€ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤.',
    'multiimage.fileExceedsSizeLimit' : '업로드 í¬ê¸°ê°€ ì´ˆê³¼ë˜ì—ˆìŠµë‹ˆë‹¤.',
    'multiimage.zeroByteFile' : '파일 í¬ê¸°ê°€ ì—†ìŠµë‹ˆë‹¤.',
    'multiimage.invalidFiletype' : '올바른 ì´ë¯¸ì§€ê°€ ì•„닙니다.',
    'multiimage.unknownError' : '알 ìˆ˜ ì—†ëŠ” ì—…로드 ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì˜€ìŠµë‹ˆë‹¤.',
    'multiimage.pending' : '처리 ì¤‘ ...',
    'multiimage.uploadError' : '업로드 ì˜¤ë¥˜',
    'filemanager.emptyFolder' : '빈 í´ë”',
    'filemanager.moveup' : '위로',
    'filemanager.viewType' : '보기 ë°©ì‹: ',
    'filemanager.viewImage' : '미리 ë³´ê¸°',
    'filemanager.listImage' : '목록',
    'filemanager.orderType' : '정렬 ë°©ì‹: ',
    'filemanager.fileName' : '이름별',
    'filemanager.fileSize' : '크기별',
    'filemanager.fileType' : '종류별',
    'insertfile.url' : '주소',
    'insertfile.title' : '제목',
    'insertfile.upload' : '업로드',
    'insertfile.viewServer' : '찾아보기',
    'table.cells' : '열',
    'table.rows' : '행',
    'table.cols' : '열',
    'table.size' : '표 í¬ê¸°',
    'table.width' : '넓이',
    'table.height' : '높이',
    'table.percent' : '%',
    'table.px' : 'px',
    'table.space' : '간격',
    'table.padding' : '안쪽여백',
    'table.spacing' : '간격',
    'table.align' : '정렬',
    'table.textAlign' : '수직',
    'table.verticalAlign' : '수평',
    'table.alignDefault' : '기본',
    'table.alignLeft' : '왼쪽',
    'table.alignCenter' : '가운데',
    'table.alignRight' : '오른쪽',
    'table.alignTop' : '위쪽',
    'table.alignMiddle' : '중간',
    'table.alignBottom' : '아래쪽',
    'table.alignBaseline' : '글자기준',
    'table.border' : '테두리',
    'table.borderWidth' : '크기',
    'table.borderColor' : '색상',
    'table.backgroundColor' : 'ë°°ê²½',
    'map.address' : '주소: ',
    'map.search' : '검색',
    'baidumap.address' : '주소: ',
    'baidumap.search' : '검색',
    'baidumap.insertDynamicMap' : '동적 ì§€ë„',
    'anchor.name' : '책갈피명',
    'formatblock.formatBlock' : {
        h1 : '제목 1',
        h2 : '제목 2',
        h3 : '제목 3',
        h4 : '제목 4',
        p : '본문'
    },
    'fontname.fontName' : {
        'Gulim' : '굴림',
        'Dotum' : '돋움',
        'Batang' : '바탕',
        'Gungsuh' : '궁서',
        'Malgun Gothic' : '맑은 ê³ ë”•',
        'Arial' : 'Arial',
        'Arial Black' : 'Arial Black',
        'Comic Sans MS' : 'Comic Sans MS',
        'Courier New' : 'Courier New',
        'Garamond' : 'Garamond',
        'Georgia' : 'Georgia',
        'Tahoma' : 'Tahoma',
        'Times New Roman' : 'Times New Roman',
        'Trebuchet MS' : 'Trebuchet MS',
        'Verdana' : 'Verdana'
    },
    'lineheight.lineHeight' : [
        {'1' : '행간 1'},
        {'1.5' : '행간 1.5'},
        {'2' : '행간 2'},
        {'2.5' : '행간 2.5'},
        {'3' : '행간 3'}
    ],
    'template.selectTemplate' : '템플릿',
    'template.replaceContent' : '내용 ë°”꾸기',
    'template.fileList' : {
        '1.html' : '이미지와 í…ìŠ¤íŠ¸',
        '2.html' : '표',
        '3.html' : '목록'
    }
}, 'ko');
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/zh_CN.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,236 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.lang({
    source : 'HTML代码',
    preview : '预览',
    undo : '后退(Ctrl+Z)',
    redo : '前进(Ctrl+Y)',
    cut : '剪切(Ctrl+X)',
    copy : '复制(Ctrl+C)',
    paste : '粘贴(Ctrl+V)',
    plainpaste : '粘贴为无格式文本',
    wordpaste : '从Word粘贴',
    selectall : '全选(Ctrl+A)',
    justifyleft : '左对齐',
    justifycenter : '居中',
    justifyright : '右对齐',
    justifyfull : '两端对齐',
    insertorderedlist : '编号',
    insertunorderedlist : '项目符号',
    indent : '增加缩进',
    outdent : '减少缩进',
    subscript : '下标',
    superscript : '上标',
    formatblock : '段落',
    fontname : '字体',
    fontsize : '文字大小',
    forecolor : '文字颜色',
    hilitecolor : '文字背景',
    bold : '粗体(Ctrl+B)',
    italic : '斜体(Ctrl+I)',
    underline : '下划线(Ctrl+U)',
    strikethrough : '删除线',
    removeformat : '删除格式',
    image : '图片',
    multiimage : '批量图片上传',
    flash : 'Flash',
    media : '视音频',
    table : '表格',
    tablecell : '单元格',
    hr : '插入横线',
    emoticons : '插入表情',
    link : '超级链接',
    unlink : '取消超级链接',
    fullscreen : '全屏显示',
    about : '关于',
    print : '打印(Ctrl+P)',
    filemanager : '文件空间',
    code : '插入程序代码',
    map : 'Google地图',
    baidumap : '百度地图',
    lineheight : '行距',
    clearhtml : '清理HTML代码',
    pagebreak : '插入分页符',
    quickformat : '一键排版',
    insertfile : '插入文件',
    template : '插入模板',
    anchor : '锚点',
    yes : '确定',
    no : '取消',
    close : '关闭',
    editImage : '图片属性',
    deleteImage : '删除图片',
    editFlash : 'Flash属性',
    deleteFlash : '删除Flash',
    editMedia : '视音频属性',
    deleteMedia : '删除视音频',
    editLink : '超级链接属性',
    deleteLink : '取消超级链接',
    editAnchor : '锚点属性',
    deleteAnchor : '删除锚点',
    tableprop : '表格属性',
    tablecellprop : '单元格属性',
    tableinsert : '插入表格',
    tabledelete : '删除表格',
    tablecolinsertleft : '左侧插入列',
    tablecolinsertright : '右侧插入列',
    tablerowinsertabove : '上方插入行',
    tablerowinsertbelow : '下方插入行',
    tablerowmerge : '向下合并单元格',
    tablecolmerge : '向右合并单元格',
    tablerowsplit : '拆分行',
    tablecolsplit : '拆分列',
    tablecoldelete : '删除列',
    tablerowdelete : '删除行',
    noColor : '无颜色',
    pleaseSelectFile : '请选择文件。',
    invalidImg : "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",
    invalidMedia : "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",
    invalidWidth : "宽度必须为数字。",
    invalidHeight : "高度必须为数字。",
    invalidBorder : "边框必须为数字。",
    invalidUrl : "请输入有效的URL地址。",
    invalidRows : '行数为必选项,只允许输入大于0的数字。',
    invalidCols : '列数为必选项,只允许输入大于0的数字。',
    invalidPadding : '边距必须为数字。',
    invalidSpacing : '间距必须为数字。',
    invalidJson : '服务器发生故障。',
    uploadSuccess : '上传成功。',
    cutError : '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。',
    copyError : '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。',
    pasteError : '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。',
    ajaxLoading : '加载中,请稍候 ...',
    uploadLoading : '上传中,请稍候 ...',
    uploadError : '上传错误',
    'plainpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。',
    'wordpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。',
    'code.pleaseInput' : '请输入程序代码。',
    'link.url' : 'URL',
    'link.linkType' : '打开类型',
    'link.newWindow' : '新窗口',
    'link.selfWindow' : '当前窗口',
    'flash.url' : 'URL',
    'flash.width' : '宽度',
    'flash.height' : '高度',
    'flash.upload' : '上传',
    'flash.viewServer' : '文件空间',
    'media.url' : 'URL',
    'media.width' : '宽度',
    'media.height' : '高度',
    'media.autostart' : '自动播放',
    'media.upload' : '上传',
    'media.viewServer' : '文件空间',
    'image.remoteImage' : '网络图片',
    'image.localImage' : '本地上传',
    'image.remoteUrl' : '图片地址',
    'image.localUrl' : '上传文件',
    'image.size' : '图片大小',
    'image.width' : '宽',
    'image.height' : '高',
    'image.resetSize' : '重置大小',
    'image.align' : '对齐方式',
    'image.defaultAlign' : '默认方式',
    'image.leftAlign' : '左对齐',
    'image.rightAlign' : '右对齐',
    'image.imgTitle' : '图片说明',
    'image.upload' : '浏览...',
    'image.viewServer' : '图片空间',
    'multiimage.uploadDesc' : '允许用户同时上传<%=uploadLimit%>张图片,单张图片容量不超过<%=sizeLimit%>',
    'multiimage.startUpload' : '开始上传',
    'multiimage.clearAll' : '全部清空',
    'multiimage.insertAll' : '全部插入',
    'multiimage.queueLimitExceeded' : '文件数量超过限制。',
    'multiimage.fileExceedsSizeLimit' : '文件大小超过限制。',
    'multiimage.zeroByteFile' : '无法上传空文件。',
    'multiimage.invalidFiletype' : '文件类型不正确。',
    'multiimage.unknownError' : '发生异常,无法上传。',
    'multiimage.pending' : '等待上传',
    'multiimage.uploadError' : '上传失败',
    'filemanager.emptyFolder' : '空文件夹',
    'filemanager.moveup' : '移到上一级文件夹',
    'filemanager.viewType' : '显示方式:',
    'filemanager.viewImage' : '缩略图',
    'filemanager.listImage' : '详细信息',
    'filemanager.orderType' : '排序方式:',
    'filemanager.fileName' : '名称',
    'filemanager.fileSize' : '大小',
    'filemanager.fileType' : '类型',
    'insertfile.url' : 'URL',
    'insertfile.title' : '文件说明',
    'insertfile.upload' : '上传',
    'insertfile.viewServer' : '文件空间',
    'table.cells' : '单元格数',
    'table.rows' : '行数',
    'table.cols' : '列数',
    'table.size' : '大小',
    'table.width' : '宽度',
    'table.height' : '高度',
    'table.percent' : '%',
    'table.px' : 'px',
    'table.space' : '边距间距',
    'table.padding' : '边距',
    'table.spacing' : '间距',
    'table.align' : '对齐方式',
    'table.textAlign' : '水平对齐',
    'table.verticalAlign' : '垂直对齐',
    'table.alignDefault' : '默认',
    'table.alignLeft' : '左对齐',
    'table.alignCenter' : '居中',
    'table.alignRight' : '右对齐',
    'table.alignTop' : '顶部',
    'table.alignMiddle' : '中部',
    'table.alignBottom' : '底部',
    'table.alignBaseline' : '基线',
    'table.border' : '边框',
    'table.borderWidth' : '边框',
    'table.borderColor' : '颜色',
    'table.backgroundColor' : '背景颜色',
    'map.address' : '地址: ',
    'map.search' : '搜索',
    'baidumap.address' : '地址: ',
    'baidumap.search' : '搜索',
    'baidumap.insertDynamicMap' : '插入动态地图',
    'anchor.name' : '锚点名称',
    'formatblock.formatBlock' : {
        h1 : '标题 1',
        h2 : '标题 2',
        h3 : '标题 3',
        h4 : '标题 4',
        p : 'æ­£ æ–‡'
    },
    'fontname.fontName' : {
        'SimSun' : '宋体',
        'NSimSun' : '新宋体',
        'FangSong_GB2312' : '仿宋_GB2312',
        'KaiTi_GB2312' : '楷体_GB2312',
        'SimHei' : '黑体',
        'Microsoft YaHei' : '微软雅黑',
        'Arial' : 'Arial',
        'Arial Black' : 'Arial Black',
        'Times New Roman' : 'Times New Roman',
        'Courier New' : 'Courier New',
        'Tahoma' : 'Tahoma',
        'Verdana' : 'Verdana'
    },
    'lineheight.lineHeight' : [
        {'1' : '单倍行距'},
        {'1.5' : '1.5倍行距'},
        {'2' : '2倍行距'},
        {'2.5' : '2.5倍行距'},
        {'3' : '3倍行距'}
    ],
    'template.selectTemplate' : '可选模板',
    'template.replaceContent' : '替换当前内容',
    'template.fileList' : {
        '1.html' : '图片和文字',
        '2.html' : '表格',
        '3.html' : '项目编号'
    }
}, 'zh_CN');
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/lang/zh_TW.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,235 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.lang({
    source : '原始碼',
    preview : '預覽',
    undo : '復原(Ctrl+Z)',
    redo : '重複(Ctrl+Y)',
    cut : '剪下(Ctrl+X)',
    copy : '複製(Ctrl+C)',
    paste : '貼上(Ctrl+V)',
    plainpaste : '貼為純文字格式',
    wordpaste : '自Word貼上',
    selectall : '全選(Ctrl+A)',
    justifyleft : '靠左對齊',
    justifycenter : '置中',
    justifyright : '靠右對齊',
    justifyfull : '左右對齊',
    insertorderedlist : '編號清單',
    insertunorderedlist : '項目清單',
    indent : '增加縮排',
    outdent : '減少縮排',
    subscript : '下標',
    superscript : '上標',
    formatblock : '標題',
    fontname : '字體',
    fontsize : '文字大小',
    forecolor : '文字顏色',
    hilitecolor : '背景顏色',
    bold : '粗體(Ctrl+B)',
    italic : '斜體(Ctrl+I)',
    underline : '底線(Ctrl+U)',
    strikethrough : '刪除線',
    removeformat : '清除格式',
    image : '影像',
    multiimage : '批量影像上傳',
    flash : 'Flash',
    media : '多媒體',
    table : '表格',
    hr : '插入水平線',
    emoticons : '插入表情',
    link : '超連結',
    unlink : '移除超連結',
    fullscreen : '最大化',
    about : '關於',
    print : '列印(Ctrl+P)',
    fileManager : '瀏覽伺服器',
    code : '插入程式代碼',
    map : 'Google地圖',
    baidumap : 'Baidu地圖',
    lineheight : '行距',
    clearhtml : '清理HTML代碼',
    pagebreak : '插入分頁符號',
    quickformat : '快速排版',
    insertfile : '插入文件',
    template : '插入樣板',
    anchor : '錨點',
    yes : '確定',
    no : '取消',
    close : '關閉',
    editImage : '影像屬性',
    deleteImage : '刪除影像',
    editFlash : 'Flash屬性',
    deleteFlash : '删除Flash',
    editMedia : '多媒體屬性',
    deleteMedia : '删除多媒體',
    editLink : '超連結屬性',
    deleteLink : '移除超連結',
    tableprop : '表格屬性',
    tablecellprop : '儲存格屬性',
    tableinsert : '插入表格',
    tabledelete : '刪除表格',
    tablecolinsertleft : '向左插入列',
    tablecolinsertright : '向右插入列',
    tablerowinsertabove : '向上插入欄',
    tablerowinsertbelow : '下方插入欄',
    tablerowmerge : '向下合併單元格',
    tablecolmerge : '向右合併單元格',
    tablerowsplit : '分割欄',
    tablecolsplit : '分割列',
    tablecoldelete : '删除列',
    tablerowdelete : '删除欄',
    noColor : '自動',
    pleaseSelectFile : '請選擇文件。',
    invalidImg : "請輸入有效的URL。\n只允許jpg,gif,bmp,png格式。",
    invalidMedia : "請輸入有效的URL。\n只允許swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",
    invalidWidth : "寬度必須是數字。",
    invalidHeight : "高度必須是數字。",
    invalidBorder : "邊框必須是數字。",
    invalidUrl : "請輸入有效的URL。",
    invalidRows : '欄數是必須輸入項目,只允許輸入大於0的數字。',
    invalidCols : '列數是必須輸入項目,只允許輸入大於0的數字。',
    invalidPadding : '內距必須是數字。',
    invalidSpacing : '間距必須是數字。',
    invalidBorder : '边框必须为数字。',
    pleaseInput : "請輸入內容。",
    invalidJson : '伺服器發生故障。',
    uploadSuccess : '上傳成功。',
    cutError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+X)完成。',
    copyError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+C)完成。',
    pasteError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+V)完成。',
    ajaxLoading : '加載中,請稍候 ...',
    uploadLoading : '上傳中,請稍候 ...',
    uploadError : '上傳錯誤',
    'plainpaste.comment' : '請使用快捷鍵(Ctrl+V)把內容貼到下方區域裡。',
    'wordpaste.comment' : '請使用快捷鍵(Ctrl+V)把內容貼到下方區域裡。',
    'code.pleaseInput' : 'Please input code.',
    'link.url' : 'URL',
    'link.linkType' : '打開類型',
    'link.newWindow' : '新窗口',
    'link.selfWindow' : '本頁窗口',
    'flash.url' : 'URL',
    'flash.width' : '寬度',
    'flash.height' : '高度',
    'flash.upload' : '上傳',
    'flash.viewServer' : '瀏覽',
    'media.url' : 'URL',
    'media.width' : '寬度',
    'media.height' : '高度',
    'media.autostart' : '自動播放',
    'media.upload' : '上傳',
    'media.viewServer' : '瀏覽',
    'image.remoteImage' : '網絡影像',
    'image.localImage' : '上傳影像',
    'image.remoteUrl' : '影像URL',
    'image.localUrl' : '影像URL',
    'image.size' : '影像大小',
    'image.width' : '寬度',
    'image.height' : '高度',
    'image.resetSize' : '原始大小',
    'image.align' : '對齊方式',
    'image.defaultAlign' : '未設定',
    'image.leftAlign' : '向左對齊',
    'image.rightAlign' : '向右對齊',
    'image.imgTitle' : '影像說明',
    'image.upload' : '瀏覽...',
    'image.viewServer' : '瀏覽...',
    'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>',
    'multiimage.startUpload' : 'Start upload',
    'multiimage.clearAll' : 'Clear all',
    'multiimage.insertAll' : 'Insert all',
    'multiimage.queueLimitExceeded' : 'Queue limit exceeded.',
    'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.',
    'multiimage.zeroByteFile' : 'Zero byte file.',
    'multiimage.invalidFiletype' : 'Invalid file type.',
    'multiimage.unknownError' : 'Unknown upload error.',
    'multiimage.pending' : 'Pending ...',
    'multiimage.uploadError' : 'Upload error',
    'filemanager.emptyFolder' : '空文件夾',
    'filemanager.moveup' : '至上一級文件夾',
    'filemanager.viewType' : '顯示方式:',
    'filemanager.viewImage' : '縮略圖',
    'filemanager.listImage' : '詳細信息',
    'filemanager.orderType' : '排序方式:',
    'filemanager.fileName' : '名稱',
    'filemanager.fileSize' : '大小',
    'filemanager.fileType' : '類型',
    'insertfile.url' : 'URL',
    'insertfile.title' : '文件說明',
    'insertfile.upload' : '上傳',
    'insertfile.viewServer' : '瀏覽',
    'table.cells' : '儲存格數',
    'table.rows' : '欄數',
    'table.cols' : '列數',
    'table.size' : '表格大小',
    'table.width' : '寬度',
    'table.height' : '高度',
    'table.percent' : '%',
    'table.px' : 'px',
    'table.space' : '內距間距',
    'table.padding' : '內距',
    'table.spacing' : '間距',
    'table.align' : '對齊方式',
    'table.textAlign' : '水平對齊',
    'table.verticalAlign' : '垂直對齊',
    'table.alignDefault' : '未設定',
    'table.alignLeft' : '向左對齊',
    'table.alignCenter' : '置中',
    'table.alignRight' : '向右對齊',
    'table.alignTop' : '靠上',
    'table.alignMiddle' : '置中',
    'table.alignBottom' : '靠下',
    'table.alignBaseline' : '基線',
    'table.border' : '表格邊框',
    'table.borderWidth' : '邊框',
    'table.borderColor' : '顏色',
    'table.backgroundColor' : '背景顏色',
    'map.address' : '住所: ',
    'map.search' : '尋找',
    'baidumap.address' : '住所: ',
    'baidumap.search' : '尋找',
    'baidumap.insertDynamicMap' : '插入動態地圖',
    'anchor.name' : '錨點名稱',
    'formatblock.formatBlock' : {
        h1 : '標題 1',
        h2 : '標題 2',
        h3 : '標題 3',
        h4 : '標題 4',
        p : '一般'
    },
    'fontname.fontName' : {
        'MingLiU' : '細明體',
        'PMingLiU' : '新細明體',
        'DFKai-SB' : '標楷體',
        'SimSun' : '宋體',
        'NSimSun' : '新宋體',
        'FangSong' : '仿宋體',
        'Arial' : 'Arial',
        'Arial Black' : 'Arial Black',
        'Times New Roman' : 'Times New Roman',
        'Courier New' : 'Courier New',
        'Tahoma' : 'Tahoma',
        'Verdana' : 'Verdana'
    },
    'lineheight.lineHeight' : [
        {'1' : '单倍行距'},
        {'1.5' : '1.5倍行距'},
        {'2' : '2倍行距'},
        {'2.5' : '2.5倍行距'},
        {'3' : '3倍行距'}
    ],
    'template.selectTemplate' : '可選樣板',
    'template.replaceContent' : '取代當前內容',
    'template.fileList' : {
        '1.html' : '影像和文字',
        '2.html' : '表格',
        '3.html' : '项目清單'
    }
}, 'zh_TW');
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/license.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,502 @@
                  GNU LESSER GENERAL PUBLIC LICENSE
                       Version 2.1, February 1999
 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]
                            Preamble
  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
  This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
  When we speak of free software, we are referring to freedom of use,
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 this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.
  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.
  We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.
  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
                  GNU LESSER GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)
  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.
  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
    a) The modified work must itself be a software library.
    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.
    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.
    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.
    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)
These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.
  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.
  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:
    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)
    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.
    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.
    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.
    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.
  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
  7. 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 not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.
    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.
  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
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
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.
  13. The Free Software Foundation may publish revised and/or new
versions of the 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
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
                            NO WARRANTY
  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "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
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY 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
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
                     END OF TERMS AND CONDITIONS
           How to Apply These Terms to Your New Libraries
  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>
    This library 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 2.1 of the License, or (at your option) any later version.
    This library 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.
    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:
  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice
That's all there is to it!
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/anchor/anchor.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('anchor', function(K) {
    var self = this, name = 'anchor', lang = self.lang(name + '.');
    self.plugin.anchor = {
        edit : function() {
            var html = ['<div style="padding:20px;">',
                    '<div class="ke-dialog-row">',
                    '<label for="keName">' + lang.name + '</label>',
                    '<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />',
                    '</div>',
                    '</div>'].join('');
            var dialog = self.createDialog({
                name : name,
                width : 300,
                title : self.lang(name),
                body : html,
                yesBtn : {
                    name : self.lang('yes'),
                    click : function(e) {
                        self.insertHtml('<a name="' + nameBox.val() + '">').hideDialog().focus();
                    }
                }
            });
            var div = dialog.div,
                nameBox = K('input[name="name"]', div);
            var img = self.plugin.getSelectedAnchor();
            if (img) {
                nameBox.val(unescape(img.attr('data-ke-name')));
            }
            nameBox[0].focus();
            nameBox[0].select();
        },
        'delete' : function() {
            self.plugin.getSelectedAnchor().remove();
        }
    };
    self.clickToolbar(name, self.plugin.anchor.edit);
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/autoheight/autoheight.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('autoheight', function(K) {
    var self = this;
    if (!self.autoHeightMode) {
        return;
    }
    var edit = self.edit;
    var body = edit.doc.body;
    var minHeight = K.removeUnit(self.height);
    edit.iframe[0].scroll = 'no';
    body.style.overflowY = 'hidden';
    edit.afterChange(function() {
        self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 62, minHeight));
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/baidumap/baidumap.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
// Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5
KindEditor.plugin('baidumap', function(K) {
    var self = this, name = 'baidumap', lang = self.lang(name + '.');
    var mapWidth = K.undef(self.mapWidth, 558);
    var mapHeight = K.undef(self.mapHeight, 360);
    self.clickToolbar(name, function() {
        var html = ['<div style="padding:10px 20px;">',
            '<div class="ke-header">',
            // left start
            '<div class="ke-left">',
            lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
            '<span class="ke-button-common ke-button-outer">',
            '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />',
            '</span>',
            '</div>',
            // right start
            '<div class="ke-right">',
            '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">' + lang.insertDynamicMap + '</label>',
            '</div>',
            '<div class="ke-clearfix"></div>',
            '</div>',
            '<div class="ke-map" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></div>',
            '</div>'].join('');
        var dialog = self.createDialog({
            name : name,
            width : mapWidth + 42,
            title : self.lang(name),
            body : html,
            yesBtn : {
                name : self.lang('yes'),
                click : function(e) {
                    var map = win.map;
                    var centerObj = map.getCenter();
                    var center = centerObj.lng + ',' + centerObj.lat;
                    var zoom = map.getZoom();
                    var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'http://api.map.baidu.com/staticimage',
                        '?center=' + encodeURIComponent(center),
                        '&zoom=' + encodeURIComponent(zoom),
                        '&width=' + mapWidth,
                        '&height=' + mapHeight,
                        '&markers=' + encodeURIComponent(center),
                        '&markerStyles=' + encodeURIComponent('l,A')].join('');
                    if (checkbox[0].checked) {
                        self.insertHtml('<iframe src="' + url + '" frameborder="0" style="width:' + (mapWidth + 2) + 'px;height:' + (mapHeight + 2) + 'px;"></iframe>');
                    } else {
                        self.exec('insertimage', url);
                    }
                    self.hideDialog().focus();
                }
            },
            beforeRemove : function() {
                searchBtn.remove();
                if (doc) {
                    doc.write('');
                }
                iframe.remove();
            }
        });
        var div = dialog.div,
            addressBox = K('[name="address"]', div),
            searchBtn = K('[name="searchBtn"]', div),
            checkbox = K('[name="insertDynamicMap"]', dialog.div),
            win, doc;
        var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'baidumap/map.html" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></iframe>');
        function ready() {
            win = iframe[0].contentWindow;
            doc = K.iframeDoc(iframe);
        }
        iframe.bind('load', function() {
            iframe.unbind('load');
            if (K.IE) {
                ready();
            } else {
                setTimeout(ready, 0);
            }
        });
        K('.ke-map', div).replaceWith(iframe);
        // search map
        searchBtn.click(function() {
            win.search(addressBox.val());
        });
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/baidumap/index.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具" />
<meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图" />
<title>百度地图API自定义地图</title>
<!--引用百度地图API-->
<style type="text/css">
    html,body{margin:0;padding:0;}
    .iw_poi_title {color:#CC5522;font-size:14px;font-weight:bold;overflow:hidden;padding-right:13px;white-space:nowrap}
    .iw_poi_content {font:12px arial,sans-serif;overflow:visible;padding-top:4px;white-space:-moz-pre-wrap;word-wrap:break-word}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true"></script>
</head>
<body onload="initMap();">
  <!--百度地图容器-->
  <div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div>
</body>
<script type="text/javascript">
    function getParam(name) {
        return location.href.match(new RegExp('[?&]' + name + '=([^?&]+)', 'i')) ? decodeURIComponent(RegExp.$1) : '';
    }
    var centerParam = getParam('center');
    var zoomParam = getParam('zoom');
    var widthParam = getParam('width');
    var heightParam = getParam('height');
    var markersParam = getParam('markers');
    var markerStylesParam = getParam('markerStyles');
    //创建和初始化地图函数:
    function initMap(){
        // [FF]切换模式后报错
        if (!window.BMap) {
            return;
        }
        var dituContent = document.getElementById('dituContent');
        dituContent.style.width = widthParam + 'px';
        dituContent.style.height = heightParam + 'px';
        createMap();//创建地图
        setMapEvent();//设置地图事件
        addMapControl();//向地图添加控件
        // åˆ›å»ºæ ‡æ³¨
        var markersArr = markersParam.split(',');
        var point = new BMap.Point(markersArr[0], markersArr[1]);
        var marker = new BMap.Marker(point);
        map.addOverlay(marker); // å°†æ ‡æ³¨æ·»åŠ åˆ°åœ°å›¾ä¸­
    }
    //创建地图函数:
    function createMap(){
        var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
        var centerArr = centerParam.split(',');
        var point = new BMap.Point(centerArr[0], centerArr[1]);//定义一个中心点坐标
        map.centerAndZoom(point, zoomParam);//设定地图的中心点和坐标并将地图显示在地图容器中
        window.map = map;//将map变量存储在全局
    }
    //地图事件设置函数:
    function setMapEvent(){
        map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
        map.enableScrollWheelZoom();//启用地图滚轮放大缩小
        map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
        map.enableKeyboard();//启用键盘上下左右键移动地图
    }
    //地图控件添加函数:
    function addMapControl(){
        //向地图中添加缩放控件
    var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});
    map.addControl(ctrl_nav);
        //向地图中添加缩略图控件
    var ctrl_ove = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1});
    map.addControl(ctrl_ove);
        //向地图中添加比例尺控件
    var ctrl_sca = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});
    map.addControl(ctrl_sca);
    }
</script>
</html>
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/baidumap/map.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
<!doctype html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Baidu Maps</title>
        <style>
            html { height: 100% }
            body { height: 100%; margin: 0; padding: 0; background-color: #FFF }
        </style>
        <script charset="utf-8" src="http://api.map.baidu.com/api?v=1.3"></script>
        <script>
            var map, geocoder;
            function initialize() {
                map = new BMap.Map('map_canvas');
                var point = new BMap.Point(121.473704, 31.230393);
                map.centerAndZoom(point, 11);
                map.addControl(new BMap.NavigationControl());
                map.enableScrollWheelZoom();
                var gc = new BMap.Geocoder();
                gc.getLocation(point, function(rs){
                    var addComp = rs.addressComponents;
                    var address = [addComp.city].join('');
                    parent.document.getElementById("kindeditor_plugin_map_address").value = address;
                });
            }
            function search(address) {
                if (!map) return;
                var local = new BMap.LocalSearch(map, {
                    renderOptions: {
                        map: map,
                        autoViewport: true,
                        selectFirstResult: false
                    }
                });
                local.search(address);
            }
        </script>
    </head>
    <body onload="initialize();">
        <div id="map_canvas" style="width:100%; height:100%"></div>
    </body>
</html>
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/clearhtml/clearhtml.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('clearhtml', function(K) {
    var self = this, name = 'clearhtml';
    self.clickToolbar(name, function() {
        self.focus();
        var html = self.html();
        html = html.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/ig, '');
        html = html.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/ig, '');
        html = K.formatHtml(html, {
            a : ['href', 'target'],
            embed : ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'],
            img : ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'],
            table : ['border'],
            'td,th' : ['rowspan', 'colspan'],
            'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : []
        });
        self.html(html);
        self.cmd.selection(true);
        self.addBookmark();
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/code/code.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
// google code prettify: http://google-code-prettify.googlecode.com/
// http://google-code-prettify.googlecode.com/
KindEditor.plugin('code', function(K) {
    var self = this, name = 'code';
    self.clickToolbar(name, function() {
        var lang = self.lang(name + '.'),
            html = ['<div style="padding:10px 20px;">',
                '<div class="ke-dialog-row">',
                '<select class="ke-code-type">',
                '<option value="js">JavaScript</option>',
                '<option value="html">HTML</option>',
                '<option value="css">CSS</option>',
                '<option value="php">PHP</option>',
                '<option value="pl">Perl</option>',
                '<option value="py">Python</option>',
                '<option value="rb">Ruby</option>',
                '<option value="java">Java</option>',
                '<option value="vb">ASP/VB</option>',
                '<option value="cpp">C/C++</option>',
                '<option value="cs">C#</option>',
                '<option value="xml">XML</option>',
                '<option value="bsh">Shell</option>',
                '<option value="">Other</option>',
                '</select>',
                '</div>',
                '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>',
                '</div>'].join(''),
            dialog = self.createDialog({
                name : name,
                width : 450,
                title : self.lang(name),
                body : html,
                yesBtn : {
                    name : self.lang('yes'),
                    click : function(e) {
                        var type = K('.ke-code-type', dialog.div).val(),
                            code = textarea.val(),
                            cls = type === '' ? '' :  ' lang-' + type,
                            html = '<pre class="prettyprint' + cls + '">\n' + K.escape(code) + '</pre> ';
                        if (K.trim(code) === '') {
                            alert(lang.pleaseInput);
                            textarea[0].focus();
                            return;
                        }
                        self.insertHtml(html).hideDialog().focus();
                    }
                }
            }),
            textarea = K('textarea', dialog.div);
        textarea[0].focus();
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/code/prettify.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
pre.prettyprint {
    border: 0;
    border-left: 3px solid rgb(204, 204, 204);
    margin-left: 2em;
    padding: 0.5em;
    font-size: 110%;
    display: block;
    font-family: "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;
    margin: 1em 0px;
    white-space: pre;
}
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/code/prettify.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
H=[G,"as,index,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/emoticons.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('emoticons', function(K) {
    var self = this, name = 'emoticons',
        path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'),
        allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons,
        currentPageNum = 1;
    self.clickToolbar(name, function() {
        var rows = 5, cols = 9, total = 135, startNum = 0,
            cells = rows * cols, pages = Math.ceil(total / cells),
            colsHalf = Math.floor(cols / 2),
            wrapperDiv = K('<div class="ke-plugin-emoticons"></div>'),
            elements = [],
            menu = self.createMenu({
                name : name,
                beforeRemove : function() {
                    removeEvent();
                }
            });
        menu.div.append(wrapperDiv);
        var previewDiv, previewImg;
        if (allowPreview) {
            previewDiv = K('<div class="ke-preview"></div>').css('right', 0);
            previewImg = K('<img class="ke-preview-img" src="' + path + startNum + '.gif" />');
            wrapperDiv.append(previewDiv);
            previewDiv.append(previewImg);
        }
        function bindCellEvent(cell, j, num) {
            if (previewDiv) {
                cell.mouseover(function() {
                    if (j > colsHalf) {
                        previewDiv.css('left', 0);
                        previewDiv.css('right', '');
                    } else {
                        previewDiv.css('left', '');
                        previewDiv.css('right', 0);
                    }
                    previewImg.attr('src', path + num + '.gif');
                    K(this).addClass('ke-on');
                });
            } else {
                cell.mouseover(function() {
                    K(this).addClass('ke-on');
                });
            }
            cell.mouseout(function() {
                K(this).removeClass('ke-on');
            });
            cell.click(function(e) {
                self.insertHtml('<img src="' + path + num + '.gif" border="0" alt="" />').hideMenu().focus();
                e.stop();
            });
        }
        function createEmoticonsTable(pageNum, parentDiv) {
            var table = document.createElement('table');
            parentDiv.append(table);
            if (previewDiv) {
                K(table).mouseover(function() {
                    previewDiv.show('block');
                });
                K(table).mouseout(function() {
                    previewDiv.hide();
                });
                elements.push(K(table));
            }
            table.className = 'ke-table';
            table.cellPadding = 0;
            table.cellSpacing = 0;
            table.border = 0;
            var num = (pageNum - 1) * cells + startNum;
            for (var i = 0; i < rows; i++) {
                var row = table.insertRow(i);
                for (var j = 0; j < cols; j++) {
                    var cell = K(row.insertCell(j));
                    cell.addClass('ke-cell');
                    bindCellEvent(cell, j, num);
                    var span = K('<span class="ke-img"></span>')
                        .css('background-position', '-' + (24 * num) + 'px 0px')
                        .css('background-image', 'url(' + path + 'static.gif)');
                    cell.append(span);
                    elements.push(cell);
                    num++;
                }
            }
            return table;
        }
        var table = createEmoticonsTable(currentPageNum, wrapperDiv);
        function removeEvent() {
            K.each(elements, function() {
                this.unbind();
            });
        }
        var pageDiv;
        function bindPageEvent(el, pageNum) {
            el.click(function(e) {
                removeEvent();
                table.parentNode.removeChild(table);
                pageDiv.remove();
                table = createEmoticonsTable(pageNum, wrapperDiv);
                createPageTable(pageNum);
                currentPageNum = pageNum;
                e.stop();
            });
        }
        function createPageTable(currentPageNum) {
            pageDiv = K('<div class="ke-page"></div>');
            wrapperDiv.append(pageDiv);
            for (var pageNum = 1; pageNum <= pages; pageNum++) {
                if (currentPageNum !== pageNum) {
                    var a = K('<a href="javascript:;">[' + pageNum + ']</a>');
                    bindPageEvent(a, pageNum);
                    pageDiv.append(a);
                    elements.push(a);
                } else {
                    pageDiv.append(K('@[' + pageNum + ']'));
                }
                pageDiv.append(K('@&nbsp;'));
            }
        }
        createPageTable(currentPageNum);
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/0.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/1.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/10.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/100.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/101.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/102.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/103.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/104.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/105.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/106.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/107.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/108.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/109.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/11.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/110.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/111.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/112.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/113.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/114.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/115.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/116.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/117.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/118.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/119.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/12.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/120.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/121.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/122.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/123.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/124.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/125.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/126.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/127.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/128.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/129.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/13.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/130.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/131.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/132.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/133.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/134.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/14.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/15.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/16.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/17.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/18.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/19.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/2.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/20.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/21.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/22.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/23.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/24.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/25.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/26.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/27.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/28.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/29.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/3.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/30.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/31.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/32.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/33.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/34.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/35.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/36.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/37.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/38.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/39.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/4.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/40.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/41.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/42.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/43.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/44.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/45.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/46.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/47.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/48.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/49.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/5.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/50.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/51.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/52.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/53.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/54.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/55.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/56.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/57.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/58.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/59.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/6.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/60.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/61.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/62.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/63.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/64.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/65.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/66.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/67.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/68.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/69.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/7.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/70.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/71.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/72.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/73.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/74.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/75.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/76.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/77.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/78.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/79.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/8.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/80.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/81.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/82.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/83.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/84.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/85.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/86.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/87.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/88.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/89.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/9.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/90.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/91.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/92.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/93.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/94.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/95.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/96.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/97.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/98.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/99.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/emoticons/images/static.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/filemanager.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,189 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('filemanager', function(K) {
    var self = this, name = 'filemanager',
        fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'),
        imgPath = self.pluginsPath + name + '/images/',
        lang = self.lang(name + '.');
    function makeFileTitle(filename, filesize, datetime) {
        return filename + ' (' + Math.ceil(filesize / 1024) + 'KB, ' + datetime + ')';
    }
    function bindTitle(el, data) {
        if (data.is_dir) {
            el.attr('title', data.filename);
        } else {
            el.attr('title', makeFileTitle(data.filename, data.filesize, data.datetime));
        }
    }
    self.plugin.filemanagerDialog = function(options) {
        var width = K.undef(options.width, 650),
            height = K.undef(options.height, 510),
            dirName = K.undef(options.dirName, ''),
            viewType = K.undef(options.viewType, 'VIEW').toUpperCase(), // "LIST" or "VIEW"
            clickFn = options.clickFn;
        var html = [
            '<div style="padding:10px 20px;">',
            // header start
            '<div class="ke-plugin-filemanager-header">',
            // left start
            '<div class="ke-left">',
            '<img class="ke-inline-block" name="moveupImg" src="' + imgPath + 'go-up.gif" width="16" height="16" border="0" alt="" /> ',
            '<a class="ke-inline-block" name="moveupLink" href="javascript:;">' + lang.moveup + '</a>',
            '</div>',
            // right start
            '<div class="ke-right">',
            lang.viewType + ' <select class="ke-inline-block" name="viewType">',
            '<option value="VIEW">' + lang.viewImage + '</option>',
            '<option value="LIST">' + lang.listImage + '</option>',
            '</select> ',
            lang.orderType + ' <select class="ke-inline-block" name="orderType">',
            '<option value="NAME">' + lang.fileName + '</option>',
            '<option value="SIZE">' + lang.fileSize + '</option>',
            '<option value="TYPE">' + lang.fileType + '</option>',
            '</select>',
            '</div>',
            '<div class="ke-clearfix"></div>',
            '</div>',
            // body start
            '<div class="ke-plugin-filemanager-body"></div>',
            '</div>'
        ].join('');
        var dialog = self.createDialog({
            name : name,
            width : width,
            height : height,
            title : self.lang(name),
            body : html
        }),
        div = dialog.div,
        bodyDiv = K('.ke-plugin-filemanager-body', div),
        moveupImg = K('[name="moveupImg"]', div),
        moveupLink = K('[name="moveupLink"]', div),
        viewServerBtn = K('[name="viewServer"]', div),
        viewTypeBox = K('[name="viewType"]', div),
        orderTypeBox = K('[name="orderType"]', div);
        function reloadPage(path, order, func) {
            var param = 'path=' + path + '&order=' + order + '&dir=' + dirName;
            dialog.showLoading(self.lang('ajaxLoading'));
            K.ajax(K.addParam(fileManagerJson, param + '&' + new Date().getTime()), function(data) {
                dialog.hideLoading();
                func(data);
            });
        }
        var elList = [];
        function bindEvent(el, result, data, createFunc) {
            var fileUrl = K.formatUrl(result.current_url + data.filename, 'absolute'),
                dirPath = encodeURIComponent(result.current_dir_path + data.filename + '/');
            if (data.is_dir) {
                el.click(function(e) {
                    reloadPage(dirPath, orderTypeBox.val(), createFunc);
                });
            } else if (data.is_photo) {
                el.click(function(e) {
                    clickFn.call(this, fileUrl, data.filename);
                });
            } else {
                el.click(function(e) {
                    clickFn.call(this, fileUrl, data.filename);
                });
            }
            elList.push(el);
        }
        function createCommon(result, createFunc) {
            // remove events
            K.each(elList, function() {
                this.unbind();
            });
            moveupLink.unbind();
            viewTypeBox.unbind();
            orderTypeBox.unbind();
            // add events
            if (result.current_dir_path) {
                moveupLink.click(function(e) {
                    reloadPage(result.moveup_dir_path, orderTypeBox.val(), createFunc);
                });
            }
            function changeFunc() {
                if (viewTypeBox.val() == 'VIEW') {
                    reloadPage(result.current_dir_path, orderTypeBox.val(), createView);
                } else {
                    reloadPage(result.current_dir_path, orderTypeBox.val(), createList);
                }
            }
            viewTypeBox.change(changeFunc);
            orderTypeBox.change(changeFunc);
            bodyDiv.html('');
        }
        function createList(result) {
            createCommon(result, createList);
            var table = document.createElement('table');
            table.className = 'ke-table';
            table.cellPadding = 0;
            table.cellSpacing = 0;
            table.border = 0;
            bodyDiv.append(table);
            var fileList = result.file_list;
            for (var i = 0, len = fileList.length; i < len; i++) {
                var data = fileList[i], row = K(table.insertRow(i));
                row.mouseover(function(e) {
                    K(this).addClass('ke-on');
                })
                .mouseout(function(e) {
                    K(this).removeClass('ke-on');
                });
                var iconUrl = imgPath + (data.is_dir ? 'folder-16.gif' : 'file-16.gif'),
                    img = K('<img src="' + iconUrl + '" width="16" height="16" alt="' + data.filename + '" align="absmiddle" />'),
                    cell0 = K(row[0].insertCell(0)).addClass('ke-cell ke-name').append(img).append(document.createTextNode(' ' + data.filename));
                if (!data.is_dir || data.has_file) {
                    row.css('cursor', 'pointer');
                    cell0.attr('title', data.filename);
                    bindEvent(cell0, result, data, createList);
                } else {
                    cell0.attr('title', lang.emptyFolder);
                }
                K(row[0].insertCell(1)).addClass('ke-cell ke-size').html(data.is_dir ? '-' : Math.ceil(data.filesize / 1024) + 'KB');
                K(row[0].insertCell(2)).addClass('ke-cell ke-datetime').html(data.datetime);
            }
        }
        function createView(result) {
            createCommon(result, createView);
            var fileList = result.file_list;
            for (var i = 0, len = fileList.length; i < len; i++) {
                var data = fileList[i],
                    div = K('<div class="ke-inline-block ke-item"></div>');
                bodyDiv.append(div);
                var photoDiv = K('<div class="ke-inline-block ke-photo"></div>')
                    .mouseover(function(e) {
                        K(this).addClass('ke-on');
                    })
                    .mouseout(function(e) {
                        K(this).removeClass('ke-on');
                    });
                div.append(photoDiv);
                var fileUrl = result.current_url + data.filename,
                    iconUrl = data.is_dir ? imgPath + 'folder-64.gif' : (data.is_photo ? fileUrl : imgPath + 'file-64.gif');
                var img = K('<img src="' + iconUrl + '" width="80" height="80" alt="' + data.filename + '" />');
                if (!data.is_dir || data.has_file) {
                    photoDiv.css('cursor', 'pointer');
                    bindTitle(photoDiv, data);
                    bindEvent(photoDiv, result, data, createView);
                } else {
                    photoDiv.attr('title', lang.emptyFolder);
                }
                photoDiv.append(img);
                div.append('<div class="ke-name" title="' + data.filename + '">' + data.filename + '</div>');
            }
        }
        viewTypeBox.val(viewType);
        reloadPage('', orderTypeBox.val(), viewType == 'VIEW' ? createView : createList);
        return dialog;
    }
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/file-16.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/file-64.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/folder-16.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/folder-64.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/filemanager/images/go-up.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/flash/flash.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,161 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('flash', function(K) {
    var self = this, name = 'flash', lang = self.lang(name + '.'),
        allowFlashUpload = K.undef(self.allowFlashUpload, true),
        allowFileManager = K.undef(self.allowFileManager, false),
        formatUploadUrl = K.undef(self.formatUploadUrl, true),
        extraParams = K.undef(self.extraFileUploadParams, {}),
        filePostName = K.undef(self.filePostName, 'imgFile'),
        uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php');
    self.plugin.flash = {
        edit : function() {
            var html = [
                '<div style="padding:20px;">',
                //url
                '<div class="ke-dialog-row">',
                '<label for="keUrl" style="width:60px;">' + lang.url + '</label>',
                '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> &nbsp;',
                '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> &nbsp;',
                '<span class="ke-button-common ke-button-outer">',
                '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
                '</span>',
                '</div>',
                //width
                '<div class="ke-dialog-row">',
                '<label for="keWidth" style="width:60px;">' + lang.width + '</label>',
                '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ',
                '</div>',
                //height
                '<div class="ke-dialog-row">',
                '<label for="keHeight" style="width:60px;">' + lang.height + '</label>',
                '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ',
                '</div>',
                '</div>'
            ].join('');
            var dialog = self.createDialog({
                name : name,
                width : 450,
                title : self.lang(name),
                body : html,
                yesBtn : {
                    name : self.lang('yes'),
                    click : function(e) {
                        var url = K.trim(urlBox.val()),
                            width = widthBox.val(),
                            height = heightBox.val();
                        if (url == 'http://' || K.invalidUrl(url)) {
                            alert(self.lang('invalidUrl'));
                            urlBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(width)) {
                            alert(self.lang('invalidWidth'));
                            widthBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(height)) {
                            alert(self.lang('invalidHeight'));
                            heightBox[0].focus();
                            return;
                        }
                        var html = K.mediaImg(self.themesPath + 'common/blank.gif', {
                                src : url,
                                type : K.mediaType('.swf'),
                                width : width,
                                height : height,
                                quality : 'high'
                            });
                        self.insertHtml(html).hideDialog().focus();
                    }
                }
            }),
            div = dialog.div,
            urlBox = K('[name="url"]', div),
            viewServerBtn = K('[name="viewServer"]', div),
            widthBox = K('[name="width"]', div),
            heightBox = K('[name="height"]', div);
            urlBox.val('http://');
            if (allowFlashUpload) {
                var uploadbutton = K.uploadbutton({
                    button : K('.ke-upload-button', div)[0],
                    fieldName : filePostName,
                    extraParams : extraParams,
                    url : K.addParam(uploadJson, 'dir=flash'),
                    afterUpload : function(data) {
                        dialog.hideLoading();
                        if (data.error === 0) {
                            var url = data.url;
                            if (formatUploadUrl) {
                                url = K.formatUrl(url, 'absolute');
                            }
                            urlBox.val(url);
                            if (self.afterUpload) {
                                self.afterUpload.call(self, url, data, name);
                            }
                            alert(self.lang('uploadSuccess'));
                        } else {
                            alert(data.message);
                        }
                    },
                    afterError : function(html) {
                        dialog.hideLoading();
                        self.errorDialog(html);
                    }
                });
                uploadbutton.fileBox.change(function(e) {
                    dialog.showLoading(self.lang('uploadLoading'));
                    uploadbutton.submit();
                });
            } else {
                K('.ke-upload-button', div).hide();
            }
            if (allowFileManager) {
                viewServerBtn.click(function(e) {
                    self.loadPlugin('filemanager', function() {
                        self.plugin.filemanagerDialog({
                            viewType : 'LIST',
                            dirName : 'flash',
                            clickFn : function(url, title) {
                                if (self.dialogs.length > 1) {
                                    K('[name="url"]', div).val(url);
                                    if (self.afterSelectFile) {
                                        self.afterSelectFile.call(self, url);
                                    }
                                    self.hideDialog();
                                }
                            }
                        });
                    });
                });
            } else {
                viewServerBtn.hide();
            }
            var img = self.plugin.getSelectedFlash();
            if (img) {
                var attrs = K.mediaAttrs(img.attr('data-ke-tag'));
                urlBox.val(attrs.src);
                widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0);
                heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0);
            }
            urlBox[0].focus();
            urlBox[0].select();
        },
        'delete' : function() {
            self.plugin.getSelectedFlash().remove();
            // [IE] åˆ é™¤å›¾ç‰‡åŽç«‹å³ç‚¹å‡»å›¾ç‰‡æŒ‰é’®å‡ºé”™
            self.addBookmark();
        }
    };
    self.clickToolbar(name, self.plugin.flash.edit);
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/image.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,318 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('image', function(K) {
    var self = this, name = 'image',
        allowImageUpload = K.undef(self.allowImageUpload, true),
        allowImageRemote = K.undef(self.allowImageRemote, true),
        formatUploadUrl = K.undef(self.formatUploadUrl, true),
        allowFileManager = K.undef(self.allowFileManager, false),
        uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
        imageTabIndex = K.undef(self.imageTabIndex, 0),
        imgPath = self.pluginsPath + 'image/images/',
        extraParams = K.undef(self.extraFileUploadParams, {}),
        filePostName = K.undef(self.filePostName, 'imgFile'),
        fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false),
        lang = self.lang(name + '.');
    self.plugin.imageDialog = function(options) {
        var imageUrl = options.imageUrl,
            imageWidth = K.undef(options.imageWidth, ''),
            imageHeight = K.undef(options.imageHeight, ''),
            imageTitle = K.undef(options.imageTitle, ''),
            imageAlign = K.undef(options.imageAlign, ''),
            showRemote = K.undef(options.showRemote, true),
            showLocal = K.undef(options.showLocal, true),
            tabIndex = K.undef(options.tabIndex, 0),
            clickFn = options.clickFn;
        var target = 'kindeditor_upload_iframe_' + new Date().getTime();
        var hiddenElements = [];
        for(var k in extraParams){
            hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />');
        }
        var html = [
            '<div style="padding:20px;">',
            //tabs
            '<div class="tabs"></div>',
            //remote image - start
            '<div class="tab1" style="display:none;">',
            //url
            '<div class="ke-dialog-row">',
            '<label for="remoteUrl" style="width:60px;">' + lang.remoteUrl + '</label>',
            '<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:200px;" /> &nbsp;',
            '<span class="ke-button-common ke-button-outer">',
            '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
            '</span>',
            '</div>',
            //size
            '<div class="ke-dialog-row">',
            '<label for="remoteWidth" style="width:60px;">' + lang.size + '</label>',
            lang.width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',
            lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ',
            '<img class="ke-refresh-btn" src="' + imgPath + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + lang.resetSize + '" />',
            '</div>',
            //align
            '<div class="ke-dialog-row">',
            '<label style="width:60px;">' + lang.align + '</label>',
            '<input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> <img name="defaultImg" src="' + imgPath + 'align_top.gif" width="23" height="25" alt="" />',
            ' <input type="radio" name="align" class="ke-inline-block" value="left" /> <img name="leftImg" src="' + imgPath + 'align_left.gif" width="23" height="25" alt="" />',
            ' <input type="radio" name="align" class="ke-inline-block" value="right" /> <img name="rightImg" src="' + imgPath + 'align_right.gif" width="23" height="25" alt="" />',
            '</div>',
            //title
            '<div class="ke-dialog-row">',
            '<label for="remoteTitle" style="width:60px;">' + lang.imgTitle + '</label>',
            '<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:200px;" />',
            '</div>',
            '</div>',
            //remote image - end
            //local upload - start
            '<div class="tab2" style="display:none;">',
            '<iframe name="' + target + '" style="display:none;"></iframe>',
            '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + K.addParam(uploadJson, 'dir=image') + '">',
            //file
            '<div class="ke-dialog-row">',
            hiddenElements.join(''),
            '<label style="width:60px;">' + lang.localUrl + '</label>',
            '<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:200px;" readonly="true" /> &nbsp;',
            '<input type="button" class="ke-upload-button" value="' + lang.upload + '" />',
            '</div>',
            '</form>',
            '</div>',
            //local upload - end
            '</div>'
        ].join('');
        var dialogWidth = showLocal || allowFileManager ? 450 : 400,
            dialogHeight = showLocal && showRemote ? 300 : 250;
        var dialog = self.createDialog({
            name : name,
            width : dialogWidth,
            height : dialogHeight,
            title : self.lang(name),
            body : html,
            yesBtn : {
                name : self.lang('yes'),
                click : function(e) {
                    // Bugfix: http://code.google.com/p/kindeditor/issues/detail?id=319
                    if (dialog.isLoading) {
                        return;
                    }
                    // insert local image
                    if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) {
                        if (uploadbutton.fileBox.val() == '') {
                            alert(self.lang('pleaseSelectFile'));
                            return;
                        }
                        dialog.showLoading(self.lang('uploadLoading'));
                        uploadbutton.submit();
                        localUrlBox.val('');
                        return;
                    }
                    // insert remote image
                    var url = K.trim(urlBox.val()),
                        width = widthBox.val(),
                        height = heightBox.val(),
                        title = titleBox.val(),
                        align = '';
                    alignBox.each(function() {
                        if (this.checked) {
                            align = this.value;
                            return false;
                        }
                    });
                    if (url == 'http://' || K.invalidUrl(url)) {
                        alert(self.lang('invalidUrl'));
                        urlBox[0].focus();
                        return;
                    }
                    if (!/^\d*$/.test(width)) {
                        alert(self.lang('invalidWidth'));
                        widthBox[0].focus();
                        return;
                    }
                    if (!/^\d*$/.test(height)) {
                        alert(self.lang('invalidHeight'));
                        heightBox[0].focus();
                        return;
                    }
                    clickFn.call(self, url, title, width, height, 0, align);
                }
            },
            beforeRemove : function() {
                viewServerBtn.unbind();
                widthBox.unbind();
                heightBox.unbind();
                refreshBtn.unbind();
            }
        }),
        div = dialog.div;
        var urlBox = K('[name="url"]', div),
            localUrlBox = K('[name="localUrl"]', div),
            viewServerBtn = K('[name="viewServer"]', div),
            widthBox = K('.tab1 [name="width"]', div),
            heightBox = K('.tab1 [name="height"]', div),
            refreshBtn = K('.ke-refresh-btn', div),
            titleBox = K('.tab1 [name="title"]', div),
            alignBox = K('.tab1 [name="align"]', div);
        var tabs;
        if (showRemote && showLocal) {
            tabs = K.tabs({
                src : K('.tabs', div),
                afterSelect : function(i) {}
            });
            tabs.add({
                title : lang.remoteImage,
                panel : K('.tab1', div)
            });
            tabs.add({
                title : lang.localImage,
                panel : K('.tab2', div)
            });
            tabs.select(tabIndex);
        } else if (showRemote) {
            K('.tab1', div).show();
        } else if (showLocal) {
            K('.tab2', div).show();
        }
        var uploadbutton = K.uploadbutton({
            button : K('.ke-upload-button', div)[0],
            fieldName : filePostName,
            form : K('.ke-form', div),
            target : target,
            width: 60,
            afterUpload : function(data) {
                dialog.hideLoading();
                if (data.error === 0) {
                    var url = data.url;
                    if (formatUploadUrl) {
                        url = K.formatUrl(url, 'absolute');
                    }
                    if (self.afterUpload) {
                        self.afterUpload.call(self, url, data, name);
                    }
                    if (!fillDescAfterUploadImage) {
                        clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align);
                    } else {
                        K(".ke-dialog-row #remoteUrl", div).val(url);
                        K(".ke-tabs-li", div)[0].click();
                        K(".ke-refresh-btn", div).click();
                    }
                } else {
                    alert(data.message);
                }
            },
            afterError : function(html) {
                dialog.hideLoading();
                self.errorDialog(html);
            }
        });
        uploadbutton.fileBox.change(function(e) {
            localUrlBox.val(uploadbutton.fileBox.val());
        });
        if (allowFileManager) {
            viewServerBtn.click(function(e) {
                self.loadPlugin('filemanager', function() {
                    self.plugin.filemanagerDialog({
                        viewType : 'VIEW',
                        dirName : 'image',
                        clickFn : function(url, title) {
                            if (self.dialogs.length > 1) {
                                K('[name="url"]', div).val(url);
                                if (self.afterSelectFile) {
                                    self.afterSelectFile.call(self, url);
                                }
                                self.hideDialog();
                            }
                        }
                    });
                });
            });
        } else {
            viewServerBtn.hide();
        }
        var originalWidth = 0, originalHeight = 0;
        function setSize(width, height) {
            widthBox.val(width);
            heightBox.val(height);
            originalWidth = width;
            originalHeight = height;
        }
        refreshBtn.click(function(e) {
            var tempImg = K('<img src="' + urlBox.val() + '" />', document).css({
                position : 'absolute',
                visibility : 'hidden',
                top : 0,
                left : '-1000px'
            });
            tempImg.bind('load', function() {
                setSize(tempImg.width(), tempImg.height());
                tempImg.remove();
            });
            K(document.body).append(tempImg);
        });
        widthBox.change(function(e) {
            if (originalWidth > 0) {
                heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10)));
            }
        });
        heightBox.change(function(e) {
            if (originalHeight > 0) {
                widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10)));
            }
        });
        urlBox.val(options.imageUrl);
        setSize(options.imageWidth, options.imageHeight);
        titleBox.val(options.imageTitle);
        alignBox.each(function() {
            if (this.value === options.imageAlign) {
                this.checked = true;
                return false;
            }
        });
        if (showRemote && tabIndex === 0) {
            urlBox[0].focus();
            urlBox[0].select();
        }
        return dialog;
    };
    self.plugin.image = {
        edit : function() {
            var img = self.plugin.getSelectedImage();
            self.plugin.imageDialog({
                imageUrl : img ? img.attr('data-ke-src') : 'http://',
                imageWidth : img ? img.width() : '',
                imageHeight : img ? img.height() : '',
                imageTitle : img ? img.attr('title') : '',
                imageAlign : img ? img.attr('align') : '',
                showRemote : allowImageRemote,
                showLocal : allowImageUpload,
                tabIndex: img ? 0 : imageTabIndex,
                clickFn : function(url, title, width, height, border, align) {
                    self.exec('insertimage', url, title, width, height, border, align);
                    // Bugfix: [Firefox] ä¸Šä¼ å›¾ç‰‡åŽï¼Œæ€»æ˜¯å‡ºçŽ°æ­£åœ¨åŠ è½½çš„æ ·å¼ï¼Œéœ€è¦å»¶è¿Ÿæ‰§è¡ŒhideDialog
                    setTimeout(function() {
                        self.hideDialog().focus();
                    }, 0);
                }
            });
        },
        'delete' : function() {
            var target = self.plugin.getSelectedImage();
            if (target.parent().name == 'a') {
                target = target.parent();
            }
            target.remove();
            // [IE] åˆ é™¤å›¾ç‰‡åŽç«‹å³ç‚¹å‡»å›¾ç‰‡æŒ‰é’®å‡ºé”™
            self.addBookmark();
        }
    };
    self.clickToolbar(name, self.plugin.image.edit);
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/images/align_left.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/images/align_right.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/images/align_top.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/image/images/refresh.png
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/insertfile/insertfile.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('insertfile', function(K) {
    var self = this, name = 'insertfile',
        allowFileUpload = K.undef(self.allowFileUpload, true),
        allowFileManager = K.undef(self.allowFileManager, false),
        formatUploadUrl = K.undef(self.formatUploadUrl, true),
        uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
        extraParams = K.undef(self.extraFileUploadParams, {}),
        filePostName = K.undef(self.filePostName, 'imgFile'),
        lang = self.lang(name + '.');
    self.plugin.fileDialog = function(options) {
        var fileUrl = K.undef(options.fileUrl, 'http://'),
            fileTitle = K.undef(options.fileTitle, ''),
            clickFn = options.clickFn;
        var html = [
            '<div style="padding:20px;">',
            '<div class="ke-dialog-row">',
            '<label for="keUrl" style="width:60px;">' + lang.url + '</label>',
            '<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> &nbsp;',
            '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> &nbsp;',
            '<span class="ke-button-common ke-button-outer">',
            '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
            '</span>',
            '</div>',
            //title
            '<div class="ke-dialog-row">',
            '<label for="keTitle" style="width:60px;">' + lang.title + '</label>',
            '<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>',
            '</div>',
            //form end
            '</form>',
            '</div>'
            ].join('');
        var dialog = self.createDialog({
            name : name,
            width : 450,
            title : self.lang(name),
            body : html,
            yesBtn : {
                name : self.lang('yes'),
                click : function(e) {
                    var url = K.trim(urlBox.val()),
                        title = titleBox.val();
                    if (url == 'http://' || K.invalidUrl(url)) {
                        alert(self.lang('invalidUrl'));
                        urlBox[0].focus();
                        return;
                    }
                    if (K.trim(title) === '') {
                        title = url;
                    }
                    clickFn.call(self, url, title);
                }
            }
        }),
        div = dialog.div;
        var urlBox = K('[name="url"]', div),
            viewServerBtn = K('[name="viewServer"]', div),
            titleBox = K('[name="title"]', div);
        if (allowFileUpload) {
            var uploadbutton = K.uploadbutton({
                button : K('.ke-upload-button', div)[0],
                fieldName : filePostName,
                url : K.addParam(uploadJson, 'dir=file'),
                extraParams : extraParams,
                afterUpload : function(data) {
                    dialog.hideLoading();
                    if (data.error === 0) {
                        var url = data.url;
                        if (formatUploadUrl) {
                            url = K.formatUrl(url, 'absolute');
                        }
                        urlBox.val(url);
                        if (self.afterUpload) {
                            self.afterUpload.call(self, url, data, name);
                        }
                        alert(self.lang('uploadSuccess'));
                    } else {
                        alert(data.message);
                    }
                },
                afterError : function(html) {
                    dialog.hideLoading();
                    self.errorDialog(html);
                }
            });
            uploadbutton.fileBox.change(function(e) {
                dialog.showLoading(self.lang('uploadLoading'));
                uploadbutton.submit();
            });
        } else {
            K('.ke-upload-button', div).hide();
        }
        if (allowFileManager) {
            viewServerBtn.click(function(e) {
                self.loadPlugin('filemanager', function() {
                    self.plugin.filemanagerDialog({
                        viewType : 'LIST',
                        dirName : 'file',
                        clickFn : function(url, title) {
                            if (self.dialogs.length > 1) {
                                K('[name="url"]', div).val(url);
                                if (self.afterSelectFile) {
                                    self.afterSelectFile.call(self, url);
                                }
                                self.hideDialog();
                            }
                        }
                    });
                });
            });
        } else {
            viewServerBtn.hide();
        }
        urlBox.val(fileUrl);
        titleBox.val(fileTitle);
        urlBox[0].focus();
        urlBox[0].select();
    };
    self.clickToolbar(name, function() {
        self.plugin.fileDialog({
            clickFn : function(url, title) {
                var html = '<a class="ke-insertfile" href="' + url + '" data-ke-src="' + url + '" target="_blank">' + title + '</a>';
                self.insertHtml(html).hideDialog().focus();
            }
        });
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/lineheight/lineheight.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('lineheight', function(K) {
    var self = this, name = 'lineheight', lang = self.lang(name + '.');
    self.clickToolbar(name, function() {
        var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'});
        if (commonNode) {
            curVal = commonNode.css('line-height');
        }
        var menu = self.createMenu({
            name : name,
            width : 150
        });
        K.each(lang.lineHeight, function(i, row) {
            K.each(row, function(key, val) {
                menu.addItem({
                    title : val,
                    checked : curVal === key,
                    click : function() {
                        self.cmd.toggle('<span style="line-height:' + key + ';"></span>', {
                            span : '.line-height=' + key
                        });
                        self.updateState();
                        self.addBookmark();
                        self.hideMenu();
                    }
                });
            });
        });
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/link/link.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('link', function(K) {
    var self = this, name = 'link';
    self.plugin.link = {
        edit : function() {
            var lang = self.lang(name + '.'),
                html = '<div style="padding:20px;">' +
                    //url
                    '<div class="ke-dialog-row">' +
                    '<label for="keUrl" style="width:60px;">' + lang.url + '</label>' +
                    '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" /></div>' +
                    //type
                    '<div class="ke-dialog-row"">' +
                    '<label for="keType" style="width:60px;">' + lang.linkType + '</label>' +
                    '<select id="keType" name="type"></select>' +
                    '</div>' +
                    '</div>',
                dialog = self.createDialog({
                    name : name,
                    width : 450,
                    title : self.lang(name),
                    body : html,
                    yesBtn : {
                        name : self.lang('yes'),
                        click : function(e) {
                            var url = K.trim(urlBox.val());
                            if (url == 'http://' || K.invalidUrl(url)) {
                                alert(self.lang('invalidUrl'));
                                urlBox[0].focus();
                                return;
                            }
                            self.exec('createlink', url, typeBox.val()).hideDialog().focus();
                        }
                    }
                }),
                div = dialog.div,
                urlBox = K('input[name="url"]', div),
                typeBox = K('select[name="type"]', div);
            urlBox.val('http://');
            typeBox[0].options[0] = new Option(lang.newWindow, '_blank');
            typeBox[0].options[1] = new Option(lang.selfWindow, '');
            self.cmd.selection();
            var a = self.plugin.getSelectedLink();
            if (a) {
                self.cmd.range.selectNode(a[0]);
                self.cmd.select();
                urlBox.val(a.attr('data-ke-src'));
                typeBox.val(a.attr('target'));
            }
            urlBox[0].focus();
            urlBox[0].select();
        },
        'delete' : function() {
            self.exec('unlink', null);
        }
    };
    self.clickToolbar(name, self.plugin.link.edit);
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/map/map.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
<!doctype html>
<html>
    <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style>
        html { height: 100% }
        body { height: 100%; margin: 0; padding: 0; background-color: #FFF }
        #map_canvas { height: 100% }
    </style>
    <script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=zh_CN"></script>
    <script>
        var map, geocoder;
        function initialize() {
            var latlng = new google.maps.LatLng(31.230393, 121.473704);
            var options = {
                zoom: 11,
                center: latlng,
                disableDefaultUI: true,
                panControl: true,
                zoomControl: true,
                mapTypeControl: true,
                scaleControl: true,
                streetViewControl: false,
                overviewMapControl: true,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById("map_canvas"), options);
            geocoder = new google.maps.Geocoder();
            geocoder.geocode({latLng: latlng}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    if (results[3]) {
                        parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;
                    }
                }
            });
        }
        function search(address) {
            if (!map) return;
            geocoder.geocode({address : address}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    map.setZoom(11);
                    map.setCenter(results[0].geometry.location);
                    var marker = new google.maps.Marker({
                        map: map,
                        position: results[0].geometry.location
                    });
                } else {
                    alert("Invalid address: " + address);
                }
            });
        }
    </script>
    </head>
    <body onload="initialize();">
        <div id="map_canvas" style="width:100%; height:100%"></div>
    </body>
</html>
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/map/map.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
// Google Maps: http://code.google.com/apis/maps/index.html
KindEditor.plugin('map', function(K) {
    var self = this, name = 'map', lang = self.lang(name + '.');
    self.clickToolbar(name, function() {
        var html = ['<div style="padding:10px 20px;">',
            '<div class="ke-dialog-row">',
            lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
            '<span class="ke-button-common ke-button-outer">',
            '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />',
            '</span>',
            '</div>',
            '<div class="ke-map" style="width:558px;height:360px;"></div>',
            '</div>'].join('');
        var dialog = self.createDialog({
            name : name,
            width : 600,
            title : self.lang(name),
            body : html,
            yesBtn : {
                name : self.lang('yes'),
                click : function(e) {
                    var geocoder = win.geocoder,
                        map = win.map,
                        center = map.getCenter().lat() + ',' + map.getCenter().lng(),
                        zoom = map.getZoom(),
                        maptype = map.getMapTypeId(),
                        url = 'http://maps.googleapis.com/maps/api/staticmap';
                        url += '?center=' + encodeURIComponent(center);
                        url += '&zoom=' + encodeURIComponent(zoom);
                        url += '&size=558x360';
                        url += '&maptype=' + encodeURIComponent(maptype);
                        url += '&markers=' + encodeURIComponent(center);
                        url += '&language=' + self.langType;
                        url += '&sensor=false';
                    self.exec('insertimage', url).hideDialog().focus();
                }
            },
            beforeRemove : function() {
                searchBtn.remove();
                if (doc) {
                    doc.write('');
                }
                iframe.remove();
            }
        });
        var div = dialog.div,
            addressBox = K('[name="address"]', div),
            searchBtn = K('[name="searchBtn"]', div),
            win, doc;
        var iframeHtml = ['<!doctype html><html><head>',
            '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />',
            '<style>',
            '    html { height: 100% }',
            '    body { height: 100%; margin: 0; padding: 0; background-color: #FFF }',
            '    #map_canvas { height: 100% }',
            '</style>',
            '<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=' + self.langType + '"></script>',
            '<script>',
            'var map, geocoder;',
            'function initialize() {',
            '    var latlng = new google.maps.LatLng(31.230393, 121.473704);',
            '    var options = {',
            '        zoom: 11,',
            '        center: latlng,',
            '        disableDefaultUI: true,',
            '        panControl: true,',
            '        zoomControl: true,',
            '        mapTypeControl: true,',
            '        scaleControl: true,',
            '        streetViewControl: false,',
            '        overviewMapControl: true,',
            '        mapTypeId: google.maps.MapTypeId.ROADMAP',
            '    };',
            '    map = new google.maps.Map(document.getElementById("map_canvas"), options);',
            '    geocoder = new google.maps.Geocoder();',
            '    geocoder.geocode({latLng: latlng}, function(results, status) {',
            '        if (status == google.maps.GeocoderStatus.OK) {',
            '            if (results[3]) {',
            '                parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;',
            '            }',
            '        }',
            '    });',
            '}',
            'function search(address) {',
            '    if (!map) return;',
            '    geocoder.geocode({address : address}, function(results, status) {',
            '        if (status == google.maps.GeocoderStatus.OK) {',
            '            map.setZoom(11);',
            '            map.setCenter(results[0].geometry.location);',
            '            var marker = new google.maps.Marker({',
            '                map: map,',
            '                position: results[0].geometry.location',
            '            });',
            '        } else {',
            '            alert("Invalid address: " + address);',
            '        }',
            '    });',
            '}',
            '</script>',
            '</head>',
            '<body onload="initialize();">',
            '<div id="map_canvas" style="width:100%; height:100%"></div>',
            '</body></html>'].join('\n');
        // TODO:用doc.write(iframeHtml)方式加载时,在IE6上第一次加载报错,暂时使用src方式
        var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>');
        function ready() {
            win = iframe[0].contentWindow;
            doc = K.iframeDoc(iframe);
            //doc.open();
            //doc.write(iframeHtml);
            //doc.close();
        }
        iframe.bind('load', function() {
            iframe.unbind('load');
            if (K.IE) {
                ready();
            } else {
                setTimeout(ready, 0);
            }
        });
        K('.ke-map', div).replaceWith(iframe);
        // search map
        searchBtn.click(function() {
            win.search(addressBox.val());
        });
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/media/media.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,170 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('media', function(K) {
    var self = this, name = 'media', lang = self.lang(name + '.'),
        allowMediaUpload = K.undef(self.allowMediaUpload, true),
        allowFileManager = K.undef(self.allowFileManager, false),
        formatUploadUrl = K.undef(self.formatUploadUrl, true),
        extraParams = K.undef(self.extraFileUploadParams, {}),
        filePostName = K.undef(self.filePostName, 'imgFile'),
        uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php');
    self.plugin.media = {
        edit : function() {
            var html = [
                '<div style="padding:20px;">',
                //url
                '<div class="ke-dialog-row">',
                '<label for="keUrl" style="width:60px;">' + lang.url + '</label>',
                '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> &nbsp;',
                '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> &nbsp;',
                '<span class="ke-button-common ke-button-outer">',
                '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />',
                '</span>',
                '</div>',
                //width
                '<div class="ke-dialog-row">',
                '<label for="keWidth" style="width:60px;">' + lang.width + '</label>',
                '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />',
                '</div>',
                //height
                '<div class="ke-dialog-row">',
                '<label for="keHeight" style="width:60px;">' + lang.height + '</label>',
                '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />',
                '</div>',
                //autostart
                '<div class="ke-dialog-row">',
                '<label for="keAutostart">' + lang.autostart + '</label>',
                '<input type="checkbox" id="keAutostart" name="autostart" value="" /> ',
                '</div>',
                '</div>'
            ].join('');
            var dialog = self.createDialog({
                name : name,
                width : 450,
                height : 230,
                title : self.lang(name),
                body : html,
                yesBtn : {
                    name : self.lang('yes'),
                    click : function(e) {
                        var url = K.trim(urlBox.val()),
                            width = widthBox.val(),
                            height = heightBox.val();
                        if (url == 'http://' || K.invalidUrl(url)) {
                            alert(self.lang('invalidUrl'));
                            urlBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(width)) {
                            alert(self.lang('invalidWidth'));
                            widthBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(height)) {
                            alert(self.lang('invalidHeight'));
                            heightBox[0].focus();
                            return;
                        }
                        var html = K.mediaImg(self.themesPath + 'common/blank.gif', {
                                src : url,
                                type : K.mediaType(url),
                                width : width,
                                height : height,
                                autostart : autostartBox[0].checked ? 'true' : 'false',
                                loop : 'true'
                            });
                        self.insertHtml(html).hideDialog().focus();
                    }
                }
            }),
            div = dialog.div,
            urlBox = K('[name="url"]', div),
            viewServerBtn = K('[name="viewServer"]', div),
            widthBox = K('[name="width"]', div),
            heightBox = K('[name="height"]', div),
            autostartBox = K('[name="autostart"]', div);
            urlBox.val('http://');
            if (allowMediaUpload) {
                var uploadbutton = K.uploadbutton({
                    button : K('.ke-upload-button', div)[0],
                    fieldName : filePostName,
                    extraParams : extraParams,
                    url : K.addParam(uploadJson, 'dir=media'),
                    afterUpload : function(data) {
                        dialog.hideLoading();
                        if (data.error === 0) {
                            var url = data.url;
                            if (formatUploadUrl) {
                                url = K.formatUrl(url, 'absolute');
                            }
                            urlBox.val(url);
                            if (self.afterUpload) {
                                self.afterUpload.call(self, url, data, name);
                            }
                            alert(self.lang('uploadSuccess'));
                        } else {
                            alert(data.message);
                        }
                    },
                    afterError : function(html) {
                        dialog.hideLoading();
                        self.errorDialog(html);
                    }
                });
                uploadbutton.fileBox.change(function(e) {
                    dialog.showLoading(self.lang('uploadLoading'));
                    uploadbutton.submit();
                });
            } else {
                K('.ke-upload-button', div).hide();
            }
            if (allowFileManager) {
                viewServerBtn.click(function(e) {
                    self.loadPlugin('filemanager', function() {
                        self.plugin.filemanagerDialog({
                            viewType : 'LIST',
                            dirName : 'media',
                            clickFn : function(url, title) {
                                if (self.dialogs.length > 1) {
                                    K('[name="url"]', div).val(url);
                                    if (self.afterSelectFile) {
                                        self.afterSelectFile.call(self, url);
                                    }
                                    self.hideDialog();
                                }
                            }
                        });
                    });
                });
            } else {
                viewServerBtn.hide();
            }
            var img = self.plugin.getSelectedMedia();
            if (img) {
                var attrs = K.mediaAttrs(img.attr('data-ke-tag'));
                urlBox.val(attrs.src);
                widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0);
                heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0);
                autostartBox[0].checked = (attrs.autostart === 'true');
            }
            urlBox[0].focus();
            urlBox[0].select();
        },
        'delete' : function() {
            self.plugin.getSelectedMedia().remove();
            // [IE] åˆ é™¤å›¾ç‰‡åŽç«‹å³ç‚¹å‡»å›¾ç‰‡æŒ‰é’®å‡ºé”™
            self.addBookmark();
        }
    };
    self.clickToolbar(name, self.plugin.media.edit);
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/images/image.png
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/images/select-files-en.png
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/images/select-files-zh_CN.png
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/images/swfupload.swf
Binary files differ
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/multiimage/multiimage.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1388 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
(function(K) {
function KSWFUpload(options) {
    this.init(options);
}
K.extend(KSWFUpload, {
    init : function(options) {
        var self = this;
        options.afterError = options.afterError || function(str) {
            alert(str);
        };
        self.options = options;
        self.progressbars = {};
        // template
        self.div = K(options.container).html([
            '<div class="ke-swfupload">',
            '<div class="ke-swfupload-top">',
            '<div class="ke-inline-block ke-swfupload-button">',
            '<input type="button" value="Browse" />',
            '</div>',
            '<div class="ke-inline-block ke-swfupload-desc">' + options.uploadDesc + '</div>',
            '<span class="ke-button-common ke-button-outer ke-swfupload-startupload">',
            '<input type="button" class="ke-button-common ke-button" value="' + options.startButtonValue + '" />',
            '</span>',
            '</div>',
            '<div class="ke-swfupload-body"></div>',
            '</div>'
        ].join(''));
        self.bodyDiv = K('.ke-swfupload-body', self.div);
        function showError(itemDiv, msg) {
            K('.ke-status > div', itemDiv).hide();
            K('.ke-message', itemDiv).addClass('ke-error').show().html(K.escape(msg));
        }
        var settings = {
            debug : false,
            upload_url : options.uploadUrl,
            flash_url : options.flashUrl,
            file_post_name : options.filePostName,
            button_placeholder : K('.ke-swfupload-button > input', self.div)[0],
            button_image_url: options.buttonImageUrl,
            button_width: options.buttonWidth,
            button_height: options.buttonHeight,
            button_cursor : SWFUpload.CURSOR.HAND,
            file_types : options.fileTypes,
            file_types_description : options.fileTypesDesc,
            file_upload_limit : options.fileUploadLimit,
            file_size_limit : options.fileSizeLimit,
            post_params : options.postParams,
            file_queued_handler : function(file) {
                file.url = self.options.fileIconUrl;
                self.appendFile(file);
            },
            file_queue_error_handler : function(file, errorCode, message) {
                var errorName = '';
                switch (errorCode) {
                    case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
                        errorName = options.queueLimitExceeded;
                        break;
                    case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
                        errorName = options.fileExceedsSizeLimit;
                        break;
                    case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
                        errorName = options.zeroByteFile;
                        break;
                    case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
                        errorName = options.invalidFiletype;
                        break;
                    default:
                        errorName = options.unknownError;
                        break;
                }
                K.DEBUG && alert(errorName);
            },
            upload_start_handler : function(file) {
                var self = this;
                var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv);
                K('.ke-status > div', itemDiv).hide();
                K('.ke-progressbar', itemDiv).show();
            },
            upload_progress_handler : function(file, bytesLoaded, bytesTotal) {
                var percent = Math.round(bytesLoaded * 100 / bytesTotal);
                var progressbar = self.progressbars[file.id];
                progressbar.bar.css('width', Math.round(percent * 80 / 100) + 'px');
                progressbar.percent.html(percent + '%');
            },
            upload_error_handler : function(file, errorCode, message) {
                if (file && file.filestatus == SWFUpload.FILE_STATUS.ERROR) {
                    var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv).eq(0);
                    showError(itemDiv, self.options.errorMessage);
                }
            },
            upload_success_handler : function(file, serverData) {
                var itemDiv = K('div[data-id="' + file.id + '"]', self.bodyDiv).eq(0);
                var data = {};
                try {
                    data = K.json(serverData);
                } catch (e) {
                    self.options.afterError.call(this, '<!doctype html><html>' + serverData + '</html>');
                }
                if (data.error !== 0) {
                    showError(itemDiv, K.DEBUG ? data.message : self.options.errorMessage);
                    return;
                }
                file.url = data.url;
                K('.ke-img', itemDiv).attr('src', file.url).attr('data-status', file.filestatus).data('data', data);
                K('.ke-status > div', itemDiv).hide();
            }
        };
        self.swfu = new SWFUpload(settings);
        K('.ke-swfupload-startupload input', self.div).click(function() {
            self.swfu.startUpload();
        });
    },
    getUrlList : function() {
        var list = [];
        K('.ke-img', self.bodyDiv).each(function() {
            var img = K(this);
            var status = img.attr('data-status');
            if (status == SWFUpload.FILE_STATUS.COMPLETE) {
                list.push(img.data('data'));
            }
        });
        return list;
    },
    removeFile : function(fileId) {
        var self = this;
        self.swfu.cancelUpload(fileId);
        var itemDiv = K('div[data-id="' + fileId + '"]', self.bodyDiv);
        K('.ke-photo', itemDiv).unbind();
        K('.ke-delete', itemDiv).unbind();
        itemDiv.remove();
    },
    removeFiles : function() {
        var self = this;
        K('.ke-item', self.bodyDiv).each(function() {
            self.removeFile(K(this).attr('data-id'));
        });
    },
    appendFile : function(file) {
        var self = this;
        var itemDiv = K('<div class="ke-inline-block ke-item" data-id="' + file.id + '"></div>');
        self.bodyDiv.append(itemDiv);
        var photoDiv = K('<div class="ke-inline-block ke-photo"></div>')
            .mouseover(function(e) {
                K(this).addClass('ke-on');
            })
            .mouseout(function(e) {
                K(this).removeClass('ke-on');
            });
        itemDiv.append(photoDiv);
        var img = K('<img src="' + file.url + '" class="ke-img" data-status="' + file.filestatus + '" width="80" height="80" alt="' + file.name + '" />');
        photoDiv.append(img);
        K('<span class="ke-delete"></span>').appendTo(photoDiv).click(function() {
            self.removeFile(file.id);
        });
        var statusDiv = K('<div class="ke-status"></div>').appendTo(photoDiv);
        // progressbar
        K(['<div class="ke-progressbar">',
            '<div class="ke-progressbar-bar"><div class="ke-progressbar-bar-inner"></div></div>',
            '<div class="ke-progressbar-percent">0%</div></div>'].join('')).hide().appendTo(statusDiv);
        // message
        K('<div class="ke-message">' + self.options.pendingMessage + '</div>').appendTo(statusDiv);
        itemDiv.append('<div class="ke-name">' + file.name + '</div>');
        self.progressbars[file.id] = {
            bar : K('.ke-progressbar-bar-inner', photoDiv),
            percent : K('.ke-progressbar-percent', photoDiv)
        };
    },
    remove : function() {
        this.removeFiles();
        this.swfu.destroy();
        this.div.html('');
    }
});
K.swfupload = function(element, options) {
    return new KSWFUpload(element, options);
};
})(KindEditor);
KindEditor.plugin('multiimage', function(K) {
    var self = this, name = 'multiimage',
        formatUploadUrl = K.undef(self.formatUploadUrl, true),
        uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
        imgPath = self.pluginsPath + 'multiimage/images/',
        imageSizeLimit = K.undef(self.imageSizeLimit, '1MB'),
        imageFileTypes = K.undef(self.imageFileTypes, '*.jpg;*.gif;*.png'),
        imageUploadLimit = K.undef(self.imageUploadLimit, 20),
        filePostName = K.undef(self.filePostName, 'imgFile'),
        lang = self.lang(name + '.');
    self.plugin.multiImageDialog = function(options) {
        var clickFn = options.clickFn,
            uploadDesc = K.tmpl(lang.uploadDesc, {uploadLimit : imageUploadLimit, sizeLimit : imageSizeLimit});
        var html = [
            '<div style="padding:20px;">',
            '<div class="swfupload">',
            '</div>',
            '</div>'
        ].join('');
        var dialog = self.createDialog({
            name : name,
            width : 650,
            height : 510,
            title : self.lang(name),
            body : html,
            previewBtn : {
                name : lang.insertAll,
                click : function(e) {
                    clickFn.call(self, swfupload.getUrlList());
                }
            },
            yesBtn : {
                name : lang.clearAll,
                click : function(e) {
                    swfupload.removeFiles();
                }
            },
            beforeRemove : function() {
                // IE9 bugfix: https://github.com/kindsoft/kindeditor/issues/72
                if (!K.IE || K.V <= 8) {
                    swfupload.remove();
                }
            }
        }),
        div = dialog.div;
        var swfupload = K.swfupload({
            container : K('.swfupload', div),
            buttonImageUrl : imgPath + (self.langType == 'zh_CN' ? 'select-files-zh_CN.png' : 'select-files-en.png'),
            buttonWidth : self.langType == 'zh_CN' ? 72 : 88,
            buttonHeight : 23,
            fileIconUrl : imgPath + 'image.png',
            uploadDesc : uploadDesc,
            startButtonValue : lang.startUpload,
            uploadUrl : K.addParam(uploadJson, 'dir=image'),
            flashUrl : imgPath + 'swfupload.swf',
            filePostName : filePostName,
            fileTypes : '*.jpg;*.jpeg;*.gif;*.png;*.bmp',
            fileTypesDesc : 'Image Files',
            fileUploadLimit : imageUploadLimit,
            fileSizeLimit : imageSizeLimit,
            postParams :  K.undef(self.extraFileUploadParams, {}),
            queueLimitExceeded : lang.queueLimitExceeded,
            fileExceedsSizeLimit : lang.fileExceedsSizeLimit,
            zeroByteFile : lang.zeroByteFile,
            invalidFiletype : lang.invalidFiletype,
            unknownError : lang.unknownError,
            pendingMessage : lang.pending,
            errorMessage : lang.uploadError,
            afterError : function(html) {
                self.errorDialog(html);
            }
        });
        return dialog;
    };
    self.clickToolbar(name, function() {
        self.plugin.multiImageDialog({
            clickFn : function (urlList) {
                if (urlList.length === 0) {
                    return;
                }
                K.each(urlList, function(i, data) {
                    if (self.afterUpload) {
                        self.afterUpload.call(self, data.url, data, 'multiimage');
                    }
                    self.exec('insertimage', data.url, data.title, data.width, data.height, data.border, data.align);
                });
                // Bugfix: [Firefox] ä¸Šä¼ å›¾ç‰‡åŽï¼Œæ€»æ˜¯å‡ºçŽ°æ­£åœ¨åŠ è½½çš„æ ·å¼ï¼Œéœ€è¦å»¶è¿Ÿæ‰§è¡ŒhideDialog
                setTimeout(function() {
                    self.hideDialog().focus();
                }, 0);
            }
        });
    });
});
/**
 * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com
 *
 * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/,  http://www.vinterwebb.se/
 *
 * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilz閚 and Mammon Media and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
/* ******************* */
/* Constructor & Init  */
/* ******************* */
(function() {
if (window.SWFUpload) {
    return;
}
window.SWFUpload = function (settings) {
    this.initSWFUpload(settings);
};
SWFUpload.prototype.initSWFUpload = function (settings) {
    try {
        this.customSettings = {};    // A container where developers can place their own settings associated with this instance.
        this.settings = settings;
        this.eventQueue = [];
        this.movieName = "SWFUpload_" + SWFUpload.movieCount++;
        this.movieElement = null;
        // Setup global control tracking
        SWFUpload.instances[this.movieName] = this;
        // Load the settings.  Load the Flash movie.
        this.initSettings();
        this.loadFlash();
        this.displayDebugInfo();
    } catch (ex) {
        delete SWFUpload.instances[this.movieName];
        throw ex;
    }
};
/* *************** */
/* Static Members  */
/* *************** */
SWFUpload.instances = {};
SWFUpload.movieCount = 0;
SWFUpload.version = "2.2.0 2009-03-25";
SWFUpload.QUEUE_ERROR = {
    QUEUE_LIMIT_EXCEEDED              : -100,
    FILE_EXCEEDS_SIZE_LIMIT          : -110,
    ZERO_BYTE_FILE                      : -120,
    INVALID_FILETYPE                  : -130
};
SWFUpload.UPLOAD_ERROR = {
    HTTP_ERROR                          : -200,
    MISSING_UPLOAD_URL                  : -210,
    IO_ERROR                          : -220,
    SECURITY_ERROR                      : -230,
    UPLOAD_LIMIT_EXCEEDED              : -240,
    UPLOAD_FAILED                      : -250,
    SPECIFIED_FILE_ID_NOT_FOUND        : -260,
    FILE_VALIDATION_FAILED              : -270,
    FILE_CANCELLED                      : -280,
    UPLOAD_STOPPED                    : -290
};
SWFUpload.FILE_STATUS = {
    QUEUED         : -1,
    IN_PROGRESS     : -2,
    ERROR         : -3,
    COMPLETE     : -4,
    CANCELLED     : -5
};
SWFUpload.BUTTON_ACTION = {
    SELECT_FILE  : -100,
    SELECT_FILES : -110,
    START_UPLOAD : -120
};
SWFUpload.CURSOR = {
    ARROW : -1,
    HAND : -2
};
SWFUpload.WINDOW_MODE = {
    WINDOW : "window",
    TRANSPARENT : "transparent",
    OPAQUE : "opaque"
};
// Private: takes a URL, determines if it is relative and converts to an absolute URL
// using the current site. Only processes the URL if it can, otherwise returns the URL untouched
SWFUpload.completeURL = function(url) {
    if (typeof(url) !== "string" || url.match(/^https?:\/\//i) || url.match(/^\//)) {
        return url;
    }
    var currentURL = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ":" + window.location.port : "");
    var indexSlash = window.location.pathname.lastIndexOf("/");
    if (indexSlash <= 0) {
        path = "/";
    } else {
        path = window.location.pathname.substr(0, indexSlash) + "/";
    }
    return /*currentURL +*/ path + url;
};
/* ******************** */
/* Instance Members  */
/* ******************** */
// Private: initSettings ensures that all the
// settings are set, getting a default value if one was not assigned.
SWFUpload.prototype.initSettings = function () {
    this.ensureDefault = function (settingName, defaultValue) {
        this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName];
    };
    // Upload backend settings
    this.ensureDefault("upload_url", "");
    this.ensureDefault("preserve_relative_urls", false);
    this.ensureDefault("file_post_name", "Filedata");
    this.ensureDefault("post_params", {});
    this.ensureDefault("use_query_string", false);
    this.ensureDefault("requeue_on_error", false);
    this.ensureDefault("http_success", []);
    this.ensureDefault("assume_success_timeout", 0);
    // File Settings
    this.ensureDefault("file_types", "*.*");
    this.ensureDefault("file_types_description", "All Files");
    this.ensureDefault("file_size_limit", 0);    // Default zero means "unlimited"
    this.ensureDefault("file_upload_limit", 0);
    this.ensureDefault("file_queue_limit", 0);
    // Flash Settings
    this.ensureDefault("flash_url", "swfupload.swf");
    this.ensureDefault("prevent_swf_caching", true);
    // Button Settings
    this.ensureDefault("button_image_url", "");
    this.ensureDefault("button_width", 1);
    this.ensureDefault("button_height", 1);
    this.ensureDefault("button_text", "");
    this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;");
    this.ensureDefault("button_text_top_padding", 0);
    this.ensureDefault("button_text_left_padding", 0);
    this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES);
    this.ensureDefault("button_disabled", false);
    this.ensureDefault("button_placeholder_id", "");
    this.ensureDefault("button_placeholder", null);
    this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW);
    this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW);
    // Debug Settings
    this.ensureDefault("debug", false);
    this.settings.debug_enabled = this.settings.debug;    // Here to maintain v2 API
    // Event Handlers
    this.settings.return_upload_start_handler = this.returnUploadStart;
    this.ensureDefault("swfupload_loaded_handler", null);
    this.ensureDefault("file_dialog_start_handler", null);
    this.ensureDefault("file_queued_handler", null);
    this.ensureDefault("file_queue_error_handler", null);
    this.ensureDefault("file_dialog_complete_handler", null);
    this.ensureDefault("upload_start_handler", null);
    this.ensureDefault("upload_progress_handler", null);
    this.ensureDefault("upload_error_handler", null);
    this.ensureDefault("upload_success_handler", null);
    this.ensureDefault("upload_complete_handler", null);
    this.ensureDefault("debug_handler", this.debugMessage);
    this.ensureDefault("custom_settings", {});
    // Other settings
    this.customSettings = this.settings.custom_settings;
    // Update the flash url if needed
    if (!!this.settings.prevent_swf_caching) {
        this.settings.flash_url = this.settings.flash_url + (this.settings.flash_url.indexOf("?") < 0 ? "?" : "&") + "preventswfcaching=" + new Date().getTime();
    }
    if (!this.settings.preserve_relative_urls) {
        //this.settings.flash_url = SWFUpload.completeURL(this.settings.flash_url);    // Don't need to do this one since flash doesn't look at it
        this.settings.upload_url = SWFUpload.completeURL(this.settings.upload_url);
        this.settings.button_image_url = SWFUpload.completeURL(this.settings.button_image_url);
    }
    delete this.ensureDefault;
};
// Private: loadFlash replaces the button_placeholder element with the flash movie.
SWFUpload.prototype.loadFlash = function () {
    var targetElement, tempParent;
    // Make sure an element with the ID we are going to use doesn't already exist
    if (document.getElementById(this.movieName) !== null) {
        throw "ID " + this.movieName + " is already in use. The Flash Object could not be added";
    }
    // Get the element where we will be placing the flash movie
    targetElement = document.getElementById(this.settings.button_placeholder_id) || this.settings.button_placeholder;
    if (targetElement == undefined) {
        throw "Could not find the placeholder element: " + this.settings.button_placeholder_id;
    }
    // Append the container and load the flash
    tempParent = document.createElement("div");
    tempParent.innerHTML = this.getFlashHTML();    // Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers)
    targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement);
    // Fix IE Flash/Form bug
    if (window[this.movieName] == undefined) {
        window[this.movieName] = this.getMovieElement();
    }
};
// Private: getFlashHTML generates the object tag needed to embed the flash in to the document
SWFUpload.prototype.getFlashHTML = function () {
    // Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
    // Fix bug for IE9
    // http://www.kindsoft.net/view.php?bbsid=7&postid=5825&pagenum=1
    var classid = '';
    if (KindEditor.IE && KindEditor.V > 8) {
        classid = ' classid = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';
    }
    return ['<object id="', this.movieName, '"' + classid + ' type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">',
                '<param name="wmode" value="', this.settings.button_window_mode, '" />',
                '<param name="movie" value="', this.settings.flash_url, '" />',
                '<param name="quality" value="high" />',
                '<param name="menu" value="false" />',
                '<param name="allowScriptAccess" value="always" />',
                '<param name="flashvars" value="' + this.getFlashVars() + '" />',
                '</object>'].join("");
};
// Private: getFlashVars builds the parameter string that will be passed
// to flash in the flashvars param.
SWFUpload.prototype.getFlashVars = function () {
    // Build a string from the post param object
    var paramString = this.buildParamString();
    var httpSuccessString = this.settings.http_success.join(",");
    // Build the parameter string
    return ["movieName=", encodeURIComponent(this.movieName),
            "&amp;uploadURL=", encodeURIComponent(this.settings.upload_url),
            "&amp;useQueryString=", encodeURIComponent(this.settings.use_query_string),
            "&amp;requeueOnError=", encodeURIComponent(this.settings.requeue_on_error),
            "&amp;httpSuccess=", encodeURIComponent(httpSuccessString),
            "&amp;assumeSuccessTimeout=", encodeURIComponent(this.settings.assume_success_timeout),
            "&amp;params=", encodeURIComponent(paramString),
            "&amp;filePostName=", encodeURIComponent(this.settings.file_post_name),
            "&amp;fileTypes=", encodeURIComponent(this.settings.file_types),
            "&amp;fileTypesDescription=", encodeURIComponent(this.settings.file_types_description),
            "&amp;fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit),
            "&amp;fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit),
            "&amp;fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit),
            "&amp;debugEnabled=", encodeURIComponent(this.settings.debug_enabled),
            "&amp;buttonImageURL=", encodeURIComponent(this.settings.button_image_url),
            "&amp;buttonWidth=", encodeURIComponent(this.settings.button_width),
            "&amp;buttonHeight=", encodeURIComponent(this.settings.button_height),
            "&amp;buttonText=", encodeURIComponent(this.settings.button_text),
            "&amp;buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding),
            "&amp;buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding),
            "&amp;buttonTextStyle=", encodeURIComponent(this.settings.button_text_style),
            "&amp;buttonAction=", encodeURIComponent(this.settings.button_action),
            "&amp;buttonDisabled=", encodeURIComponent(this.settings.button_disabled),
            "&amp;buttonCursor=", encodeURIComponent(this.settings.button_cursor)
        ].join("");
};
// Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload
// The element is cached after the first lookup
SWFUpload.prototype.getMovieElement = function () {
    if (this.movieElement == undefined) {
        this.movieElement = document.getElementById(this.movieName);
    }
    if (this.movieElement === null) {
        throw "Could not find Flash element";
    }
    return this.movieElement;
};
// Private: buildParamString takes the name/value pairs in the post_params setting object
// and joins them up in to a string formatted "name=value&amp;name=value"
SWFUpload.prototype.buildParamString = function () {
    var postParams = this.settings.post_params;
    var paramStringPairs = [];
    if (typeof(postParams) === "object") {
        for (var name in postParams) {
            if (postParams.hasOwnProperty(name)) {
                paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString()));
            }
        }
    }
    return paramStringPairs.join("&amp;");
};
// Public: Used to remove a SWFUpload instance from the page. This method strives to remove
// all references to the SWF, and other objects so memory is properly freed.
// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state.
// Credits: Major improvements provided by steffen
SWFUpload.prototype.destroy = function () {
    try {
        // Make sure Flash is done before we try to remove it
        this.cancelUpload(null, false);
        // Remove the SWFUpload DOM nodes
        var movieElement = null;
        movieElement = this.getMovieElement();
        if (movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
            // Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround)
            for (var i in movieElement) {
                try {
                    if (typeof(movieElement[i]) === "function") {
                        movieElement[i] = null;
                    }
                } catch (ex1) {}
            }
            // Remove the Movie Element from the page
            try {
                movieElement.parentNode.removeChild(movieElement);
            } catch (ex) {}
        }
        // Remove IE form fix reference
        window[this.movieName] = null;
        // Destroy other references
        SWFUpload.instances[this.movieName] = null;
        delete SWFUpload.instances[this.movieName];
        this.movieElement = null;
        this.settings = null;
        this.customSettings = null;
        this.eventQueue = null;
        this.movieName = null;
        return true;
    } catch (ex2) {
        return false;
    }
};
// Public: displayDebugInfo prints out settings and configuration
// information about this SWFUpload instance.
// This function (and any references to it) can be deleted when placing
// SWFUpload in production.
SWFUpload.prototype.displayDebugInfo = function () {
    this.debug(
        [
            "---SWFUpload Instance Info---\n",
            "Version: ", SWFUpload.version, "\n",
            "Movie Name: ", this.movieName, "\n",
            "Settings:\n",
            "\t", "upload_url:               ", this.settings.upload_url, "\n",
            "\t", "flash_url:                ", this.settings.flash_url, "\n",
            "\t", "use_query_string:         ", this.settings.use_query_string.toString(), "\n",
            "\t", "requeue_on_error:         ", this.settings.requeue_on_error.toString(), "\n",
            "\t", "http_success:             ", this.settings.http_success.join(", "), "\n",
            "\t", "assume_success_timeout:   ", this.settings.assume_success_timeout, "\n",
            "\t", "file_post_name:           ", this.settings.file_post_name, "\n",
            "\t", "post_params:              ", this.settings.post_params.toString(), "\n",
            "\t", "file_types:               ", this.settings.file_types, "\n",
            "\t", "file_types_description:   ", this.settings.file_types_description, "\n",
            "\t", "file_size_limit:          ", this.settings.file_size_limit, "\n",
            "\t", "file_upload_limit:        ", this.settings.file_upload_limit, "\n",
            "\t", "file_queue_limit:         ", this.settings.file_queue_limit, "\n",
            "\t", "debug:                    ", this.settings.debug.toString(), "\n",
            "\t", "prevent_swf_caching:      ", this.settings.prevent_swf_caching.toString(), "\n",
            "\t", "button_placeholder_id:    ", this.settings.button_placeholder_id.toString(), "\n",
            "\t", "button_placeholder:       ", (this.settings.button_placeholder ? "Set" : "Not Set"), "\n",
            "\t", "button_image_url:         ", this.settings.button_image_url.toString(), "\n",
            "\t", "button_width:             ", this.settings.button_width.toString(), "\n",
            "\t", "button_height:            ", this.settings.button_height.toString(), "\n",
            "\t", "button_text:              ", this.settings.button_text.toString(), "\n",
            "\t", "button_text_style:        ", this.settings.button_text_style.toString(), "\n",
            "\t", "button_text_top_padding:  ", this.settings.button_text_top_padding.toString(), "\n",
            "\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n",
            "\t", "button_action:            ", this.settings.button_action.toString(), "\n",
            "\t", "button_disabled:          ", this.settings.button_disabled.toString(), "\n",
            "\t", "custom_settings:          ", this.settings.custom_settings.toString(), "\n",
            "Event Handlers:\n",
            "\t", "swfupload_loaded_handler assigned:  ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n",
            "\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n",
            "\t", "file_queued_handler assigned:       ", (typeof this.settings.file_queued_handler === "function").toString(), "\n",
            "\t", "file_queue_error_handler assigned:  ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n",
            "\t", "upload_start_handler assigned:      ", (typeof this.settings.upload_start_handler === "function").toString(), "\n",
            "\t", "upload_progress_handler assigned:   ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n",
            "\t", "upload_error_handler assigned:      ", (typeof this.settings.upload_error_handler === "function").toString(), "\n",
            "\t", "upload_success_handler assigned:    ", (typeof this.settings.upload_success_handler === "function").toString(), "\n",
            "\t", "upload_complete_handler assigned:   ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n",
            "\t", "debug_handler assigned:             ", (typeof this.settings.debug_handler === "function").toString(), "\n"
        ].join("")
    );
};
/* Note: addSetting and getSetting are no longer used by SWFUpload but are included
    the maintain v2 API compatibility
*/
// Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used.
SWFUpload.prototype.addSetting = function (name, value, default_value) {
    if (value == undefined) {
        return (this.settings[name] = default_value);
    } else {
        return (this.settings[name] = value);
    }
};
// Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found.
SWFUpload.prototype.getSetting = function (name) {
    if (this.settings[name] != undefined) {
        return this.settings[name];
    }
    return "";
};
// Private: callFlash handles function calls made to the Flash element.
// Calls are made with a setTimeout for some functions to work around
// bugs in the ExternalInterface library.
SWFUpload.prototype.callFlash = function (functionName, argumentArray) {
    argumentArray = argumentArray || [];
    var movieElement = this.getMovieElement();
    var returnValue, returnString;
    // Flash's method if calling ExternalInterface methods (code adapted from MooTools).
    try {
        returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>');
        returnValue = eval(returnString);
    } catch (ex) {
        throw "Call to " + functionName + " failed";
    }
    // Unescape file post param values
    if (returnValue != undefined && typeof returnValue.post === "object") {
        returnValue = this.unescapeFilePostParams(returnValue);
    }
    return returnValue;
};
/* *****************************
    -- Flash control methods --
    Your UI should use these
    to operate SWFUpload
   ***************************** */
// WARNING: this function does not work in Flash Player 10
// Public: selectFile causes a File Selection Dialog window to appear.  This
// dialog only allows 1 file to be selected.
SWFUpload.prototype.selectFile = function () {
    this.callFlash("SelectFile");
};
// WARNING: this function does not work in Flash Player 10
// Public: selectFiles causes a File Selection Dialog window to appear/ This
// dialog allows the user to select any number of files
// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names.
// If the selection name length is too long the dialog will fail in an unpredictable manner.  There is no work-around
// for this bug.
SWFUpload.prototype.selectFiles = function () {
    this.callFlash("SelectFiles");
};
// Public: startUpload starts uploading the first file in the queue unless
// the optional parameter 'fileID' specifies the ID
SWFUpload.prototype.startUpload = function (fileID) {
    this.callFlash("StartUpload", [fileID]);
};
// Public: cancelUpload cancels any queued file.  The fileID parameter may be the file ID or index.
// If you do not specify a fileID the current uploading file or first file in the queue is cancelled.
// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter.
SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) {
    if (triggerErrorEvent !== false) {
        triggerErrorEvent = true;
    }
    this.callFlash("CancelUpload", [fileID, triggerErrorEvent]);
};
// Public: stopUpload stops the current upload and requeues the file at the beginning of the queue.
// If nothing is currently uploading then nothing happens.
SWFUpload.prototype.stopUpload = function () {
    this.callFlash("StopUpload");
};
/* ************************
 * Settings methods
 *   These methods change the SWFUpload settings.
 *   SWFUpload settings should not be changed directly on the settings object
 *   since many of the settings need to be passed to Flash in order to take
 *   effect.
 * *********************** */
// Public: getStats gets the file statistics object.
SWFUpload.prototype.getStats = function () {
    return this.callFlash("GetStats");
};
// Public: setStats changes the SWFUpload statistics.  You shouldn't need to
// change the statistics but you can.  Changing the statistics does not
// affect SWFUpload accept for the successful_uploads count which is used
// by the upload_limit setting to determine how many files the user may upload.
SWFUpload.prototype.setStats = function (statsObject) {
    this.callFlash("SetStats", [statsObject]);
};
// Public: getFile retrieves a File object by ID or Index.  If the file is
// not found then 'null' is returned.
SWFUpload.prototype.getFile = function (fileID) {
    if (typeof(fileID) === "number") {
        return this.callFlash("GetFileByIndex", [fileID]);
    } else {
        return this.callFlash("GetFile", [fileID]);
    }
};
// Public: addFileParam sets a name/value pair that will be posted with the
// file specified by the Files ID.  If the name already exists then the
// exiting value will be overwritten.
SWFUpload.prototype.addFileParam = function (fileID, name, value) {
    return this.callFlash("AddFileParam", [fileID, name, value]);
};
// Public: removeFileParam removes a previously set (by addFileParam) name/value
// pair from the specified file.
SWFUpload.prototype.removeFileParam = function (fileID, name) {
    this.callFlash("RemoveFileParam", [fileID, name]);
};
// Public: setUploadUrl changes the upload_url setting.
SWFUpload.prototype.setUploadURL = function (url) {
    this.settings.upload_url = url.toString();
    this.callFlash("SetUploadURL", [url]);
};
// Public: setPostParams changes the post_params setting
SWFUpload.prototype.setPostParams = function (paramsObject) {
    this.settings.post_params = paramsObject;
    this.callFlash("SetPostParams", [paramsObject]);
};
// Public: addPostParam adds post name/value pair.  Each name can have only one value.
SWFUpload.prototype.addPostParam = function (name, value) {
    this.settings.post_params[name] = value;
    this.callFlash("SetPostParams", [this.settings.post_params]);
};
// Public: removePostParam deletes post name/value pair.
SWFUpload.prototype.removePostParam = function (name) {
    delete this.settings.post_params[name];
    this.callFlash("SetPostParams", [this.settings.post_params]);
};
// Public: setFileTypes changes the file_types setting and the file_types_description setting
SWFUpload.prototype.setFileTypes = function (types, description) {
    this.settings.file_types = types;
    this.settings.file_types_description = description;
    this.callFlash("SetFileTypes", [types, description]);
};
// Public: setFileSizeLimit changes the file_size_limit setting
SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) {
    this.settings.file_size_limit = fileSizeLimit;
    this.callFlash("SetFileSizeLimit", [fileSizeLimit]);
};
// Public: setFileUploadLimit changes the file_upload_limit setting
SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) {
    this.settings.file_upload_limit = fileUploadLimit;
    this.callFlash("SetFileUploadLimit", [fileUploadLimit]);
};
// Public: setFileQueueLimit changes the file_queue_limit setting
SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) {
    this.settings.file_queue_limit = fileQueueLimit;
    this.callFlash("SetFileQueueLimit", [fileQueueLimit]);
};
// Public: setFilePostName changes the file_post_name setting
SWFUpload.prototype.setFilePostName = function (filePostName) {
    this.settings.file_post_name = filePostName;
    this.callFlash("SetFilePostName", [filePostName]);
};
// Public: setUseQueryString changes the use_query_string setting
SWFUpload.prototype.setUseQueryString = function (useQueryString) {
    this.settings.use_query_string = useQueryString;
    this.callFlash("SetUseQueryString", [useQueryString]);
};
// Public: setRequeueOnError changes the requeue_on_error setting
SWFUpload.prototype.setRequeueOnError = function (requeueOnError) {
    this.settings.requeue_on_error = requeueOnError;
    this.callFlash("SetRequeueOnError", [requeueOnError]);
};
// Public: setHTTPSuccess changes the http_success setting
SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) {
    if (typeof http_status_codes === "string") {
        http_status_codes = http_status_codes.replace(" ", "").split(",");
    }
    this.settings.http_success = http_status_codes;
    this.callFlash("SetHTTPSuccess", [http_status_codes]);
};
// Public: setHTTPSuccess changes the http_success setting
SWFUpload.prototype.setAssumeSuccessTimeout = function (timeout_seconds) {
    this.settings.assume_success_timeout = timeout_seconds;
    this.callFlash("SetAssumeSuccessTimeout", [timeout_seconds]);
};
// Public: setDebugEnabled changes the debug_enabled setting
SWFUpload.prototype.setDebugEnabled = function (debugEnabled) {
    this.settings.debug_enabled = debugEnabled;
    this.callFlash("SetDebugEnabled", [debugEnabled]);
};
// Public: setButtonImageURL loads a button image sprite
SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) {
    if (buttonImageURL == undefined) {
        buttonImageURL = "";
    }
    this.settings.button_image_url = buttonImageURL;
    this.callFlash("SetButtonImageURL", [buttonImageURL]);
};
// Public: setButtonDimensions resizes the Flash Movie and button
SWFUpload.prototype.setButtonDimensions = function (width, height) {
    this.settings.button_width = width;
    this.settings.button_height = height;
    var movie = this.getMovieElement();
    if (movie != undefined) {
        movie.style.width = width + "px";
        movie.style.height = height + "px";
    }
    this.callFlash("SetButtonDimensions", [width, height]);
};
// Public: setButtonText Changes the text overlaid on the button
SWFUpload.prototype.setButtonText = function (html) {
    this.settings.button_text = html;
    this.callFlash("SetButtonText", [html]);
};
// Public: setButtonTextPadding changes the top and left padding of the text overlay
SWFUpload.prototype.setButtonTextPadding = function (left, top) {
    this.settings.button_text_top_padding = top;
    this.settings.button_text_left_padding = left;
    this.callFlash("SetButtonTextPadding", [left, top]);
};
// Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button
SWFUpload.prototype.setButtonTextStyle = function (css) {
    this.settings.button_text_style = css;
    this.callFlash("SetButtonTextStyle", [css]);
};
// Public: setButtonDisabled disables/enables the button
SWFUpload.prototype.setButtonDisabled = function (isDisabled) {
    this.settings.button_disabled = isDisabled;
    this.callFlash("SetButtonDisabled", [isDisabled]);
};
// Public: setButtonAction sets the action that occurs when the button is clicked
SWFUpload.prototype.setButtonAction = function (buttonAction) {
    this.settings.button_action = buttonAction;
    this.callFlash("SetButtonAction", [buttonAction]);
};
// Public: setButtonCursor changes the mouse cursor displayed when hovering over the button
SWFUpload.prototype.setButtonCursor = function (cursor) {
    this.settings.button_cursor = cursor;
    this.callFlash("SetButtonCursor", [cursor]);
};
/* *******************************
    Flash Event Interfaces
    These functions are used by Flash to trigger the various
    events.
    All these functions a Private.
    Because the ExternalInterface library is buggy the event calls
    are added to a queue and the queue then executed by a setTimeout.
    This ensures that events are executed in a determinate order and that
    the ExternalInterface bugs are avoided.
******************************* */
SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) {
    // Warning: Don't call this.debug inside here or you'll create an infinite loop
    if (argumentArray == undefined) {
        argumentArray = [];
    } else if (!(argumentArray instanceof Array)) {
        argumentArray = [argumentArray];
    }
    var self = this;
    if (typeof this.settings[handlerName] === "function") {
        // Queue the event
        this.eventQueue.push(function () {
            this.settings[handlerName].apply(this, argumentArray);
        });
        // Execute the next queued event
        setTimeout(function () {
            self.executeNextEvent();
        }, 0);
    } else if (this.settings[handlerName] !== null) {
        throw "Event handler " + handlerName + " is unknown or is not a function";
    }
};
// Private: Causes the next event in the queue to be executed.  Since events are queued using a setTimeout
// we must queue them in order to garentee that they are executed in order.
SWFUpload.prototype.executeNextEvent = function () {
    // Warning: Don't call this.debug inside here or you'll create an infinite loop
    var  f = this.eventQueue ? this.eventQueue.shift() : null;
    if (typeof(f) === "function") {
        f.apply(this);
    }
};
// Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have
// properties that contain characters that are not valid for JavaScript identifiers. To work around this
// the Flash Component escapes the parameter names and we must unescape again before passing them along.
SWFUpload.prototype.unescapeFilePostParams = function (file) {
    var reg = /[$]([0-9a-f]{4})/i;
    var unescapedPost = {};
    var uk;
    if (file != undefined) {
        for (var k in file.post) {
            if (file.post.hasOwnProperty(k)) {
                uk = k;
                var match;
                while ((match = reg.exec(uk)) !== null) {
                    uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16)));
                }
                unescapedPost[uk] = file.post[k];
            }
        }
        file.post = unescapedPost;
    }
    return file;
};
// Private: Called by Flash to see if JS can call in to Flash (test if External Interface is working)
SWFUpload.prototype.testExternalInterface = function () {
    try {
        return this.callFlash("TestExternalInterface");
    } catch (ex) {
        return false;
    }
};
// Private: This event is called by Flash when it has finished loading. Don't modify this.
// Use the swfupload_loaded_handler event setting to execute custom code when SWFUpload has loaded.
SWFUpload.prototype.flashReady = function () {
    // Check that the movie element is loaded correctly with its ExternalInterface methods defined
    var movieElement = this.getMovieElement();
    if (!movieElement) {
        this.debug("Flash called back ready but the flash movie can't be found.");
        return;
    }
    this.cleanUp(movieElement);
    this.queueEvent("swfupload_loaded_handler");
};
// Private: removes Flash added fuctions to the DOM node to prevent memory leaks in IE.
// This function is called by Flash each time the ExternalInterface functions are created.
SWFUpload.prototype.cleanUp = function (movieElement) {
    // Pro-actively unhook all the Flash functions
    try {
        if (this.movieElement && typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE
            this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");
            for (var key in movieElement) {
                try {
                    if (typeof(movieElement[key]) === "function") {
                        movieElement[key] = null;
                    }
                } catch (ex) {
                }
            }
        }
    } catch (ex1) {
    }
    // Fix Flashes own cleanup code so if the SWFMovie was removed from the page
    // it doesn't display errors.
    window["__flash__removeCallback"] = function (instance, name) {
        try {
            if (instance) {
                instance[name] = null;
            }
        } catch (flashEx) {
        }
    };
};
/* This is a chance to do something before the browse window opens */
SWFUpload.prototype.fileDialogStart = function () {
    this.queueEvent("file_dialog_start_handler");
};
/* Called when a file is successfully added to the queue. */
SWFUpload.prototype.fileQueued = function (file) {
    file = this.unescapeFilePostParams(file);
    this.queueEvent("file_queued_handler", file);
};
/* Handle errors that occur when an attempt to queue a file fails. */
SWFUpload.prototype.fileQueueError = function (file, errorCode, message) {
    file = this.unescapeFilePostParams(file);
    this.queueEvent("file_queue_error_handler", [file, errorCode, message]);
};
/* Called after the file dialog has closed and the selected files have been queued.
    You could call startUpload here if you want the queued files to begin uploading immediately. */
SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued, numFilesInQueue) {
    this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued, numFilesInQueue]);
};
SWFUpload.prototype.uploadStart = function (file) {
    file = this.unescapeFilePostParams(file);
    this.queueEvent("return_upload_start_handler", file);
};
SWFUpload.prototype.returnUploadStart = function (file) {
    var returnValue;
    if (typeof this.settings.upload_start_handler === "function") {
        file = this.unescapeFilePostParams(file);
        returnValue = this.settings.upload_start_handler.call(this, file);
    } else if (this.settings.upload_start_handler != undefined) {
        throw "upload_start_handler must be a function";
    }
    // Convert undefined to true so if nothing is returned from the upload_start_handler it is
    // interpretted as 'true'.
    if (returnValue === undefined) {
        returnValue = true;
    }
    returnValue = !!returnValue;
    this.callFlash("ReturnUploadStart", [returnValue]);
};
SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) {
    file = this.unescapeFilePostParams(file);
    this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]);
};
SWFUpload.prototype.uploadError = function (file, errorCode, message) {
    file = this.unescapeFilePostParams(file);
    this.queueEvent("upload_error_handler", [file, errorCode, message]);
};
SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) {
    file = this.unescapeFilePostParams(file);
    this.queueEvent("upload_success_handler", [file, serverData, responseReceived]);
};
SWFUpload.prototype.uploadComplete = function (file) {
    file = this.unescapeFilePostParams(file);
    this.queueEvent("upload_complete_handler", file);
};
/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the
   internal debug console.  You can override this event and have messages written where you want. */
SWFUpload.prototype.debug = function (message) {
    this.queueEvent("debug_handler", message);
};
/* **********************************
    Debug Console
    The debug console is a self contained, in page location
    for debug message to be sent.  The Debug Console adds
    itself to the body if necessary.
    The console is automatically scrolled as messages appear.
    If you are using your own debug handler or when you deploy to production and
    have debug disabled you can remove these functions to reduce the file size
    and complexity.
********************************** */
// Private: debugMessage is the default debug_handler.  If you want to print debug messages
// call the debug() function.  When overriding the function your own function should
// check to see if the debug setting is true before outputting debug information.
SWFUpload.prototype.debugMessage = function (message) {
    if (this.settings.debug) {
        var exceptionMessage, exceptionValues = [];
        // Check for an exception object and print it nicely
        if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") {
            for (var key in message) {
                if (message.hasOwnProperty(key)) {
                    exceptionValues.push(key + ": " + message[key]);
                }
            }
            exceptionMessage = exceptionValues.join("\n") || "";
            exceptionValues = exceptionMessage.split("\n");
            exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: ");
            SWFUpload.Console.writeLine(exceptionMessage);
        } else {
            SWFUpload.Console.writeLine(message);
        }
    }
};
SWFUpload.Console = {};
SWFUpload.Console.writeLine = function (message) {
    var console, documentForm;
    try {
        console = document.getElementById("SWFUpload_Console");
        if (!console) {
            documentForm = document.createElement("form");
            document.getElementsByTagName("body")[0].appendChild(documentForm);
            console = document.createElement("textarea");
            console.id = "SWFUpload_Console";
            console.style.fontFamily = "monospace";
            console.setAttribute("wrap", "off");
            console.wrap = "off";
            console.style.overflow = "auto";
            console.style.width = "700px";
            console.style.height = "350px";
            console.style.margin = "5px";
            documentForm.appendChild(console);
        }
        console.value += message + "\n";
        console.scrollTop = console.scrollHeight - console.clientHeight;
    } catch (ex) {
        alert("Exception: " + ex.name + " Message: " + ex.message);
    }
};
})();
(function() {
/*
    Queue Plug-in
    Features:
        *Adds a cancelQueue() method for cancelling the entire queue.
        *All queued files are uploaded when startUpload() is called.
        *If false is returned from uploadComplete then the queue upload is stopped.
         If false is not returned (strict comparison) then the queue upload is continued.
        *Adds a QueueComplete event that is fired when all the queued files have finished uploading.
         Set the event handler with the queue_complete_handler setting.
    */
if (typeof(SWFUpload) === "function") {
    SWFUpload.queue = {};
    SWFUpload.prototype.initSettings = (function (oldInitSettings) {
        return function () {
            if (typeof(oldInitSettings) === "function") {
                oldInitSettings.call(this);
            }
            this.queueSettings = {};
            this.queueSettings.queue_cancelled_flag = false;
            this.queueSettings.queue_upload_count = 0;
            this.queueSettings.user_upload_complete_handler = this.settings.upload_complete_handler;
            this.queueSettings.user_upload_start_handler = this.settings.upload_start_handler;
            this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler;
            this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler;
            this.settings.queue_complete_handler = this.settings.queue_complete_handler || null;
        };
    })(SWFUpload.prototype.initSettings);
    SWFUpload.prototype.startUpload = function (fileID) {
        this.queueSettings.queue_cancelled_flag = false;
        this.callFlash("StartUpload", [fileID]);
    };
    SWFUpload.prototype.cancelQueue = function () {
        this.queueSettings.queue_cancelled_flag = true;
        this.stopUpload();
        var stats = this.getStats();
        while (stats.files_queued > 0) {
            this.cancelUpload();
            stats = this.getStats();
        }
    };
    SWFUpload.queue.uploadStartHandler = function (file) {
        var returnValue;
        if (typeof(this.queueSettings.user_upload_start_handler) === "function") {
            returnValue = this.queueSettings.user_upload_start_handler.call(this, file);
        }
        // To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value.
        returnValue = (returnValue === false) ? false : true;
        this.queueSettings.queue_cancelled_flag = !returnValue;
        return returnValue;
    };
    SWFUpload.queue.uploadCompleteHandler = function (file) {
        var user_upload_complete_handler = this.queueSettings.user_upload_complete_handler;
        var continueUpload;
        if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) {
            this.queueSettings.queue_upload_count++;
        }
        if (typeof(user_upload_complete_handler) === "function") {
            continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true;
        } else if (file.filestatus === SWFUpload.FILE_STATUS.QUEUED) {
            // If the file was stopped and re-queued don't restart the upload
            continueUpload = false;
        } else {
            continueUpload = true;
        }
        if (continueUpload) {
            var stats = this.getStats();
            if (stats.files_queued > 0 && this.queueSettings.queue_cancelled_flag === false) {
                this.startUpload();
            } else if (this.queueSettings.queue_cancelled_flag === false) {
                this.queueEvent("queue_complete_handler", [this.queueSettings.queue_upload_count]);
                this.queueSettings.queue_upload_count = 0;
            } else {
                this.queueSettings.queue_cancelled_flag = false;
                this.queueSettings.queue_upload_count = 0;
            }
        }
    };
}
})();
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/pagebreak/pagebreak.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('pagebreak', function(K) {
    var self = this;
    var name = 'pagebreak';
    var pagebreakHtml = K.undef(self.pagebreakHtml, '<hr style="page-break-after: always;" class="ke-pagebreak" />');
    self.clickToolbar(name, function() {
        var cmd = self.cmd, range = cmd.range;
        self.focus();
        range.enlarge(true);
        cmd.split(true);
        var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : '<p id="__kindeditor_tail_tag__"></p>';
        self.insertHtml(pagebreakHtml + tail);
        if (tail !== '') {
            var p = K('#__kindeditor_tail_tag__', self.edit.doc);
            range.selectNodeContents(p[0]);
            p.removeAttr('id');
            cmd.select();
        }
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/plainpaste/plainpaste.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('plainpaste', function(K) {
    var self = this, name = 'plainpaste';
    self.clickToolbar(name, function() {
        var lang = self.lang(name + '.'),
            html = '<div style="padding:10px 20px;">' +
                '<div style="margin-bottom:10px;">' + lang.comment + '</div>' +
                '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>' +
                '</div>',
            dialog = self.createDialog({
                name : name,
                width : 450,
                title : self.lang(name),
                body : html,
                yesBtn : {
                    name : self.lang('yes'),
                    click : function(e) {
                        var html = textarea.val();
                        html = K.escape(html);
                        html = html.replace(/ {2}/g, ' &nbsp;');
                        if (self.newlineTag == 'p') {
                            html = html.replace(/^/, '<p>').replace(/$/, '</p>').replace(/\n/g, '</p><p>');
                        } else {
                            html = html.replace(/\n/g, '<br />$&');
                        }
                        self.insertHtml(html).hideDialog().focus();
                    }
                }
            }),
            textarea = K('textarea', dialog.div);
        textarea[0].focus();
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/preview/preview.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('preview', function(K) {
    var self = this, name = 'preview', undefined;
    self.clickToolbar(name, function() {
        var lang = self.lang(name + '.'),
            html = '<div style="padding:10px 20px;">' +
                '<iframe class="ke-textarea" frameborder="0" style="width:708px;height:400px;"></iframe>' +
                '</div>',
            dialog = self.createDialog({
                name : name,
                width : 750,
                title : self.lang(name),
                body : html
            }),
            iframe = K('iframe', dialog.div),
            doc = K.iframeDoc(iframe);
        doc.open();
        doc.write(self.fullHtml());
        doc.close();
        K(doc.body).css('background-color', '#FFF');
        iframe[0].contentWindow.focus();
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/quickformat/quickformat.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('quickformat', function(K) {
    var self = this, name = 'quickformat',
        blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p');
    function getFirstChild(knode) {
        var child = knode.first();
        while (child && child.first()) {
            child = child.first();
        }
        return child;
    }
    self.clickToolbar(name, function() {
        self.focus();
        var doc = self.edit.doc,
            range = self.cmd.range,
            child = K(doc.body).first(), next,
            nodeList = [], subList = [],
            bookmark = range.createBookmark(true);
        while(child) {
            next = child.next();
            var firstChild = getFirstChild(child);
            if (!firstChild || firstChild.name != 'img') {
                if (blockMap[child.name]) {
                    child.html(child.html().replace(/^(\s|&nbsp;| )+/ig, ''));
                    child.css('text-indent', '2em');
                } else {
                    subList.push(child);
                }
                if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) {
                    if (subList.length > 0) {
                        nodeList.push(subList);
                    }
                    subList = [];
                }
            }
            child = next;
        }
        K.each(nodeList, function(i, subList) {
            var wrapper = K('<p style="text-indent:2em;"></p>', doc);
            subList[0].before(wrapper);
            K.each(subList, function(i, knode) {
                wrapper.append(knode);
            });
        });
        range.moveToBookmark(bookmark);
        self.addBookmark();
    });
});
/**
--------------------------
abcd<br />
1234<br />
to
<p style="text-indent:2em;">
    abcd<br />
    1234<br />
</p>
--------------------------
&nbsp; abcd<img>1233
<p>1234</p>
to
<p style="text-indent:2em;">abcd<img>1233</p>
<p style="text-indent:2em;">1234</p>
--------------------------
*/
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/table/table.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,705 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('table', function(K) {
    var self = this, name = 'table', lang = self.lang(name + '.'), zeroborder = 'ke-zeroborder';
    // è®¾ç½®é¢œè‰²
    function _setColor(box, color) {
        color = color.toUpperCase();
        box.css('background-color', color);
        box.css('color', color === '#000000' ? '#FFFFFF' : '#000000');
        box.html(color);
    }
    // åˆå§‹åŒ–取色器
    var pickerList = [];
    function _initColorPicker(dialogDiv, colorBox) {
        colorBox.bind('click,mousedown', function(e){
            e.stopPropagation();
        });
        function removePicker() {
            K.each(pickerList, function() {
                this.remove();
            });
            pickerList = [];
            K(document).unbind('click,mousedown', removePicker);
            dialogDiv.unbind('click,mousedown', removePicker);
        }
        colorBox.click(function(e) {
            removePicker();
            var box = K(this),
                pos = box.pos();
            var picker = K.colorpicker({
                x : pos.x,
                y : pos.y + box.height(),
                z : 811214,
                selectedColor : K(this).html(),
                colors : self.colorTable,
                noColor : self.lang('noColor'),
                shadowMode : self.shadowMode,
                click : function(color) {
                    _setColor(box, color);
                    removePicker();
                }
            });
            pickerList.push(picker);
            K(document).bind('click,mousedown', removePicker);
            dialogDiv.bind('click,mousedown', removePicker);
        });
    }
    // å–得下一行cell的index
    function _getCellIndex(table, row, cell) {
        var rowSpanCount = 0;
        for (var i = 0, len = row.cells.length; i < len; i++) {
            if (row.cells[i] == cell) {
                break;
            }
            rowSpanCount += row.cells[i].rowSpan - 1;
        }
        return cell.cellIndex - rowSpanCount;
    }
    self.plugin.table = {
        //insert or modify table
        prop : function(isInsert) {
            var html = [
                '<div style="padding:20px;">',
                //rows, cols
                '<div class="ke-dialog-row">',
                '<label for="keRows" style="width:90px;">' + lang.cells + '</label>',
                lang.rows + ' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> &nbsp; ',
                lang.cols + ' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />',
                '</div>',
                //width, height
                '<div class="ke-dialog-row">',
                '<label for="keWidth" style="width:90px;">' + lang.size + '</label>',
                lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> &nbsp; ',
                '<select name="widthType">',
                '<option value="%">' + lang.percent + '</option>',
                '<option value="px">' + lang.px + '</option>',
                '</select> &nbsp; ',
                lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> &nbsp; ',
                '<select name="heightType">',
                '<option value="%">' + lang.percent + '</option>',
                '<option value="px">' + lang.px + '</option>',
                '</select>',
                '</div>',
                //space, padding
                '<div class="ke-dialog-row">',
                '<label for="kePadding" style="width:90px;">' + lang.space + '</label>',
                lang.padding + ' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> &nbsp; ',
                lang.spacing + ' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />',
                '</div>',
                //align
                '<div class="ke-dialog-row">',
                '<label for="keAlign" style="width:90px;">' + lang.align + '</label>',
                '<select id="keAlign" name="align">',
                '<option value="">' + lang.alignDefault + '</option>',
                '<option value="left">' + lang.alignLeft + '</option>',
                '<option value="center">' + lang.alignCenter + '</option>',
                '<option value="right">' + lang.alignRight + '</option>',
                '</select>',
                '</div>',
                //border
                '<div class="ke-dialog-row">',
                '<label for="keBorder" style="width:90px;">' + lang.border + '</label>',
                lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> &nbsp; ',
                lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>',
                '</div>',
                //background color
                '<div class="ke-dialog-row">',
                '<label for="keBgColor" style="width:90px;">' + lang.backgroundColor + '</label>',
                '<span class="ke-inline-block ke-input-color"></span>',
                '</div>',
                '</div>'
            ].join('');
            var dialog = self.createDialog({
                name : name,
                width : 500,
                title : self.lang(name),
                body : html,
                beforeRemove : function() {
                    colorBox.unbind();
                },
                yesBtn : {
                    name : self.lang('yes'),
                    click : function(e) {
                        var rows = rowsBox.val(),
                            cols = colsBox.val(),
                            width = widthBox.val(),
                            height = heightBox.val(),
                            widthType = widthTypeBox.val(),
                            heightType = heightTypeBox.val(),
                            padding = paddingBox.val(),
                            spacing = spacingBox.val(),
                            align = alignBox.val(),
                            border = borderBox.val(),
                            borderColor = K(colorBox[0]).html() || '',
                            bgColor = K(colorBox[1]).html() || '';
                        if (rows == 0 || !/^\d+$/.test(rows)) {
                            alert(self.lang('invalidRows'));
                            rowsBox[0].focus();
                            return;
                        }
                        if (cols == 0 || !/^\d+$/.test(cols)) {
                            alert(self.lang('invalidRows'));
                            colsBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(width)) {
                            alert(self.lang('invalidWidth'));
                            widthBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(height)) {
                            alert(self.lang('invalidHeight'));
                            heightBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(padding)) {
                            alert(self.lang('invalidPadding'));
                            paddingBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(spacing)) {
                            alert(self.lang('invalidSpacing'));
                            spacingBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(border)) {
                            alert(self.lang('invalidBorder'));
                            borderBox[0].focus();
                            return;
                        }
                        //modify table
                        if (table) {
                            if (width !== '') {
                                table.width(width + widthType);
                            } else {
                                table.css('width', '');
                            }
                            if (table[0].width !== undefined) {
                                table.removeAttr('width');
                            }
                            if (height !== '') {
                                table.height(height + heightType);
                            } else {
                                table.css('height', '');
                            }
                            if (table[0].height !== undefined) {
                                table.removeAttr('height');
                            }
                            table.css('background-color', bgColor);
                            if (table[0].bgColor !== undefined) {
                                table.removeAttr('bgColor');
                            }
                            if (padding !== '') {
                                table[0].cellPadding = padding;
                            } else {
                                table.removeAttr('cellPadding');
                            }
                            if (spacing !== '') {
                                table[0].cellSpacing = spacing;
                            } else {
                                table.removeAttr('cellSpacing');
                            }
                            if (align !== '') {
                                table[0].align = align;
                            } else {
                                table.removeAttr('align');
                            }
                            if (border !== '') {
                                table.attr('border', border);
                            } else {
                                table.removeAttr('border');
                            }
                            if (border === '' || border === '0') {
                                table.addClass(zeroborder);
                            } else {
                                table.removeClass(zeroborder);
                            }
                            if (borderColor !== '') {
                                table.attr('borderColor', borderColor);
                            } else {
                                table.removeAttr('borderColor');
                            }
                            self.hideDialog().focus();
                            return;
                        }
                        //insert new table
                        var style = '';
                        if (width !== '') {
                            style += 'width:' + width + widthType + ';';
                        }
                        if (height !== '') {
                            style += 'height:' + height + heightType + ';';
                        }
                        if (bgColor !== '') {
                            style += 'background-color:' + bgColor + ';';
                        }
                        var html = '<table';
                        if (style !== '') {
                            html += ' style="' + style + '"';
                        }
                        if (padding !== '') {
                            html += ' cellpadding="' + padding + '"';
                        }
                        if (spacing !== '') {
                            html += ' cellspacing="' + spacing + '"';
                        }
                        if (align !== '') {
                            html += ' align="' + align + '"';
                        }
                        if (border !== '') {
                            html += ' border="' + border + '"';
                        }
                        if (border === '' || border === '0') {
                            html += ' class="' + zeroborder + '"';
                        }
                        if (borderColor !== '') {
                            html += ' bordercolor="' + borderColor + '"';
                        }
                        html += '>';
                        for (var i = 0; i < rows; i++) {
                            html += '<tr>';
                            for (var j = 0; j < cols; j++) {
                                html += '<td>' + (K.IE ? '&nbsp;' : '<br />') + '</td>';
                            }
                            html += '</tr>';
                        }
                        html += '</table>';
                        if (!K.IE) {
                            html += '<br />';
                        }
                        self.insertHtml(html);
                        self.select().hideDialog().focus();
                        self.addBookmark();
                    }
                }
            }),
            div = dialog.div,
            rowsBox = K('[name="rows"]', div).val(3),
            colsBox = K('[name="cols"]', div).val(2),
            widthBox = K('[name="width"]', div).val(100),
            heightBox = K('[name="height"]', div),
            widthTypeBox = K('[name="widthType"]', div),
            heightTypeBox = K('[name="heightType"]', div),
            paddingBox = K('[name="padding"]', div).val(2),
            spacingBox = K('[name="spacing"]', div).val(0),
            alignBox = K('[name="align"]', div),
            borderBox = K('[name="border"]', div).val(1),
            colorBox = K('.ke-input-color', div);
            _initColorPicker(div, colorBox.eq(0));
            _initColorPicker(div, colorBox.eq(1));
            _setColor(colorBox.eq(0), '#000000');
            _setColor(colorBox.eq(1), '');
            // foucs and select
            rowsBox[0].focus();
            rowsBox[0].select();
            var table;
            if (isInsert) {
                return;
            }
            //get selected table node
            table = self.plugin.getSelectedTable();
            if (table) {
                rowsBox.val(table[0].rows.length);
                colsBox.val(table[0].rows.length > 0 ? table[0].rows[0].cells.length : 0);
                rowsBox.attr('disabled', true);
                colsBox.attr('disabled', true);
                var match,
                    tableWidth = table[0].style.width || table[0].width,
                    tableHeight = table[0].style.height || table[0].height;
                if (tableWidth !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableWidth))) {
                    widthBox.val(match[1]);
                    widthTypeBox.val(match[2]);
                } else {
                    widthBox.val('');
                }
                if (tableHeight !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableHeight))) {
                    heightBox.val(match[1]);
                    heightTypeBox.val(match[2]);
                }
                paddingBox.val(table[0].cellPadding || '');
                spacingBox.val(table[0].cellSpacing || '');
                alignBox.val(table[0].align || '');
                borderBox.val(table[0].border === undefined ? '' : table[0].border);
                _setColor(colorBox.eq(0), K.toHex(table.attr('borderColor') || ''));
                _setColor(colorBox.eq(1), K.toHex(table[0].style.backgroundColor || table[0].bgColor || ''));
                widthBox[0].focus();
                widthBox[0].select();
            }
        },
        //modify cell
        cellprop : function() {
            var html = [
                '<div style="padding:20px;">',
                //width, height
                '<div class="ke-dialog-row">',
                '<label for="keWidth" style="width:90px;">' + lang.size + '</label>',
                lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> &nbsp; ',
                '<select name="widthType">',
                '<option value="%">' + lang.percent + '</option>',
                '<option value="px">' + lang.px + '</option>',
                '</select> &nbsp; ',
                lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> &nbsp; ',
                '<select name="heightType">',
                '<option value="%">' + lang.percent + '</option>',
                '<option value="px">' + lang.px + '</option>',
                '</select>',
                '</div>',
                //align
                '<div class="ke-dialog-row">',
                '<label for="keAlign" style="width:90px;">' + lang.align + '</label>',
                lang.textAlign + ' <select id="keAlign" name="textAlign">',
                '<option value="">' + lang.alignDefault + '</option>',
                '<option value="left">' + lang.alignLeft + '</option>',
                '<option value="center">' + lang.alignCenter + '</option>',
                '<option value="right">' + lang.alignRight + '</option>',
                '</select> ',
                lang.verticalAlign + ' <select name="verticalAlign">',
                '<option value="">' + lang.alignDefault + '</option>',
                '<option value="top">' + lang.alignTop + '</option>',
                '<option value="middle">' + lang.alignMiddle + '</option>',
                '<option value="bottom">' + lang.alignBottom + '</option>',
                '<option value="baseline">' + lang.alignBaseline + '</option>',
                '</select>',
                '</div>',
                //border
                '<div class="ke-dialog-row">',
                '<label for="keBorder" style="width:90px;">' + lang.border + '</label>',
                lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> &nbsp; ',
                lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>',
                '</div>',
                //background color
                '<div class="ke-dialog-row">',
                '<label for="keBgColor" style="width:90px;">' + lang.backgroundColor + '</label>',
                '<span class="ke-inline-block ke-input-color"></span>',
                '</div>',
                '</div>'
            ].join('');
            var dialog = self.createDialog({
                name : name,
                width : 500,
                title : self.lang('tablecell'),
                body : html,
                beforeRemove : function() {
                    colorBox.unbind();
                },
                yesBtn : {
                    name : self.lang('yes'),
                    click : function(e) {
                        var width = widthBox.val(),
                            height = heightBox.val(),
                            widthType = widthTypeBox.val(),
                            heightType = heightTypeBox.val(),
                            padding = paddingBox.val(),
                            spacing = spacingBox.val(),
                            textAlign = textAlignBox.val(),
                            verticalAlign = verticalAlignBox.val(),
                            border = borderBox.val(),
                            borderColor = K(colorBox[0]).html() || '',
                            bgColor = K(colorBox[1]).html() || '';
                        if (!/^\d*$/.test(width)) {
                            alert(self.lang('invalidWidth'));
                            widthBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(height)) {
                            alert(self.lang('invalidHeight'));
                            heightBox[0].focus();
                            return;
                        }
                        if (!/^\d*$/.test(border)) {
                            alert(self.lang('invalidBorder'));
                            borderBox[0].focus();
                            return;
                        }
                        cell.css({
                            width : width !== '' ? (width + widthType) : '',
                            height : height !== '' ? (height + heightType) : '',
                            'background-color' : bgColor,
                            'text-align' : textAlign,
                            'vertical-align' : verticalAlign,
                            'border-width' : border,
                            'border-style' : border !== '' ? 'solid' : '',
                            'border-color' : borderColor
                        });
                        self.hideDialog().focus();
                        self.addBookmark();
                    }
                }
            }),
            div = dialog.div,
            widthBox = K('[name="width"]', div).val(100),
            heightBox = K('[name="height"]', div),
            widthTypeBox = K('[name="widthType"]', div),
            heightTypeBox = K('[name="heightType"]', div),
            paddingBox = K('[name="padding"]', div).val(2),
            spacingBox = K('[name="spacing"]', div).val(0),
            textAlignBox = K('[name="textAlign"]', div),
            verticalAlignBox = K('[name="verticalAlign"]', div),
            borderBox = K('[name="border"]', div).val(1),
            colorBox = K('.ke-input-color', div);
            _initColorPicker(div, colorBox.eq(0));
            _initColorPicker(div, colorBox.eq(1));
            _setColor(colorBox.eq(0), '#000000');
            _setColor(colorBox.eq(1), '');
            // foucs and select
            widthBox[0].focus();
            widthBox[0].select();
            // get selected cell
            var cell = self.plugin.getSelectedCell();
            var match,
                cellWidth = cell[0].style.width || cell[0].width || '',
                cellHeight = cell[0].style.height || cell[0].height || '';
            if ((match = /^(\d+)((?:px|%)*)$/.exec(cellWidth))) {
                widthBox.val(match[1]);
                widthTypeBox.val(match[2]);
            } else {
                widthBox.val('');
            }
            if ((match = /^(\d+)((?:px|%)*)$/.exec(cellHeight))) {
                heightBox.val(match[1]);
                heightTypeBox.val(match[2]);
            }
            textAlignBox.val(cell[0].style.textAlign || '');
            verticalAlignBox.val(cell[0].style.verticalAlign || '');
            var border = cell[0].style.borderWidth || '';
            if (border) {
                border = parseInt(border);
            }
            borderBox.val(border);
            _setColor(colorBox.eq(0), K.toHex(cell[0].style.borderColor || ''));
            _setColor(colorBox.eq(1), K.toHex(cell[0].style.backgroundColor || ''));
            widthBox[0].focus();
            widthBox[0].select();
        },
        insert : function() {
            this.prop(true);
        },
        'delete' : function() {
            var table = self.plugin.getSelectedTable();
            self.cmd.range.setStartBefore(table[0]).collapse(true);
            self.cmd.select();
            table.remove();
            self.addBookmark();
        },
        colinsert : function(offset) {
            var table = self.plugin.getSelectedTable()[0],
                row = self.plugin.getSelectedRow()[0],
                cell = self.plugin.getSelectedCell()[0],
                index = cell.cellIndex + offset;
            // å–得第一行的index
            index += table.rows[0].cells.length - row.cells.length;
            for (var i = 0, len = table.rows.length; i < len; i++) {
                var newRow = table.rows[i],
                    newCell = newRow.insertCell(index);
                newCell.innerHTML = K.IE ? '' : '<br />';
                // è°ƒæ•´ä¸‹ä¸€è¡Œçš„单元格index
                index = _getCellIndex(table, newRow, newCell);
            }
            self.cmd.range.selectNodeContents(cell).collapse(true);
            self.cmd.select();
            self.addBookmark();
        },
        colinsertleft : function() {
            this.colinsert(0);
        },
        colinsertright : function() {
            this.colinsert(1);
        },
        rowinsert : function(offset) {
            var table = self.plugin.getSelectedTable()[0],
                row = self.plugin.getSelectedRow()[0],
                cell = self.plugin.getSelectedCell()[0];
            var rowIndex = row.rowIndex;
            if (offset === 1) {
                rowIndex = row.rowIndex + (cell.rowSpan - 1) + offset;
            }
            var newRow = table.insertRow(rowIndex);
            for (var i = 0, len = row.cells.length; i < len; i++) {
                // è°ƒæ•´cell个数
                if (row.cells[i].rowSpan > 1) {
                    len -= row.cells[i].rowSpan - 1;
                }
                var newCell = newRow.insertCell(i);
                // copy colspan
                if (offset === 1 && row.cells[i].colSpan > 1) {
                    newCell.colSpan = row.cells[i].colSpan;
                }
                newCell.innerHTML = K.IE ? '' : '<br />';
            }
            // è°ƒæ•´rowspan
            for (var j = rowIndex; j >= 0; j--) {
                var cells = table.rows[j].cells;
                if (cells.length > i) {
                    for (var k = cell.cellIndex; k >= 0; k--) {
                        if (cells[k].rowSpan > 1) {
                            cells[k].rowSpan += 1;
                        }
                    }
                    break;
                }
            }
            self.cmd.range.selectNodeContents(cell).collapse(true);
            self.cmd.select();
            self.addBookmark();
        },
        rowinsertabove : function() {
            this.rowinsert(0);
        },
        rowinsertbelow : function() {
            this.rowinsert(1);
        },
        rowmerge : function() {
            var table = self.plugin.getSelectedTable()[0],
                row = self.plugin.getSelectedRow()[0],
                cell = self.plugin.getSelectedCell()[0],
                rowIndex = row.rowIndex, // å½“前行的index
                nextRowIndex = rowIndex + cell.rowSpan, // ä¸‹ä¸€è¡Œçš„index
                nextRow = table.rows[nextRowIndex]; // ä¸‹ä¸€è¡Œ
            // æœ€åŽä¸€è¡Œä¸èƒ½åˆå¹¶
            if (table.rows.length <= nextRowIndex) {
                return;
            }
            var cellIndex = cell.cellIndex; // ä¸‹ä¸€è¡Œå•元格的index
            if (nextRow.cells.length <= cellIndex) {
                return;
            }
            var nextCell = nextRow.cells[cellIndex]; // ä¸‹ä¸€è¡Œå•元格
            // ä¸Šä¸‹è¡Œçš„colspan不一致时不能合并
            if (cell.colSpan !== nextCell.colSpan) {
                return;
            }
            cell.rowSpan += nextCell.rowSpan;
            nextRow.deleteCell(cellIndex);
            self.cmd.range.selectNodeContents(cell).collapse(true);
            self.cmd.select();
            self.addBookmark();
        },
        colmerge : function() {
            var table = self.plugin.getSelectedTable()[0],
                row = self.plugin.getSelectedRow()[0],
                cell = self.plugin.getSelectedCell()[0],
                rowIndex = row.rowIndex, // å½“前行的index
                cellIndex = cell.cellIndex,
                nextCellIndex = cellIndex + 1;
            // æœ€åŽä¸€åˆ—不能合并
            if (row.cells.length <= nextCellIndex) {
                return;
            }
            var nextCell = row.cells[nextCellIndex];
            // å·¦å³åˆ—çš„rowspan不一致时不能合并
            if (cell.rowSpan !== nextCell.rowSpan) {
                return;
            }
            cell.colSpan += nextCell.colSpan;
            row.deleteCell(nextCellIndex);
            self.cmd.range.selectNodeContents(cell).collapse(true);
            self.cmd.select();
            self.addBookmark();
        },
        rowsplit : function() {
            var table = self.plugin.getSelectedTable()[0],
                row = self.plugin.getSelectedRow()[0],
                cell = self.plugin.getSelectedCell()[0],
                rowIndex = row.rowIndex;
            // ä¸æ˜¯å¯åˆ†å‰²å•元格
            if (cell.rowSpan === 1) {
                return;
            }
            var cellIndex = _getCellIndex(table, row, cell);
            for (var i = 1, len = cell.rowSpan; i < len; i++) {
                var newRow = table.rows[rowIndex + i],
                    newCell = newRow.insertCell(cellIndex);
                if (cell.colSpan > 1) {
                    newCell.colSpan = cell.colSpan;
                }
                newCell.innerHTML = K.IE ? '' : '<br />';
                // è°ƒæ•´ä¸‹ä¸€è¡Œçš„单元格index
                cellIndex = _getCellIndex(table, newRow, newCell);
            }
            K(cell).removeAttr('rowSpan');
            self.cmd.range.selectNodeContents(cell).collapse(true);
            self.cmd.select();
            self.addBookmark();
        },
        colsplit : function() {
            var table = self.plugin.getSelectedTable()[0],
                row = self.plugin.getSelectedRow()[0],
                cell = self.plugin.getSelectedCell()[0],
                cellIndex = cell.cellIndex;
            // ä¸æ˜¯å¯åˆ†å‰²å•元格
            if (cell.colSpan === 1) {
                return;
            }
            for (var i = 1, len = cell.colSpan; i < len; i++) {
                var newCell = row.insertCell(cellIndex + i);
                if (cell.rowSpan > 1) {
                    newCell.rowSpan = cell.rowSpan;
                }
                newCell.innerHTML = K.IE ? '' : '<br />';
            }
            K(cell).removeAttr('colSpan');
            self.cmd.range.selectNodeContents(cell).collapse(true);
            self.cmd.select();
            self.addBookmark();
        },
        coldelete : function() {
            var table = self.plugin.getSelectedTable()[0],
                row = self.plugin.getSelectedRow()[0],
                cell = self.plugin.getSelectedCell()[0],
                index = cell.cellIndex;
            for (var i = 0, len = table.rows.length; i < len; i++) {
                var newRow = table.rows[i],
                    newCell = newRow.cells[index];
                if (newCell.colSpan > 1) {
                    newCell.colSpan -= 1;
                    if (newCell.colSpan === 1) {
                        K(newCell).removeAttr('colSpan');
                    }
                } else {
                    newRow.deleteCell(index);
                }
                // è·³è¿‡ä¸éœ€è¦åˆ é™¤çš„行
                if (newCell.rowSpan > 1) {
                    i += newCell.rowSpan - 1;
                }
            }
            if (row.cells.length === 0) {
                self.cmd.range.setStartBefore(table).collapse(true);
                self.cmd.select();
                K(table).remove();
            } else {
                self.cmd.selection(true);
            }
            self.addBookmark();
        },
        rowdelete : function() {
            var table = self.plugin.getSelectedTable()[0],
                row = self.plugin.getSelectedRow()[0],
                cell = self.plugin.getSelectedCell()[0],
                rowIndex = row.rowIndex;
            // ä»Žä¸‹åˆ°ä¸Šåˆ é™¤
            for (var i = cell.rowSpan - 1; i >= 0; i--) {
                table.deleteRow(rowIndex + i);
            }
            if (table.rows.length === 0) {
                self.cmd.range.setStartBefore(table).collapse(true);
                self.cmd.select();
                K(table).remove();
            } else {
                self.cmd.selection(true);
            }
            self.addBookmark();
        }
    };
    self.clickToolbar(name, self.plugin.table.prop);
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/template/html/1.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <h3>
        <img align="left" height="100" style="margin-right: 10px" width="100" />在此处输入标题
    </h3>
    <p>
        åœ¨æ­¤å¤„输入内容
    </p>
</body>
</html>
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/template/html/2.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <h3>
        æ ‡é¢˜
    </h3>
    <table style="width:100%;" cellpadding="2" cellspacing="0" border="1">
        <tbody>
            <tr>
                <td>
                    <h3>标题1</h3>
                </td>
                <td>
                    <h3>标题1</h3>
                </td>
            </tr>
            <tr>
                <td>
                    å†…容1
                </td>
                <td>
                    å†…容2
                </td>
            </tr>
            <tr>
                <td>
                    å†…容3
                </td>
                <td>
                    å†…容4
                </td>
            </tr>
        </tbody>
    </table>
    <p>
        è¡¨æ ¼è¯´æ˜Ž
    </p>
</body>
</html>
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/template/html/3.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <p>
        åœ¨æ­¤å¤„输入内容
    </p>
    <ol>
        <li>
            æè¿°1
        </li>
        <li>
            æè¿°2
        </li>
        <li>
            æè¿°3
        </li>
    </ol>
    <p>
        åœ¨æ­¤å¤„输入内容
    </p>
    <ul>
        <li>
            æè¿°1
        </li>
        <li>
            æè¿°2
        </li>
        <li>
            æè¿°3
        </li>
    </ul>
</body>
</html>
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/template/template.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('template', function(K) {
    var self = this, name = 'template', lang = self.lang(name + '.'),
        htmlPath = self.pluginsPath + name + '/html/';
    function getFilePath(fileName) {
        return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION);
    }
    self.clickToolbar(name, function() {
        var lang = self.lang(name + '.'),
            arr = ['<div style="padding:10px 20px;">',
                '<div class="ke-header">',
                // left start
                '<div class="ke-left">',
                lang. selectTemplate + ' <select>'];
            K.each(lang.fileList, function(key, val) {
                arr.push('<option value="' + key + '">' + val + '</option>');
            });
            html = [arr.join(''),
                '</select></div>',
                // right start
                '<div class="ke-right">',
                '<input type="checkbox" id="keReplaceFlag" name="replaceFlag" value="1" /> <label for="keReplaceFlag">' + lang.replaceContent + '</label>',
                '</div>',
                '<div class="ke-clearfix"></div>',
                '</div>',
                '<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>',
                '</div>'].join('');
        var dialog = self.createDialog({
            name : name,
            width : 500,
            title : self.lang(name),
            body : html,
            yesBtn : {
                name : self.lang('yes'),
                click : function(e) {
                    var doc = K.iframeDoc(iframe);
                    self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus();
                }
            }
        });
        var selectBox = K('select', dialog.div),
            checkbox = K('[name="replaceFlag"]', dialog.div),
            iframe = K('iframe', dialog.div);
        checkbox[0].checked = true;
        iframe.attr('src', getFilePath(selectBox.val()));
        selectBox.change(function() {
            iframe.attr('src', getFilePath(this.value));
        });
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/plugins/wordpaste/wordpaste.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
/*******************************************************************************
* KindEditor - WYSIWYG HTML Editor for Internet
* Copyright (C) 2006-2011 kindsoft.net
*
* @author Roddy <luolonghao@gmail.com>
* @site http://www.kindsoft.net/
* @licence http://www.kindsoft.net/license.php
*******************************************************************************/
KindEditor.plugin('wordpaste', function(K) {
    var self = this, name = 'wordpaste';
    self.clickToolbar(name, function() {
        var lang = self.lang(name + '.'),
            html = '<div style="padding:10px 20px;">' +
                '<div style="margin-bottom:10px;">' + lang.comment + '</div>' +
                '<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>' +
                '</div>',
            dialog = self.createDialog({
                name : name,
                width : 450,
                title : self.lang(name),
                body : html,
                yesBtn : {
                    name : self.lang('yes'),
                    click : function(e) {
                        var str = doc.body.innerHTML;
                        str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags);
                        self.insertHtml(str).hideDialog().focus();
                    }
                }
            }),
            div = dialog.div,
            iframe = K('iframe', div),
            doc = K.iframeDoc(iframe);
        if (!K.IE) {
            doc.designMode = 'on';
        }
        doc.open();
        doc.write('<!doctype html><html><head><title>WordPaste</title></head>');
        doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">');
        if (!K.IE) {
            doc.write('<br />');
        }
        doc.write('</body></html>');
        doc.close();
        if (K.IE) {
            doc.body.contentEditable = 'true';
        }
        iframe[0].contentWindow.focus();
    });
});
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/anchor.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/blank.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/flash.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/loading.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/media.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/common/rm.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/default/background.png
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/default/default.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1148 @@
/* common */
.ke-inline-block {
    display: -moz-inline-stack;
    display: inline-block;
    vertical-align: middle;
    zoom: 1;
    *display: inline;
}
.ke-clearfix {
    zoom: 1;
}
.ke-clearfix:after {
    content: ".";
    display: block;
    clear: both;
    font-size: 0;
    height: 0;
    line-height: 0;
    visibility: hidden;
}
.ke-shadow {
    box-shadow: 1px 1px 3px #A0A0A0;
    -moz-box-shadow: 1px 1px 3px #A0A0A0;
    -webkit-box-shadow: 1px 1px 3px #A0A0A0;
    filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3);
    background-color: #F0F0EE;
}
.ke-menu a,
.ke-menu a:hover,
.ke-dialog a,
.ke-dialog a:hover {
    color: #337FE5;
    text-decoration: none;
}
/* icons */
.ke-icon-source {
    background-position: 0px 0px;
    width: 16px;
    height: 16px;
}
.ke-icon-preview {
    background-position: 0px -16px;
    width: 16px;
    height: 16px;
}
.ke-icon-print {
    background-position: 0px -32px;
    width: 16px;
    height: 16px;
}
.ke-icon-undo {
    background-position: 0px -48px;
    width: 16px;
    height: 16px;
}
.ke-icon-redo {
    background-position: 0px -64px;
    width: 16px;
    height: 16px;
}
.ke-icon-cut {
    background-position: 0px -80px;
    width: 16px;
    height: 16px;
}
.ke-icon-copy {
    background-position: 0px -96px;
    width: 16px;
    height: 16px;
}
.ke-icon-paste {
    background-position: 0px -112px;
    width: 16px;
    height: 16px;
}
.ke-icon-selectall {
    background-position: 0px -128px;
    width: 16px;
    height: 16px;
}
.ke-icon-justifyleft {
    background-position: 0px -144px;
    width: 16px;
    height: 16px;
}
.ke-icon-justifycenter {
    background-position: 0px -160px;
    width: 16px;
    height: 16px;
}
.ke-icon-justifyright {
    background-position: 0px -176px;
    width: 16px;
    height: 16px;
}
.ke-icon-justifyfull {
    background-position: 0px -192px;
    width: 16px;
    height: 16px;
}
.ke-icon-insertorderedlist {
    background-position: 0px -208px;
    width: 16px;
    height: 16px;
}
.ke-icon-insertunorderedlist {
    background-position: 0px -224px;
    width: 16px;
    height: 16px;
}
.ke-icon-indent {
    background-position: 0px -240px;
    width: 16px;
    height: 16px;
}
.ke-icon-outdent {
    background-position: 0px -256px;
    width: 16px;
    height: 16px;
}
.ke-icon-subscript {
    background-position: 0px -272px;
    width: 16px;
    height: 16px;
}
.ke-icon-superscript {
    background-position: 0px -288px;
    width: 16px;
    height: 16px;
}
.ke-icon-date {
    background-position: 0px -304px;
    width: 25px;
    height: 16px;
}
.ke-icon-time {
    background-position: 0px -320px;
    width: 25px;
    height: 16px;
}
.ke-icon-formatblock {
    background-position: 0px -336px;
    width: 25px;
    height: 16px;
}
.ke-icon-fontname {
    background-position: 0px -352px;
    width: 21px;
    height: 16px;
}
.ke-icon-fontsize {
    background-position: 0px -368px;
    width: 23px;
    height: 16px;
}
.ke-icon-forecolor {
    background-position: 0px -384px;
    width: 20px;
    height: 16px;
}
.ke-icon-hilitecolor {
    background-position: 0px -400px;
    width: 23px;
    height: 16px;
}
.ke-icon-bold {
    background-position: 0px -416px;
    width: 16px;
    height: 16px;
}
.ke-icon-italic {
    background-position: 0px -432px;
    width: 16px;
    height: 16px;
}
.ke-icon-underline {
    background-position: 0px -448px;
    width: 16px;
    height: 16px;
}
.ke-icon-strikethrough {
    background-position: 0px -464px;
    width: 16px;
    height: 16px;
}
.ke-icon-removeformat {
    background-position: 0px -480px;
    width: 16px;
    height: 16px;
}
.ke-icon-image {
    background-position: 0px -496px;
    width: 16px;
    height: 16px;
}
.ke-icon-flash {
    background-position: 0px -512px;
    width: 16px;
    height: 16px;
}
.ke-icon-media {
    background-position: 0px -528px;
    width: 16px;
    height: 16px;
}
.ke-icon-div {
    background-position: 0px -544px;
    width: 16px;
    height: 16px;
}
.ke-icon-formula {
    background-position: 0px -576px;
    width: 16px;
    height: 16px;
}
.ke-icon-hr {
    background-position: 0px -592px;
    width: 16px;
    height: 16px;
}
.ke-icon-emoticons {
    background-position: 0px -608px;
    width: 16px;
    height: 16px;
}
.ke-icon-link {
    background-position: 0px -624px;
    width: 16px;
    height: 16px;
}
.ke-icon-unlink {
    background-position: 0px -640px;
    width: 16px;
    height: 16px;
}
.ke-icon-fullscreen {
    background-position: 0px -656px;
    width: 16px;
    height: 16px;
}
.ke-icon-about {
    background-position: 0px -672px;
    width: 16px;
    height: 16px;
}
.ke-icon-plainpaste {
    background-position: 0px -704px;
    width: 16px;
    height: 16px;
}
.ke-icon-wordpaste {
    background-position: 0px -720px;
    width: 16px;
    height: 16px;
}
.ke-icon-table {
    background-position: 0px -784px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablemenu {
    background-position: 0px -768px;
    width: 16px;
    height: 16px;
}
.ke-icon-tableinsert {
    background-position: 0px -784px;
    width: 16px;
    height: 16px;
}
.ke-icon-tabledelete {
    background-position: 0px -800px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablecolinsertleft {
    background-position: 0px -816px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablecolinsertright {
    background-position: 0px -832px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablerowinsertabove {
    background-position: 0px -848px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablerowinsertbelow {
    background-position: 0px -864px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablecoldelete {
    background-position: 0px -880px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablerowdelete {
    background-position: 0px -896px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablecellprop {
    background-position: 0px -912px;
    width: 16px;
    height: 16px;
}
.ke-icon-tableprop {
    background-position: 0px -928px;
    width: 16px;
    height: 16px;
}
.ke-icon-checked {
    background-position: 0px -944px;
    width: 16px;
    height: 16px;
}
.ke-icon-code {
    background-position: 0px -960px;
    width: 16px;
    height: 16px;
}
.ke-icon-map {
    background-position: 0px -976px;
    width: 16px;
    height: 16px;
}
.ke-icon-baidumap {
    background-position: 0px -976px;
    width: 16px;
    height: 16px;
}
.ke-icon-lineheight {
    background-position: 0px -992px;
    width: 16px;
    height: 16px;
}
.ke-icon-clearhtml {
    background-position: 0px -1008px;
    width: 16px;
    height: 16px;
}
.ke-icon-pagebreak {
    background-position: 0px -1024px;
    width: 16px;
    height: 16px;
}
.ke-icon-insertfile {
    background-position: 0px -1040px;
    width: 16px;
    height: 16px;
}
.ke-icon-quickformat {
    background-position: 0px -1056px;
    width: 16px;
    height: 16px;
}
.ke-icon-template {
    background-position: 0px -1072px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablecellsplit {
    background-position: 0px -1088px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablerowmerge {
    background-position: 0px -1104px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablerowsplit {
    background-position: 0px -1120px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablecolmerge {
    background-position: 0px -1136px;
    width: 16px;
    height: 16px;
}
.ke-icon-tablecolsplit {
    background-position: 0px -1152px;
    width: 16px;
    height: 16px;
}
.ke-icon-anchor {
    background-position: 0px -1168px;
    width: 16px;
    height: 16px;
}
.ke-icon-search {
    background-position: 0px -1184px;
    width: 16px;
    height: 16px;
}
.ke-icon-new {
    background-position: 0px -1200px;
    width: 16px;
    height: 16px;
}
.ke-icon-specialchar {
    background-position: 0px -1216px;
    width: 16px;
    height: 16px;
}
.ke-icon-multiimage {
    background-position: 0px -1232px;
    width: 16px;
    height: 16px;
}
/* container */
.ke-container {
    display: block;
    border: 1px solid #CCCCCC;
    background-color: #FFF;
    overflow: hidden;
    margin: 0;
    padding: 0;
}
/* toolbar */
.ke-toolbar {
    border-bottom: 1px solid #CCC;
    background-color: #F0F0EE;
    padding: 2px 5px;
    text-align: left;
    overflow: hidden;
    zoom: 1;
}
.ke-toolbar-icon {
    background-repeat: no-repeat;
    font-size: 0;
    line-height: 0;
    overflow: hidden;
    display: block;
}
.ke-toolbar-icon-url {
    background-image: url(default.png);
}
.ke-toolbar .ke-outline {
    border: 1px solid #F0F0EE;
    margin: 1px;
    padding: 1px 2px;
    font-size: 0;
    line-height: 0;
    overflow: hidden;
    cursor: pointer;
    display: block;
    float: left;
}
.ke-toolbar .ke-on {
    border: 1px solid #5690D2;
}
.ke-toolbar .ke-selected {
    border: 1px solid #5690D2;
    background-color: #E9EFF6;
}
.ke-toolbar .ke-disabled {
    cursor: default;
}
.ke-toolbar .ke-separator {
    height: 16px;
    margin: 2px 3px;
    border-left: 1px solid #A0A0A0;
    border-right: 1px solid #FFFFFF;
    border-top:0;
    border-bottom:0;
    width: 0;
    font-size: 0;
    line-height: 0;
    overflow: hidden;
    display: block;
    float: left;
}
.ke-toolbar .ke-hr {
    overflow: hidden;
    height: 1px;
    clear: both;
}
/* edit */
.ke-edit {
    padding: 0;
}
.ke-edit-iframe,
.ke-edit-textarea {
    border: 0;
    margin: 0;
    padding: 0;
    overflow: auto;
}
.ke-edit-textarea {
    font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;
    color: #000;
    overflow: auto;
    resize: none;
}
.ke-edit-textarea:focus {
    outline: none;
}
/* statusbar */
.ke-statusbar {
    position: relative;
    background-color: #F0F0EE;
    border-top: 1px solid #CCCCCC;
    font-size: 0;
    line-height: 0;
    *height: 12px;
    overflow: hidden;
    text-align: center;
    cursor: s-resize;
}
.ke-statusbar-center-icon {
    background-position: -0px -754px;
    width: 15px;
    height: 11px;
    background-image: url(default.png);
}
.ke-statusbar-right-icon {
    position: absolute;
    right: 0;
    bottom: 0;
    cursor: se-resize;
    background-position: -5px -741px;
    width: 11px;
    height: 11px;
    background-image: url(default.png);
}
/* menu */
.ke-menu {
    border: 1px solid #A0A0A0;
    background-color: #F1F1F1;
    color: #222222;
    padding: 2px;
    font-family: "sans serif",tahoma,verdana,helvetica;
    font-size: 12px;
    text-align: left;
    overflow: hidden;
}
.ke-menu-item {
    border: 1px solid #F1F1F1;
    background-color: #F1F1F1;
    color: #222222;
    height: 24px;
    overflow: hidden;
    cursor: pointer;
}
.ke-menu-item-on {
    border: 1px solid #5690D2;
    background-color: #E9EFF6;
}
.ke-menu-item-left {
    width: 27px;
    text-align: center;
    overflow: hidden;
}
.ke-menu-item-center {
    width: 0;
    height: 24px;
    border-left: 1px solid #E3E3E3;
    border-right: 1px solid #FFFFFF;
    border-top: 0;
    border-bottom: 0;
}
.ke-menu-item-center-on {
    border-left: 1px solid #E9EFF6;
    border-right: 1px solid #E9EFF6;
}
.ke-menu-item-right {
    border: 0;
    padding: 0 0 0 5px;
    line-height: 24px;
    text-align: left;
    overflow: hidden;
}
.ke-menu-separator {
    margin: 2px 0;
    height: 0;
    overflow: hidden;
    border-top: 1px solid #CCCCCC;
    border-bottom: 1px solid #FFFFFF;
    border-left: 0;
    border-right: 0;
}
/* colorpicker */
.ke-colorpicker {
    border: 1px solid #A0A0A0;
    background-color: #F1F1F1;
    color: #222222;
    padding: 2px;
}
.ke-colorpicker-table {
    border:0;
    margin:0;
    padding:0;
    border-collapse: separate;
}
.ke-colorpicker-cell {
    font-size: 0;
    line-height: 0;
    border: 1px solid #F0F0EE;
    cursor: pointer;
    margin:3px;
    padding:0;
}
.ke-colorpicker-cell-top {
    font-family: "sans serif",tahoma,verdana,helvetica;
    font-size: 12px;
    line-height: 24px;
    border: 1px solid #F0F0EE;
    cursor: pointer;
    margin:0;
    padding:0;
    text-align: center;
}
.ke-colorpicker-cell-on {
    border: 1px solid #5690D2;
}
.ke-colorpicker-cell-selected {
    border: 1px solid #2446AB;
}
.ke-colorpicker-cell-color {
    width: 14px;
    height: 14px;
    margin: 3px;
    padding: 0;
    border: 0;
}
/* dialog */
.ke-dialog {
    position: absolute;
    margin: 0;
    padding: 0;
}
.ke-dialog .ke-header {
    width: 100%;
    margin-bottom: 10px;
}
.ke-dialog .ke-header .ke-left {
    float: left;
}
.ke-dialog .ke-header .ke-right {
    float: right;
}
.ke-dialog .ke-header label {
    margin-right: 0;
    cursor: pointer;
    font-weight: normal;
    display: inline;
    vertical-align: top;
}
.ke-dialog-content {
    background-color: #FFF;
    width: 100%;
    height: 100%;
    color: #333;
    border: 1px solid #A0A0A0;
}
.ke-dialog-shadow {
    position: absolute;
    z-index: -1;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    box-shadow: 3px 3px 7px #999;
    -moz-box-shadow: 3px 3px 7px #999;
    -webkit-box-shadow: 3px 3px 7px #999;
    filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius='3', MakeShadow='true', ShadowOpacity='0.4');
    background-color: #F0F0EE;
}
.ke-dialog-header {
    border:0;
    margin:0;
    padding: 0 10px;
    background: url(background.png) repeat scroll 0 0 #F0F0EE;
    border-bottom: 1px solid #CFCFCF;
    height: 24px;
    font: 12px/24px "sans serif",tahoma,verdana,helvetica;
    text-align: left;
    color: #222;
    cursor: move;
}
.ke-dialog-icon-close {
    display: block;
    background: url(default.png) no-repeat scroll 0px -688px;
    width: 16px;
    height: 16px;
    position: absolute;
    right: 6px;
    top: 6px;
    cursor: pointer;
}
.ke-dialog-body {
    font: 12px/1.5 "sans serif",tahoma,verdana,helvetica;
    text-align: left;
    overflow: hidden;
    width: 100%;
}
.ke-dialog-body textarea {
    display: block;
    overflow: auto;
    padding: 0;
    resize: none;
}
.ke-dialog-body textarea:focus,
.ke-dialog-body input:focus,
.ke-dialog-body select:focus {
    outline: none;
}
.ke-dialog-body label {
    margin-right: 10px;
    cursor: pointer;
    display: -moz-inline-stack;
    display: inline-block;
    vertical-align: middle;
    zoom: 1;
    *display: inline;
}
.ke-dialog-body img {
    display: -moz-inline-stack;
    display: inline-block;
    vertical-align: middle;
    zoom: 1;
    *display: inline;
}
.ke-dialog-body select {
    display: -moz-inline-stack;
    display: inline-block;
    vertical-align: middle;
    zoom: 1;
    *display: inline;
    width: auto;
}
.ke-dialog-body .ke-textarea {
    display: block;
    width: 408px;
    height: 260px;
    font-family: "sans serif",tahoma,verdana,helvetica;
    font-size: 12px;
    border-color: #848484 #E0E0E0 #E0E0E0 #848484;
    border-style: solid;
    border-width: 1px;
}
.ke-dialog-body .ke-form {
    margin: 0;
    padding: 0;
}
.ke-dialog-loading {
    position: absolute;
    top: 0;
    left: 1px;
    z-index: 1;
    text-align: center;
}
.ke-dialog-loading-content {
    background: url("../common/loading.gif") no-repeat;
    color: #666;
    font-size: 14px;
    font-weight: bold;
    height: 31px;
    line-height: 31px;
    padding-left: 36px;
}
.ke-dialog-row {
    margin-bottom: 10px;
}
.ke-dialog-footer {
    font: 12px/1 "sans serif",tahoma,verdana,helvetica;
    text-align: right;
    padding:0 0 5px 0;
    background-color: #FFF;
    width: 100%;
}
.ke-dialog-preview,
.ke-dialog-yes {
    margin: 5px;
}
.ke-dialog-no {
    margin: 5px 10px 5px 5px;
}
.ke-dialog-mask {
    background-color:#FFF;
    filter:alpha(opacity=50);
    opacity:0.5;
}
.ke-button-common {
    background: url(background.png) no-repeat scroll 0 -25px transparent;
    cursor: pointer;
    height: 23px;
    line-height: 23px;
    overflow: visible;
    display: inline-block;
    vertical-align: top;
    cursor: pointer;
}
.ke-button-outer {
    background-position: 0 -25px;
    padding: 0;
    position: relative;
    display: -moz-inline-stack;
    display: inline-block;
    vertical-align: middle;
    zoom: 1;
    *display: inline;
}
.ke-button {
    background-position: right -25px;
    padding: 0 12px;
    margin: 0;
    font-family: "sans serif",tahoma,verdana,helvetica;
    border: 0 none;
    color: #333;
    font-size: 12px;
    left: 2px;
    text-decoration: none;
}
/* inputbox */
.ke-input-text {
    background-color:#FFFFFF;
    font-family: "sans serif",tahoma,verdana,helvetica;
    font-size: 12px;
    line-height: 17px;
    height: 17px;
    padding: 2px 4px;
    border-color: #848484 #E0E0E0 #E0E0E0 #848484;
    border-style: solid;
    border-width: 1px;
    display: -moz-inline-stack;
    display: inline-block;
    vertical-align: middle;
    zoom: 1;
    *display: inline;
}
.ke-input-number {
    width: 50px;
}
.ke-input-color {
    border: 1px solid #A0A0A0;
    background-color: #FFFFFF;
    font-size: 12px;
    width: 60px;
    height: 20px;
    line-height: 20px;
    padding-left: 5px;
    overflow: hidden;
    cursor: pointer;
    display: -moz-inline-stack;
    display: inline-block;
    vertical-align: middle;
    zoom: 1;
    *display: inline;
}
.ke-upload-button {
    position: relative;
}
.ke-upload-area {
    position: relative;
    overflow: hidden;
    margin: 0;
    padding: 0;
}
.ke-upload-area .ke-upload-file {
    position: absolute;
    top: 0;
    right: 0;
    height: 25px;
    padding: 0;
    margin: 0;
    z-index: 811212;
    border: 0 none;
    opacity: 0;
    filter: alpha(opacity=0);
}
/* tabs */
.ke-tabs {
    font: 12px/1 "sans serif",tahoma,verdana,helvetica;
    border-bottom:1px solid #A0A0A0;
    padding-left:5px;
    margin-bottom:20px;
}
.ke-tabs-ul  {
    list-style-image:none;
    list-style-position:outside;
    list-style-type:none;
    margin:0;
    padding:0;
}
.ke-tabs-li {
    position: relative;
    border: 1px solid #A0A0A0;
    background-color: #F0F0EE;
    margin: 0 2px -1px 0;
    padding: 0 20px;
    float: left;
    line-height: 25px;
    text-align: center;
    color: #555555;
    cursor: pointer;
}
.ke-tabs-li-selected {
    background-color: #FFF;
    border-bottom: 1px solid #FFF;
    color: #000;
    cursor: default;
}
.ke-tabs-li-on {
    background-color: #FFF;
    color: #000;
}
/* progressbar */
.ke-progressbar {
    position: relative;
    margin: 0;
    padding: 0;
}
.ke-progressbar-bar {
    border: 1px solid #6FA5DB;
    width: 80px;
    height: 5px;
    margin: 10px 10px 0 10px;
    padding: 0;
}
.ke-progressbar-bar-inner {
    width: 0;
    height: 5px;
    background-color: #6FA5DB;
    overflow: hidden;
    margin: 0;
    padding: 0;
}
.ke-progressbar-percent {
    position: absolute;
    top: 0;
    left: 40%;
    display: none;
}
/* swfupload */
.ke-swfupload-top {
    position: relative;
    margin-bottom: 10px;
    _width: 608px;
}
.ke-swfupload-button {
    height: 23px;
    line-height: 23px;
}
.ke-swfupload-desc {
    padding: 0 10px;
    height: 23px;
    line-height: 23px;
}
.ke-swfupload-startupload {
    position: absolute;
    top: 0;
    right: 0;
}
.ke-swfupload-body {
    overflow: scroll;
    background-color:#FFFFFF;
    border-color: #848484 #E0E0E0 #E0E0E0 #848484;
    border-style: solid;
    border-width: 1px;
    width: auto;
    height: 370px;
    padding: 5px;
}
.ke-swfupload-body .ke-item {
    width: 100px;
    margin: 5px;
}
.ke-swfupload-body .ke-photo {
    position: relative;
    border: 1px solid #DDDDDD;
    background-color:#FFFFFF;
    padding: 10px;
}
.ke-swfupload-body .ke-delete {
    display: block;
    background: url(default.png) no-repeat scroll 0px -688px;
    width: 16px;
    height: 16px;
    position: absolute;
    right: 0;
    top: 0;
    cursor: pointer;
}
.ke-swfupload-body .ke-status  {
    position: absolute;
    left: 0;
    bottom: 5px;
    width: 100px;
    height: 17px;
}
.ke-swfupload-body .ke-message  {
    width: 100px;
    text-align: center;
    overflow: hidden;
    height:17px;
}
.ke-swfupload-body .ke-error  {
    color: red;
}
.ke-swfupload-body .ke-name {
    width: 100px;
    text-align: center;
    overflow: hidden;
    height:16px;
}
.ke-swfupload-body .ke-on {
    border: 1px solid #5690D2;
    background-color: #E9EFF6;
}
/* emoticons */
.ke-plugin-emoticons {
    position: relative;
}
.ke-plugin-emoticons .ke-preview {
    position: absolute;
    text-align: center;
    margin: 2px;
    padding: 10px;
    top: 0;
    border: 1px solid #A0A0A0;
    background-color: #FFFFFF;
    display: none;
}
.ke-plugin-emoticons .ke-preview-img {
    border:0;
    margin:0;
    padding:0;
}
.ke-plugin-emoticons .ke-table {
    border:0;
    margin:0;
    padding:0;
    border-collapse:separate;
}
.ke-plugin-emoticons .ke-cell {
    margin:0;
    padding:1px;
    border:1px solid #F0F0EE;
    cursor:pointer;
}
.ke-plugin-emoticons .ke-on {
    border: 1px solid #5690D2;
    background-color: #E9EFF6;
}
.ke-plugin-emoticons .ke-img {
    display:block;
    background-repeat:no-repeat;
    overflow:hidden;
    margin:2px;
    width:24px;
    height:24px;
    margin: 0;
    padding: 0;
    border: 0;
}
.ke-plugin-emoticons .ke-page {
    text-align: right;
    margin: 5px;
    padding: 0;
    border: 0;
    font: 12px/1 "sans serif",tahoma,verdana,helvetica;
    color: #333;
    text-decoration: none;
}
.ke-plugin-plainpaste-textarea,
.ke-plugin-wordpaste-iframe {
    display: block;
    width: 408px;
    height: 260px;
    font-family: "sans serif",tahoma,verdana,helvetica;
    font-size: 12px;
    border-color: #848484 #E0E0E0 #E0E0E0 #848484;
    border-style: solid;
    border-width: 1px;
}
/* filemanager */
.ke-plugin-filemanager-header {
    width: 100%;
    margin-bottom: 10px;
}
.ke-plugin-filemanager-header .ke-left {
    float: left;
}
.ke-plugin-filemanager-header .ke-right {
    float: right;
}
.ke-plugin-filemanager-body {
    overflow: scroll;
    background-color:#FFFFFF;
    border-color: #848484 #E0E0E0 #E0E0E0 #848484;
    border-style: solid;
    border-width: 1px;
    width: auto;
    height: 370px;
    padding: 5px;
}
.ke-plugin-filemanager-body .ke-item {
    width: 100px;
    margin: 5px;
}
.ke-plugin-filemanager-body .ke-photo {
    border: 1px solid #DDDDDD;
    background-color:#FFFFFF;
    padding: 10px;
}
.ke-plugin-filemanager-body .ke-name {
    width: 100px;
    text-align: center;
    overflow: hidden;
    height:16px;
}
.ke-plugin-filemanager-body .ke-on {
    border: 1px solid #5690D2;
    background-color: #E9EFF6;
}
.ke-plugin-filemanager-body .ke-table {
    width: 95%;
    border: 0;
    margin: 0;
    padding: 0;
    border-collapse: separate;
}
.ke-plugin-filemanager-body .ke-table .ke-cell {
    margin: 0;
    padding: 0;
    border: 0;
}
.ke-plugin-filemanager-body .ke-table .ke-name {
    width: 55%;
    text-align: left;
}
.ke-plugin-filemanager-body .ke-table .ke-size {
    width: 15%;
    text-align: left;
}
.ke-plugin-filemanager-body .ke-table .ke-datetime {
    width: 30%;
    text-align: center;
}
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/default/default.png
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/qq/editor.gif
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/qq/qq.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,143 @@
/* container */
.ke-container-qq {
    display: block;
    border: 1px solid #c3c3c3;
    background-color: #FFF;
    overflow: hidden;
    margin: 0;
    padding: 0;
}
/* toolbar */
.ke-container-qq .ke-toolbar {
    border-bottom: 1px solid #c3c3c3;
    background-color: #FFFFFF;
    padding: 2px 5px;
    text-align: left;
    overflow: hidden;
    zoom: 1;
}
.ke-toolbar-icon-url {
    background-image: url(editor.gif);
    width:18px;
    *xwidth:20px;
    height:18px;
    *xheight:20px;
}
.ke-icon-checked{
    background-image: url(../default/default.png);
    width:16px;
    height:16px;
}
.ke-container-qq .ke-icon-bold{
    background-position: 4px 1px;
}
.ke-container-qq .ke-icon-italic{
    background-position: -27px 1px;
}
.ke-container-qq .ke-icon-italic{
    background-position: -28px 1px;
}
.ke-container-qq .ke-icon-underline{
    background-position: -60px 1px;
}
.ke-container-qq .ke-icon-fontname{
    background-position: -95px 1px;
}
.ke-container-qq .ke-icon-fontsize{
    background-position: -128px 1px;
}
.ke-container-qq .ke-icon-forecolor{
    background-position: -159px 1px;
}
.ke-container-qq .ke-icon-hilitecolor{
    background-position: -190px 1px;
}
.ke-container-qq .ke-icon-plug-align{
    background-position: -223px 1px;
}
.plug-align-justifyleft{
    background-position: -350px 1px;
}
.plug-align-justifycenter{
    background-position: -382px 1px;
}
.plug-align-justifyright{
    background-position: -414px 1px;
}
.plug-order-insertorderedlist{
    background-position: -446px 1px;
}
.plug-order-insertunorderedlist{
    background-position: -477px 1px;
}
.plug-indent-indent{
    background-position: -513px 1px;
}
.plug-indent-outdent{
    background-position: -545px 1px;
}
.ke-container-qq .ke-icon-plug-order{
    background-position: -255px 1px;
}
.ke-container-qq .ke-icon-plug-indent{
    background-position: -287px 1px;
}
.ke-container-qq .ke-icon-link{
    background-position: -319px 1px;
}
.ke-container-qq .ke-toolbar .ke-outline {
    cursor: default;
    padding:0px;
    border:1px solid #fff;
}
.ke-container-qq .ke-toolbar .ke-on {
    border-left:1px solid white;
    border-top:1px solid white;
    border-right:1px solid gray;
    border-bottom:1px solid gray;
    background-color: #FFFFFF;
}
.ke-container-qq .ke-toolbar .ke-selected {
    border-left:1px solid gray;
    border-top:1px solid gray;
    border-right:1px solid white;
    border-bottom:1px solid white;
    background-color: #FFFFFF;
}
.ke-container-qq .ke-toolbar  .ke-disabled {
    cursor: default;
}
.ke-colorpicker-qq{
    background:#fff;
}
/* statusbar */
.ke-container-qq .ke-statusbar {
    display:none;
}
/* menu */
.ke-menu-qq {
    border:1px solid #a6a6a6;
    position:absolute;
    background:#fff;
    -moz-box-shadow:2px 2px 4px #DDDDDD;
    z-index:999;
    left:-400px;
    top:-386px;
    right:218px;
    width:130px;
}
.ke-menu-qq .ke-menu-item {
    padding:0px;
    background:#fff;
}
.ke-menu-qq .ke-menu-item-on {
    border:1px solid #000080;background:#FFEEC2;color:#036;
}
.ke-menu-qq .ke-toolbar .ke-selected {
    border:1px solid #9a9afb;
}
.ke-menu-qq .ke-menu-item-left{
    width:auto;
}
Source/platformProject/platform2022UI/jslib/kindeditor-4.1.7/themes/simple/simple.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
/* container */
.ke-container-simple {
    display: block;
    border: 1px solid #CCC;
    background-color: #FFF;
    overflow: hidden;
}
/* toolbar */
.ke-container-simple .ke-toolbar {
    border-bottom: 1px solid #CCC;
    background-color: #FFF;
    padding: 2px 5px;
    overflow: hidden;
}
.ke-container-simple .ke-toolbar .ke-outline {
    border: 1px solid #FFF;
    background-color: transparent;
    margin: 1px;
    padding: 1px 2px;
    font-size: 0;
    line-height: 0;
    overflow: hidden;
    cursor: pointer;
}
.ke-container-simple .ke-toolbar .ke-on {
    border: 1px solid #5690D2;
}
.ke-container-simple .ke-toolbar .ke-selected {
    border: 1px solid #5690D2;
    background-color: #E9EFF6;
}
.ke-container-simple .ke-toolbar  .ke-disabled {
    cursor: default;
}
/* statusbar */
.ke-container-simple .ke-statusbar {
    position: relative;
    background-color: #FFF;
    border-top: 1px solid #CCCCCC;
    font-size: 0;
    line-height: 0;
    *height: 12px;
    overflow: hidden;
    text-align: center;
    cursor: s-resize;
}
/* menu */
.ke-menu-simple {
    border: 1px solid #A0A0A0;
    background-color: #FFF;
    color: #222222;
    padding: 2px;
    font-family: "sans serif",tahoma,verdana,helvetica;
    font-size: 12px;
    text-align: left;
    overflow: hidden;
}
.ke-menu-simple .ke-menu-item {
    border: 1px solid #FFF;
    background-color: #FFF;
    color: #222222;
    height: 24px;
    overflow: hidden;
    cursor: pointer;
}
.ke-menu-simple .ke-menu-item-on {
    border: 1px solid #5690D2;
    background-color: #FFF;
}
/* colorpicker */
.ke-colorpicker-simple {
    border: 1px solid #A0A0A0;
    background-color: #FEFEFE;
    color: #222222;
    padding: 2px;
}
.ke-colorpicker-simple .ke-colorpicker-cell {
    font-size: 0;
    line-height: 0;
    border: 1px solid #FEFEFE;
    cursor: pointer;
    margin:3px;
    padding:0;
}
.ke-colorpicker-simple .ke-colorpicker-cell-top {
    font-family: "sans serif",tahoma,verdana,helvetica;
    font-size: 12px;
    line-height: 24px;
    border: 1px solid #FEFEFE;
    cursor: pointer;
    margin:0;
    padding:0;
    text-align: center;
}
.ke-colorpicker-simple .ke-colorpicker-cell-on {
    border: 1px solid #5690D2;
}
.ke-colorpicker-simple .ke-colorpicker-cell-selected {
    border: 1px solid #2446AB;
}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/alicon.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
@font-face {font-family: "layui-icon";
  src: url('iconfont.eot?t=1596095376802'); /* IE9 */
  src: url('iconfont.eot?t=1596095376802#iefix') format('embedded-opentype'), /* IE6-IE8 */
  url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
  url('iconfont.woff?t=1596095376802') format('woff'),
  url('iconfont.ttf?t=1596095376802') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
  url('iconfont.svg?t=1596095376802#iconfont') format('svg'); /* iOS 4.1- */
}
.layui-icon {
  font-family: "layui-icon" !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.layui-icon-92:before {
  content: "\e676";
}
.layui-icon-jihua:before {
  content: "\e639";
}
.layui-icon-shouye:before {
  content: "\e614";
}
.layui-icon-dongjie2:before {
  content: "\e656";
}
.layui-icon-zhihangzhong:before {
  content: "\e841";
}
.layui-icon-fq_jiagong:before {
  content: "\e62b";
}
.layui-icon-manage-process:before {
  content: "\e746";
}
.layui-icon-web-icon-:before {
  content: "\e70c";
}
.layui-icon-jiankong:before {
  content: "\e69e";
}
.layui-icon-web-icon-1:before {
  content: "\e71a";
}
.layui-icon-renwuguanli:before {
  content: "\e699";
}
.layui-icon-quanxian:before {
  content: "\e642";
}
.layui-icon-xiaoxizhongxin:before {
  content: "\e678";
}
.layui-icon-wenjianguanli:before {
  content: "\e62c";
}
.layui-icon-wj-jh:before {
  content: "\e70e";
}
.layui-icon-eduguanli:before {
  content: "\e609";
}
.layui-icon-RectangleCopy:before {
  content: "\e6ad";
}
.layui-icon-tubiao_shengchangongyi:before {
  content: "\e63a";
}
.layui-icon-shoudong:before {
  content: "\e729";
}
.layui-icon-zuzhi:before {
  content: "\e616";
}
.layui-icon-jichushuju:before {
  content: "\e74e";
}
.layui-icon-ziyuan145:before {
  content: "\e6e9";
}
.layui-icon-peizhizhongxin:before {
  content: "\e610";
}
.layui-icon-paigongfenpeishebei:before {
  content: "\e635";
}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.eot
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
!function(c){var h,a,l,t,o,s,i,e='<svg><symbol id="icon-92" viewBox="0 0 1024 1024"><path d="M532.252444 170.666667l-17.521778 0c-9.363911 0-16.952889-7.588978-16.952889-16.952889l0-0.568889c0-21.742933-17.624178-39.367111-39.367111-39.367111l-0.910222 0c-21.742933 0-39.367111 17.624178-39.367111 39.367111l0 0.568889c0 9.363911-7.588978 16.952889-16.952889 16.952889l-17.521778 0c-18.659556 0-33.792 15.132444-33.792 33.792l0 0.682667c0 18.659556 15.132444 33.792 33.792 33.792l148.593778 0c18.659556 0 33.792-15.132444 33.792-33.792l0-0.682667C566.044444 185.799111 550.912 170.666667 532.252444 170.666667zM457.955556 170.666667c-9.4208 0-17.066667-7.645867-17.066667-17.066667s7.645867-17.066667 17.066667-17.066667 17.066667 7.645867 17.066667 17.066667S467.376356 170.666667 457.955556 170.666667zM533.936356 830.577778 247.466667 830.577778c-25.133511 0-45.511111-20.3776-45.511111-45.511111L201.955556 238.933333c0-25.133511 20.3776-45.511111 34.133333-45.511111l92.205511 0c-0.773689 3.777422-1.183289 7.691378-1.183289 11.719111 0 31.175111 25.361067 56.547556 56.547556 56.547556l148.593778 0c31.186489 0 56.547556-25.361067 56.547556-57.230222 0-3.777422-0.4096-7.463822-1.115022-11.036444l69.381689 0c36.511289 0 56.888889 20.3776 56.888889 45.511111l0 341.9136C710.178133 580.608 706.423467 580.266667 702.577778 580.266667c-15.735467 0-30.936178 2.218667-45.511111 5.996089L657.066667 318.577778l-398.222222 0 0 455.111111 262.269156 0C522.353778 793.691022 526.722844 812.828444 533.936356 830.577778zM702.577778 614.4c-81.692444 0-147.911111 66.218667-147.911111 147.911111s66.218667 147.911111 147.911111 147.911111 147.911111-66.218667 147.911111-147.911111S784.270222 614.4 702.577778 614.4zM799.232 731.921067l-91.022222 102.4C703.726933 839.361422 697.480533 841.955556 691.188622 841.955556c-4.994844 0-10.012444-1.6384-14.210844-4.983467l-56.888889-45.511111c-9.807644-7.839289-11.400533-22.163911-3.549867-31.982933 7.839289-9.819022 22.175289-11.411911 31.982933-3.549867l40.015644 32.005689 76.674844-86.254933c8.339911-9.386667 22.7328-10.24 32.119467-1.888711S807.583289 722.523022 799.232 731.921067z"  ></path></symbol><symbol id="icon-jihua" viewBox="0 0 1024 1024"><path d="M674.507676 598.338391 287.079856 598.338391c-14.136975 0-25.638937 11.499915-25.638937 25.63689 0 14.137998 11.501962 25.640983 25.638937 25.640983l387.42782 0c14.137998 0 25.640983-11.501962 25.640983-25.640983C700.148659 609.838306 688.646698 598.338391 674.507676 598.338391zM794.746154 384.583029c-14.137998 0-25.640983 11.501962-25.640983 25.63996l0 494.299873c0 0.130983 0 0.280386-0.001023 0.433882-0.899486 0.279363-2.665713 0.644683-5.764284 0.644683L200.047664 905.601426c-4.312212 0-7.564279-2.971681-7.564279-6.913457L192.483384 191.851493c0-4.493338 0.974188-8.28878 1.811252-9.821693l373.337917 0c14.136975 0 25.63996-11.501962 25.63996-25.63996 0-14.136975-11.501962-25.638937-25.63996-25.638937l-374.069581 0c-30.336936 0-52.357462 25.696242-52.357462 61.099566l0 706.836477c0 32.086789 26.396183 58.19133 58.84113 58.19133l563.293223 0c34.119075 0 57.042157-21.041222 57.042157-52.356438L820.382021 410.224012C820.383044 396.086014 808.883129 384.583029 794.746154 384.583029zM674.507676 745.295394 287.079856 745.295394c-14.136975 0-25.638937 11.499915-25.638937 25.63689 0 14.137998 11.501962 25.640983 25.638937 25.640983l387.42782 0c14.137998 0 25.640983-11.501962 25.640983-25.640983C700.148659 756.795309 688.646698 745.295394 674.507676 745.295394zM879.595634 157.107177c-3.77293-14.409175-12.871145-28.250414-24.964578-37.975916l-43.827181-35.240619c-12.880355-10.352789-29.27679-16.290011-44.986587-16.290011-16.876366 0-31.594579 6.747681-41.439808 18.995633l-19.624966 24.381293c-6.380314 7.968485-7.987928 17.577331-5.222955 26.916023l-114.241904 142.063553-2.486634 3.090385-22.812565 85.303828c-9.749038 30.859845 4.449335 48.075949 13.806447 55.608505 6.783497 5.450129 14.468526 8.728802 22.851451 9.754155 0.984421 0.246617 2.125407 0.488117 3.440355 0.632403 1.003863 0.110517 2.053776 0.167822 3.118014 0.167822l0.014326 0c4.588505 0 10.047844-0.9967 17.180288-3.13541l2.877537-1.065262 83.402525-41.897226 119.874181-149.07934c0.440022 0.017396 0.880043 0.032746 1.320065 0.032746 9.218966 0 17.411555-3.862981 23.077601-10.892071l19.562545-24.342408C880.924909 191.1976 884.15037 174.495196 879.595634 157.107177zM674.469813 348.564697l-56.738235 28.537963c-2.958378 0.579191-5.734608 1.684362-8.277524 3.296069-0.313132 0.198521-0.615007 0.385786-0.905626 0.562818 0.12382-0.318248 0.25378-0.639566 0.39295-0.971118 0.99977-2.437515 1.588171-5.022387 1.753947-7.702426l17.732873-66.078974 105.73209-131.488707 48.647977 39.113833L674.469813 348.564697zM831.385633 172.919305l-7.679913 9.550517-68.139913-54.779627 7.687076-9.56382c0.291642-0.132006 1.144056-0.38374 2.604314-0.38374 4.28356 0 9.735735 2.071172 13.570063 5.15644l43.832298 35.245735c3.493567 2.805906 6.421246 7.018857 7.642051 10.993378C831.497173 171.081447 831.492056 172.446537 831.385633 172.919305zM487.474932 291.067168l-200.394053 0c-14.136975 0-25.638937 11.501962-25.638937 25.63996 0 14.136975 11.501962 25.637913 25.638937 25.637913l200.394053 0c14.137998 0 25.63996-11.500938 25.63996-25.637913C513.114892 302.56913 501.611907 291.067168 487.474932 291.067168zM674.507676 438.023148 287.079856 438.023148c-14.136975 0-25.638937 11.500938-25.638937 25.638937s11.501962 25.638937 25.638937 25.638937l387.42782 0c14.137998 0 25.640983-11.501962 25.640983-25.638937S688.646698 438.023148 674.507676 438.023148z"  ></path></symbol><symbol id="icon-shouye" viewBox="0 0 1024 1024"><path d="M387.018497 210.626092c17.179264 0 31.099299-13.925151 31.099299-31.099299l0-10.366092 186.597839 0 0 10.366092c0 17.175171 13.920034 31.099299 31.099299 31.099299s31.099299-13.925151 31.099299-31.099299L666.914232 96.593965c0-17.175171-13.920034-31.099299-31.099299-31.099299s-31.099299 13.925151-31.099299 31.099299l0 10.366092L418.117796 106.960057l0-10.366092c0-17.175171-13.920034-31.099299-31.099299-31.099299s-31.099299 13.925151-31.099299 31.099299l0 82.932828C355.919199 196.700941 369.83821 210.626092 387.018497 210.626092z"  ></path><path d="M400.416646 314.944995c-17.179264 0-31.099299 13.925151-31.099299 31.099299l0 30.340005c0 17.175171 13.920034 31.099299 31.099299 31.099299s31.099299-13.925151 31.099299-31.099299L431.515944 346.044294C431.516967 328.869123 417.596933 314.944995 400.416646 314.944995z"  ></path><path d="M622.416785 314.944995c-17.179264 0-31.099299 13.925151-31.099299 31.099299l0 30.340005c0 17.175171 13.920034 31.099299 31.099299 31.099299s31.099299-13.925151 31.099299-31.099299L653.516084 346.044294C653.517107 328.869123 639.597073 314.944995 622.416785 314.944995z"  ></path><path d="M511.103584 546.380018c43.773969 0 74.783217-30.18344 86.212524-48.016597 9.182127-14.33038 5.021364-33.210379-9.202593-42.569538-14.213723-9.379625-33.428344-5.385661-42.974767 8.706289-0.132006 0.197498-13.555737 19.680225-34.035164 19.680225-19.903306 0-32.29452-18.039865-33.124422-19.290345-9.151427-14.349823-28.173666-18.72855-42.650379-9.718339-14.588253 9.06547-19.072381 28.245298-10.001795 42.832528C436.493306 515.968381 467.116767 546.380018 511.103584 546.380018z"  ></path><path d="M463.633433 898.665457 266.173199 898.665457c-41.648562 0-75.532277-34.713616-75.532277-77.374228l0-574.913888c0-42.665729 33.883715-77.374228 75.532277-77.374228 17.179264 0 31.099299-13.925151 31.099299-31.099299s-13.920034-31.099299-31.099299-31.099299c-75.946716 0-137.730874 62.61406-137.730874 139.573849l0 574.913888c0 76.959789 61.784158 139.573849 137.730874 139.573849L463.633433 960.866101c17.179264 0 31.099299-13.920034 31.099299-31.099299S480.81372 898.665457 463.633433 898.665457z"  ></path><path d="M756.661256 106.803491c-17.179264 0-31.099299 13.925151-31.099299 31.099299s13.920034 31.099299 31.099299 31.099299c41.648562 0 75.532277 34.7085 75.532277 77.374228L832.193533 551.401382c0 17.175171 13.920034 31.099299 31.099299 31.099299s31.099299-13.925151 31.099299-31.099299L894.39213 246.37734C894.39213 169.417551 832.607972 106.803491 756.661256 106.803491z"  ></path><path d="M840.980663 650.76953 613.392248 885.125069l-110.711498-114.006544c-11.975752-12.325723-31.655977-12.614296-43.976584-0.647753-12.320607 11.966543-12.614296 31.655977-0.647753 43.976584l133.023666 136.981814c0.10847 0.110517 0.23843 0.183172 0.347924 0.291642 0.11154 0.11154 0.186242 0.245593 0.299829 0.356111 0.771573 0.74906 1.644453 1.311879 2.470261 1.963725 0.704035 0.556679 1.363044 1.183965 2.101871 1.671059 1.031493 0.680499 2.131547 1.187035 3.219321 1.731434 0.730641 0.366344 1.426489 0.816598 2.178619 1.121544 1.25048 0.50756 2.548032 0.823761 3.841491 1.162476 0.642636 0.167822 1.26276 0.429789 1.912559 0.555655 1.961678 0.38067 3.949962 0.581238 5.939269 0.581238s3.977591-0.200568 5.939269-0.581238c0.650823-0.12689 1.269923-0.387833 1.912559-0.555655 1.293459-0.338714 2.591011-0.654916 3.841491-1.162476 0.75213-0.304945 1.447978-0.7552 2.178619-1.121544 1.087774-0.544399 2.187829-1.050935 3.219321-1.731434 0.738827-0.487094 1.397836-1.11438 2.101871-1.671059 0.825808-0.651846 1.698688-1.215688 2.470261-1.963725 0.113587-0.110517 0.188288-0.24457 0.299829-0.356111 0.109494-0.10847 0.239454-0.181125 0.347924-0.291642l249.900583-257.331833c11.966543-12.320607 11.672854-32.011064-0.647753-43.976584C872.637664 638.160351 852.956416 638.438691 840.980663 650.76953z"  ></path></symbol><symbol id="icon-dongjie2" viewBox="0 0 1024 1024"><path d="M364.851804 792.021585c-116.75667-16.679524-212.024383-57.201559-261.142001-109.798341L103.709803 745.973818l0 36.224243c0 77.155591 156.153093 163.111422 380.149895 163.111422 1.534926 0 2.967523 0 4.502448 0C432.2862 909.187569 388.489657 855.465174 364.851804 792.021585z"  ></path><path d="M655.873688 422.616169C511.693015 422.616169 394.322374 539.884481 394.322374 684.065154S511.693015 945.616468 655.873688 945.616468s261.551314-117.268312 261.551314-261.448986C917.322674 539.884481 800.054362 422.51384 655.873688 422.616169zM494.706505 684.065154c0-88.821025 72.243829-161.064855 161.064855-161.064855 25.684421 0 49.526931 6.549016 71.015889 17.293495L512.102328 755.183372C501.35785 733.694414 494.706505 709.749575 494.706505 684.065154zM655.77136 845.232337c-26.503048 0-51.164185-7.060658-73.267113-18.521435l215.912861-215.912861c11.460777 22.102928 18.521435 46.764065 18.521435 73.267113C816.938543 772.988508 744.694714 845.130009 655.77136 845.232337z"  ></path><path d="M345.511742 684.065154c0-25.786749 3.172179-50.8572 9.107225-74.802039C242.569401 591.764965 151.394824 552.061557 103.709803 501.102029l0 39.191766 0 60.783052c0 60.987709 97.825922 127.603478 249.578895 152.673928C348.172279 731.340861 345.511742 708.009993 345.511742 684.065154z"  ></path><path d="M857.255921 448.198261c4.502448-9.516538 6.753672-19.033077 6.753672-28.344959l0-99.974818c-25.275107 27.117018-62.829619 50.959528-109.286699 70.094934C792.789048 402.662137 827.478365 422.616169 857.255921 448.198261z"  ></path><path d="M467.384831 437.760767c-162.292795-3.069851-300.74308-50.652543-363.572699-117.882282l0 99.974818c0 62.624963 103.044669 131.082642 261.755971 154.618167C386.238433 519.930449 421.848706 472.654742 467.384831 437.760767z"  ></path><path d="M530.112122 400.410912c38.475467-17.088838 81.044069-26.707705 125.761567-26.707705 10.335165 0 20.568002 0.511642 30.698511 1.534926 110.002998-31.41481 177.539722-85.955831 177.539722-136.710703 0-77.155591-156.153093-163.111422-380.149895-163.111422s-380.149895 85.955831-380.149895 163.111422c0 77.155591 156.153093 163.111422 380.149895 163.111422C499.618267 401.638853 515.069851 401.229539 530.112122 400.410912z"  ></path></symbol><symbol id="icon-zhihangzhong" viewBox="0 0 1024 1024"><path d="M511.071861 62.848397c-246.007927 0-447.287139 201.279213-447.287139 447.287139s201.279213 447.287139 447.287139 447.287139 447.287139-201.279213 447.28714-447.287139-201.279213-447.287139-447.28714-447.287139z m0 805.116851c-196.806341 0-357.829711-161.02337-357.829711-357.829712s161.02337-357.829711 357.829711-357.829711 357.829711 161.02337 357.829712 357.829711-161.02337 357.829711-357.829712 357.829712z"  ></path><path d="M332.157006 456.819237c31.989575 0 53.3163 21.326724 53.316299 53.316299 0 31.989575-21.326724 53.3163-53.316299 53.3163s-53.3163-21.326724-53.3163-53.3163c0-31.989575 21.326724-53.3163 53.3163-53.316299zM508.814448 456.819237c31.989575 0 53.3163 21.326724 53.316299 53.316299 0 31.989575-21.326724 53.3163-53.316299 53.3163s-53.3163-21.326724-53.3163-53.3163c0-31.989575 21.326724-53.3163 53.3163-53.316299zM683.022095 456.819237c31.989575 0 53.3163 21.326724 53.3163 53.316299 0 31.989575-21.326724 53.3163-53.3163 53.3163s-53.3163-21.326724-53.3163-53.3163c0-31.989575 21.326724-53.3163 53.3163-53.316299z"  ></path></symbol><symbol id="icon-fq_jiagong" viewBox="0 0 1024 1024"><path d="M914.773333 773.12l-221.866666-221.866667 221.866666-221.866666L723.626667 138.24l-221.866667 221.866667-221.866667-221.866667-158.72 158.72 221.866667 221.866667-158.72 158.72-32.426667 221.866666 221.866667-32.426666 158.72-158.72 221.866667 221.866666 160.426666-157.013333zM723.626667 201.386667l126.293333 126.293333-63.146667 63.146667-126.293333-126.293334 63.146667-63.146666z m-413.013334 221.866666l63.146667-63.146666-32.426667-32.426667-63.146666 63.146667-32.426667-32.426667 63.146667-63.146667-32.426667-32.426666-63.146667 63.146666-32.426666-32.426666 95.573333-95.573334 191.146667 191.146667-95.573334 95.573333-61.44-61.44z m-126.293333 443.733334l23.893333-167.253334 8.533334 8.533334 126.293333 126.293333 8.533333 8.533333-167.253333 23.893334z m189.44-63.146667l-126.293333-126.293333 126.293333-126.293334 158.72-158.72 95.573333-95.573333 126.293334 126.293333-95.573334 95.573334-158.72 158.72-126.293333 126.293333z m382.293333 63.146667L723.626667 836.266667l63.146666-63.146667-32.426666-32.426667-63.146667 63.146667-32.426667-32.426667 63.146667-63.146666-32.426667-32.426667-63.146666 63.146667-63.146667-63.146667 95.573333-95.573333 191.146667 191.146666-93.866667 95.573334z" fill="" ></path></symbol><symbol id="icon-manage-process" viewBox="0 0 1024 1024"><path d="M796.6 635.5V482.2H534.4v-93.7h200v-320h-450v320h200v93.7h-257v153.3h-155v320h360v-320h-155V532.2h469.1v103.3h-155v320h360v-320H796.6z m-462.2-517h350v220h-350v-220z m48 787h-260v-220h260v220z m519.2 0h-260v-220h260v220z" fill="" ></path></symbol><symbol id="icon-web-icon-" viewBox="0 0 1024 1024"><path d="M742.592 495.68c-48.32 48.32-123.2 57.28-180.512 26.56l-253.792 251.2c-17.6 17.6-45.44 17.6-61.76 0-17.6-17.6-17.6-45.44 0-61.76l252.512-252.832c-30.72-58.88-23.36-132.16 26.56-180.832 29.44-29.44 67.52-44.16 105.6-44.16-40.96 42.56-39.68 110.08 1.6 152.64a108.672 108.672 0 0 0 152.64 1.6c-0.288 40.032-13.408 78.112-42.848 107.584z m70.4-191.072c-10.24 11.84-29.44 27.84-54.4 51.52-27.84 27.84-65.92 27.84-92.48 0-27.84-27.84-27.84-66.24 0-92.48 23.36-24.96 51.2-55.68 49.92-55.68a194.944 194.944 0 0 0-221.472 39.36c-54.4 54.4-70.4 133.76-47.04 202.912l-231.712 230.4a88.288 88.288 0 0 0 0 123.52c33.6 33.92 89.6 33.92 124.8 0l231.712-232.032c68.8 23.36 148.16 7.36 202.592-47.04 58.56-58.88 70.4-147.2 38.08-220.48z"  ></path><path d="M759.328 818.368h-5.472c-0.672-36.16-19.2-58.784-40.448-77.504-6.176-5.824-4.128-12.928 0-16.16 21.248-19.36 39.776-41.344 40.448-78.144h5.472c4.8 0 8.928-3.872 8.928-8.384 0-4.512-4.128-8.384-8.928-8.384h-134.4c-5.472-0.64-9.6 3.232-9.6 7.744s4.128 8.384 8.928 8.384h5.472c0.672 36.8 18.528 58.784 40.448 78.144a10.88 10.88 0 0 1 0 16.16c-21.248 18.72-39.776 41.344-40.448 77.504h-4.8c-4.8 0-8.928 3.872-8.928 8.384 0 4.512 4.128 8.384 8.928 8.384h135.072c4.8 0 8.928-3.872 8.928-8.384 0-3.84-4.096-7.744-9.6-7.744z m-14.368-171.776c0 11.616-2.752 21.952-6.176 31.008-15.776 4.512-78.176 4.512-93.952 0a73.888 73.888 0 0 1-6.176-31.008h106.304z m-53.504 158.24c-8.928 0-29.472 13.568-43.872 13.568h-8.928c0.672-30.368 15.072-49.728 33.6-66.528 4.8-4.512 12.352-14.208 19.872-14.208 7.552 0 15.072 10.336 19.872 14.848 18.528 16.8 32.928 36.16 33.6 66.528h-10.24c-14.432-0.672-34.304-14.208-43.904-14.208z m0 0"  ></path></symbol><symbol id="icon-jiankong" viewBox="0 0 1024 1024"><path d="M64 64V640H896V64H64zM0 0h960v704H0V0z"  ></path><path d="M192 896H768v64H192zM448 640H512v256h-64z"  ></path><path d="M479.232 561.604267l309.9904-348.330667-47.803733-42.5472-259.566934 291.669333L303.957333 240.008533 163.208533 438.6048l52.224 37.009067 91.6224-129.28z"  ></path></symbol><symbol id="icon-web-icon-1" viewBox="0 0 1024 1024"><path d="M684.768 895.072a168.032 168.032 0 1 1 0-336.128 168.032 168.032 0 1 1 0 336.128z m-126.048-168.064c0 27.136 8.736 52.064 23.328 72.64l175.36-175.36a125.248 125.248 0 0 0-72.64-23.328 126.016 126.016 0 0 0-126.048 126.048z m228.768-72.64l-175.36 175.36a125.248 125.248 0 0 0 72.64 23.328 126.08 126.08 0 0 0 126.048-126.048 125.024 125.024 0 0 0-23.328-72.64z m0 0"  ></path><path d="M494.912 423.296h213.088v71.872a21.792 21.792 0 1 0 43.488 0v-95.264a21.728 21.728 0 0 0-6.624-15.712L497.28 135.648a21.536 21.536 0 0 0-16.032-7.104H213.984A43.52 43.52 0 0 0 170.528 172.16v620.608a43.52 43.52 0 0 0 43.456 43.648h225.024v-0.288a21.76 21.76 0 0 0 0-43.072v-0.288H227.008a13.12 13.12 0 0 1-13.056-13.152V185.248c0-7.232 5.856-13.088 13.024-13.088h245.152v229.408a21.76 21.76 0 0 0 22.784 21.76z m20.672-207.488l163.264 163.872h-163.264V215.744v0.064z m0 0"  ></path></symbol><symbol id="icon-renwuguanli" viewBox="0 0 1025 1024"><path d="M768 160H640a128 128 0 0 0-247.93 0H256a64 64 0 0 0-64 64v672a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64zM516 96a32 32 0 1 1-32 32 32 32 0 0 1 32-32z m252 800H256V224h512z"  ></path><path d="M477.73 672l45.25-45.25L704 445.73l-45.25-45.26-181.02 181.02-90.51-90.51-45.26 45.26 90.51 90.51L477.73 672z"  ></path></symbol><symbol id="icon-quanxian" viewBox="0 0 1024 1024"><path d="M645.1 531.9C753.7 458.3 782 310.6 708.4 202S487.2 65.2 378.6 138.8 241.7 360 315.3 468.6c16.9 24.9 38.4 46.4 63.3 63.3C214.8 579.6 96.7 712.5 96.7 869v59.2H334V869H156c0-160.9 153.9-292 345.7-296.4h20C577 573.8 631.5 586 682 608.7l-177.3 177-83.6-83.8-41.8 42 125.9 125.9 23.1-23.1L736 639.1c79.7 49.8 129.1 136.3 131.6 230.2H689.8v58.9h237.5V869c0-156.5-118.1-289.4-282.2-337.1z m-133.1-19c-98.2 0-177.8-79.6-177.8-177.8 0-98.2 79.6-177.8 177.8-177.8 98.2 0 177.8 79.6 177.8 177.8S610.2 512.9 512 512.9z"  ></path></symbol><symbol id="icon-xiaoxizhongxin" viewBox="0 0 1024 1024"><path d="M512 512.2l0.1-0.4-0.1 0.4zM512 937.4c-34.3 0-67.1-10.6-94.8-30.7-25.9-18.8-45.5-44.4-57-74.2H190.4c-21.9 0-41.1-11.5-51.4-30.8-10.3-19.3-9.3-41.7 2.9-59.9l49.6-74.3v-208c0-68.9 21.6-134.5 62.3-189.8 19.6-26.6 43.1-49.9 69.9-69.4 26.3-19.1 55.2-34.1 85.9-44.4 8-19.8 21.4-36.7 38.8-49.1 18.7-13.3 40.7-20.3 63.6-20.3s44.9 7 63.6 20.3c17.4 12.4 30.8 29.3 38.8 49.1 30.7 10.4 59.6 25.3 85.9 44.4 26.7 19.4 50.3 42.8 69.9 69.4 40.8 55.3 62.3 121 62.3 189.9v208l49.6 74.3c12.1 18.2 13.2 40.6 2.9 59.9-10.3 19.3-29.5 30.8-51.4 30.8H663.8c-11.4 29.8-31.1 55.4-57 74.2-27.7 20-60.5 30.6-94.8 30.6z m-106.6-169l13.8 38.8c6.8 19.2 19.1 35.7 35.6 47.6 16.7 12.1 36.4 18.5 57.2 18.5 20.7 0 40.5-6.4 57.2-18.6 16.5-11.9 28.8-28.4 35.6-47.6l13.7-38.7h204.1l-44.5-66.6-9.8-14.7V459.6c0-55.1-17.2-107.6-49.8-151.7-15.6-21.2-34.4-39.9-56-55.6-21.4-15.8-45.3-28-70.7-36.3l-26.7-8.7-9.7-26.3c-3.3-8.8-9.2-16.4-16.9-21.9-7.8-5.5-17-8.4-26.5-8.4s-18.7 2.9-26.5 8.4c-7.7 5.4-13.5 13-16.9 21.9l-9.8 26.2-26.6 8.8C406.9 224.3 383 236.5 361.4 252.3c-21.3 15.5-40.2 34.2-55.9 55.6-32.6 44.1-49.8 96.6-49.8 151.7V687l-9.8 14.7-44.5 66.7h204z"  ></path></symbol><symbol id="icon-wenjianguanli" viewBox="0 0 1024 1024"><path d="M98 351c-17.7 0-32-14.3-32-32V192.8c0-52.9 43.1-96 96-96h221c52.9 0 96 43.1 96 96V255c0 17.7-14.3 32-32 32s-32-14.3-32-32v-62.2c0-17.6-14.4-32-32-32H162c-17.6 0-32 14.4-32 32V319c0 17.6-14.3 32-32 32z"  ></path><path d="M864 926.6H383c-17.7 0-32-14.3-32-32s14.3-32 32-32h481c17.6 0 32-14.4 32-32V319c0-17.6-14.4-32-32-32H447c-17.7 0-32-14.3-32-32s14.3-32 32-32h417c52.9 0 96 43.1 96 96v511.7c0 52.9-43.1 95.9-96 95.9z"  ></path><path d="M383 926.6H162c-52.9 0-96-43.1-96-96V319c0-17.7 14.3-32 32-32s32 14.3 32 32v511.7c0 17.6 14.4 32 32 32h221c17.7 0 32 14.3 32 32 0 17.6-14.3 31.9-32 31.9zM768.1 511.2H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h512.1c17.7 0 32 14.3 32 32s-14.3 32-32 32z"  ></path><path d="M768.1 703H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h512.1c17.7 0 32 14.3 32 32s-14.3 32-32 32z"  ></path></symbol><symbol id="icon-wj-jh" viewBox="0 0 1024 1024"><path d="M324.1 288v128.3h-27.5v-98.8c-3.4 2.8-8 5.3-13.9 7.6-5.9 2.2-11.2 3.6-16.1 4.2v-22.4c15.4-4.3 28.8-10.6 40.1-18.8h17.4zM283.8 585.5H337v21.7h-83.4V598c0-6.5 1.2-12.5 3.6-17.9 2.4-5.4 5.7-10.4 9.9-15.1 4.2-4.7 10.7-10.1 19.6-16.4 8.1-6 13.8-11.4 17-16 3.2-4.7 4.9-9.6 4.9-14.8 0-11.3-6.2-16.9-18.5-16.9-10.8 0-21.1 4.3-30.9 12.9v-23.3c11-7.1 23.3-10.6 36.9-10.6 12.5 0 22.4 3.2 29.7 9.6s10.9 15.2 10.9 26.4c0 6.2-1.1 11.9-3.2 16.9-2.1 5-5.2 9.8-9.1 14.2-4 4.4-10.4 9.7-19.2 15.9-8.5 6-14.2 10.7-17.1 14-2.8 3.3-4.3 6.2-4.3 8.6zM256.8 770.1c8.2 6.1 17.7 9.2 28.6 9.2 6.9 0 12.4-1.5 16.4-4.6 4.1-3.1 6.1-7.4 6.1-13 0-5.8-2.4-10.2-7.2-13.3-4.8-3.1-11.6-4.6-20.2-4.6h-10.9v-19.6h10c16.4 0 24.6-5.5 24.6-16.6 0-10.4-6.3-15.6-18.9-15.6-8.2 0-16.2 2.7-23.9 8v-21c8.4-4.4 18.3-6.5 29.7-6.5 11.6 0 21 2.7 28.2 8 7.2 5.3 10.8 12.7 10.8 22.2 0 16-8.1 26-24.3 30.1v0.4c8.5 0.9 15.3 4.1 20.4 9.4 5.1 5.3 7.7 11.7 7.7 19.3 0 11.6-4.2 20.7-12.7 27.2s-19.8 9.8-34 9.8c-12.6 0-22.7-2.1-30.4-6.2v-22.6zM736.3 703h-288c-17.7 0-32 14.3-32 32s14.3 32 32 32h288c17.7 0 32-14.3 32-32s-14.3-32-32-32zM448.3 511c-17.7 0-32 14.3-32 32s14.3 32 32 32h288c17.7 0 32-14.3 32-32s-14.3-32-32-32h-288zM448.3 319c-17.7 0-32 14.3-32 32s14.3 32 32 32h288c17.7 0 32-14.3 32-32s-14.3-32-32-32h-288zM352 64h64v160h-64z"  ></path><path d="M800 960H224c-53 0-96-43-96-96V224c0-53 43-96 96-96h96v64h-96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32h-96v-64h96c53 0 96 43 96 96v640c0 53-43 96-96 96z"  ></path><path d="M448 128h128v64H448zM608 64h64v160h-64z"  ></path></symbol><symbol id="icon-eduguanli" viewBox="0 0 1024 1024"><path d="M482.41777778 897.70666667H129.82044445c-56.43377778 0-102.4-45.96622222-102.4-102.4V228.352c0-56.43377778 45.96622222-102.4 102.4-102.4h734.09422222c56.43377778 0 102.4 45.96622222 102.4 102.4v200.93155555c0 18.88711111-15.24622222 34.13333333-34.13333334 34.13333334s-34.13333333-15.24622222-34.13333333-34.13333334V228.352c0-18.77333333-15.36-34.13333333-34.13333333-34.13333333H129.82044445c-18.77333333 0-34.13333333 15.36-34.13333334 34.13333333V795.30666667c0 18.77333333 15.36 34.13333333 34.13333334 34.13333333H482.41777778c18.88711111 0 34.13333333 15.24622222 34.13333333 34.13333333s-15.24622222 34.13333333-34.13333333 34.13333334z m155.30666667-515.98222222H192.512c-18.88711111 0-34.13333333-15.24622222-34.13333333-34.13333334s15.24622222-34.13333333 34.13333333-34.13333333h445.21244445c18.88711111 0 34.13333333 15.24622222 34.13333333 34.13333333s-15.24622222 34.13333333-34.13333333 34.13333334zM474.90844445 534.75555555h-285.58222223c-18.88711111 0-34.13333333-15.24622222-34.13333333-34.13333333s15.24622222-34.13333333 34.13333333-34.13333333h285.58222223c18.88711111 0 34.13333333 15.24622222 34.13333333 34.13333333s-15.24622222 34.13333333-34.13333333 34.13333333z m279.552 290.816v-39.13955555h-46.6488889c-9.216-0.79644445-14.336-5.46133333-15.13244444-13.88088889 0.79644445-8.41955555 5.91644445-13.08444445 15.13244444-13.88088889h46.6488889V737.28h-46.6488889c-9.216-0.79644445-14.336-5.46133333-15.13244444-13.88088889 0.79644445-8.41955555 5.91644445-13.08444445 15.13244444-13.88088889h26.51022223l-40.39111111-56.77511111c-3.41333333-4.20977778-5.00622222-8.87466667-5.00622222-13.88088889 1.70666667-14.336 9.67111111-22.30044445 24.0071111-24.00711111 8.41955555 0.79644445 14.67733333 4.20977778 18.88711112 10.12622222l46.64888888 66.90133334 46.6488889-66.90133334c4.20977778-5.91644445 10.46755555-9.216 18.8871111-10.12622222 14.336 1.70666667 22.30044445 9.67111111 24.00711112 24.00711111 0 5.00622222-1.70666667 9.67111111-5.00622222 13.88088889L822.61333333 709.51822222h26.51022222c9.216 0.79644445 14.336 5.46133333 15.13244445 13.88088889-0.79644445 8.41955555-5.91644445 13.08444445-15.13244445 13.88088889h-46.64888888v21.39022222h46.64888888c9.216 0.79644445 14.336 5.46133333 15.13244445 13.88088889-0.79644445 8.41955555-5.91644445 13.08444445-15.13244445 13.88088889h-46.64888888v39.13955555c-0.79644445 14.336-8.87466667 21.39022222-24.00711112 21.39022223s-23.21066667-7.05422222-24.0071111-21.39022223z m23.89333333 122.53866667c-123.33511111 0-223.80088889-100.352-223.80088889-223.80088889S655.01866667 500.62222222 778.35377778 500.62222222c123.33511111 0 223.80088889 100.352 223.80088889 223.80088889s-100.352 223.68711111-223.80088889 223.68711111z m0-379.22133333c-85.78844445 0-155.53422222 69.74577778-155.53422223 155.53422222s69.74577778 155.53422222 155.53422223 155.53422222c85.78844445 0 155.53422222-69.74577778 155.53422222-155.53422222S864.14222222 568.88888889 778.35377778 568.88888889z"  ></path></symbol><symbol id="icon-RectangleCopy" viewBox="0 0 1024 1024"><path d="M832 403.498667a21.333333 21.333333 0 0 0 21.333333-21.333334V276.736A106.24 106.24 0 0 0 747.136 170.666667H276.864A106.24 106.24 0 0 0 170.666667 276.736v342.528A106.24 106.24 0 0 0 276.864 725.333333h470.272A106.24 106.24 0 0 0 853.333333 619.264V512a21.333333 21.333333 0 0 0-42.666666 0v107.264A63.573333 63.573333 0 0 1 747.136 682.666667H276.864A63.573333 63.573333 0 0 1 213.333333 619.264V276.736A63.573333 63.573333 0 0 1 276.864 213.333333h470.272A63.573333 63.573333 0 0 1 810.666667 276.736v105.429333a21.333333 21.333333 0 0 0 21.333333 21.333334M792.874667 810.666667H232.874667a21.333333 21.333333 0 0 0 0 42.666666h560a21.333333 21.333333 0 0 0 0-42.666666"  ></path></symbol><symbol id="icon-tubiao_shengchangongyi" viewBox="0 0 1024 1024"><path d="M54.139985 341.303229c-5.837322 0-11.625473-2.533821-15.592283-7.418829-6.986322-8.604958-5.674756-21.24396 2.929198-28.231285l260.065403-211.178206c8.601947-6.986322 21.24396-5.676763 28.232289 2.928195 6.986322 8.604958 5.674756 21.244963-2.929198 28.232289L66.779991 336.813598a19.9916 19.9916 0 0 1-12.640006 4.489631zM581.019287 341.303229c-5.837322 0-11.625473-2.533821-15.592284-7.418829-6.986322-8.604958-5.674756-21.24396 2.929198-28.231285L828.422608 94.474909c8.604958-6.986322 21.24396-5.676763 28.232289 2.928195 6.987326 8.604958 5.674756 21.244963-2.929198 28.232289L593.659292 336.813598a19.9916 19.9916 0 0 1-12.640005 4.489631z"  ></path><path d="M575.165909 336.608885a19.989593 19.989593 0 0 1-12.562737-4.428417L305.546243 125.521998c-8.638073-6.945179-10.011856-19.57816-3.066677-28.217237 6.944176-8.638073 19.57816-10.012859 28.216233-3.066676L587.753732 300.897558c8.638073 6.945179 10.011856 19.57816 3.066677 28.217237-3.9638 4.931168-9.783059 7.49409-15.6545 7.49409zM876.558189 89.918045c-1.187133 0-2.388315-0.105367-3.596521-0.323125L674.208721 53.637737c-10.906972-1.972868-18.149185-12.415223-16.176317-23.322195 1.973872-10.907976 12.42024-18.148182 23.322195-16.176317l198.752947 35.957183c10.906972 1.972868 18.149185 12.415223 16.176317 23.322195-1.75511 9.698766-10.206533 16.499442-19.725674 16.499442z"  ></path><path d="M885.844519 312.093537c-10.781535 0-19.692559-8.558797-20.047795-19.414591l-6.495614-198.748934c-0.362261-11.078569 8.324983-20.352857 19.403552-20.715118 11.12172-0.360254 20.352857 8.325986 20.715119 19.403552l6.495614 198.748934c0.362261 11.078569-8.324983 20.352857-19.403553 20.715118-0.223779 0.007024-0.446555 0.011038-0.667323 0.011039zM774.358386 517.214655H57.666262c-11.08459 0-20.069872-8.985282-20.069872-20.069873s8.985282-20.069872 20.069872-20.069872h716.692124c11.08459 0 20.069872 8.985282 20.069873 20.069872s-8.985282 20.069872-20.069873 20.069873zM500.097562 805.76021c-26.461123 0-40.918455-6.557831-52.535901-11.827176-10.152345-4.605032-18.170259-8.242696-35.954172-8.242696s-25.801828 3.637664-35.954173 8.242696c-11.616442 5.269345-26.073774 11.827176-52.536904 11.827176-26.460119 0-40.916448-6.557831-52.533894-11.827176-10.150338-4.605032-18.168252-8.242696-35.951162-8.242696-17.780903 0-25.798817 3.637664-35.949155 8.241693-11.616442 5.270348-26.072771 11.828179-52.533894 11.828179s-40.916448-6.557831-52.533894-11.828179c-10.150338-4.604029-18.168252-8.241693-35.950158-8.241693-11.08459 0-20.069872-8.985282-20.069872-20.069872s8.985282-20.069872 20.069872-20.069872c26.460119 0 40.916448 6.557831 52.533894 11.828179 10.150338 4.605032 18.169255 8.241693 35.950158 8.241693 17.781907 0 25.799821-3.637664 35.950159-8.241693 11.616442-5.269345 26.071767-11.828179 52.53289-11.828179s40.917452 6.557831 52.534898 11.828179c10.150338 4.605032 18.168252 8.241693 35.950158 8.241693 17.784917 0 25.802831-3.637664 35.955176-8.242697 11.616442-5.269345 26.073774-11.827176 52.535901-11.827175s40.918455 6.557831 52.535901 11.827175c10.152345 4.605032 18.170259 8.242696 35.954172 8.242697 11.08459 0 20.069872 8.985282 20.069872 20.069872s-8.985282 20.069872-20.069872 20.069872zM862.060717 643.050746l95.196421 164.887045-95.196421 164.885038H671.664864l-95.196421-164.886041 95.196421-164.885039h190.395853m23.173678-40.140747h-236.744212L530.119081 807.935784l118.371102 205.025786h236.744212l118.371103-205.024782-118.371103-205.025786z"  ></path><path d="M766.859279 913.84751c-58.398311 0-105.909719-47.511408-105.909719-105.911726S708.460968 702.024058 766.859279 702.024058c58.400318 0 105.913733 47.511408 105.913733 105.911726S825.2606 913.84751 766.859279 913.84751z m0-171.683707c-36.266259 0-65.769975 29.504719-65.769975 65.771981s29.503716 65.771982 65.769975 65.771982c36.268266 0 65.773989-29.504719 65.773988-65.771982s-29.505723-65.771982-65.773988-65.771981z"  ></path></symbol><symbol id="icon-shoudong" viewBox="0 0 1024 1024"><path d="M821.574863 397.603112h2.870264C877.53991 397.603112 920.578554 440.703042 920.578554 493.869327v285.902843c0 134.881995-109.20794 244.232938-243.921397 244.232937H477.679401a243.819252 243.819252 0 0 1-197.144259-100.418394l-194.703002-267.583202a94.917905 94.917905 0 0 1 5.760957-118.835072l9.050015-10.199142c33.845626-38.120379 92.144678-41.552439 130.213985-7.665955 0.919302 0.817157 1.818175 1.649636 2.701726 2.502543l37.134683 35.801696a14.336 14.336 0 0 0 20.291033-0.377935 14.376858 14.376858 0 0 0 4.009177-9.969317V218.017516c0-53.166284 43.043751-96.256 96.133426-96.256h2.870264c53.094783 0 96.133426 43.094823 96.133427 96.256v87.047661a95.617596 95.617596 0 0 1 44.48399-10.90394h2.865157c44.116269 0 81.29181 29.754733 92.604329 70.316369a95.597167 95.597167 0 0 1 48.00798-12.849796h2.870265c40.576958 0 75.280599 25.168439 89.386773 60.765846a95.59206 95.59206 0 0 1 51.225536-14.790544zM317.210175 896.829925a198.456818 198.456818 0 0 0 160.469226 81.73614h198.977756c109.652269 0 198.543641-89.008838 198.543641-198.80411v-285.902843c0-28.064239-22.727182-50.816958-50.755671-50.816957h-2.870264c-28.028489 0-50.750564 22.752718-50.750564 50.816957v102.006743c0 26.097955-39.106075 26.097955-39.106075 0V447.888918c0-28.069347-22.727182-50.822065-50.75567-50.822065h-2.870265c-28.028489 0-50.750564 22.752718-50.750563 50.816957v113.503123c0 26.097955-39.106075 26.097955-39.106075 0V390.422344c0-28.069347-22.727182-50.822065-50.755671-50.822065h-2.870264c-28.028489 0-50.750564 22.752718-50.750564 50.816958v136.490773c0 26.097955-39.106075 26.097955-39.106075 0v-308.885387c0-28.069347-22.727182-50.827172-50.755671-50.827172h-2.870264c-28.028489 0-50.750564 22.757825-50.750563 50.822065v329.237706c0 15.474913-5.985676 30.336958-16.700649 41.480938-22.880399 23.794594-60.699451 24.509606-84.458294 1.598563l-37.134683-35.806803a46.807781 46.807781 0 0 0-67.517606 2.625117l-9.055123 10.194035a49.438005 49.438005 0 0 0-3.003052 61.894544L317.210175 896.829925zM586.054863 196.628429a22.982544 22.982544 0 0 1-45.965087 0c0-83.207022-67.456319-150.663342-150.663342-150.663342S238.763092 113.421406 238.763092 196.628429a22.982544 22.982544 0 1 1-45.965087 0C192.798005 88.033357 280.831362 0 389.426434 0s196.628429 88.033357 196.628429 196.628429z" fill="#000000" ></path></symbol><symbol id="icon-zuzhi" viewBox="0 0 1024 1024"><path d="M273.6 656.3c20.6 0 41.4-5.2 60.4-16.2 1.1-0.6 2.2-1.3 3.3-2 12.2-7.6 16-23.6 8.5-35.8-7.6-12.2-23.6-16-35.8-8.5-0.6 0.4-1.3 0.8-2 1.2-33.1 19.1-75.5 7.7-94.5-25.3-19.1-33.1-7.7-75.5 25.3-94.5 33.1-19.1 75.5-7.7 94.5 25.3 6.2 10.7 9.4 22.9 9.3 35.1-0.1 14.4 11.4 26.1 25.8 26.3 14.4 0.2 26.1-11.4 26.3-25.8 0.2-21.6-5.4-42.9-16.3-61.6-33.4-58-107.7-77.9-165.6-44.5-57.9 33.4-77.8 107.7-44.4 165.6 22.5 38.9 63.3 60.7 105.2 60.7zM319.5 686.4H217.6c-82 0-148.7 66.7-148.7 148.7v27.3c0 14.4 11.6 26 26 26s26-11.7 26-26v-27.3c0-53.3 43.4-96.7 96.7-96.7h101.8c53.3 0 96.7 43.4 96.7 96.7v27.3c0 14.4 11.6 26 26 26s26-11.7 26-26v-27.3c0.1-82-66.6-148.7-148.6-148.7zM204.7 376.1c18 0 32.5-14.6 32.5-32.5V229.7c0-4.1 2.2-6.3 2.6-6.5h547.4c0.6 0.2 2.9 2.4 2.9 6.5v113.8c0 18 14.6 32.5 32.5 32.5s32.5-14.6 32.5-32.5V229.7c0-39.5-30.4-71.6-67.7-71.6H239.9c-37.3 0-67.7 32.1-67.7 71.6v113.8c0 18 14.6 32.6 32.5 32.6zM810.6 689.6H708.8c-82 0-148.7 66.7-148.7 148.7v27.3c0 14.4 11.7 26 26 26s26-11.7 26-26v-27.3c0-53.3 43.4-96.7 96.7-96.7h101.8c53.3 0 96.7 43.4 96.7 96.7v27.3c0 14.4 11.7 26 26 26s26-11.7 26-26v-27.3c0-81.9-66.7-148.7-148.7-148.7zM792.7 417.9c-31.3-8.4-64-4.1-92 12.1-57.9 33.4-77.8 107.7-44.4 165.6 22.4 38.9 63.3 60.6 105.2 60.6 20.6 0 41.4-5.2 60.4-16.2 1.1-0.6 2.2-1.3 3.3-2 12.2-7.6 16-23.6 8.5-35.8-7.6-12.2-23.6-16-35.8-8.5-0.6 0.4-1.3 0.8-2 1.2-33 19.1-75.5 7.7-94.5-25.3-19.1-33.1-7.7-75.5 25.3-94.5 16-9.2 34.7-11.7 52.5-6.9 17.9 4.8 32.8 16.2 42 32.2 6.2 10.7 9.4 22.9 9.3 35.1-0.1 14.4 11.4 26.1 25.8 26.3 14.4 0.2 26.1-11.4 26.3-25.8 0.2-21.6-5.4-42.9-16.3-61.6-16.2-28-42.3-48.1-73.6-56.5z" fill="#4D4D4D" ></path></symbol><symbol id="icon-jichushuju" viewBox="0 0 1024 1024"><path d="M754.456774 260.954839v508.696774h50.869678v-508.696774h-50.869678z m-508.696774 508.696774v-508.696774h-50.869677v508.696774h50.869677z"  ></path><path d="M754.456774 761.063226c1.32129 18.498065-19.819355 45.584516-66.725161 66.725161-46.245161 21.140645-112.970323 35.014194-187.623226 35.014194-73.992258 0-141.378065-13.873548-187.623226-35.014194-47.566452-21.140645-68.046452-48.227097-66.725161-66.725161h-50.869677c8.588387 101.739355 146.663226 149.966452 305.218064 152.609032 158.554839-2.642581 296.629677-50.869677 305.218065-152.609032h-50.869678z"  ></path><path d="M754.456774 591.277419c1.32129 18.498065-19.819355 45.584516-66.725161 66.725162-46.245161 21.140645-112.970323 35.014194-187.623226 35.014193-73.992258 0-141.378065-13.873548-187.623226-35.014193-47.566452-21.140645-68.046452-48.227097-66.725161-66.725162h-50.869677c8.588387 101.739355 146.663226 149.966452 305.218064 152.609033 158.554839-2.642581 296.629677-50.869677 305.218065-152.609033h-50.869678z"  ></path><path d="M754.456774 422.152258c1.32129 18.498065-19.819355 45.584516-66.725161 66.725161-46.245161 21.140645-112.970323 35.014194-187.623226 35.014194-73.992258 0-141.378065-13.873548-187.623226-35.014194-47.566452-21.140645-68.046452-48.227097-66.725161-66.725161h-50.869677C203.47871 523.891613 341.553548 572.11871 500.108387 574.76129c158.554839-2.642581 296.629677-50.869677 305.218065-152.609032h-50.869678z"  ></path><path d="M754.456774 235.189677c1.32129 18.498065-19.819355 45.584516-66.725161 66.725162-46.245161 21.140645-112.970323 35.014194-187.623226 35.014193-73.992258 0-141.378065-13.873548-187.623226-35.014193-47.566452-21.140645-68.046452-48.227097-66.725161-66.725162h-50.869677C203.47871 336.929032 341.553548 385.156129 500.108387 387.79871c158.554839-2.642581 296.629677-50.869677 305.218065-152.609033h-50.869678z"  ></path><path d="M245.76 252.366452c-1.32129-18.498065 19.819355-45.584516 66.725161-66.725162 46.245161-21.140645 112.970323-35.014194 187.623226-35.014193 73.992258 0 141.378065 13.873548 187.623226 35.014193 47.566452 21.140645 68.046452 48.227097 66.725161 66.725162h50.869678c-8.588387-101.739355-146.663226-149.966452-305.218065-152.609033-158.554839 2.642581-296.629677 50.869677-305.218064 152.609033h50.869677z"  ></path></symbol><symbol id="icon-ziyuan145" viewBox="0 0 1024 1024"><path d="M513.580247 1024l-10.53498-4.740741a1072.460905 1072.460905 0 0 1-271.539094-161.185185C122.469136 763.786008 64.790123 667.917695 55.308642 562.041152a717.958848 717.958848 0 0 1 0-81.64609V50.567901l33.711934 9.744856c137.744856 40.032922 309.201646 3.160494 407.440329-52.674897l11.325103-7.63786 26.337449 11.588477c84.279835 35.81893 171.45679 72.691358 297.349794 65.053498a480.921811 480.921811 0 0 0 102.1893-16.592592L966.584362 52.674897l1.316873 32.921811c1.580247 34.502058 1.580247 71.374486 1.580246 102.979424v378.205761a194.897119 194.897119 0 0 1-1.843621 26.337449c-19.489712 110.353909-96.395062 190.946502-152.493827 242.041152A1281.843621 1281.843621 0 0 1 685.82716 933.399177a1269.465021 1269.465021 0 0 1-161.975308 85.860082zM107.983539 119.045267V481.975309a666.864198 666.864198 0 0 0 0 75.588477c8.427984 92.707819 58.469136 175.407407 158.024691 260.477366a1003.983539 1003.983539 0 0 0 247.835391 148.54321A1246.814815 1246.814815 0 0 0 659.489712 888.888889a1243.390947 1243.390947 0 0 0 121.942387-92.707819c54.781893-49.777778 119.572016-119.045267 136.164609-212.279835a153.8107 153.8107 0 0 0 0-18.17284V187.786008 119.045267a549.662551 549.662551 0 0 1-80.855967 10.53498c-138.534979 8.427984-235.45679-32.921811-321.053498-69.26749l-3.423869-1.316872A647.374486 647.374486 0 0 1 107.983539 119.045267z"  ></path><path d="M756.674897 313.152263v48.460906h-198.584362c-1.843621 18.962963-4.213992 36.082305-6.584362 52.674897h164.082304v206.222222h-57.942386v-157.234568h-233.08642v153.020576H369.777778v-203.325103h128.263374q2.633745-22.91358 5.26749-52.674897h-171.983539V395.061728c0 96.395062-8.954733 237.037037-66.633745 330.271605a166.716049 166.716049 0 0 0-47.934156-27.654321C272.329218 609.185185 277.596708 483.292181 277.596708 395.061728V229.925926a2610.831276 2610.831276 0 0 0 401.119341-41.349794l43.720165 44.246913c-44.773663 9.481481-97.44856 17.646091-153.547325 24.230453-1.843621 17.646091-3.423868 36.609053-5.26749 56.098765z m-184.36214 222.024692c0 59.786008-22.386831 141.168724-212.016461 195.423868a223.078189 223.078189 0 0 0-37.135802-43.193416c178.304527-43.983539 190.683128-107.983539 190.683127-152.757201v-49.514404h57.415638z m-65.580247-222.024692c0-17.646091 2.37037-34.238683 3.423869-50.304526-59.786008 5.26749-121.152263 8.954733-179.094651 11.325103v38.979423z m79.012346 302.35391a1546.798354 1546.798354 0 0 1 168.823045 76.115226l-38.979424 36.609054a1185.185185 1185.185185 0 0 0-168.296296-80.329218z"  ></path></symbol><symbol id="icon-peizhizhongxin" viewBox="0 0 1024 1024"><path d="M511.63 324.4c-103.43 0-187.6 84.16-187.6 187.6s84.16 187.6 187.6 187.6 187.6-84.16 187.6-187.6-84.16-187.6-187.6-187.6z m0 283.14c-52.68 0-95.55-42.87-95.55-95.55s42.87-95.55 95.55-95.55 95.55 42.87 95.55 95.55-42.87 95.55-95.55 95.55z"  ></path><path d="M914.05 576.12c-18.03 0-34.37-7.49-46.03-19.54-11.19-11.55-18.1-27.26-18.1-44.58 0-17.32 6.9-33.03 18.1-44.58 11.65-12.05 27.99-19.54 46.03-19.54 25.42 0 46.03-20.61 46.03-46.03 0-0.73-0.02-1.44-0.06-2.15 0-0.42-0.04-0.84-0.06-1.23-0.06-0.88-0.15-1.76-0.27-2.62-0.04-0.44-0.1-0.86-0.19-1.3-0.1-0.67-0.23-1.32-0.36-1.97-0.1-0.54-0.23-1.09-0.38-1.63-0.08-0.34-0.17-0.67-0.25-1-0.13-0.48-0.27-0.96-0.42-1.44-0.15-0.48-0.29-0.96-0.46-1.44-0.25-0.69-0.5-1.38-0.75-2.05-0.25-0.69-0.52-1.36-0.86-2.03-0.42-0.96-0.88-1.9-1.38-2.82-0.23-0.44-0.48-0.88-0.73-1.32l-0.63-1.09-104.71-181.4-0.29-0.48c-0.25-0.46-0.54-0.92-0.84-1.38-0.27-0.46-0.56-0.92-0.88-1.36-0.27-0.4-0.54-0.82-0.84-1.19-0.17-0.23-0.36-0.48-0.52-0.71-0.27-0.4-0.56-0.77-0.88-1.13-0.21-0.27-0.42-0.52-0.63-0.77-0.36-0.42-0.71-0.84-1.07-1.23a44.62 44.62 0 0 0-3.14-3.16c-0.36-0.31-0.69-0.63-1.05-0.92-0.36-0.31-0.69-0.61-1.07-0.9-0.65-0.5-1.3-1-1.97-1.51-0.08-0.06-0.17-0.13-0.27-0.19-0.75-0.54-1.55-1.07-2.34-1.57-0.02 0-0.04-0.02-0.08-0.04-0.23-0.15-0.46-0.27-0.69-0.42-0.19-0.13-0.38-0.25-0.59-0.36-0.04-0.02-0.06-0.04-0.1-0.04-0.46-0.27-0.94-0.54-1.42-0.8l-1.21-0.63c-21.57-10.59-47.95-2.8-60.13 18.31-8.58 14.83-22.41 25.46-38.93 29.87-1.59 0.42-3.16 0.8-4.75 1.09-15.06 2.87-30.5 0.27-43.91-7.49-12.01-6.92-21.26-17.32-26.67-29.79-1.3-2.95-2.36-5.98-3.2-9.14-4.43-16.55-2.15-33.83 6.4-48.64 8.12-14.06 7.97-30.63 1.09-44.06a45.854 45.854 0 0 0-17.93-18.83c-11.11-6.4-23.77-7.66-35.23-4.5-0.73-0.06-1.46-0.08-2.2-0.08l-195.25-1.57h-0.17c-3.45-0.1-6.97 0.17-10.42 0.88-0.73 0.15-1.46 0.31-2.2 0.48-0.73 0.19-1.46 0.38-2.18 0.61-0.84 0.25-1.67 0.54-2.49 0.84-0.82 0.29-1.61 0.61-2.41 0.96-0.02 0-0.06 0.02-0.08 0.04-0.65 0.27-1.3 0.56-1.92 0.88-0.19 0.08-0.36 0.17-0.52 0.27-0.75 0.36-1.51 0.77-2.24 1.19-22.01 12.72-29.56 40.88-16.84 62.89 8.56 14.83 10.84 32.11 6.4 48.64-0.08 0.31-0.17 0.65-0.27 0.96h-0.02c-4.56 16.13-15.04 29.58-29.58 37.97-14.98 8.66-32.05 10.54-47.66 6.63-16.26-4.08-30.9-14.48-39.92-30.1-12.72-22.01-40.86-29.54-62.89-16.84-0.82 0.48-1.63 0.98-2.43 1.51-0.08 0.06-0.17 0.13-0.27 0.17-0.67 0.46-1.34 0.94-1.99 1.44-0.19 0.13-0.36 0.25-0.54 0.4-0.71 0.56-1.42 1.15-2.11 1.74-0.73 0.65-1.44 1.32-2.15 2.03-0.61 0.61-1.19 1.21-1.78 1.86-0.08 0.08-0.17 0.19-0.25 0.27-0.1 0.15-0.21 0.27-0.36 0.42-0.46 0.56-0.94 1.13-1.4 1.72-0.06 0.06-0.11 0.15-0.17 0.21-0.08 0.15-0.19 0.27-0.31 0.42-0.46 0.63-0.92 1.26-1.36 1.9-0.06 0.1-0.13 0.21-0.19 0.29-0.52 0.82-1.05 1.63-1.53 2.47l-0.29 0.48L70.73 377.75l-0.63 1.09c-0.25 0.44-0.5 0.88-0.73 1.32-0.71 1.34-1.36 2.7-1.95 4.1-0.38 0.92-0.73 1.86-1.05 2.8-0.17 0.48-0.31 0.96-0.46 1.44-0.15 0.48-0.29 0.96-0.42 1.44s-0.25 0.96-0.36 1.46c-0.13 0.48-0.23 0.96-0.31 1.46-0.1 0.48-0.19 0.98-0.27 1.46-0.08 0.5-0.17 1-0.23 1.51-0.13 0.86-0.21 1.74-0.25 2.62-0.04 0.4-0.08 0.82-0.08 1.23-0.04 0.71-0.06 1.42-0.06 2.15 0 25.42 20.61 46.03 46.03 46.03 18.03 0 34.37 7.49 46.03 19.54 11.19 11.55 18.1 27.26 18.1 44.58 0 17.32-6.9 33.03-18.1 44.58-11.65 12.05-27.99 19.54-46.03 19.54-25.42 0-46.03 20.61-46.03 46.03 0 0.73 0.02 1.44 0.06 2.15 0 0.42 0.04 0.84 0.08 1.23 0.04 0.88 0.15 1.76 0.25 2.62 0.06 0.5 0.15 1 0.23 1.51 0.08 0.48 0.17 0.98 0.27 1.46 0.08 0.5 0.19 0.98 0.31 1.46 0.1 0.5 0.23 0.98 0.36 1.46 0.13 0.48 0.27 0.96 0.42 1.44 0.15 0.48 0.29 0.96 0.46 1.44 0.31 0.96 0.65 1.88 1.05 2.8 0.59 1.4 1.23 2.76 1.95 4.1 0.23 0.44 0.48 0.88 0.73 1.32l0.63 1.09 104.71 181.4 0.29 0.48c0.48 0.84 1 1.65 1.53 2.47 0.06 0.08 0.13 0.19 0.19 0.29 0.44 0.65 0.9 1.28 1.36 1.9 0.13 0.15 0.23 0.27 0.31 0.42 0.06 0.06 0.1 0.15 0.17 0.21l0.06 0.06c0.44 0.56 0.9 1.11 1.34 1.65 0.15 0.15 0.25 0.27 0.36 0.42 0.08 0.08 0.17 0.19 0.25 0.27 0.29 0.31 0.59 0.65 0.88 0.94 0.29 0.31 0.59 0.63 0.9 0.92 0.71 0.71 1.42 1.38 2.15 2.03 0.69 0.59 1.4 1.17 2.11 1.74 0.19 0.15 0.36 0.27 0.54 0.4 0.65 0.5 1.32 0.98 1.99 1.44 0.1 0.04 0.19 0.1 0.27 0.17 0.79 0.52 1.61 1.03 2.43 1.51 22.03 12.7 50.17 5.17 62.89-16.84 9.02-15.63 23.68-26.03 39.94-30.11 15.59-3.91 32.66-2.03 47.64 6.63 14.54 8.39 25.02 21.84 29.58 37.95 0.1 0.31 0.21 0.65 0.29 0.98 4.44 16.53 2.15 33.81-6.4 48.64-12.7 22.01-5.17 50.17 16.84 62.89 0.52 0.31 1.07 0.61 1.61 0.88 0.33 0.19 0.67 0.36 1 0.5 1.19 0.61 2.41 1.13 3.64 1.61 0.71 0.29 1.42 0.54 2.15 0.8 0.48 0.15 0.94 0.31 1.42 0.46 0.34 0.1 0.69 0.21 1.05 0.29 0.34 0.08 0.69 0.17 1.05 0.27 0.69 0.17 1.4 0.31 2.11 0.46 3.45 0.71 6.97 0.98 10.42 0.88h208.4c3.18 0.1 6.38-0.13 9.54-0.71 1.59-0.27 3.18-0.63 4.75-1.11 0.61-0.17 1.19-0.36 1.78-0.54 0.71-0.25 1.44-0.5 2.15-0.8 0.54-0.21 1.07-0.42 1.59-0.65 0.46-0.19 0.92-0.4 1.36-0.63 0.42-0.19 0.84-0.4 1.25-0.61 0-0.02 0.02-0.02 0.02-0.02 0.67-0.34 1.34-0.71 2.01-1.09 22.01-12.72 29.56-40.88 16.84-62.89-8.56-14.83-10.84-32.11-6.4-48.64 0.08-0.33 0.19-0.67 0.29-0.98 4.56-16.11 15.04-29.56 29.58-37.95 14.54-8.41 31.44-10.75 47.68-6.65 0.34 0.08 0.65 0.17 0.98 0.25 16.53 4.41 30.36 15.04 38.93 29.88 12.7 22.01 40.86 29.54 62.87 16.84 0.82-0.48 1.63-0.98 2.43-1.51 0.08-0.06 0.17-0.13 0.27-0.17 0.67-0.46 1.34-0.94 1.99-1.44 0.19-0.13 0.36-0.25 0.54-0.4 0.71-0.56 1.42-1.15 2.11-1.74 0.73-0.65 1.44-1.32 2.15-2.03 0.29-0.29 0.61-0.61 0.9-0.92 0.29-0.29 0.59-0.63 0.88-0.94 0.08-0.08 0.17-0.19 0.25-0.27 0.1-0.15 0.21-0.27 0.36-0.42 0.44-0.52 0.86-1.05 1.3-1.59 0.19-0.23 0.4-0.5 0.56-0.75 0.02 0 0.02-0.02 0.02-0.02 0.25-0.31 0.48-0.65 0.71-0.98 0.25-0.31 0.46-0.65 0.69-0.98 0.04-0.06 0.08-0.13 0.13-0.17 0.54-0.82 1.05-1.65 1.55-2.51l0.29-0.48 104.71-181.4 0.63-1.09c0.25-0.44 0.5-0.88 0.73-1.32 0.5-0.92 0.96-1.86 1.38-2.82 0.31-0.67 0.59-1.34 0.86-2.03 0.25-0.67 0.5-1.36 0.75-2.05 0.17-0.48 0.31-0.96 0.46-1.44 0.15-0.48 0.29-0.96 0.42-1.44 0.08-0.34 0.17-0.67 0.25-1 0.15-0.54 0.27-1.09 0.38-1.63 0.13-0.65 0.25-1.3 0.36-1.97 0.08-0.44 0.15-0.86 0.19-1.3 0.13-0.86 0.21-1.74 0.27-2.62 0.02-0.4 0.06-0.82 0.06-1.23 0.04-0.71 0.06-1.42 0.06-2.15 0.01-25.38-20.6-45.99-46.01-45.99z m-160.61 133.2c-40.29-10.8-82.37-5.25-118.5 15.61s-61.97 54.54-72.76 94.83c-4.39 16.36-6.07 33.01-5.1 49.46h-90.13c0.19-2.93 0.27-5.86 0.27-8.79 0-13.56-1.78-27.22-5.4-40.67-10.79-40.29-36.63-73.98-72.76-94.83-36.13-20.86-78.2-26.4-118.5-15.61-16.36 4.39-31.65 11.26-45.42 20.29l-45.08-78.1c51.01-25.71 86.07-78.6 86.07-139.52s-35.06-113.81-86.07-139.52l45.08-78.1c13.77 9.04 29.06 15.9 45.42 20.29 40.29 10.8 82.37 5.25 118.5-15.61 36.13-20.86 61.97-54.54 72.76-94.83 3.62-13.45 5.4-27.11 5.4-40.67 0-2.78-0.08-5.54-0.25-8.31l90.04 0.73c-0.82 16.05 0.9 32.28 5.17 48.24 10.8 40.29 36.63 73.98 72.76 94.83s78.2 26.4 118.5 15.61c16.36-4.39 31.65-11.26 45.42-20.29l45.08 78.1c-51 25.71-86.07 78.6-86.07 139.52s35.06 113.81 86.07 139.52l-45.08 78.1c-13.77-9.02-29.06-15.88-45.42-20.28z"  ></path></symbol><symbol id="icon-paigongfenpeishebei" viewBox="0 0 1024 1024"><path d="M798.5152 893.5424H232.8576c-36.0448 0-65.3312-29.2864-65.3312-65.3312v-131.2768c0-36.0448 29.2864-65.3312 65.3312-65.3312h565.6576c36.0448 0 65.3312 29.2864 65.3312 65.3312v131.2768c0 35.84-29.2864 65.3312-65.3312 65.3312zM232.8576 672.5632c-13.5168 0-24.3712 10.8544-24.3712 24.3712v131.2768c0 13.5168 10.8544 24.3712 24.3712 24.3712h565.6576c13.5168 0 24.3712-10.8544 24.3712-24.3712v-131.2768c0-13.5168-10.8544-24.3712-24.3712-24.3712H232.8576zM779.0592 611.1232H252.3136c-46.6944 0-84.7872-38.0928-84.7872-84.7872V200.0896c0-46.6944 38.0928-84.7872 84.7872-84.7872h526.7456c46.6944 0 84.7872 38.0928 84.7872 84.7872V526.336c0 46.6944-38.0928 84.7872-84.7872 84.7872zM252.3136 156.2624c-24.1664 0-43.8272 19.6608-43.8272 43.8272V526.336c0 24.1664 19.6608 43.8272 43.8272 43.8272h526.7456c24.1664 0 43.8272-19.6608 43.8272-43.8272V200.0896c0-24.1664-19.6608-43.8272-43.8272-43.8272H252.3136z"  ></path><path d="M720.4864 782.9504h-61.44c-11.264 0-20.48-9.216-20.48-20.48s9.216-20.48 20.48-20.48h61.44c11.264 0 20.48 9.216 20.48 20.48s-9.216 20.48-20.48 20.48zM577.1264 782.9504h-266.24c-11.264 0-20.48-9.216-20.48-20.48s9.216-20.48 20.48-20.48h266.24c11.264 0 20.48 9.216 20.48 20.48s-9.216 20.48-20.48 20.48zM466.944 528.1792c-5.3248 0-10.4448-2.048-14.5408-5.9392l-48.3328-48.3328a20.39808 20.39808 0 1 1 28.8768-28.8768l48.3328 48.3328a20.39808 20.39808 0 0 1-14.336 34.816z"  ></path><path d="M287.1296 611.1232c-5.3248 0-10.4448-2.048-14.5408-5.9392a20.39808 20.39808 0 0 1 0-28.8768l131.4816-131.2768a20.39808 20.39808 0 1 1 28.8768 28.8768l-131.4816 131.2768c-3.8912 3.8912-9.216 5.9392-14.336 5.9392zM466.944 528.1792c-5.3248 0-10.4448-2.048-14.5408-5.9392a20.39808 20.39808 0 0 1 0-28.8768l146.432-146.432a20.39808 20.39808 0 1 1 28.8768 28.8768L481.28 522.24c-3.8912 3.8912-9.216 5.9392-14.336 5.9392z"  ></path><path d="M642.6624 385.4336c-13.7216 0-27.4432-5.12-37.888-15.5648a53.6576 53.6576 0 0 1 0-75.776 53.6576 53.6576 0 0 1 75.776 0 53.6576 53.6576 0 0 1 0 75.776c-10.4448 10.4448-24.1664 15.5648-37.888 15.5648z m0-66.1504a12.61568 12.61568 0 1 0 8.8064 3.6864 11.91936 11.91936 0 0 0-8.8064-3.6864z"  ></path></symbol></svg>',z=(h=document.getElementsByTagName("script"))[h.length-1].getAttribute("data-injectcss");if(z&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(c){console&&console.log(c)}}function v(){s||(s=!0,t())}a=function(){var c,h,a,l,t,o=document.createElement("div");o.innerHTML=e,e=null,(c=o.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",h=c,(a=document.body).firstChild?(l=h,(t=a.firstChild).parentNode.insertBefore(l,t)):a.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(a,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),a()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(t=a,o=c.document,s=!1,(i=function(){try{o.documentElement.doScroll("left")}catch(c){return void setTimeout(i,50)}v()})(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,v())})}(window);
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,177 @@
{
  "id": "",
  "name": "",
  "font_family": "iconfont",
  "css_prefix_text": "icon-",
  "description": "",
  "glyphs": [
    {
      "icon_id": "392104",
      "name": "签收",
      "font_class": "92",
      "unicode": "e676",
      "unicode_decimal": 58998
    },
    {
      "icon_id": "563700",
      "name": "计划",
      "font_class": "jihua",
      "unicode": "e639",
      "unicode_decimal": 58937
    },
    {
      "icon_id": "765287",
      "name": "完成",
      "font_class": "shouye",
      "unicode": "e614",
      "unicode_decimal": 58900
    },
    {
      "icon_id": "982339",
      "name": "冻结2",
      "font_class": "dongjie2",
      "unicode": "e656",
      "unicode_decimal": 58966
    },
    {
      "icon_id": "1463998",
      "name": "执行中",
      "font_class": "zhihangzhong",
      "unicode": "e841",
      "unicode_decimal": 59457
    },
    {
      "icon_id": "1998089",
      "name": "fq_加工",
      "font_class": "fq_jiagong",
      "unicode": "e62b",
      "unicode_decimal": 58923
    },
    {
      "icon_id": "2198999",
      "name": "流程管理",
      "font_class": "manage-process",
      "unicode": "e746",
      "unicode_decimal": 59206
    },
    {
      "icon_id": "3168936",
      "name": "加工进度",
      "font_class": "web-icon-",
      "unicode": "e70c",
      "unicode_decimal": 59148
    },
    {
      "icon_id": "3172484",
      "name": "监控",
      "font_class": "jiankong",
      "unicode": "e69e",
      "unicode_decimal": 59038
    },
    {
      "icon_id": "3423041",
      "name": "终止",
      "font_class": "web-icon-1",
      "unicode": "e71a",
      "unicode_decimal": 59162
    },
    {
      "icon_id": "3978476",
      "name": "任务管理",
      "font_class": "renwuguanli",
      "unicode": "e699",
      "unicode_decimal": 59033
    },
    {
      "icon_id": "5121503",
      "name": "权限",
      "font_class": "quanxian",
      "unicode": "e642",
      "unicode_decimal": 58946
    },
    {
      "icon_id": "5886126",
      "name": "消息中心",
      "font_class": "xiaoxizhongxin",
      "unicode": "e678",
      "unicode_decimal": 59000
    },
    {
      "icon_id": "6241677",
      "name": "文件管理",
      "font_class": "wenjianguanli",
      "unicode": "e62c",
      "unicode_decimal": 58924
    },
    {
      "icon_id": "6517455",
      "name": "文件-计划",
      "font_class": "wj-jh",
      "unicode": "e70e",
      "unicode_decimal": 59150
    },
    {
      "icon_id": "7318485",
      "name": "定额管理",
      "font_class": "eduguanli",
      "unicode": "e609",
      "unicode_decimal": 58889
    },
    {
      "icon_id": "7549842",
      "name": "平台",
      "font_class": "RectangleCopy",
      "unicode": "e6ad",
      "unicode_decimal": 59053
    },
    {
      "icon_id": "8554289",
      "name": "生产工艺",
      "font_class": "tubiao_shengchangongyi",
      "unicode": "e63a",
      "unicode_decimal": 58938
    },
    {
      "icon_id": "8791338",
      "name": "手动",
      "font_class": "shoudong",
      "unicode": "e729",
      "unicode_decimal": 59177
    },
    {
      "icon_id": "12732492",
      "name": "组织",
      "font_class": "zuzhi",
      "unicode": "e616",
      "unicode_decimal": 58902
    },
    {
      "icon_id": "14303377",
      "name": "基础数据",
      "font_class": "jichushuju",
      "unicode": "e74e",
      "unicode_decimal": 59214
    },
    {
      "icon_id": "14845076",
      "name": "质量",
      "font_class": "ziyuan145",
      "unicode": "e6e9",
      "unicode_decimal": 59113
    },
    {
      "icon_id": "15571383",
      "name": "配置中心",
      "font_class": "peizhizhongxin",
      "unicode": "e610",
      "unicode_decimal": 58896
    },
    {
      "icon_id": "15950995",
      "name": "派工分配设备",
      "font_class": "paigongfenpeishebei",
      "unicode": "e635",
      "unicode_decimal": 58933
    }
  ]
}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
  <font-face
    font-family="iconfont"
    font-weight="500"
    font-stretch="normal"
    units-per-em="1024"
    ascent="896"
    descent="-128"
  />
    <missing-glyph />
    <glyph glyph-name="92" unicode="&#58998;" d="M532.252444 725.333333l-17.521778 0c-9.363911 0-16.952889 7.588978-16.952889 16.952889l0 0.568889c0 21.742933-17.624178 39.367111-39.367111 39.367111l-0.910222 0c-21.742933 0-39.367111-17.624178-39.367111-39.367111l0-0.568889c0-9.363911-7.588978-16.952889-16.952889-16.952889l-17.521778 0c-18.659556 0-33.792-15.132444-33.792-33.792l0-0.682667c0-18.659556 15.132444-33.792 33.792-33.792l148.593778 0c18.659556 0 33.792 15.132444 33.792 33.792l0 0.682667C566.044444 710.200889 550.912 725.333333 532.252444 725.333333zM457.955556 725.333333c-9.4208 0-17.066667 7.645867-17.066667 17.066667s7.645867 17.066667 17.066667 17.066667 17.066667-7.645867 17.066667-17.066667S467.376356 725.333333 457.955556 725.333333zM533.936356 65.422222 247.466667 65.422222c-25.133511 0-45.511111 20.3776-45.511111 45.511111L201.955556 657.066667c0 25.133511 20.3776 45.511111 34.133333 45.511111l92.205511 0c-0.773689-3.777422-1.183289-7.691378-1.183289-11.719111 0-31.175111 25.361067-56.547556 56.547556-56.547556l148.593778 0c31.186489 0 56.547556 25.361067 56.547556 57.230222 0 3.777422-0.4096 7.463822-1.115022 11.036444l69.381689 0c36.511289 0 56.888889-20.3776 56.888889-45.511111l0-341.9136C710.178133 315.392 706.423467 315.733333 702.577778 315.733333c-15.735467 0-30.936178-2.218667-45.511111-5.996089L657.066667 577.422222l-398.222222 0 0-455.111111 262.269156 0C522.353778 102.308978 526.722844 83.171556 533.936356 65.422222zM702.577778 281.6c-81.692444 0-147.911111-66.218667-147.911111-147.911111s66.218667-147.911111 147.911111-147.911111 147.911111 66.218667 147.911111 147.911111S784.270222 281.6 702.577778 281.6zM799.232 164.078933l-91.022222-102.4C703.726933 56.638578 697.480533 54.044444 691.188622 54.044444c-4.994844 0-10.012444 1.6384-14.210844 4.983467l-56.888889 45.511111c-9.807644 7.839289-11.400533 22.163911-3.549867 31.982933 7.839289 9.819022 22.175289 11.411911 31.982933 3.549867l40.015644-32.005689 76.674844 86.254933c8.339911 9.386667 22.7328 10.24 32.119467 1.888711S807.583289 173.476978 799.232 164.078933z"  horiz-adv-x="1024" />
    <glyph glyph-name="jihua" unicode="&#58937;" d="M674.508 297.662h-387.428c-14.137 0-25.639-11.5-25.639-25.637 0-14.138 11.502-25.641 25.639-25.641h387.428c14.138 0 25.641 11.502 25.641 25.641 0 14.137-11.502 25.637-25.641 25.637zM794.746 511.417c-14.138 0-25.641-11.502-25.641-25.64v-494.3c0-0.131 0-0.28-0.001-0.434-0.899-0.279-2.666-0.645-5.764-0.645l-563.292 0c-4.312 0-7.564 2.972-7.564 6.913l-0 706.836c0 4.493 0.974 8.289 1.811 9.822h373.338c14.137 0 25.64 11.502 25.64 25.64 0 14.137-11.502 25.639-25.64 25.639h-374.070c-30.337 0-52.357-25.696-52.357-61.1v-706.836c0-32.087 26.396-58.191 58.841-58.191h563.293c34.119 0 57.042 21.041 57.042 52.356l0 494.298c0.001 14.138-11.499 25.641-25.636 25.641zM674.508 150.705h-387.428c-14.137 0-25.639-11.5-25.639-25.637 0-14.138 11.502-25.641 25.639-25.641h387.428c14.138 0 25.641 11.502 25.641 25.641 0 14.137-11.502 25.637-25.641 25.637zM879.596 738.893c-3.773 14.409-12.871 28.25-24.965 37.976l-43.827 35.241c-12.88 10.353-29.277 16.29-44.987 16.29-16.876 0-31.595-6.748-41.44-18.996l-19.625-24.381c-6.38-7.968-7.988-17.577-5.223-26.916l-116.729-145.154-22.813-85.304c-9.749-30.86 4.449-48.076 13.806-55.609 6.783-5.45 14.469-8.729 22.851-9.754 0.984-0.247 2.125-0.488 3.44-0.632 1.004-0.111 2.054-0.168 3.118-0.168h0.014c4.589 0 10.048 0.997 17.18 3.135l2.878 1.065 83.403 41.897 119.874 149.079c0.44-0.017 0.88-0.033 1.32-0.033 9.219 0 17.412 3.863 23.078 10.892l19.563 24.342c10.411 12.938 13.637 29.64 9.082 47.028zM674.47 547.435l-56.738-28.538c-2.958-0.579-5.735-1.684-8.278-3.296-0.313-0.199-0.615-0.386-0.906-0.563 0.124 0.318 0.254 0.64 0.393 0.971 1 2.438 1.588 5.022 1.754 7.702l17.733 66.079 105.732 131.489 48.648-39.114-108.338-134.731zM831.386 723.081l-7.68-9.551-68.14 54.78 7.687 9.564c0.292 0.132 1.144 0.384 2.604 0.384 4.284 0 9.736-2.071 13.57-5.156l43.832-35.246c3.494-2.806 6.421-7.019 7.642-10.993 0.596-1.943 0.59-3.308 0.484-3.781zM487.475 604.933h-200.394c-14.137 0-25.639-11.502-25.639-25.64 0-14.137 11.502-25.638 25.639-25.638h200.394c14.138 0 25.64 11.501 25.64 25.638 0 14.138-11.503 25.64-25.64 25.64zM674.508 457.977h-387.428c-14.137 0-25.639-11.501-25.639-25.639s11.502-25.639 25.639-25.639h387.428c14.138 0 25.641 11.502 25.641 25.639s-11.502 25.639-25.641 25.639z"  horiz-adv-x="1024" />
    <glyph glyph-name="shouye" unicode="&#58900;" d="M387.018497 685.373908c17.179264 0 31.099299 13.925151 31.099299 31.099299l0 10.366092 186.597839 0 0-10.366092c0-17.175171 13.920034-31.099299 31.099299-31.099299s31.099299 13.925151 31.099299 31.099299L666.914232 799.406035c0 17.175171-13.920034 31.099299-31.099299 31.099299s-31.099299-13.925151-31.099299-31.099299l0-10.366092L418.117796 789.039943l0 10.366092c0 17.175171-13.920034 31.099299-31.099299 31.099299s-31.099299-13.925151-31.099299-31.099299l0-82.932828C355.919199 699.299059 369.83821 685.373908 387.018497 685.373908zM400.416646 581.055005c-17.179264 0-31.099299-13.925151-31.099299-31.099299l0-30.340005c0-17.175171 13.920034-31.099299 31.099299-31.099299s31.099299 13.925151 31.099299 31.099299L431.515944 549.955706C431.516967 567.130877 417.596933 581.055005 400.416646 581.055005zM622.416785 581.055005c-17.179264 0-31.099299-13.925151-31.099299-31.099299l0-30.340005c0-17.175171 13.920034-31.099299 31.099299-31.099299s31.099299 13.925151 31.099299 31.099299L653.516084 549.955706C653.517107 567.130877 639.597073 581.055005 622.416785 581.055005zM511.103584 349.619982c43.773969 0 74.783217 30.18344 86.212524 48.016597 9.182127 14.33038 5.021364 33.210379-9.202593 42.569538-14.213723 9.379625-33.428344 5.385661-42.974767-8.706289-0.132006-0.197498-13.555737-19.680225-34.035164-19.680225-19.903306 0-32.29452 18.039865-33.124422 19.290345-9.151427 14.349823-28.173666 18.72855-42.650379 9.718339-14.588253-9.06547-19.072381-28.245298-10.001795-42.832528C436.493306 380.031619 467.116767 349.619982 511.103584 349.619982zM463.633433-2.665457 266.173199-2.665457c-41.648562 0-75.532277 34.713616-75.532277 77.374228l0 574.913888c0 42.665729 33.883715 77.374228 75.532277 77.374228 17.179264 0 31.099299 13.925151 31.099299 31.099299s-13.920034 31.099299-31.099299 31.099299c-75.946716 0-137.730874-62.61406-137.730874-139.573849l0-574.913888c0-76.959789 61.784158-139.573849 137.730874-139.573849L463.633433-64.866101c17.179264 0 31.099299 13.920034 31.099299 31.099299S480.81372-2.665457 463.633433-2.665457zM756.661256 789.196509c-17.179264 0-31.099299-13.925151-31.099299-31.099299s13.920034-31.099299 31.099299-31.099299c41.648562 0 75.532277-34.7085 75.532277-77.374228L832.193533 344.598618c0-17.175171 13.920034-31.099299 31.099299-31.099299s31.099299 13.925151 31.099299 31.099299L894.39213 649.62266C894.39213 726.582449 832.607972 789.196509 756.661256 789.196509zM840.980663 245.23047 613.392248 10.874931l-110.711498 114.006544c-11.975752 12.325723-31.655977 12.614296-43.976584 0.647753-12.320607-11.966543-12.614296-31.655977-0.647753-43.976584l133.023666-136.981814c0.10847-0.110517 0.23843-0.183172 0.347924-0.291642 0.11154-0.11154 0.186242-0.245593 0.299829-0.356111 0.771573-0.74906 1.644453-1.311879 2.470261-1.963725 0.704035-0.556679 1.363044-1.183965 2.101871-1.671059 1.031493-0.680499 2.131547-1.187035 3.219321-1.731434 0.730641-0.366344 1.426489-0.816598 2.178619-1.121544 1.25048-0.50756 2.548032-0.823761 3.841491-1.162476 0.642636-0.167822 1.26276-0.429789 1.912559-0.555655 1.961678-0.38067 3.949962-0.581238 5.939269-0.581238s3.977591 0.200568 5.939269 0.581238c0.650823 0.12689 1.269923 0.387833 1.912559 0.555655 1.293459 0.338714 2.591011 0.654916 3.841491 1.162476 0.75213 0.304945 1.447978 0.7552 2.178619 1.121544 1.087774 0.544399 2.187829 1.050935 3.219321 1.731434 0.738827 0.487094 1.397836 1.11438 2.101871 1.671059 0.825808 0.651846 1.698688 1.215688 2.470261 1.963725 0.113587 0.110517 0.188288 0.24457 0.299829 0.356111 0.109494 0.10847 0.239454 0.181125 0.347924 0.291642l249.900583 257.331833c11.966543 12.320607 11.672854 32.011064-0.647753 43.976584C872.637664 257.839649 852.956416 257.561309 840.980663 245.23047z"  horiz-adv-x="1024" />
    <glyph glyph-name="dongjie2" unicode="&#58966;" d="M364.851804 103.978415c-116.75667 16.679524-212.024383 57.201559-261.142001 109.798341L103.709803 150.026182l0-36.224243c0-77.155591 156.153093-163.111422 380.149895-163.111422 1.534926 0 2.967523 0 4.502448 0C432.2862-13.187569 388.489657 40.534826 364.851804 103.978415zM655.873688 473.383831C511.693015 473.383831 394.322374 356.115519 394.322374 211.934846S511.693015-49.616468 655.873688-49.616468s261.551314 117.268312 261.551314 261.448986C917.322674 356.115519 800.054362 473.48616 655.873688 473.383831zM494.706505 211.934846c0 88.821025 72.243829 161.064855 161.064855 161.064855 25.684421 0 49.526931-6.549016 71.015889-17.293495L512.102328 140.816628C501.35785 162.305586 494.706505 186.250425 494.706505 211.934846zM655.77136 50.767663c-26.503048 0-51.164185 7.060658-73.267113 18.521435l215.912861 215.912861c11.460777-22.102928 18.521435-46.764065 18.521435-73.267113C816.938543 123.011492 744.694714 50.869991 655.77136 50.767663zM345.511742 211.934846c0 25.786749 3.172179 50.8572 9.107225 74.802039C242.569401 304.235035 151.394824 343.938443 103.709803 394.897971l0-39.191766 0-60.783052c0-60.987709 97.825922-127.603478 249.578895-152.673928C348.172279 164.659139 345.511742 187.990007 345.511742 211.934846zM857.255921 447.801739c4.502448 9.516538 6.753672 19.033077 6.753672 28.344959l0 99.974818c-25.275107-27.117018-62.829619-50.959528-109.286699-70.094934C792.789048 493.337863 827.478365 473.383831 857.255921 447.801739zM467.384831 458.239233c-162.292795 3.069851-300.74308 50.652543-363.572699 117.882282l0-99.974818c0-62.624963 103.044669-131.082642 261.755971-154.618167C386.238433 376.069551 421.848706 423.345258 467.384831 458.239233zM530.112122 495.589088c38.475467 17.088838 81.044069 26.707705 125.761567 26.707705 10.335165 0 20.568002-0.511642 30.698511-1.534926 110.002998 31.41481 177.539722 85.955831 177.539722 136.710703 0 77.155591-156.153093 163.111422-380.149895 163.111422s-380.149895-85.955831-380.149895-163.111422c0-77.155591 156.153093-163.111422 380.149895-163.111422C499.618267 494.361147 515.069851 494.770461 530.112122 495.589088z"  horiz-adv-x="1024" />
    <glyph glyph-name="zhihangzhong" unicode="&#59457;" d="M511.071861 833.151603c-246.007927 0-447.287139-201.279213-447.287139-447.287139s201.279213-447.287139 447.287139-447.287139 447.287139 201.279213 447.28714 447.287139-201.279213 447.287139-447.28714 447.287139z m0-805.116851c-196.806341 0-357.829711 161.02337-357.829711 357.829712s161.02337 357.829711 357.829711 357.829711 357.829711-161.02337 357.829712-357.829711-161.02337-357.829711-357.829712-357.829712zM332.157006 439.180763c31.989575 0 53.3163-21.326724 53.316299-53.316299 0-31.989575-21.326724-53.3163-53.316299-53.3163s-53.3163 21.326724-53.3163 53.3163c0 31.989575 21.326724 53.3163 53.3163 53.316299zM508.814448 439.180763c31.989575 0 53.3163-21.326724 53.316299-53.316299 0-31.989575-21.326724-53.3163-53.316299-53.3163s-53.3163 21.326724-53.3163 53.3163c0 31.989575 21.326724 53.3163 53.3163 53.316299zM683.022095 439.180763c31.989575 0 53.3163-21.326724 53.3163-53.316299 0-31.989575-21.326724-53.3163-53.3163-53.3163s-53.3163 21.326724-53.3163 53.3163c0 31.989575 21.326724 53.3163 53.3163 53.316299z"  horiz-adv-x="1024" />
    <glyph glyph-name="fq_jiagong" unicode="&#58923;" d="M914.773333 122.88l-221.866666 221.866667 221.866666 221.866666L723.626667 757.76l-221.866667-221.866667-221.866667 221.866667-158.72-158.72 221.866667-221.866667-158.72-158.72-32.426667-221.866666 221.866667 32.426666 158.72 158.72 221.866667-221.866666 160.426666 157.013333zM723.626667 694.613333l126.293333-126.293333-63.146667-63.146667-126.293333 126.293334 63.146667 63.146666z m-413.013334-221.866666l63.146667 63.146666-32.426667 32.426667-63.146666-63.146667-32.426667 32.426667 63.146667 63.146667-32.426667 32.426666-63.146667-63.146666-32.426666 32.426666 95.573333 95.573334 191.146667-191.146667-95.573334-95.573333-61.44 61.44z m-126.293333-443.733334l23.893333 167.253334 8.533334-8.533334 126.293333-126.293333 8.533333-8.533333-167.253333-23.893334z m189.44 63.146667l-126.293333 126.293333 126.293333 126.293334 158.72 158.72 95.573333 95.573333 126.293334-126.293333-95.573334-95.573334-158.72-158.72-126.293333-126.293333z m382.293333-63.146667L723.626667 59.733333l63.146666 63.146667-32.426666 32.426667-63.146667-63.146667-32.426667 32.426667 63.146667 63.146666-32.426667 32.426667-63.146666-63.146667-63.146667 63.146667 95.573333 95.573333 191.146667-191.146666-93.866667-95.573334z"  horiz-adv-x="1024" />
    <glyph glyph-name="manage-process" unicode="&#59206;" d="M796.6 260.5v153.3h-262.2v93.7h200v320h-450v-320h200v-93.7h-257v-153.3h-155v-320h360v320h-155v103.3h469.1v-103.3h-155v-320h360v320h-154.9zM334.4 777.5h350v-220h-350v220zM382.4-9.5h-260v220h260v-220zM901.6-9.5h-260v220h260v-220z"  horiz-adv-x="1024" />
    <glyph glyph-name="web-icon-" unicode="&#59148;" d="M742.592 400.32c-48.32-48.32-123.2-57.28-180.512-26.56l-253.792-251.2c-17.6-17.6-45.44-17.6-61.76 0-17.6 17.6-17.6 45.44 0 61.76l252.512 252.832c-30.72 58.88-23.36 132.16 26.56 180.832 29.44 29.44 67.52 44.16 105.6 44.16-40.96-42.56-39.68-110.08 1.6-152.64a108.672 108.672 0 0 1 152.64-1.6c-0.288-40.032-13.408-78.112-42.848-107.584z m70.4 191.072c-10.24-11.84-29.44-27.84-54.4-51.52-27.84-27.84-65.92-27.84-92.48 0-27.84 27.84-27.84 66.24 0 92.48 23.36 24.96 51.2 55.68 49.92 55.68a194.944 194.944 0 0 1-221.472-39.36c-54.4-54.4-70.4-133.76-47.04-202.912l-231.712-230.4a88.288 88.288 0 0 1 0-123.52c33.6-33.92 89.6-33.92 124.8 0l231.712 232.032c68.8-23.36 148.16-7.36 202.592 47.04 58.56 58.88 70.4 147.2 38.08 220.48zM759.328 77.632h-5.472c-0.672 36.16-19.2 58.784-40.448 77.504-6.176 5.824-4.128 12.928 0 16.16 21.248 19.36 39.776 41.344 40.448 78.144h5.472c4.8 0 8.928 3.872 8.928 8.384 0 4.512-4.128 8.384-8.928 8.384h-134.4c-5.472 0.64-9.6-3.232-9.6-7.744s4.128-8.384 8.928-8.384h5.472c0.672-36.8 18.528-58.784 40.448-78.144a10.88 10.88 0 0 0 0-16.16c-21.248-18.72-39.776-41.344-40.448-77.504h-4.8c-4.8 0-8.928-3.872-8.928-8.384 0-4.512 4.128-8.384 8.928-8.384h135.072c4.8 0 8.928 3.872 8.928 8.384 0 3.84-4.096 7.744-9.6 7.744z m-14.368 171.776c0-11.616-2.752-21.952-6.176-31.008-15.776-4.512-78.176-4.512-93.952 0a73.888 73.888 0 0 0-6.176 31.008h106.304z m-53.504-158.24c-8.928 0-29.472-13.568-43.872-13.568h-8.928c0.672 30.368 15.072 49.728 33.6 66.528 4.8 4.512 12.352 14.208 19.872 14.208 7.552 0 15.072-10.336 19.872-14.848 18.528-16.8 32.928-36.16 33.6-66.528h-10.24c-14.432 0.672-34.304 14.208-43.904 14.208z m0 0"  horiz-adv-x="1024" />
    <glyph glyph-name="jiankong" unicode="&#59038;" d="M64 832V256H896V832H64zM0 896h960v-704H0V896zM192 0H768v-64H192zM448 256H512v-256h-64zM479.232 334.395733l309.9904 348.330667-47.803733 42.5472-259.566934-291.669333L303.957333 655.991467 163.208533 457.3952l52.224-37.009067 91.6224 129.28z"  horiz-adv-x="1024" />
    <glyph glyph-name="web-icon-1" unicode="&#59162;" d="M684.768 0.928a168.032 168.032 0 1 0 0 336.128 168.032 168.032 0 1 0 0-336.128z m-126.048 168.064c0-27.136 8.736-52.064 23.328-72.64l175.36 175.36a125.248 125.248 0 0 1-72.64 23.328 126.016 126.016 0 0 1-126.048-126.048z m228.768 72.64l-175.36-175.36a125.248 125.248 0 0 1 72.64-23.328 126.08 126.08 0 0 1 126.048 126.048 125.024 125.024 0 0 1-23.328 72.64z m0 0M494.912 472.704h213.088v-71.872a21.792 21.792 0 1 1 43.488 0v95.264a21.728 21.728 0 0 1-6.624 15.712L497.28 760.352a21.536 21.536 0 0 1-16.032 7.104H213.984A43.52 43.52 0 0 1 170.528 723.84v-620.608a43.52 43.52 0 0 1 43.456-43.648h225.024v0.288a21.76 21.76 0 0 1 0 43.072v0.288H227.008a13.12 13.12 0 0 0-13.056 13.152V710.752c0 7.232 5.856 13.088 13.024 13.088h245.152v-229.408a21.76 21.76 0 0 1 22.784-21.76z m20.672 207.488l163.264-163.872h-163.264V680.256v-0.064z m0 0"  horiz-adv-x="1024" />
    <glyph glyph-name="renwuguanli" unicode="&#59033;" d="M768 736H640a128 128 0 0 1-247.93 0H256a64 64 0 0 1-64-64v-672a64 64 0 0 1 64-64h512a64 64 0 0 1 64 64V672a64 64 0 0 1-64 64zM516 800a32 32 0 1 0-32-32 32 32 0 0 0 32 32z m252-800H256V672h512zM477.73 224l45.25 45.25L704 450.27l-45.25 45.26-181.02-181.02-90.51 90.51-45.26-45.26 90.51-90.51L477.73 224z"  horiz-adv-x="1025" />
    <glyph glyph-name="quanxian" unicode="&#58946;" d="M645.1 364.1C753.7 437.7 782 585.4 708.4 694S487.2 830.8 378.6 757.2 241.7 536 315.3 427.4c16.9-24.9 38.4-46.4 63.3-63.3C214.8 316.4 96.7 183.5 96.7 27v-59.2H334V27H156c0 160.9 153.9 292 345.7 296.4h20C577 322.2 631.5 310 682 287.3l-177.3-177-83.6 83.8-41.8-42 125.9-125.9 23.1 23.1L736 256.9c79.7-49.8 129.1-136.3 131.6-230.2H689.8v-58.9h237.5V27c0 156.5-118.1 289.4-282.2 337.1z m-133.1 19c-98.2 0-177.8 79.6-177.8 177.8 0 98.2 79.6 177.8 177.8 177.8 98.2 0 177.8-79.6 177.8-177.8S610.2 383.1 512 383.1z"  horiz-adv-x="1024" />
    <glyph glyph-name="xiaoxizhongxin" unicode="&#59000;" d="M512 383.8l0.1 0.4-0.1-0.4zM512-41.4c-34.3 0-67.1 10.6-94.8 30.7-25.9 18.8-45.5 44.4-57 74.2H190.4c-21.9 0-41.1 11.5-51.4 30.8-10.3 19.3-9.3 41.7 2.9 59.9l49.6 74.3v208c0 68.9 21.6 134.5 62.3 189.8 19.6 26.6 43.1 49.9 69.9 69.4 26.3 19.1 55.2 34.1 85.9 44.4 8 19.8 21.4 36.7 38.8 49.1 18.7 13.3 40.7 20.3 63.6 20.3s44.9-7 63.6-20.3c17.4-12.4 30.8-29.3 38.8-49.1 30.7-10.4 59.6-25.3 85.9-44.4 26.7-19.4 50.3-42.8 69.9-69.4 40.8-55.3 62.3-121 62.3-189.9v-208l49.6-74.3c12.1-18.2 13.2-40.6 2.9-59.9-10.3-19.3-29.5-30.8-51.4-30.8H663.8c-11.4-29.8-31.1-55.4-57-74.2-27.7-20-60.5-30.6-94.8-30.6z m-106.6 169l13.8-38.8c6.8-19.2 19.1-35.7 35.6-47.6 16.7-12.1 36.4-18.5 57.2-18.5 20.7 0 40.5 6.4 57.2 18.6 16.5 11.9 28.8 28.4 35.6 47.6l13.7 38.7h204.1l-44.5 66.6-9.8 14.7V436.4c0 55.1-17.2 107.6-49.8 151.7-15.6 21.2-34.4 39.9-56 55.6-21.4 15.8-45.3 28-70.7 36.3l-26.7 8.7-9.7 26.3c-3.3 8.8-9.2 16.4-16.9 21.9-7.8 5.5-17 8.4-26.5 8.4s-18.7-2.9-26.5-8.4c-7.7-5.4-13.5-13-16.9-21.9l-9.8-26.2-26.6-8.8C406.9 671.7 383 659.5 361.4 643.7c-21.3-15.5-40.2-34.2-55.9-55.6-32.6-44.1-49.8-96.6-49.8-151.7V209l-9.8-14.7-44.5-66.7h204z"  horiz-adv-x="1024" />
    <glyph glyph-name="wenjianguanli" unicode="&#58924;" d="M98 545c-17.7 0-32 14.3-32 32V703.2c0 52.9 43.1 96 96 96h221c52.9 0 96-43.1 96-96V641c0-17.7-14.3-32-32-32s-32 14.3-32 32v62.2c0 17.6-14.4 32-32 32H162c-17.6 0-32-14.4-32-32V577c0-17.6-14.3-32-32-32zM864-30.6H383c-17.7 0-32 14.3-32 32s14.3 32 32 32h481c17.6 0 32 14.4 32 32V577c0 17.6-14.4 32-32 32H447c-17.7 0-32 14.3-32 32s14.3 32 32 32h417c52.9 0 96-43.1 96-96v-511.7c0-52.9-43.1-95.9-96-95.9zM383-30.6H162c-52.9 0-96 43.1-96 96V577c0 17.7 14.3 32 32 32s32-14.3 32-32v-511.7c0-17.6 14.4-32 32-32h221c17.7 0 32-14.3 32-32 0-17.6-14.3-31.9-32-31.9zM768.1 384.8H256c-17.7 0-32 14.3-32 32s14.3 32 32 32h512.1c17.7 0 32-14.3 32-32s-14.3-32-32-32zM768.1 193H256c-17.7 0-32 14.3-32 32s14.3 32 32 32h512.1c17.7 0 32-14.3 32-32s-14.3-32-32-32z"  horiz-adv-x="1024" />
    <glyph glyph-name="wj-jh" unicode="&#59150;" d="M324.1 608v-128.3h-27.5v98.8c-3.4-2.8-8-5.3-13.9-7.6-5.9-2.2-11.2-3.6-16.1-4.2v22.4c15.4 4.3 28.8 10.6 40.1 18.8h17.4zM283.8 310.5H337v-21.7h-83.4V298c0 6.5 1.2 12.5 3.6 17.9 2.4 5.4 5.7 10.4 9.9 15.1 4.2 4.7 10.7 10.1 19.6 16.4 8.1 6 13.8 11.4 17 16 3.2 4.7 4.9 9.6 4.9 14.8 0 11.3-6.2 16.9-18.5 16.9-10.8 0-21.1-4.3-30.9-12.9v23.3c11 7.1 23.3 10.6 36.9 10.6 12.5 0 22.4-3.2 29.7-9.6s10.9-15.2 10.9-26.4c0-6.2-1.1-11.9-3.2-16.9-2.1-5-5.2-9.8-9.1-14.2-4-4.4-10.4-9.7-19.2-15.9-8.5-6-14.2-10.7-17.1-14-2.8-3.3-4.3-6.2-4.3-8.6zM256.8 125.89999999999998c8.2-6.1 17.7-9.2 28.6-9.2 6.9 0 12.4 1.5 16.4 4.6 4.1 3.1 6.1 7.4 6.1 13 0 5.8-2.4 10.2-7.2 13.3-4.8 3.1-11.6 4.6-20.2 4.6h-10.9v19.6h10c16.4 0 24.6 5.5 24.6 16.6 0 10.4-6.3 15.6-18.9 15.6-8.2 0-16.2-2.7-23.9-8v21c8.4 4.4 18.3 6.5 29.7 6.5 11.6 0 21-2.7 28.2-8 7.2-5.3 10.8-12.7 10.8-22.2 0-16-8.1-26-24.3-30.1v-0.4c8.5-0.9 15.3-4.1 20.4-9.4 5.1-5.3 7.7-11.7 7.7-19.3 0-11.6-4.2-20.7-12.7-27.2s-19.8-9.8-34-9.8c-12.6 0-22.7 2.1-30.4 6.2v22.6zM736.3 193h-288c-17.7 0-32-14.3-32-32s14.3-32 32-32h288c17.7 0 32 14.3 32 32s-14.3 32-32 32zM448.3 385c-17.7 0-32-14.3-32-32s14.3-32 32-32h288c17.7 0 32 14.3 32 32s-14.3 32-32 32h-288zM448.3 577c-17.7 0-32-14.3-32-32s14.3-32 32-32h288c17.7 0 32 14.3 32 32s-14.3 32-32 32h-288zM352 832h64v-160h-64zM800-64H224c-53 0-96 43-96 96V672c0 53 43 96 96 96h96v-64h-96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h576c17.7 0 32 14.3 32 32V672c0 17.7-14.3 32-32 32h-96v64h96c53 0 96-43 96-96v-640c0-53-43-96-96-96zM448 768h128v-64H448zM608 832h64v-160h-64z"  horiz-adv-x="1024" />
    <glyph glyph-name="eduguanli" unicode="&#58889;" d="M482.41777778-1.7066666700000042H129.82044445c-56.43377778 0-102.4 45.96622222-102.4 102.4V667.648c0 56.43377778 45.96622222 102.4 102.4 102.4h734.09422222c56.43377778 0 102.4-45.96622222 102.4-102.4v-200.93155555c0-18.88711111-15.24622222-34.13333333-34.13333334-34.13333334s-34.13333333 15.24622222-34.13333333 34.13333334V667.648c0 18.77333333-15.36 34.13333333-34.13333333 34.13333333H129.82044445c-18.77333333 0-34.13333333-15.36-34.13333334-34.13333333V100.69333332999997c0-18.77333333 15.36-34.13333333 34.13333334-34.13333333H482.41777778c18.88711111 0 34.13333333-15.24622222 34.13333333-34.13333333s-15.24622222-34.13333333-34.13333333-34.13333334z m155.30666667 515.98222222H192.512c-18.88711111 0-34.13333333 15.24622222-34.13333333 34.13333334s15.24622222 34.13333333 34.13333333 34.13333333h445.21244445c18.88711111 0 34.13333333-15.24622222 34.13333333-34.13333333s-15.24622222-34.13333333-34.13333333-34.13333334zM474.90844445 361.24444444999995h-285.58222223c-18.88711111 0-34.13333333 15.24622222-34.13333333 34.13333333s15.24622222 34.13333333 34.13333333 34.13333333h285.58222223c18.88711111 0 34.13333333-15.24622222 34.13333333-34.13333333s-15.24622222-34.13333333-34.13333333-34.13333333z m279.552-290.816v39.13955555h-46.6488889c-9.216 0.79644445-14.336 5.46133333-15.13244444 13.88088889 0.79644445 8.41955555 5.91644445 13.08444445 15.13244444 13.88088889h46.6488889V158.72000000000003h-46.6488889c-9.216 0.79644445-14.336 5.46133333-15.13244444 13.88088889 0.79644445 8.41955555 5.91644445 13.08444445 15.13244444 13.88088889h26.51022223l-40.39111111 56.77511111c-3.41333333 4.20977778-5.00622222 8.87466667-5.00622222 13.88088889 1.70666667 14.336 9.67111111 22.30044445 24.0071111 24.00711111 8.41955555-0.79644445 14.67733333-4.20977778 18.88711112-10.12622222l46.64888888-66.90133334 46.6488889 66.90133334c4.20977778 5.91644445 10.46755555 9.216 18.8871111 10.12622222 14.336-1.70666667 22.30044445-9.67111111 24.00711112-24.00711111 0-5.00622222-1.70666667-9.67111111-5.00622222-13.88088889L822.61333333 186.48177778000002h26.51022222c9.216-0.79644445 14.336-5.46133333 15.13244445-13.88088889-0.79644445-8.41955555-5.91644445-13.08444445-15.13244445-13.88088889h-46.64888888v-21.39022222h46.64888888c9.216-0.79644445 14.336-5.46133333 15.13244445-13.88088889-0.79644445-8.41955555-5.91644445-13.08444445-15.13244445-13.88088889h-46.64888888v-39.13955555c-0.79644445-14.336-8.87466667-21.39022222-24.00711112-21.39022223s-23.21066667 7.05422222-24.0071111 21.39022223z m23.89333333-122.53866667c-123.33511111 0-223.80088889 100.352-223.80088889 223.80088889S655.01866667 395.37777778 778.35377778 395.37777778c123.33511111 0 223.80088889-100.352 223.80088889-223.80088889s-100.352-223.68711111-223.80088889-223.68711111z m0 379.22133333c-85.78844445 0-155.53422222-69.74577778-155.53422223-155.53422222s69.74577778-155.53422222 155.53422223-155.53422222c85.78844445 0 155.53422222 69.74577778 155.53422222 155.53422222S864.14222222 327.11111111 778.35377778 327.11111111z"  horiz-adv-x="1024" />
    <glyph glyph-name="RectangleCopy" unicode="&#59053;" d="M832 492.501333a21.333333 21.333333 0 0 1 21.333333 21.333334V619.264A106.24 106.24 0 0 1 747.136 725.333333H276.864A106.24 106.24 0 0 1 170.666667 619.264v-342.528A106.24 106.24 0 0 1 276.864 170.666667h470.272A106.24 106.24 0 0 1 853.333333 276.736V384a21.333333 21.333333 0 0 1-42.666666 0v-107.264A63.573333 63.573333 0 0 0 747.136 213.333333H276.864A63.573333 63.573333 0 0 0 213.333333 276.736V619.264A63.573333 63.573333 0 0 0 276.864 682.666667h470.272A63.573333 63.573333 0 0 0 810.666667 619.264v-105.429333a21.333333 21.333333 0 0 1 21.333333-21.333334M792.874667 85.333333H232.874667a21.333333 21.333333 0 0 1 0-42.666666h560a21.333333 21.333333 0 0 1 0 42.666666"  horiz-adv-x="1024" />
    <glyph glyph-name="tubiao_shengchangongyi" unicode="&#58938;" d="M54.139985 554.696771c-5.837322 0-11.625473 2.533821-15.592283 7.418829-6.986322 8.604958-5.674756 21.24396 2.929198 28.231285l260.065403 211.178206c8.601947 6.986322 21.24396 5.676763 28.232289-2.928195 6.986322-8.604958 5.674756-21.244963-2.929198-28.232289L66.779991 559.186402a19.9916 19.9916 0 0 0-12.640006-4.489631zM581.019287 554.696771c-5.837322 0-11.625473 2.533821-15.592284 7.418829-6.986322 8.604958-5.674756 21.24396 2.929198 28.231285L828.422608 801.525091c8.604958 6.986322 21.24396 5.676763 28.232289-2.928195 6.987326-8.604958 5.674756-21.244963-2.929198-28.232289L593.659292 559.186402a19.9916 19.9916 0 0 0-12.640005-4.489631zM575.165909 559.391115a19.989593 19.989593 0 0 0-12.562737 4.428417L305.546243 770.4780020000001c-8.638073 6.945179-10.011856 19.57816-3.066677 28.217237 6.944176 8.638073 19.57816 10.012859 28.216233 3.066676L587.753732 595.102442c8.638073-6.945179 10.011856-19.57816 3.066677-28.217237-3.9638-4.931168-9.783059-7.49409-15.6545-7.49409zM876.558189 806.081955c-1.187133 0-2.388315 0.105367-3.596521 0.323125L674.208721 842.362263c-10.906972 1.972868-18.149185 12.415223-16.176317 23.322195 1.973872 10.907976 12.42024 18.148182 23.322195 16.176317l198.752947-35.957183c10.906972-1.972868 18.149185-12.415223 16.176317-23.322195-1.75511-9.698766-10.206533-16.499442-19.725674-16.499442zM885.844519 583.906463c-10.781535 0-19.692559 8.558797-20.047795 19.414591l-6.495614 198.748934c-0.362261 11.078569 8.324983 20.352857 19.403552 20.715118 11.12172 0.360254 20.352857-8.325986 20.715119-19.403552l6.495614-198.748934c0.362261-11.078569-8.324983-20.352857-19.403553-20.715118-0.223779-0.007024-0.446555-0.011038-0.667323-0.011039zM774.358386 378.785345H57.666262c-11.08459 0-20.069872 8.985282-20.069872 20.069873s8.985282 20.069872 20.069872 20.069872h716.692124c11.08459 0 20.069872-8.985282 20.069873-20.069872s-8.985282-20.069872-20.069873-20.069873zM500.097562 90.23978999999997c-26.461123 0-40.918455 6.557831-52.535901 11.827176-10.152345 4.605032-18.170259 8.242696-35.954172 8.242696s-25.801828-3.637664-35.954173-8.242696c-11.616442-5.269345-26.073774-11.827176-52.536904-11.827176-26.460119 0-40.916448 6.557831-52.533894 11.827176-10.150338 4.605032-18.168252 8.242696-35.951162 8.242696-17.780903 0-25.798817-3.637664-35.949155-8.241693-11.616442-5.270348-26.072771-11.828179-52.533894-11.828179s-40.916448 6.557831-52.533894 11.828179c-10.150338 4.604029-18.168252 8.241693-35.950158 8.241693-11.08459 0-20.069872 8.985282-20.069872 20.069872s8.985282 20.069872 20.069872 20.069872c26.460119 0 40.916448-6.557831 52.533894-11.828179 10.150338-4.605032 18.169255-8.241693 35.950158-8.241693 17.781907 0 25.799821 3.637664 35.950159 8.241693 11.616442 5.269345 26.071767 11.828179 52.53289 11.828179s40.917452-6.557831 52.534898-11.828179c10.150338-4.605032 18.168252-8.241693 35.950158-8.241693 17.784917 0 25.802831 3.637664 35.955176 8.242697 11.616442 5.269345 26.073774 11.827176 52.535901 11.827175s40.918455-6.557831 52.535901-11.827175c10.152345-4.605032 18.170259-8.242696 35.954172-8.242697 11.08459 0 20.069872-8.985282 20.069872-20.069872s-8.985282-20.069872-20.069872-20.069872zM862.060717 252.949254l95.196421-164.887045-95.196421-164.885038H671.664864l-95.196421 164.886041 95.196421 164.885039h190.395853m23.173678 40.140747h-236.744212L530.119081 88.06421599999999l118.371102-205.025786h236.744212l118.371103 205.024782-118.371103 205.025786zM766.859279-17.847510000000057c-58.398311 0-105.909719 47.511408-105.909719 105.911726S708.460968 193.97594200000003 766.859279 193.97594200000003c58.400318 0 105.913733-47.511408 105.913733-105.911726S825.2606-17.847510000000057 766.859279-17.847510000000057z m0 171.683707c-36.266259 0-65.769975-29.504719-65.769975-65.771981s29.503716-65.771982 65.769975-65.771982c36.268266 0 65.773989 29.504719 65.773988 65.771982s-29.505723 65.771982-65.773988 65.771981z"  horiz-adv-x="1024" />
    <glyph glyph-name="shoudong" unicode="&#59177;" d="M821.574863 498.396888h2.870264C877.53991 498.396888 920.578554 455.296958 920.578554 402.130673v-285.902843c0-134.881995-109.20794-244.232938-243.921397-244.232937H477.679401a243.819252 243.819252 0 0 0-197.144259 100.418394l-194.703002 267.583202a94.917905 94.917905 0 0 0 5.760957 118.835072l9.050015 10.199142c33.845626 38.120379 92.144678 41.552439 130.213985 7.665955 0.919302-0.817157 1.818175-1.649636 2.701726-2.502543l37.134683-35.801696a14.336 14.336 0 0 1 20.291033 0.377935 14.376858 14.376858 0 0 1 4.009177 9.969317V677.982484c0 53.166284 43.043751 96.256 96.133426 96.256h2.870264c53.094783 0 96.133426-43.094823 96.133427-96.256v-87.047661a95.617596 95.617596 0 0 0 44.48399 10.90394h2.865157c44.116269 0 81.29181-29.754733 92.604329-70.316369a95.597167 95.597167 0 0 0 48.00798 12.849796h2.870265c40.576958 0 75.280599-25.168439 89.386773-60.765846a95.59206 95.59206 0 0 0 51.225536 14.790544zM317.210175-0.829925a198.456818 198.456818 0 0 1 160.469226-81.73614h198.977756c109.652269 0 198.543641 89.008838 198.543641 198.80411v285.902843c0 28.064239-22.727182 50.816958-50.755671 50.816957h-2.870264c-28.028489 0-50.750564-22.752718-50.750564-50.816957v-102.006743c0-26.097955-39.106075-26.097955-39.106075 0V448.111082c0 28.069347-22.727182 50.822065-50.75567 50.822065h-2.870265c-28.028489 0-50.750564-22.752718-50.750563-50.816957v-113.503123c0-26.097955-39.106075-26.097955-39.106075 0V505.577656c0 28.069347-22.727182 50.822065-50.755671 50.822065h-2.870264c-28.028489 0-50.750564-22.752718-50.750564-50.816958v-136.490773c0-26.097955-39.106075-26.097955-39.106075 0v308.885387c0 28.069347-22.727182 50.827172-50.755671 50.827172h-2.870264c-28.028489 0-50.750564-22.757825-50.750563-50.822065v-329.237706c0-15.474913-5.985676-30.336958-16.700649-41.480938-22.880399-23.794594-60.699451-24.509606-84.458294-1.598563l-37.134683 35.806803a46.807781 46.807781 0 0 1-67.517606-2.625117l-9.055123-10.194035a49.438005 49.438005 0 0 1-3.003052-61.894544L317.210175-0.829925zM586.054863 699.371571a22.982544 22.982544 0 0 0-45.965087 0c0 83.207022-67.456319 150.663342-150.663342 150.663342S238.763092 782.578594 238.763092 699.371571a22.982544 22.982544 0 1 0-45.965087 0C192.798005 807.966643 280.831362 896 389.426434 896s196.628429-88.033357 196.628429-196.628429z"  horiz-adv-x="1024" />
    <glyph glyph-name="zuzhi" unicode="&#58902;" d="M273.6 239.7c20.6 0 41.4 5.2 60.4 16.2 1.1 0.6 2.2 1.3 3.3 2 12.2 7.6 16 23.6 8.5 35.8-7.6 12.2-23.6 16-35.8 8.5-0.6-0.4-1.3-0.8-2-1.2-33.1-19.1-75.5-7.7-94.5 25.3-19.1 33.1-7.7 75.5 25.3 94.5 33.1 19.1 75.5 7.7 94.5-25.3 6.2-10.7 9.4-22.9 9.3-35.1-0.1-14.4 11.4-26.1 25.8-26.3 14.4-0.2 26.1 11.4 26.3 25.8 0.2 21.6-5.4 42.9-16.3 61.6-33.4 58-107.7 77.9-165.6 44.5-57.9-33.4-77.8-107.7-44.4-165.6 22.5-38.9 63.3-60.7 105.2-60.7zM319.5 209.6H217.6c-82 0-148.7-66.7-148.7-148.7v-27.3c0-14.4 11.6-26 26-26s26 11.7 26 26v27.3c0 53.3 43.4 96.7 96.7 96.7h101.8c53.3 0 96.7-43.4 96.7-96.7v-27.3c0-14.4 11.6-26 26-26s26 11.7 26 26v27.3c0.1 82-66.6 148.7-148.6 148.7zM204.7 519.9c18 0 32.5 14.6 32.5 32.5V666.3c0 4.1 2.2 6.3 2.6 6.5h547.4c0.6-0.2 2.9-2.4 2.9-6.5v-113.8c0-18 14.6-32.5 32.5-32.5s32.5 14.6 32.5 32.5V666.3c0 39.5-30.4 71.6-67.7 71.6H239.9c-37.3 0-67.7-32.1-67.7-71.6v-113.8c0-18 14.6-32.6 32.5-32.6zM810.6 206.4H708.8c-82 0-148.7-66.7-148.7-148.7v-27.3c0-14.4 11.7-26 26-26s26 11.7 26 26v27.3c0 53.3 43.4 96.7 96.7 96.7h101.8c53.3 0 96.7-43.4 96.7-96.7v-27.3c0-14.4 11.7-26 26-26s26 11.7 26 26v27.3c0 81.9-66.7 148.7-148.7 148.7zM792.7 478.1c-31.3 8.4-64 4.1-92-12.1-57.9-33.4-77.8-107.7-44.4-165.6 22.4-38.9 63.3-60.6 105.2-60.6 20.6 0 41.4 5.2 60.4 16.2 1.1 0.6 2.2 1.3 3.3 2 12.2 7.6 16 23.6 8.5 35.8-7.6 12.2-23.6 16-35.8 8.5-0.6-0.4-1.3-0.8-2-1.2-33-19.1-75.5-7.7-94.5 25.3-19.1 33.1-7.7 75.5 25.3 94.5 16 9.2 34.7 11.7 52.5 6.9 17.9-4.8 32.8-16.2 42-32.2 6.2-10.7 9.4-22.9 9.3-35.1-0.1-14.4 11.4-26.1 25.8-26.3 14.4-0.2 26.1 11.4 26.3 25.8 0.2 21.6-5.4 42.9-16.3 61.6-16.2 28-42.3 48.1-73.6 56.5z"  horiz-adv-x="1024" />
    <glyph glyph-name="jichushuju" unicode="&#59214;" d="M754.456774 635.045161v-508.696774h50.869678v508.696774h-50.869678z m-508.696774-508.696774v508.696774h-50.869677v-508.696774h50.869677zM754.456774 134.936774c1.32129-18.498065-19.819355-45.584516-66.725161-66.725161-46.245161-21.140645-112.970323-35.014194-187.623226-35.014194-73.992258 0-141.378065 13.873548-187.623226 35.014194-47.566452 21.140645-68.046452 48.227097-66.725161 66.725161h-50.869677c8.588387-101.739355 146.663226-149.966452 305.218064-152.609032 158.554839 2.642581 296.629677 50.869677 305.218065 152.609032h-50.869678zM754.456774 304.722581c1.32129-18.498065-19.819355-45.584516-66.725161-66.725162-46.245161-21.140645-112.970323-35.014194-187.623226-35.014193-73.992258 0-141.378065 13.873548-187.623226 35.014193-47.566452 21.140645-68.046452 48.227097-66.725161 66.725162h-50.869677c8.588387-101.739355 146.663226-149.966452 305.218064-152.609033 158.554839 2.642581 296.629677 50.869677 305.218065 152.609033h-50.869678zM754.456774 473.847742c1.32129-18.498065-19.819355-45.584516-66.725161-66.725161-46.245161-21.140645-112.970323-35.014194-187.623226-35.014194-73.992258 0-141.378065 13.873548-187.623226 35.014194-47.566452 21.140645-68.046452 48.227097-66.725161 66.725161h-50.869677C203.47871 372.108387 341.553548 323.88129 500.108387 321.23871c158.554839 2.642581 296.629677 50.869677 305.218065 152.609032h-50.869678zM754.456774 660.810323c1.32129-18.498065-19.819355-45.584516-66.725161-66.725162-46.245161-21.140645-112.970323-35.014194-187.623226-35.014193-73.992258 0-141.378065 13.873548-187.623226 35.014193-47.566452 21.140645-68.046452 48.227097-66.725161 66.725162h-50.869677C203.47871 559.070968 341.553548 510.843871 500.108387 508.20129c158.554839 2.642581 296.629677 50.869677 305.218065 152.609033h-50.869678zM245.76 643.633548c-1.32129 18.498065 19.819355 45.584516 66.725161 66.725162 46.245161 21.140645 112.970323 35.014194 187.623226 35.014193 73.992258 0 141.378065-13.873548 187.623226-35.014193 47.566452-21.140645 68.046452-48.227097 66.725161-66.725162h50.869678c-8.588387 101.739355-146.663226 149.966452-305.218065 152.609033-158.554839-2.642581-296.629677-50.869677-305.218064-152.609033h50.869677z"  horiz-adv-x="1024" />
    <glyph glyph-name="ziyuan145" unicode="&#59113;" d="M513.580247-128l-10.53498 4.740741a1072.460905 1072.460905 0 0 0-271.539094 161.185185C122.469136 132.213992 64.790123 228.082305 55.308642 333.958848a717.958848 717.958848 0 0 0 0 81.64609V845.432099l33.711934-9.744856c137.744856-40.032922 309.201646-3.160494 407.440329 52.674897l11.325103 7.63786 26.337449-11.588477c84.279835-35.81893 171.45679-72.691358 297.349794-65.053498a480.921811 480.921811 0 0 1 102.1893 16.592592L966.584362 843.325103l1.316873-32.921811c1.580247-34.502058 1.580247-71.374486 1.580246-102.979424v-378.205761a194.897119 194.897119 0 0 0-1.843621-26.337449c-19.489712-110.353909-96.395062-190.946502-152.493827-242.041152A1281.843621 1281.843621 0 0 0 685.82716-37.399177a1269.465021 1269.465021 0 0 0-161.975308-85.860082zM107.983539 776.954733V414.024691a666.864198 666.864198 0 0 1 0-75.588477c8.427984-92.707819 58.469136-175.407407 158.024691-260.477366a1003.983539 1003.983539 0 0 1 247.835391-148.54321A1246.814815 1246.814815 0 0 1 659.489712 7.111111a1243.390947 1243.390947 0 0 1 121.942387 92.707819c54.781893 49.777778 119.572016 119.045267 136.164609 212.279835a153.8107 153.8107 0 0 1 0 18.17284V708.213992 776.954733a549.662551 549.662551 0 0 0-80.855967-10.53498c-138.534979-8.427984-235.45679 32.921811-321.053498 69.26749l-3.423869 1.316872A647.374486 647.374486 0 0 0 107.983539 776.954733zM756.674897 582.847737v-48.460906h-198.584362c-1.843621-18.962963-4.213992-36.082305-6.584362-52.674897h164.082304v-206.222222h-57.942386v157.234568h-233.08642v-153.020576H369.777778v203.325103h128.263374q2.633745 22.91358 5.26749 52.674897h-171.983539V500.938272c0-96.395062-8.954733-237.037037-66.633745-330.271605a166.716049 166.716049 0 0 1-47.934156 27.654321C272.329218 286.814815 277.596708 412.707819 277.596708 500.938272V666.074074a2610.831276 2610.831276 0 0 1 401.119341 41.349794l43.720165-44.246913c-44.773663-9.481481-97.44856-17.646091-153.547325-24.230453-1.843621-17.646091-3.423868-36.609053-5.26749-56.098765z m-184.36214-222.024692c0-59.786008-22.386831-141.168724-212.016461-195.423868a223.078189 223.078189 0 0 1-37.135802 43.193416c178.304527 43.983539 190.683128 107.983539 190.683127 152.757201v49.514404h57.415638z m-65.580247 222.024692c0 17.646091 2.37037 34.238683 3.423869 50.304526-59.786008-5.26749-121.152263-8.954733-179.094651-11.325103v-38.979423z m79.012346-302.35391a1546.798354 1546.798354 0 0 0 168.823045-76.115226l-38.979424-36.609054a1185.185185 1185.185185 0 0 1-168.296296 80.329218z"  horiz-adv-x="1024" />
    <glyph glyph-name="peizhizhongxin" unicode="&#58896;" d="M511.63 571.6c-103.43 0-187.6-84.16-187.6-187.6s84.16-187.6 187.6-187.6 187.6 84.16 187.6 187.6-84.16 187.6-187.6 187.6z m0-283.14c-52.68 0-95.55 42.87-95.55 95.55s42.87 95.55 95.55 95.55 95.55-42.87 95.55-95.55-42.87-95.55-95.55-95.55zM914.05 319.88c-18.03 0-34.37 7.49-46.03 19.54-11.19 11.55-18.1 27.26-18.1 44.58 0 17.32 6.9 33.03 18.1 44.58 11.65 12.05 27.99 19.54 46.03 19.54 25.42 0 46.03 20.61 46.03 46.03 0 0.73-0.02 1.44-0.06 2.15 0 0.42-0.04 0.84-0.06 1.23-0.06 0.88-0.15 1.76-0.27 2.62-0.04 0.44-0.1 0.86-0.19 1.3-0.1 0.67-0.23 1.32-0.36 1.97-0.1 0.54-0.23 1.09-0.38 1.63-0.08 0.34-0.17 0.67-0.25 1-0.13 0.48-0.27 0.96-0.42 1.44-0.15 0.48-0.29 0.96-0.46 1.44-0.25 0.69-0.5 1.38-0.75 2.05-0.25 0.69-0.52 1.36-0.86 2.03-0.42 0.96-0.88 1.9-1.38 2.82-0.23 0.44-0.48 0.88-0.73 1.32l-0.63 1.09-104.71 181.4-0.29 0.48c-0.25 0.46-0.54 0.92-0.84 1.38-0.27 0.46-0.56 0.92-0.88 1.36-0.27 0.4-0.54 0.82-0.84 1.19-0.17 0.23-0.36 0.48-0.52 0.71-0.27 0.4-0.56 0.77-0.88 1.13-0.21 0.27-0.42 0.52-0.63 0.77-0.36 0.42-0.71 0.84-1.07 1.23a44.62 44.62 0 0 1-3.14 3.16c-0.36 0.31-0.69 0.63-1.05 0.92-0.36 0.31-0.69 0.61-1.07 0.9-0.65 0.5-1.3 1-1.97 1.51-0.08 0.06-0.17 0.13-0.27 0.19-0.75 0.54-1.55 1.07-2.34 1.57-0.02 0-0.04 0.02-0.08 0.04-0.23 0.15-0.46 0.27-0.69 0.42-0.19 0.13-0.38 0.25-0.59 0.36-0.04 0.02-0.06 0.04-0.1 0.04-0.46 0.27-0.94 0.54-1.42 0.8l-1.21 0.63c-21.57 10.59-47.95 2.8-60.13-18.31-8.58-14.83-22.41-25.46-38.93-29.87-1.59-0.42-3.16-0.8-4.75-1.09-15.06-2.87-30.5-0.27-43.91 7.49-12.01 6.92-21.26 17.32-26.67 29.79-1.3 2.95-2.36 5.98-3.2 9.14-4.43 16.55-2.15 33.83 6.4 48.64 8.12 14.06 7.97 30.63 1.09 44.06a45.854 45.854 0 0 1-17.93 18.83c-11.11 6.4-23.77 7.66-35.23 4.5-0.73 0.06-1.46 0.08-2.2 0.08l-195.25 1.57h-0.17c-3.45 0.1-6.97-0.17-10.42-0.88-0.73-0.15-1.46-0.31-2.2-0.48-0.73-0.19-1.46-0.38-2.18-0.61-0.84-0.25-1.67-0.54-2.49-0.84-0.82-0.29-1.61-0.61-2.41-0.96-0.02 0-0.06-0.02-0.08-0.04-0.65-0.27-1.3-0.56-1.92-0.88-0.19-0.08-0.36-0.17-0.52-0.27-0.75-0.36-1.51-0.77-2.24-1.19-22.01-12.72-29.56-40.88-16.84-62.89 8.56-14.83 10.84-32.11 6.4-48.64-0.08-0.31-0.17-0.65-0.27-0.96h-0.02c-4.56-16.13-15.04-29.58-29.58-37.97-14.98-8.66-32.05-10.54-47.66-6.63-16.26 4.08-30.9 14.48-39.92 30.1-12.72 22.01-40.86 29.54-62.89 16.84-0.82-0.48-1.63-0.98-2.43-1.51-0.08-0.06-0.17-0.13-0.27-0.17-0.67-0.46-1.34-0.94-1.99-1.44-0.19-0.13-0.36-0.25-0.54-0.4-0.71-0.56-1.42-1.15-2.11-1.74-0.73-0.65-1.44-1.32-2.15-2.03-0.61-0.61-1.19-1.21-1.78-1.86-0.08-0.08-0.17-0.19-0.25-0.27-0.1-0.15-0.21-0.27-0.36-0.42-0.46-0.56-0.94-1.13-1.4-1.72-0.06-0.06-0.11-0.15-0.17-0.21-0.08-0.15-0.19-0.27-0.31-0.42-0.46-0.63-0.92-1.26-1.36-1.9-0.06-0.1-0.13-0.21-0.19-0.29-0.52-0.82-1.05-1.63-1.53-2.47l-0.29-0.48L70.73 518.25l-0.63-1.09c-0.25-0.44-0.5-0.88-0.73-1.32-0.71-1.34-1.36-2.7-1.95-4.1-0.38-0.92-0.73-1.86-1.05-2.8-0.17-0.48-0.31-0.96-0.46-1.44-0.15-0.48-0.29-0.96-0.42-1.44s-0.25-0.96-0.36-1.46c-0.13-0.48-0.23-0.96-0.31-1.46-0.1-0.48-0.19-0.98-0.27-1.46-0.08-0.5-0.17-1-0.23-1.51-0.13-0.86-0.21-1.74-0.25-2.62-0.04-0.4-0.08-0.82-0.08-1.23-0.04-0.71-0.06-1.42-0.06-2.15 0-25.42 20.61-46.03 46.03-46.03 18.03 0 34.37-7.49 46.03-19.54 11.19-11.55 18.1-27.26 18.1-44.58 0-17.32-6.9-33.03-18.1-44.58-11.65-12.05-27.99-19.54-46.03-19.54-25.42 0-46.03-20.61-46.03-46.03 0-0.73 0.02-1.44 0.06-2.15 0-0.42 0.04-0.84 0.08-1.23 0.04-0.88 0.15-1.76 0.25-2.62 0.06-0.5 0.15-1 0.23-1.51 0.08-0.48 0.17-0.98 0.27-1.46 0.08-0.5 0.19-0.98 0.31-1.46 0.1-0.5 0.23-0.98 0.36-1.46 0.13-0.48 0.27-0.96 0.42-1.44 0.15-0.48 0.29-0.96 0.46-1.44 0.31-0.96 0.65-1.88 1.05-2.8 0.59-1.4 1.23-2.76 1.95-4.1 0.23-0.44 0.48-0.88 0.73-1.32l0.63-1.09 104.71-181.4 0.29-0.48c0.48-0.84 1-1.65 1.53-2.47 0.06-0.08 0.13-0.19 0.19-0.29 0.44-0.65 0.9-1.28 1.36-1.9 0.13-0.15 0.23-0.27 0.31-0.42 0.06-0.06 0.1-0.15 0.17-0.21l0.06-0.06c0.44-0.56 0.9-1.11 1.34-1.65 0.15-0.15 0.25-0.27 0.36-0.42 0.08-0.08 0.17-0.19 0.25-0.27 0.29-0.31 0.59-0.65 0.88-0.94 0.29-0.31 0.59-0.63 0.9-0.92 0.71-0.71 1.42-1.38 2.15-2.03 0.69-0.59 1.4-1.17 2.11-1.74 0.19-0.15 0.36-0.27 0.54-0.4 0.65-0.5 1.32-0.98 1.99-1.44 0.1-0.04 0.19-0.1 0.27-0.17 0.79-0.52 1.61-1.03 2.43-1.51 22.03-12.7 50.17-5.17 62.89 16.84 9.02 15.63 23.68 26.03 39.94 30.11 15.59 3.91 32.66 2.03 47.64-6.63 14.54-8.39 25.02-21.84 29.58-37.95 0.1-0.31 0.21-0.65 0.29-0.98 4.44-16.53 2.15-33.81-6.4-48.64-12.7-22.01-5.17-50.17 16.84-62.89 0.52-0.31 1.07-0.61 1.61-0.88 0.33-0.19 0.67-0.36 1-0.5 1.19-0.61 2.41-1.13 3.64-1.61 0.71-0.29 1.42-0.54 2.15-0.8 0.48-0.15 0.94-0.31 1.42-0.46 0.34-0.1 0.69-0.21 1.05-0.29 0.34-0.08 0.69-0.17 1.05-0.27 0.69-0.17 1.4-0.31 2.11-0.46 3.45-0.71 6.97-0.98 10.42-0.88h208.4c3.18-0.1 6.38 0.13 9.54 0.71 1.59 0.27 3.18 0.63 4.75 1.11 0.61 0.17 1.19 0.36 1.78 0.54 0.71 0.25 1.44 0.5 2.15 0.8 0.54 0.21 1.07 0.42 1.59 0.65 0.46 0.19 0.92 0.4 1.36 0.63 0.42 0.19 0.84 0.4 1.25 0.61 0 0.02 0.02 0.02 0.02 0.02 0.67 0.34 1.34 0.71 2.01 1.09 22.01 12.72 29.56 40.88 16.84 62.89-8.56 14.83-10.84 32.11-6.4 48.64 0.08 0.33 0.19 0.67 0.29 0.98 4.56 16.11 15.04 29.56 29.58 37.95 14.54 8.41 31.44 10.75 47.68 6.65 0.34-0.08 0.65-0.17 0.98-0.25 16.53-4.41 30.36-15.04 38.93-29.88 12.7-22.01 40.86-29.54 62.87-16.84 0.82 0.48 1.63 0.98 2.43 1.51 0.08 0.06 0.17 0.13 0.27 0.17 0.67 0.46 1.34 0.94 1.99 1.44 0.19 0.13 0.36 0.25 0.54 0.4 0.71 0.56 1.42 1.15 2.11 1.74 0.73 0.65 1.44 1.32 2.15 2.03 0.29 0.29 0.61 0.61 0.9 0.92 0.29 0.29 0.59 0.63 0.88 0.94 0.08 0.08 0.17 0.19 0.25 0.27 0.1 0.15 0.21 0.27 0.36 0.42 0.44 0.52 0.86 1.05 1.3 1.59 0.19 0.23 0.4 0.5 0.56 0.75 0.02 0 0.02 0.02 0.02 0.02 0.25 0.31 0.48 0.65 0.71 0.98 0.25 0.31 0.46 0.65 0.69 0.98 0.04 0.06 0.08 0.13 0.13 0.17 0.54 0.82 1.05 1.65 1.55 2.51l0.29 0.48 104.71 181.4 0.63 1.09c0.25 0.44 0.5 0.88 0.73 1.32 0.5 0.92 0.96 1.86 1.38 2.82 0.31 0.67 0.59 1.34 0.86 2.03 0.25 0.67 0.5 1.36 0.75 2.05 0.17 0.48 0.31 0.96 0.46 1.44 0.15 0.48 0.29 0.96 0.42 1.44 0.08 0.34 0.17 0.67 0.25 1 0.15 0.54 0.27 1.09 0.38 1.63 0.13 0.65 0.25 1.3 0.36 1.97 0.08 0.44 0.15 0.86 0.19 1.3 0.13 0.86 0.21 1.74 0.27 2.62 0.02 0.4 0.06 0.82 0.06 1.23 0.04 0.71 0.06 1.42 0.06 2.15 0.01 25.38-20.6 45.99-46.01 45.99z m-160.61-133.2c-40.29 10.8-82.37 5.25-118.5-15.61s-61.97-54.54-72.76-94.83c-4.39-16.36-6.07-33.01-5.1-49.46h-90.13c0.19 2.93 0.27 5.86 0.27 8.79 0 13.56-1.78 27.22-5.4 40.67-10.79 40.29-36.63 73.98-72.76 94.83-36.13 20.86-78.2 26.4-118.5 15.61-16.36-4.39-31.65-11.26-45.42-20.29l-45.08 78.1c51.01 25.71 86.07 78.6 86.07 139.52s-35.06 113.81-86.07 139.52l45.08 78.1c13.77-9.04 29.06-15.9 45.42-20.29 40.29-10.8 82.37-5.25 118.5 15.61 36.13 20.86 61.97 54.54 72.76 94.83 3.62 13.45 5.4 27.11 5.4 40.67 0 2.78-0.08 5.54-0.25 8.31l90.04-0.73c-0.82-16.05 0.9-32.28 5.17-48.24 10.8-40.29 36.63-73.98 72.76-94.83s78.2-26.4 118.5-15.61c16.36 4.39 31.65 11.26 45.42 20.29l45.08-78.1c-51-25.71-86.07-78.6-86.07-139.52s35.06-113.81 86.07-139.52l-45.08-78.1c-13.77 9.02-29.06 15.88-45.42 20.28z"  horiz-adv-x="1024" />
    <glyph glyph-name="paigongfenpeishebei" unicode="&#58933;" d="M798.5152 2.4576H232.8576c-36.0448 0-65.3312 29.2864-65.3312 65.3312v131.2768c0 36.0448 29.2864 65.3312 65.3312 65.3312h565.6576c36.0448 0 65.3312-29.2864 65.3312-65.3312v-131.2768c0-35.84-29.2864-65.3312-65.3312-65.3312zM232.8576 223.4368c-13.5168 0-24.3712-10.8544-24.3712-24.3712v-131.2768c0-13.5168 10.8544-24.3712 24.3712-24.3712h565.6576c13.5168 0 24.3712 10.8544 24.3712 24.3712v131.2768c0 13.5168-10.8544 24.3712-24.3712 24.3712H232.8576zM779.0592 284.8768H252.3136c-46.6944 0-84.7872 38.0928-84.7872 84.7872V695.9104c0 46.6944 38.0928 84.7872 84.7872 84.7872h526.7456c46.6944 0 84.7872-38.0928 84.7872-84.7872V369.664c0-46.6944-38.0928-84.7872-84.7872-84.7872zM252.3136 739.7376c-24.1664 0-43.8272-19.6608-43.8272-43.8272V369.664c0-24.1664 19.6608-43.8272 43.8272-43.8272h526.7456c24.1664 0 43.8272 19.6608 43.8272 43.8272V695.9104c0 24.1664-19.6608 43.8272-43.8272 43.8272H252.3136zM720.4864 113.0496h-61.44c-11.264 0-20.48 9.216-20.48 20.48s9.216 20.48 20.48 20.48h61.44c11.264 0 20.48-9.216 20.48-20.48s-9.216-20.48-20.48-20.48zM577.1264 113.0496h-266.24c-11.264 0-20.48 9.216-20.48 20.48s9.216 20.48 20.48 20.48h266.24c11.264 0 20.48-9.216 20.48-20.48s-9.216-20.48-20.48-20.48zM466.944 367.8208c-5.3248 0-10.4448 2.048-14.5408 5.9392l-48.3328 48.3328a20.39808 20.39808 0 1 0 28.8768 28.8768l48.3328-48.3328a20.39808 20.39808 0 0 0-14.336-34.816zM287.1296 284.8768c-5.3248 0-10.4448 2.048-14.5408 5.9392a20.39808 20.39808 0 0 0 0 28.8768l131.4816 131.2768a20.39808 20.39808 0 1 0 28.8768-28.8768l-131.4816-131.2768c-3.8912-3.8912-9.216-5.9392-14.336-5.9392zM466.944 367.8208c-5.3248 0-10.4448 2.048-14.5408 5.9392a20.39808 20.39808 0 0 0 0 28.8768l146.432 146.432a20.39808 20.39808 0 1 0 28.8768-28.8768L481.28 373.76c-3.8912-3.8912-9.216-5.9392-14.336-5.9392zM642.6624 510.5664c-13.7216 0-27.4432 5.12-37.888 15.5648a53.6576 53.6576 0 0 0 0 75.776 53.6576 53.6576 0 0 0 75.776 0 53.6576 53.6576 0 0 0 0-75.776c-10.4448-10.4448-24.1664-15.5648-37.888-15.5648z m0 66.1504a12.61568 12.61568 0 1 1 8.8064-3.6864 11.91936 11.91936 0 0 1-8.8064 3.6864z"  horiz-adv-x="1024" />
  </font>
</defs></svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.ttf
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.woff
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/alicon/iconfont.woff2
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/layui.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2203 @@
/**
 @Name: layui
 @Author: è´¤å¿ƒ
 @Site: www.layui.com
 */
/** åˆå§‹åŒ– **/
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,input,button,textarea,p,blockquote,th,td,form,pre{margin: 0; padding: 0; -webkit-tap-highlight-color:rgba(0,0,0,0);}
a:active,a:hover{outline:0}
img{display: inline-block; border: none; vertical-align: middle;}
li{list-style:none;}
table{border-collapse: collapse; border-spacing: 0;}
h1,h2,h3{font-weight: 400;}
h4, h5, h6{font-size: 100%; font-weight: 400;}
button,input,select,textarea{font-size: 100%; }
input,button,textarea,select,optgroup,option{font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit; outline: 0;}
pre{white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;}
/** åˆå§‹åŒ–全局标签 **/
body{line-height: 24px; font: 14px Helvetica Neue,Helvetica,PingFang SC,\5FAE\8F6F\96C5\9ED1,Tahoma,Arial,sans-serif;}
hr{height: 1px; margin: 10px 0; border: 0; clear: both;}
a{color: #333; text-decoration:none; }
a:hover{color: #777;}
a cite{font-style: normal; *cursor:pointer;}
/** åŸºç¡€é€šç”¨ **/
.layui-border-box, .layui-border-box *{box-sizing: border-box;}
/* æ¶ˆé™¤ç¬¬ä¸‰æ–¹ui可能造成的冲突 */.layui-box, .layui-box *{box-sizing: content-box;}
.layui-clear{clear: both; *zoom: 1;}
.layui-clear:after{content:'\20'; clear:both; *zoom:1; display:block; height:0;}
.layui-inline{position: relative; display: inline-block; *display:inline; *zoom:1; vertical-align: middle;}
/* ä¸‰è§’å½¢ */.layui-edge{position: relative; display: inline-block; vertical-align: middle; width: 0; height: 0; border-width: 6px; border-style: dashed; border-color: transparent; overflow: hidden;}
.layui-edge-top{top: -4px; border-bottom-color: #999; border-bottom-style: solid;}
.layui-edge-right{border-left-color: #999; border-left-style: solid;}
.layui-edge-bottom{top: 2px; border-top-color: #999; border-top-style: solid;}
.layui-edge-left{border-right-color: #999; border-right-style: solid;}
/* å•行溢出省略 */.layui-elip{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
/* å±è”½é€‰ä¸­ */.layui-unselect,.layui-icon, .layui-disabled{-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}
/* ç¦ç”¨ */.layui-disabled,.layui-disabled:hover{color: #d2d2d2 !important; cursor: not-allowed !important;}
/* çº¯åœ†è§’ */.layui-circle{border-radius: 100%;}
.layui-show{display: block !important;}
.layui-hide{display: none !important;}
/** å›¾æ ‡å­—体 **/
@font-face {font-family: 'layui-icon';
  src: url('../font/iconfont.eot?v=220');
  src: url('../font/iconfont.eot?v=220#iefix') format('embedded-opentype'),
  url('../font/iconfont.svg?v=220#iconfont') format('svg'),
  url('../font/iconfont.woff?v=220') format('woff'),
  url('../font/iconfont.ttf?v=220') format('truetype');
}
/*清浮动*/
.clearfloat:after{
  display: block;
  clear: both;
  content: '';
  visibility: hidden;
  height:0;
}
.clearfloat{
  zoom:1;
}
.layui-icon{
  font-family:"layui-icon" !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* font-class æŒ‰é’®çš„图标*/
.layui-icon-reply-fill:before {
  content: "\e611"
}
.layui-icon-set-fill:before {
  content: "\e614"
}
.layui-icon-menu-fill:before {
  content: "\e60f"
}
.layui-icon-search:before {
  content: "\e615"
}
.layui-icon-share:before {
  content: "\e641"
}
.layui-icon-set-sm:before {
  content: "\e620"
}
.layui-icon-engine:before {
  content: "\e628"
}
.layui-icon-close:before {
  content: "\1006"
}
.layui-icon-close-fill:before {
  content: "\1007"
}
.layui-icon-chart-screen:before {
  content: "\e629"
}
.layui-icon-star:before {
  content: "\e600"
}
.layui-icon-circle-dot:before {
  content: "\e617"
}
.layui-icon-chat:before {
  content: "\e606"
}
.layui-icon-release:before {
  content: "\e609"
}
.layui-icon-list:before {
  content: "\e60a"
}
.layui-icon-chart:before {
  content: "\e62c"
}
.layui-icon-ok-circle:before {
  content: "\1005"
}
.layui-icon-layim-theme:before {
  content: "\e61b"
}
.layui-icon-table:before {
  content: "\e62d"
}
.layui-icon-right:before {
  content: "\e602"
}
.layui-icon-left:before {
  content: "\e603"
}
.layui-icon-cart-simple:before {
  content: "\e698"
}
.layui-icon-face-cry:before {
  content: "\e69c"
}
.layui-icon-face-smile:before {
  content: "\e6af"
}
.layui-icon-survey:before {
  content: "\e6b2"
}
.layui-icon-tree:before {
  content: "\e62e"
}
.layui-icon-ie:before {
  content: "\e7bb"
}
.layui-icon-upload-circle:before {
  content: "\e62f"
}
.layui-icon-add-circle:before {
  content: "\e61f"
}
.layui-icon-download-circle:before {
  content: "\e601"
}
.layui-icon-templeate-1:before {
  content: "\e630"
}
.layui-icon-util:before {
  content: "\e631"
}
.layui-icon-face-surprised:before {
  content: "\e664"
}
.layui-icon-edit:before {
  content: "\e642"
}
.layui-icon-speaker:before {
  content: "\e645"
}
.layui-icon-down:before {
  content: "\e61a"
}
.layui-icon-file:before {
  content: "\e621"
}
.layui-icon-layouts:before {
  content: "\e632"
}
.layui-icon-rate-half:before {
  content: "\e6c9"
}
.layui-icon-add-circle-fine:before {
  content: "\e608"
}
.layui-icon-prev-circle:before {
  content: "\e633"
}
.layui-icon-read:before {
  content: "\e705"
}
.layui-icon-404:before {
  content: "\e61c"
}
.layui-icon-carousel:before {
  content: "\e634"
}
.layui-icon-help:before {
  content: "\e607"
}
.layui-icon-code-circle:before {
  content: "\e635"
}
.layui-icon-windows:before {
  content: "\e67f"
}
.layui-icon-water:before {
  content: "\e636"
}
.layui-icon-username:before {
  content: "\e66f"
}
.layui-icon-find-fill:before {
  content: "\e670"
}
.layui-icon-about:before {
  content: "\e60b"
}
.layui-icon-location:before {
  content: "\e715"
}
.layui-icon-up:before {
  content: "\e619"
}
.layui-icon-pause:before {
  content: "\e651"
}
.layui-icon-date:before {
  content: "\e637"
}
.layui-icon-layim-uploadfile:before {
  content: "\e61d"
}
.layui-icon-delete:before {
  content: "\e640"
}
.layui-icon-play:before {
  content: "\e652"
}
.layui-icon-top:before {
  content: "\e604"
}
.layui-icon-firefox:before {
  content: "\e686"
}
.layui-icon-friends:before {
  content: "\e612"
}
.layui-icon-refresh-3:before {
  content: "\e9aa"
}
.layui-icon-ok:before {
  content: "\e605"
}
.layui-icon-layer:before {
  content: "\e638"
}
.layui-icon-face-smile-fine:before {
  content: "\e60c"
}
.layui-icon-dollar:before {
  content: "\e659"
}
.layui-icon-group:before {
  content: "\e613"
}
.layui-icon-layim-download:before {
  content: "\e61e"
}
.layui-icon-picture-fine:before {
  content: "\e60d"
}
.layui-icon-link:before {
  content: "\e64c"
}
.layui-icon-diamond:before {
  content: "\e735"
}
.layui-icon-log:before {
  content: "\e60e"
}
.layui-icon-key:before {
  content: "\e683"
}
.layui-icon-rate-solid:before {
  content: "\e67a"
}
.layui-icon-fonts-del:before {
  content: "\e64f"
}
.layui-icon-unlink:before {
  content: "\e64d"
}
.layui-icon-fonts-clear:before {
  content: "\e639"
}
.layui-icon-triangle-r:before {
  content: "\e623"
}
.layui-icon-circle:before {
  content: "\e63f"
}
.layui-icon-radio:before {
  content: "\e643"
}
.layui-icon-align-center:before {
  content: "\e647"
}
.layui-icon-align-right:before {
  content: "\e648"
}
.layui-icon-align-left:before {
  content: "\e649"
}
.layui-icon-loading-1:before {
  content: "\e63e"
}
.layui-icon-return:before {
  content: "\e65c"
}
.layui-icon-fonts-strong:before {
  content: "\e62b"
}
.layui-icon-upload:before {
  content: "\e67c"
}
.layui-icon-dialogue:before {
  content: "\e63a"
}
.layui-icon-video:before {
  content: "\e6ed"
}
.layui-icon-headset:before {
  content: "\e6fc"
}
.layui-icon-cellphone-fine:before {
  content: "\e63b"
}
.layui-icon-add-1:before {
  content: "\e654"
}
.layui-icon-face-smile-b:before {
  content: "\e650"
}
.layui-icon-fonts-html:before {
  content: "\e64b"
}
.layui-icon-screen-full:before {
  content: "\e622"
}
.layui-icon-form:before {
  content: "\e63c"
}
.layui-icon-cart:before {
  content: "\e657"
}
.layui-icon-camera-fill:before {
  content: "\e65d"
}
.layui-icon-tabs:before {
  content: "\e62a"
}
.layui-icon-heart-fill:before {
  content: "\e68f"
}
.layui-icon-fonts-code:before {
  content: "\e64e"
}
.layui-icon-ios:before {
  content: "\e680"
}
.layui-icon-at:before {
  content: "\e687"
}
.layui-icon-fire:before {
  content: "\e756"
}
.layui-icon-set:before {
  content: "\e716"
}
.layui-icon-fonts-u:before {
  content: "\e646"
}
.layui-icon-triangle-d:before {
  content: "\e625"
}
.layui-icon-tips:before {
  content: "\e702"
}
.layui-icon-picture:before {
  content: "\e64a"
}
.layui-icon-more-vertical:before {
  content: "\e671"
}
.layui-icon-bluetooth:before {
  content: "\e689"
}
.layui-icon-flag:before {
  content: "\e66c"
}
.layui-icon-loading:before {
  content: "\e63d"
}
.layui-icon-fonts-i:before {
  content: "\e644"
}
.layui-icon-refresh-1:before {
  content: "\e666"
}
.layui-icon-rmb:before {
  content: "\e65e"
}
.layui-icon-addition:before {
  content: "\e624"
}
.layui-icon-home:before {
  content: "\e68e"
}
.layui-icon-time:before {
  content: "\e68d"
}
.layui-icon-user:before {
  content: "\e770"
}
.layui-icon-notice:before {
  content: "\e667"
}
.layui-icon-chrome:before {
  content: "\e68a"
}
.layui-icon-edge:before {
  content: "\e68b"
}
.layui-icon-login-weibo:before {
  content: "\e675"
}
.layui-icon-voice:before {
  content: "\e688"
}
.layui-icon-upload-drag:before {
  content: "\e681"
}
.layui-icon-login-qq:before {
  content: "\e676"
}
.layui-icon-snowflake:before {
  content: "\e6b1"
}
.layui-icon-heart:before {
  content: "\e68c"
}
.layui-icon-logout:before {
  content: "\e682"
}
.layui-icon-file-b:before {
  content: "\e655"
}
.layui-icon-template:before {
  content: "\e663"
}
.layui-icon-transfer:before {
  content: "\e691"
}
.layui-icon-auz:before {
  content: "\e672"
}
.layui-icon-console:before {
  content: "\e665"
}
.layui-icon-app:before {
  content: "\e653"
}
.layui-icon-prev:before {
  content: "\e65a"
}
.layui-icon-website:before {
  content: "\e7ae"
}
.layui-icon-next:before {
  content: "\e65b"
}
.layui-icon-component:before {
  content: "\e857"
}
.layui-icon-android:before {
  content: "\e684"
}
.layui-icon-more:before {
  content: "\e65f"
}
.layui-icon-login-wechat:before {
  content: "\e677"
}
.layui-icon-shrink-right:before {
  content: "\e668"
}
.layui-icon-spread-left:before {
  content: "\e66b"
}
.layui-icon-camera:before {
  content: "\e660"
}
.layui-icon-note:before {
  content: "\e66e"
}
.layui-icon-refresh:before {
  content: "\e669"
}
.layui-icon-female:before {
  content: "\e661"
}
.layui-icon-male:before {
  content: "\e662"
}
.layui-icon-screen-restore:before {
  content: "\e758"
}
.layui-icon-password:before {
  content: "\e673"
}
.layui-icon-senior:before {
  content: "\e674"
}
.layui-icon-theme:before {
  content: "\e66a"
}
.layui-icon-tread:before {
  content: "\e6c5"
}
.layui-icon-praise:before {
  content: "\e6c6"
}
.layui-icon-star-fill:before {
  content: "\e658"
}
.layui-icon-rate:before {
  content: "\e67b"
}
.layui-icon-template-1:before {
  content: "\e656"
}
.layui-icon-vercode:before {
  content: "\e679"
}
.layui-icon-service:before {
  content: "\e626"
}
.layui-icon-cellphone:before {
  content: "\e678"
}
.layui-icon-print:before {
  content: "\e66d"
}
.layui-icon-cols:before {
  content: "\e610"
}
.layui-icon-wifi:before {
  content: "\e7e0"
}
.layui-icon-export:before {
  content: "\e67d"
}
.layui-icon-rss:before {
  content: "\e808"
}
.layui-icon-slider:before {
  content: "\e714"
}
.layui-icon-email:before {
  content: "\e618"
}
.layui-icon-subtraction:before {
  content: "\e67e"
}
.layui-icon-mike:before {
  content: "\e6dc"
}
.layui-icon-light:before {
  content: "\e748"
}
.layui-icon-gift:before {
  content: "\e627"
}
.layui-icon-mute:before {
  content: "\e685"
}
.layui-icon-reduce-circle:before {
  content: "\e616"
}
.layui-icon-music:before {
  content: "\e690"
}
/* åŸºæœ¬å¸ƒå±€ */
.layui-main{position: relative; width: 1140px; margin: 0 auto;}
.layui-header{position: relative; z-index: 1000; height: 60px;}
.layui-header a:hover{transition: all .5s; -webkit-transition: all .5s;}
.layui-side{position: fixed; top: 0; bottom: 0; z-index: 999; width: 200px; overflow-x: hidden;}
.layui-side-scroll{width: 220px; height: 100%; overflow-x: hidden;overflow-y:auto}
.layui-body{position: absolute; left: 200px; right: 0; top: 0; bottom: 0; z-index: 998; width: auto; overflow: hidden; overflow-y: auto; box-sizing: border-box;}
/* åŽå°æ¡†æž¶å¤§å¸ƒå±€ */.layui-layout-body{overflow: hidden;}
.layui-layout-admin .layui-header{background-color: #23262E;}
.layui-layout-admin .layui-side{top: 60px; width: 200px; overflow-x: hidden;}
.layui-layout-admin .layui-body{top: 60px; bottom: 44px;}
.layui-layout-admin .layui-main{width: auto; margin: 0 15px;}
.layui-layout-admin .layui-footer{position: fixed; left: 200px; right: 0; bottom: 0; height: 44px; line-height: 44px; padding: 0 15px; background-color: #eee;}
.layui-layout-admin .layui-logo{position: absolute; left: 0; top: 0; width: 200px; height: 100%; line-height: 60px; text-align: center; color: #009688; font-size: 16px;}
.layui-layout-admin .layui-header .layui-nav{background: none;}
.layui-layout-left{position: absolute !important; left: 200px; top: 0;}
.layui-layout-right{position: absolute !important; right: 15px; top: 0;}
/* weidy border布局 */
.layui-layout-border{
  overflow:auto;
  height:90%
}
.layui-layout-border .layui-north { /*北区*/
     background-color:#23262E;
     width:auto;
     min-height:50px;
    border-bottom:1px solid #9F9F9F;
}
.layui-layout-border .layui-west{
     top:5px;
     width : 200px;
     overflow-x:hidden;
   border-right:1px solid #9F9F9F;
}
.layui-layout-border .layui-center{
     margin:5px;
     width:auto;
     height:auto;
}
.layui-layout-border .layui-south {
    border-top:1px solid #9F9F9F;
    /*position:fixed;*/
    /*left:200px;*/
    /*right:0;*/
    bottom:0;
    width:auto;
    min-height:50px;
}
/* æ …格布局 */
.layui-container{position: relative; margin: 0 auto; padding: 0 15px; box-sizing: border-box;}
.layui-fluid{position: relative; margin: 0 auto; padding: 0 15px;}
.layui-row:before, .layui-row:after{content: ''; display: block; clear: both;}
.layui-col-xs1, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12
,.layui-col-sm1, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12
,.layui-col-md1, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9, .layui-col-md10, .layui-col-md11, .layui-col-md12
,.layui-col-lg1, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12
{position: relative; display: block; box-sizing: border-box;}
.layui-col-xs1, .layui-col-xs2, .layui-col-xs3, .layui-col-xs4, .layui-col-xs5, .layui-col-xs6, .layui-col-xs7, .layui-col-xs8, .layui-col-xs9, .layui-col-xs10, .layui-col-xs11, .layui-col-xs12{float: left;}
.layui-col-xs1{width: 8.33333333%;}
.layui-col-xs2{width: 16.66666667%;}
.layui-col-xs3{width: 25%;}
.layui-col-xs4{width: 33.33333333%;}
.layui-col-xs5{width: 41.66666667%;}
.layui-col-xs6{width: 50%;}
.layui-col-xs7{width: 58.33333333%;}
.layui-col-xs8{width: 66.66666667%;}
.layui-col-xs9{width: 75%;}
.layui-col-xs10{width: 83.33333333%;}
.layui-col-xs11{width: 91.66666667%;}
.layui-col-xs12{width: 100%;}
.layui-col-xs-offset1{margin-left: 8.33333333%;}
.layui-col-xs-offset2{margin-left: 16.66666667%;}
.layui-col-xs-offset3{margin-left: 25%;}
.layui-col-xs-offset4{margin-left: 33.33333333%;}
.layui-col-xs-offset5{margin-left: 41.66666667%;}
.layui-col-xs-offset6{margin-left: 50%;}
.layui-col-xs-offset7{margin-left: 58.33333333%;}
.layui-col-xs-offset8{margin-left: 66.66666667%;}
.layui-col-xs-offset9{margin-left: 75%;}
.layui-col-xs-offset10{margin-left: 83.33333333%;}
.layui-col-xs-offset11{margin-left: 91.66666667%;}
.layui-col-xs-offset12{margin-left: 100%;}
/* è¶…小屏幕(手机) */
@media screen and (max-width: 768px) {
  .layui-hide-xs{display: none!important;}
  .layui-show-xs-block{display: block!important;}
  .layui-show-xs-inline{display: inline!important;}
  .layui-show-xs-inline-block{display: inline-block!important;}
}
/* å°åž‹å±å¹•(平板) */
@media screen and (min-width: 768px) {
  .layui-container{width: 750px;}
  .layui-hide-sm{display: none!important;}
  .layui-show-sm-block{display: block!important;}
  .layui-show-sm-inline{display: inline!important;}
  .layui-show-sm-inline-block{display: inline-block!important;}
  .layui-col-sm1, .layui-col-sm2, .layui-col-sm3, .layui-col-sm4, .layui-col-sm5, .layui-col-sm6, .layui-col-sm7, .layui-col-sm8, .layui-col-sm9, .layui-col-sm10, .layui-col-sm11, .layui-col-sm12{float: left;}
  .layui-col-sm1{width: 8.33333333%;}
  .layui-col-sm2{width: 16.66666667%;}
  .layui-col-sm3{width: 25%;}
  .layui-col-sm4{width: 33.33333333%;}
  .layui-col-sm5{width: 41.66666667%;}
  .layui-col-sm6{width: 50%;}
  .layui-col-sm7{width: 58.33333333%;}
  .layui-col-sm8{width: 66.66666667%;}
  .layui-col-sm9{width: 75%;}
  .layui-col-sm10{width: 83.33333333%;}
  .layui-col-sm11{width: 91.66666667%;}
  .layui-col-sm12{width: 100%;}
  /* åˆ—偏移 */
  .layui-col-sm-offset1{margin-left: 8.33333333%;}
  .layui-col-sm-offset2{margin-left: 16.66666667%;}
  .layui-col-sm-offset3{margin-left: 25%;}
  .layui-col-sm-offset4{margin-left: 33.33333333%;}
  .layui-col-sm-offset5{margin-left: 41.66666667%;}
  .layui-col-sm-offset6{margin-left: 50%;}
  .layui-col-sm-offset7{margin-left: 58.33333333%;}
  .layui-col-sm-offset8{margin-left: 66.66666667%;}
  .layui-col-sm-offset9{margin-left: 75%;}
  .layui-col-sm-offset10{margin-left: 83.33333333%;}
  .layui-col-sm-offset11{margin-left: 91.66666667%;}
  .layui-col-sm-offset12{margin-left: 100%;}
}
/* ä¸­åž‹å±å¹•(桌面) */
@media screen and (min-width: 992px) {
  .layui-container{width: 970px;}
  .layui-hide-md{display: none!important;}
  .layui-show-md-block{display: block!important;}
  .layui-show-md-inline{display: inline!important;}
  .layui-show-md-inline-block{display: inline-block!important;}
  .layui-col-md1, .layui-col-md2, .layui-col-md3, .layui-col-md4, .layui-col-md5, .layui-col-md6, .layui-col-md7, .layui-col-md8, .layui-col-md9, .layui-col-md10, .layui-col-md11, .layui-col-md12{float: left;}
  .layui-col-md1{width: 8.33333333%;}
  .layui-col-md2{width: 16.66666667%;}
  .layui-col-md3{width: 25%;}
  .layui-col-md4{width: 33.33333333%;}
  .layui-col-md5{width: 41.66666667%;}
  .layui-col-md6{width: 50%;}
  .layui-col-md7{width: 58.33333333%;}
  .layui-col-md8{width: 66.66666667%;}
  .layui-col-md9{width: 75%;}
  .layui-col-md10{width: 83.33333333%;}
  .layui-col-md11{width: 91.66666667%;}
  .layui-col-md12{width: 100%;}
  /* åˆ—偏移 */
  .layui-col-md-offset1{margin-left: 8.33333333%;}
  .layui-col-md-offset2{margin-left: 16.66666667%;}
  .layui-col-md-offset3{margin-left: 25%;}
  .layui-col-md-offset4{margin-left: 33.33333333%;}
  .layui-col-md-offset5{margin-left: 41.66666667%;}
  .layui-col-md-offset6{margin-left: 50%;}
  .layui-col-md-offset7{margin-left: 58.33333333%;}
  .layui-col-md-offset8{margin-left: 66.66666667%;}
  .layui-col-md-offset9{margin-left: 75%;}
  .layui-col-md-offset10{margin-left: 83.33333333%;}
  .layui-col-md-offset11{margin-left: 91.66666667%;}
  .layui-col-md-offset12{margin-left: 100%;}
}
/* å¤§åž‹å±å¹•(桌面) */
@media screen and (min-width: 1200px) {
  .layui-container{width: 1170px;}
  .layui-hide-lg{display: none!important;}
  .layui-show-lg-block{display: block!important;}
  .layui-show-lg-inline{display: inline!important;}
  .layui-show-lg-inline-block{display: inline-block!important;}
  .layui-col-lg1, .layui-col-lg2, .layui-col-lg3, .layui-col-lg4, .layui-col-lg5, .layui-col-lg6, .layui-col-lg7, .layui-col-lg8, .layui-col-lg9, .layui-col-lg10, .layui-col-lg11, .layui-col-lg12{float: left;}
  .layui-col-lg1{width: 8.33333333%;}
  .layui-col-lg2{width: 16.66666667%;}
  .layui-col-lg3{width: 25%;}
  .layui-col-lg4{width: 33.33333333%;}
  .layui-col-lg5{width: 41.66666667%;}
  .layui-col-lg6{width: 50%;}
  .layui-col-lg7{width: 58.33333333%;}
  .layui-col-lg8{width: 66.66666667%;}
  .layui-col-lg9{width: 75%;}
  .layui-col-lg10{width: 83.33333333%;}
  .layui-col-lg11{width: 91.66666667%;}
  .layui-col-lg12{width: 100%;}
  /* åˆ—偏移 */
  .layui-col-lg-offset1{margin-left: 8.33333333%;}
  .layui-col-lg-offset2{margin-left: 16.66666667%;}
  .layui-col-lg-offset3{margin-left: 25%;}
  .layui-col-lg-offset4{margin-left: 33.33333333%;}
  .layui-col-lg-offset5{margin-left: 41.66666667%;}
  .layui-col-lg-offset6{margin-left: 50%;}
  .layui-col-lg-offset7{margin-left: 58.33333333%;}
  .layui-col-lg-offset8{margin-left: 66.66666667%;}
  .layui-col-lg-offset9{margin-left: 75%;}
  .layui-col-lg-offset10{margin-left: 83.33333333%;}
  .layui-col-lg-offset11{margin-left: 91.66666667%;}
  .layui-col-lg-offset12{margin-left: 100%;}
}
/* åˆ—é—´éš” */.layui-col-space1{margin: -0.5px;}
.layui-col-space1>*{padding: 0.5px;}
.layui-col-space3{margin: -1.5px;}
.layui-col-space3>*{padding: 1.5px;}
.layui-col-space5{margin: -2.5px;}
.layui-col-space5>*{padding: 2.5px;}
.layui-col-space8{margin: -3.5px;}
.layui-col-space8>*{padding: 3.5px;}
.layui-col-space10{margin: -5px;}
.layui-col-space10>*{padding: 5px;}
.layui-col-space12{margin: -6px;}
.layui-col-space12>*{padding: 6px;}
.layui-col-space15{margin: -7.5px;}
.layui-col-space15>*{padding: 7.5px;}
.layui-col-space18{margin: -9px;}
.layui-col-space18>*{padding: 9px;}
.layui-col-space20{margin: -10px;}
.layui-col-space20>*{padding: 10px;}
.layui-col-space22{margin: -11px;}
.layui-col-space22>*{padding: 11px;}
.layui-col-space25{margin: -12.5px;}
.layui-col-space25>*{padding: 12.5px;}
.layui-col-space30{margin: -15px;}
.layui-col-space30>*{padding: 15px;}
/** é¡µé¢å…ƒç´  **/
.layui-btn, .layui-input, .layui-textarea, .layui-upload-button, .layui-select{outline: none; -webkit-appearance: none; transition: all .3s; -webkit-transition: all .3s; box-sizing: border-box;}
/* å¼•用 */.layui-elem-quote{margin-bottom: 10px; padding: 15px; line-height: 22px; border-left: 5px solid #009688; border-radius: 0 2px 2px 0; background-color: #f2f2f2;}
.layui-quote-nm{border-style: solid; border-width: 1px; border-left-width: 5px; background: none;}
/* å­—段集合 */.layui-elem-field{margin-bottom: 10px; padding: 0; border-width: 1px; border-style: solid;}
.layui-elem-field legend{margin-left: 20px; padding: 0 10px; font-size: 20px; font-weight: 300;}
.layui-field-title{margin: 10px 0 20px; border-width: 0; border-top-width: 1px;}
.layui-field-box{padding: 10px 15px;}
.layui-field-title .layui-field-box{padding: 10px 0;}
/* è¿›åº¦æ¡ */
.layui-progress{position: relative; height: 6px; border-radius: 20px; background-color: #e2e2e2;}
.layui-progress-bar{position: absolute; left: 0; top: 0; width: 0; max-width: 100%; height: 6px; border-radius: 20px; text-align: right; background-color: #5FB878; transition: all .3s; -webkit-transition: all .3s;}
.layui-progress-big,
.layui-progress-big .layui-progress-bar{height: 18px; line-height: 18px;}
.layui-progress-text{position: relative; top: -20px; line-height: 18px; font-size: 12px; color: #666}
.layui-progress-big .layui-progress-text{position: static; padding: 0 10px; color: #fff;}
/*
  é¢æ¿
*/
/* æŠ˜å é¢æ¿ */
.layui-collapse{border-width: 1px; border-style: solid; border-radius: 2px;}
.layui-colla-item,
.layui-colla-content{border-top-width: 1px; border-top-style: solid;}
.layui-colla-item:first-child{border-top: none;}
.layui-colla-title{position: relative; height: 42px; line-height: 42px; padding: 0 15px 0 35px; color: #333; background-color: #f2f2f2; cursor: pointer; font-size: 14px;}
.layui-colla-content{display: none; padding: 10px 15px; line-height: 22px; color: #666;}
.layui-colla-icon{position: absolute; left: 15px; top: 0; font-size: 14px;}
/* å¡ç‰‡é¢æ¿ */
.layui-card{margin-bottom: 15px; border-radius: 2px; background-color: #fff; box-shadow: 0 1px 2px 0 rgba(0,0,0,.05);}
.layui-card:last-child{margin-bottom: 0;}
.layui-card-header{position: relative; height: 42px; line-height: 42px; padding: 0 15px; border-bottom: 1px solid #f6f6f6; color: #333; border-radius: 2px 2px 0 0; font-size: 14px;}
.layui-card-body{position: relative; padding: 10px 15px; line-height: 24px;}
.layui-card-body .layui-table{margin: 5px 0;}
.layui-card .layui-tab{margin: 0;}
/* å¸¸è§„面板 */
.layui-panel{}
/* çª—口面板 */
.layui-panel-window{position: relative; padding: 15px; border-radius: 0; border-top: 5px solid #E6E6E6; background-color: #fff;}
/*
  é»˜è®¤ä¸»é¢˜
*/
/* èƒŒæ™¯é¢œè‰² */
.layui-bg-red{background-color: #FF5722 !important; color: #fff!important;} /*赤*/
.layui-bg-orange{background-color: #FFB800!important; color: #fff!important;} /*橙*/
.layui-bg-green{background-color: #009688!important; color: #fff!important;} /*绿*/
.layui-bg-cyan{background-color: #2F4056!important; color: #fff!important;} /*青*/
.layui-bg-blue{background-color: #1E9FFF!important; color: #fff!important;} /*蓝*/
.layui-bg-black{background-color: #393D49!important; color: #fff!important;} /*黑*/
.layui-bg-gray{background-color: #eee!important; color: #666!important;} /*灰*/
/* è¾¹æ¡† */
.layui-quote-nm,
.layui-elem-field,
.layui-collapse,
.layui-colla-item,
.layui-colla-content,
.layui-badge-rim,
.layui-tab-title,
.layui-tab-title .layui-this:after,
.layui-tab-bar,
.layui-tab-card,
.layui-input, .layui-textarea, .layui-select,
.layui-form-pane .layui-form-label,
.layui-form-pane .layui-form-item[pane],
.layui-layedit, .layui-layedit-tool{border-color: #e6e6e6}
/* èƒŒæ™¯è¾¹æ¡† */
hr, .layui-timeline-item:before{background-color: #e6e6e6;}
/* æ–‡æœ¬åŒºåŸŸ */
.layui-text{line-height: 22px; font-size: 14px; color: #666;}
.layui-text h1,
.layui-text h2,
.layui-text h3{font-weight: 500; color: #333;}
.layui-text h1{font-size: 30px;}
.layui-text h2{font-size: 24px;}
.layui-text h3{font-size: 18px;}
.layui-text a:not(.layui-btn){color: #01AAED;}
.layui-text a:not(.layui-btn):hover{text-decoration: underline;}
.layui-text ul{padding: 5px 0 5px 15px;}
.layui-text ul li{margin-top: 5px; list-style-type: disc;}
.layui-text em,
.layui-word-aux{color: #999 !important; padding: 0 5px !important;}
/*
  æŒ‰é’®
*/
.layui-btn{display: inline-block; vertical-align: middle; height: 38px; line-height: 38px; padding: 0 18px; background-color: #009688; color: #fff; white-space: nowrap; text-align: center; font-size: 14px; border: none; border-radius: 2px; cursor: pointer; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}
.layui-btn:hover{opacity: 0.8; filter:alpha(opacity=80); color: #fff;}
.layui-btn:active{opacity: 1; filter:alpha(opacity=100);}
.layui-btn+.layui-btn{margin-left: 10px;}
.layui-layer-btn-beforeinfo{
    padding:5px 10px 10px 5px;
    text-align:left;
    border:1px solid #E9E7E7;
    float:left;
    display:inline-block;
    vertical-align: middle;
  margin-top:10px;
  margin-left:5px;
}
/* æŒ‰é’®å®¹å™¨ */
.layui-btn-container{font-size: 0;}
.layui-btn-container .layui-btn{margin-right: 10px; margin-top: 5px;}
.layui-btn-container .layui-btn+.layui-btn{margin-left: 0;}
.layui-table .layui-btn-container .layui-btn{margin-bottom: 9px;}
/* åœ†è§’ */.layui-btn-radius{border-radius: 100px;}
.layui-btn .layui-icon{margin-right: 3px; font-size: 18px; vertical-align: bottom; vertical-align: middle\0;}
/* åŽŸå§‹ */.layui-btn-primary{border: 1px solid #C9C9C9; background-color: #fff; color: #555;}
.layui-btn-primary:hover{border-color: #009688; color: #333}
/* ç™¾æ­ */.layui-btn-normal{background-color: #1E9FFF;}
/* æš–色 */.layui-btn-warm{background-color: #FFB800;}
/* è­¦å‘Š */.layui-btn-danger{background-color: #FF5722;}
/* ç¦ç”¨ */.layui-btn-disabled,.layui-btn-disabled:hover,.layui-btn-disabled:active{border: 1px solid #e6e6e6; background-color: #FBFBFB; color: #C9C9C9; cursor: not-allowed; opacity: 1;}
/* å¤§åž‹ */.layui-btn-lg{height: 44px; line-height: 44px; padding: 0 25px; font-size: 16px;}
/* å°åž‹ */.layui-btn-sm{height: 30px; line-height: 30px; padding: 0 10px; font-size: 12px;}
.layui-btn-sm i{font-size: 16px !important;}
/* è¶…小 */.layui-btn-xs{height: 22px; line-height: 22px; padding: 0 5px; font-size: 12px;}
.layui-btn-xs i{font-size: 14px !important;}
/* æŒ‰é’®ç»„ */.layui-btn-group{display: inline-block; vertical-align: middle; font-size: 0;}
.layui-btn-group .layui-btn{margin-left: 0!important; margin-right: 0!important; border-left: 1px solid rgba(255,255,255,.5); border-radius: 0;}
.layui-btn-group .layui-btn-primary{border-left: none;}
.layui-btn-group .layui-btn-primary:hover{border-color: #C9C9C9; color: #009688;}
.layui-btn-group .layui-btn:first-child{border-left: none; border-radius: 2px 0 0 2px;}
.layui-btn-group .layui-btn-primary:first-child{border-left: 1px solid #c9c9c9;}
.layui-btn-group .layui-btn:last-child{border-radius: 0 2px 2px 0;}
.layui-btn-group .layui-btn+.layui-btn{margin-left: 0;}
.layui-btn-group+.layui-btn-group{margin-left: 10px;}
/* æµä½“ */.layui-btn-fluid{width: 100%;}
/** è¡¨å• **/
.layui-form{/*weidy添加,默认留10px的空白*/
  margin-top:10px;
}
.layui-input, .layui-textarea, .layui-select{height: 38px; line-height: 1.3; line-height: 38px\9; border-width: 1px; border-style: solid; background-color: #fff; border-radius: 2px;}
.layui-input::-webkit-input-placeholder,
.layui-textarea::-webkit-input-placeholder,
.layui-select::-webkit-input-placeholder{line-height: 1.3;}
.layui-input, .layui-textarea{display: block; width: 100%; padding-left: 10px;}
.layui-input:hover, .layui-textarea:hover{border-color: #D2D2D2 !important;}
.layui-input:focus, .layui-textarea:focus{border-color: #C9C9C9 !important;}
.layui-textarea{position: relative; min-height: 100px; height: auto; line-height: 20px; padding: 6px 10px; resize: vertical;}
.layui-select{padding: 0 10px;}
.layui-form select,
.layui-form input[type=checkbox],
.layui-form input[type=radio]{display: none;}
.layui-form *[lay-ignore]{display: initial;}
.layui-form-item{/*margin-bottom: 15px;*/ clear: both; *zoom: 1;}
.layui-form-item:after{content:'\20'; clear: both; *zoom: 1; display: block; height:0;}
.layui-form-label{position: relative; float: left; display: block; padding: 9px 15px;  width: 80px; font-weight: 400; line-height: 20px; text-align: right;font-weight: 400}
.layui-form-label-col{display: block; float: none; padding: 9px 0; line-height: 20px; text-align: left;}
.layui-form-item .layui-inline{margin-bottom: 5px; margin-right: 10px;}
.layui-input-block, .layui-input-inline{position: relative;}
.layui-input-block{margin-left: 110px; min-height: 36px;margin-bottom:15px;}
.layui-input-inline{display: inline-block; vertical-align: middle;}
.layui-form-item .layui-input-inline{float: left; min-width: 190px; margin-right: 10px;margin-bottom:15px;}
.layui-form-text .layui-input-inline{width: auto;}
/*必输字段,添加红星号 weidy@2018-03-05*/
.layui-field-required {}
.layui-field-required:after{
    content:'*';
    color:red;
}
/*关键属性,添加蓝色的星号 weidy@2022-2-26*/
.layui-field-key-field{
  font-family:"layui-icon" !important;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.layui-field-key-field:before{
  content: "\e67a";
  font-size:10px;
  color: #0e33d4;
}
/* åªè¯»å­—段,添加灰色的背景 weidy@2018-03-05*/
.layui-field-readonly{
    background-color:#e2dfdf;
}
/* åˆ†å‰²å— */.layui-form-mid{position: relative; float: left; display: block; padding: 9px 0 !important; line-height: 20px; margin-right: 10px;}
/* è­¦å‘ŠåŸŸ */.layui-form-danger:focus
,.layui-form-danger+.layui-form-select .layui-input{border-color: #FF5722 !important;}
/* ä¸‹æ‹‰é€‰æ‹© */.layui-form-select{position: relative;}
.layui-form-select .layui-input{padding-right: 30px; cursor: pointer;}
.layui-form-select .layui-edge{position: absolute; right: 10px; top: 50%; margin-top: -3px; cursor: pointer; border-width: 6px; border-top-color: #c2c2c2; border-top-style: solid; transition: all .3s; -webkit-transition: all .3s;}
.layui-form-select dl{display: none; position: absolute; left: 0; top: 42px; padding: 5px 0; z-index: 999; min-width: 100%; border: 1px solid #d2d2d2; max-height: 300px; overflow-y: auto; background-color: #fff; border-radius: 2px; box-shadow: 0 2px 4px rgba(0,0,0,.12); box-sizing: border-box;}
.layui-form-select dl dt,
.layui-form-select dl dd{padding: 0 10px; line-height: 36px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.layui-form-select dl dt{font-size: 12px; color: #999;}
.layui-form-select dl dd{cursor: pointer;}
.layui-form-select dl dd:hover{background-color: #f2f2f2;}
.layui-form-select .layui-select-group dd{padding-left: 20px;}
.layui-form-select dl dd.layui-select-tips{padding-left: 10px !important; color: #999;}
.layui-form-select dl dd.layui-this{background-color: #5FB878; color: #fff;}
.layui-form-select dl dd.layui-disabled{background-color: #fff;}
.layui-form-selected dl{display: block;}
.layui-form-selected .layui-edge{margin-top: -9px; -webkit-transform:rotate(180deg); transform: rotate(180deg);}
.layui-form-selected .layui-edge{margin-top: -3px\0; }
:root .layui-form-selected .layui-edge{margin-top: -9px\0/IE9;}
.layui-form-selectup dl{top: auto; bottom: 42px;}
.layui-select-none{margin: 5px 0; text-align: center; color: #999;}
.layui-select-disabled .layui-disabled{border-color: #eee !important;}
.layui-select-disabled .layui-edge{border-top-color: #d2d2d2}
/* å‚照框中的搜索图标 weidy@2018-03-07*/
.layui-form-select  .layui-search{
    position: absolute;
    right: 21px;
    top: 30%;
    margin-top: 0px;
  cursor: pointer;
    font-family:"layui-icon" !important;
    font-size: 16px;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.layui-form-select  .layui-search:before{
    content:"\e615";
}
/* å‚照框中的清除图标 weidy@2018-03-07*/
.layui-form-select .layui-clear {
    position: absolute;
  right: 5px;
  top: 30%;
  margin-top: 0px;
  cursor: pointer;
    font-family:"layui-icon" !important;
    font-size: 16px;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.layui-form-select .layui-clear:after{
    content:"\1006";
}
/* å¤é€‰æ¡† */.layui-form-checkbox{position: relative; display: inline-block; vertical-align: middle; height: 30px; line-height: 28px; margin-right: 10px; padding-right: 30px; border: 1px solid #d2d2d2; background-color: #fff; cursor: pointer; font-size: 0; border-radius: 2px;  -webkit-transition: .1s linear; transition: .1s linear; box-sizing: border-box;}
.layui-form-checkbox:hover{border: 1px solid #c2c2c2;}
.layui-form-checkbox *{display: inline-block; vertical-align: middle;}
.layui-form-checkbox span{padding: 0 10px; height: 100%; font-size: 14px; background-color: #d2d2d2; color: #fff; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
.layui-form-checkbox:hover span{background-color: #c2c2c2;}
.layui-form-checkbox i{position: absolute; right: 0; width: 30px; color: #fff; font-size: 20px; text-align: center;}
.layui-form-checkbox:hover i{color: #c2c2c2;}
.layui-form-checked, .layui-form-checked:hover{border-color: #5FB878;}
.layui-form-checked span, .layui-form-checked:hover span{background-color: #5FB878;}
.layui-form-checked i, .layui-form-checked:hover i{color: #5FB878;}
.layui-form-item .layui-form-checkbox{margin-top: 4px;}
/* å¤é€‰æ¡†-原始风格 */
.layui-form-checkbox[lay-skin="primary"] {height: auto!important;line-height: normal!important; min-width: 16px;min-height: 16px;border: none!important;margin-right: 0;padding-left: 28px;padding-right: 0;background:none}
.layui-form-checkbox[lay-skin="primary"] span {padding-left: 0;padding-right: 15px;line-height: 16px;background: 0 0;color: #666}
.layui-form-checkbox[lay-skin="primary"] i {right: auto;left: 0;width: 16px;height: 16px;line-height: 16px;border: 1px solid #d2d2d2;font-size: 12px;
  border-radius: 2px;background-color: #fff;-webkit-transition: .1s linear;transition: .1s linear}
.layui-form-checkbox[lay-skin="primary"]:hover i {border-color: #5FB878;color: #fff}
.layui-form-checked[lay-skin="primary"] i {border-color: #5FB878!important;background-color: #5FB878;color: #fff}
.layui-checkbox-disabled[lay-skin="primary"] span {background: 0 0!important;color: #c2c2c2!important}
.layui-checkbox-disabled[lay-skin="primary"]:hover i {border-color: #d2d2d2}
.layui-form-item .layui-form-checkbox[lay-skin="primary"] {margin-top: 10px}
/* å¤é€‰æ¡†-开关风格 */
.layui-form-switch {position: relative;height: 22px;line-height: 24px;width: 42px;padding: 0 5px;margin-top: 6px;border: 1px solid #d2d2d2;border-radius: 20px;box-sizing:content-box;cursor: pointer;background-color: #fff;-webkit-transition: .1s linear;transition: .1s linear}
.layui-form-switch i {position: absolute;left: 5px;top: 3px; width: 16px;height: 16px;border-radius: 20px;background-color: #d2d2d2;-webkit-transition: .1s linear;transition: .1s linear}
.layui-form-switch em {position: relative;top: 0;width: 25px;margin-left: 26px;padding: 0!important;text-align: center!important;color: #999!important;font-style: normal!important;font-size: 12px}
.layui-form-onswitch {border-color: #5FB878;background-color: #5FB878}
.layui-form-onswitch i {left: 100%;margin-left: -21px;background-color: #fff}
.layui-form-onswitch em {margin-left: 5px;margin-right: 21px;color: #fff!important}
.layui-checkbox-disbaled{border-color: #e2e2e2 !important;}
.layui-checkbox-disbaled span{background-color: #e2e2e2 !important;}
.layui-checkbox-disbaled:hover i{color: #fff !important;}
/* å•选框 */
*[lay-radio]{display: none;}
.layui-form-radio{display: inline-block; vertical-align: middle; line-height: 28px; margin: 6px 10px 0 0; padding-right: 10px; cursor: pointer; font-size: 0;}
.layui-form-radio *{display: inline-block; vertical-align: middle; font-size: 14px;}
.layui-form-radio>i{margin-right: 8px; font-size: 22px; color: #c2c2c2;}
.layui-form-radioed>i,.layui-form-radio>i:hover{color: #5FB878;}
.layui-radio-disbaled>i{color: #e2e2e2 !important;}
/* è¡¨å•方框风格 */.layui-form-pane .layui-form-label{width: 110px; padding: 8px 15px; height: 38px; line-height: 20px; border-width: 1px; border-style: solid; border-radius: 2px 0 0 2px; text-align: center; background-color: #FBFBFB; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; box-sizing: border-box;}
.layui-form-pane .layui-input-inline{margin-left: -1px;}
.layui-form-pane .layui-input-block{margin-left: 110px; left: -1px;}
.layui-form-pane .layui-input{border-radius: 0 2px 2px 0;}
.layui-form-pane .layui-form-text .layui-form-label{float: none; width: 100%; border-radius: 2px; box-sizing: border-box; text-align: left;}
.layui-form-pane .layui-form-text .layui-input-inline{display: block; margin: 0; top: -1px; clear: both;}
.layui-form-pane .layui-form-text .layui-input-block{margin: 0; left: 0; top: -1px;}
.layui-form-pane .layui-form-text .layui-textarea{min-height: 100px; border-radius: 0 0 2px 2px;}
.layui-form-pane .layui-form-checkbox{margin: 4px 0 4px 10px;}
.layui-form-pane .layui-form-switch,
.layui-form-pane .layui-form-radio{margin-top: 6px; margin-left: 10px; }
.layui-form-pane .layui-form-item[pane]{position: relative; border-width: 1px; border-style: solid;}
.layui-form-pane .layui-form-item[pane] .layui-form-label{position: absolute; left: 0; top: 0; height: 100%; border-width: 0px; border-right-width: 1px;}
.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left: 110px;}
/** è¡¨å•响应式 **/
@media screen and (max-width: 450px) {
  .layui-form-item .layui-form-label{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
  .layui-form-item .layui-inline{display: block; margin-right: 0; margin-bottom: 20px; clear: both;}
  .layui-form-item .layui-inline:after{content:'\20'; clear:both; display:block; height:0;}
  .layui-form-item .layui-input-inline{display: block; float: none; left: -3px; width: auto; margin: 0 0 10px 112px; }
  .layui-form-item .layui-input-inline+.layui-form-mid{margin-left: 110px; top: -5px; padding: 0;}
  .layui-form-item .layui-form-checkbox{margin-right: 5px; margin-bottom: 5px;}
}
/** å¯Œæ–‡æœ¬ç¼–辑器 **/
.layui-layedit{border-width: 1px; border-style: solid; border-radius: 2px;}
.layui-layedit-tool{padding: 3px 5px; border-bottom-width: 1px; border-bottom-style: solid; font-size: 0;}
.layedit-tool-fixed{position: fixed; top: 0; border-top: 1px solid #e2e2e2;}
.layui-layedit-tool .layedit-tool-mid,
.layui-layedit-tool .layui-icon{display: inline-block; vertical-align: middle; text-align: center; font-size: 14px;}
.layui-layedit-tool .layui-icon{position: relative; width: 32px; height: 30px; line-height: 30px; margin: 3px 5px; border-radius: 2px; color: #777; cursor: pointer; border-radius: 2px;}
.layui-layedit-tool .layui-icon:hover{color: #393D49;}
.layui-layedit-tool .layui-icon:active{color: #000;}
.layui-layedit-tool .layedit-tool-active{background-color: #e2e2e2; color: #000;}
.layui-layedit-tool .layui-disabled,
.layui-layedit-tool .layui-disabled:hover{color: #d2d2d2; cursor: not-allowed;}
.layui-layedit-tool .layedit-tool-mid{width: 1px; height: 18px; margin: 0 10px; background-color: #d2d2d2;}
.layedit-tool-html{width: 50px !important; font-size: 30px !important;}
.layedit-tool-b,
.layedit-tool-code,
.layedit-tool-help{font-size: 16px !important;}
.layedit-tool-d,
.layedit-tool-unlink,
.layedit-tool-face,
.layedit-tool-image{font-size: 18px !important;}
.layedit-tool-image input{position: absolute; font-size: 0; left: 0; top: 0; width: 100%; height: 100%; opacity: 0.01; filter: Alpha(opacity=1); cursor: pointer;}
.layui-layedit-iframe iframe{display: block; width: 100%;}
#LAY_layedit_code{overflow: hidden;}
/** åˆ†é¡µ **/
.layui-laypage{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; margin: 10px 0; font-size: 0;}
.layui-laypage>a:first-child,
.layui-laypage>a:first-child em{border-radius: 2px 0 0 2px;}
.layui-laypage>a:last-child,
.layui-laypage>a:last-child em{border-radius: 0 2px 2px 0;}
.layui-laypage>*:first-child{margin-left: 0!important;}
.layui-laypage>*:last-child{margin-right: 0!important;}
.layui-laypage a,
.layui-laypage span,
.layui-laypage input,
.layui-laypage button,
.layui-laypage select{border: 1px solid #e2e2e2;}
.layui-laypage a,
.layui-laypage span{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; padding: 0 15px; height: 28px; line-height: 28px; margin: 0 -1px 5px 0; background-color: #fff; color: #333; font-size: 12px;}
.layui-laypage a:hover{color: #009688;}
.layui-laypage em{font-style: normal;}
.layui-laypage .layui-laypage-spr{color:#999; font-weight: 700;}
.layui-laypage a{ text-decoration: none;}
.layui-laypage .layui-laypage-curr{position: relative;}
.layui-laypage .layui-laypage-curr em{position: relative; color: #fff;}
.layui-laypage .layui-laypage-curr .layui-laypage-em{position: absolute; left: -1px; top: -1px; padding: 1px; width: 100%; height: 100%; background-color: #009688; }
.layui-laypage-em{border-radius: 2px;}
.layui-laypage-prev em,
.layui-laypage-next em{font-family: Sim sun; font-size: 16px;}
.layui-laypage .layui-laypage-count,
.layui-laypage .layui-laypage-limits,
.layui-laypage .layui-laypage-skip{margin-left: 10px; margin-right: 10px; padding: 0; border: none;}
.layui-laypage .layui-laypage-limits{vertical-align: top;}
.layui-laypage select{height: 22px; padding: 3px; border-radius: 2px; cursor: pointer;}
.layui-laypage .layui-laypage-skip{height: 30px; line-height: 30px; color: #999;}
/**weidy添加刷新按钮**/
.layui-laypage .layui-laypage-refresh-btn{height:30px;line-height:30px;color:#999;}
.layui-laypage input, .layui-laypage button{height: 30px; line-height: 30px; border-radius: 2px; vertical-align: top;  background-color: #fff; box-sizing: border-box;}
.layui-laypage input{display: inline-block; width: 40px; margin: 0 10px; padding: 0 3px; text-align: center;}
.layui-laypage input:focus,
.layui-laypage select:focus{border-color: #009688!important;}
.layui-laypage button{margin-left: 10px; padding: 0 10px; cursor: pointer;}
/** æµåŠ è½½ **/
.layui-flow-more{margin: 10px 0; text-align: center; color: #999; font-size: 14px;}
.layui-flow-more a{ height: 32px; line-height: 32px;  }
.layui-flow-more a *{display: inline-block; vertical-align: top;}
.layui-flow-more a cite{padding: 0 20px; border-radius: 3px; background-color: #eee; color: #333; font-style: normal;}
.layui-flow-more a cite:hover{opacity: 0.8;}
.layui-flow-more a i{font-size: 30px; color: #737383;}
/** è¡¨æ ¼ **/  /*修改表格margin-top为0px,原为10px*/
.layui-table{width: 100%; margin: 0px 0; background-color: #fff; color: #666;}
.layui-table tr{transition: all .3s; -webkit-transition: all .3s;}
/** è¡¨æ ¼çš„工具栏 **/
.layui-table-toolbar{
    text-align:left;
    border:0;
    height:25px;
    float:left;
    display:inline-block;
    vertical-align: middle;
    padding: 5px;
    margin-top:5px;
}
/** weidy@2018-03-05 ä¿®æ”¹è¡¨æ ¼æ ‡é¢˜ä¸ºå±…中,原本为left**/
.layui-table th{text-align: center; font-weight: 400;}
.layui-table thead tr,
.layui-table-header,
.layui-table-tool,
.layui-table-patch,
.layui-table-mend,
.layui-table[lay-even] tr:nth-child(even),
.layui-table-hover,
.layui-table-total,
.layui-table-total tr
{background-color: #f2f2f2;}
.layui-table tbody tr:hover,.layui-table-click{
  background-color: #ccc;
}
.layui-table th,
.layui-table td,
.layui-table[lay-skin="line"],
.layui-table[lay-skin="row"],
.layui-table-view,
.layui-table-header,
.layui-table-tool,
.layui-table-page,
.layui-table-fixed-r,
.layui-table-tips-main{border-width: 1px; border-style: solid; border-color: #e6e6e6;}
/*   weidy@2018-03-15 ä¿®æ”¹é»˜è®¤é«˜åº¦ï¼ŒåŽŸæ˜¯20,现在修改到14 å­—号原始14,现在修改为12*/
.layui-table th, .layui-table td{position: relative; padding: 9px 15px; min-height: 20px; line-height: 20px;  font-size: 14px;}
.layui-table[lay-skin="line"] th, .layui-table[lay-skin="line"] td{border-width: 0; border-bottom-width: 1px;}
.layui-table[lay-skin="row"] th, .layui-table[lay-skin="row"] td{border-width: 0;border-right-width: 1px;}
.layui-table[lay-skin="nob"] th, .layui-table[lay-skin="nob"] td{border: none;}
.layui-table img{max-width:100px;}
/* å¤§è¡¨æ ¼ */.layui-table[lay-size="lg"] th,
.layui-table[lay-size="lg"] td{padding-top: 15px; padding-right: 30px; padding-bottom: 15px; padding-left: 30px;}
.layui-table-view .layui-table[lay-size="lg"] .layui-table-cell{height: 40px; line-height: 40px;}
/* å°è¡¨æ ¼ */.layui-table[lay-size="sm"] th,
.layui-table[lay-size="sm"] td{padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; font-size: 12px;}
.layui-table-view .layui-table[lay-size="sm"] .layui-table-cell{height: 20px; line-height: 20px;}
/* æ•°æ®è¡¨æ ¼ */
.layui-table[lay-data]{display: none;}
.layui-table-view,
.layui-table-box{position: relative; /*overflow: hidden;*/}
/*修改margin为5px,原为10*/
.layui-table-view{margin: 5px 0;}
.layui-table-view .layui-table{position: relative; width: auto; margin: 0;}
.layui-table-view .layui-table[lay-skin="line"]{border-width: 0; border-right-width: 1px;}
.layui-table-view .layui-table[lay-skin="row"]{border-width: 0; border-bottom-width: 1px;}
.layui-table-view .layui-table th,
.layui-table-view .layui-table td{padding: 5px 0; border-top: none; border-left: none;}
.layui-table-view .layui-table td{cursor: default;}
.layui-table-view .layui-table td[data-edit=text] {cursor: text}
/*wangting ä¿®æ”¹å¤é€‰æ¡†çš„大小,原为18,现在为16*/
.layui-table-view .layui-form-checkbox[lay-skin="primary"] i{width: 16px; height: 16px;}
.layui-table-view .layui-form-radio {
  line-height: 0;
  padding: 0
}
.layui-table-view .layui-form-radio>i {
  margin: 0;
  font-size: 20px
}
.layui-table-init {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  text-align: center;
  z-index: 110
}
.layui-table-init .layui-icon {
  position: absolute;
  left: 50%;
  top: 50%;
  margin: -15px 0 0 -15px;
  font-size: 30px;
  color: #c2c2c2
}
.layui-table-header{border-width: 0; border-bottom-width: 1px; overflow: hidden;}
.layui-table-header .layui-table{margin-bottom: -1px;}
.layui-table-sort{width: 10px; height: 20px; margin-left: 5px; cursor: pointer!important;}
.layui-table-sort .layui-edge{position: absolute; left: 5px; border-width: 5px;}
.layui-table-sort .layui-table-sort-asc{top: 4px; border-top: none; border-bottom-style: solid; border-bottom-color: #b2b2b2;}
.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color: #666;}
.layui-table-sort .layui-table-sort-desc{bottom: 4px; border-bottom: none; border-top-style: solid; border-top-color: #b2b2b2;}
.layui-table-sort .layui-table-sort-desc:hover{border-top-color: #666;}
.layui-table-sort[lay-sort="asc"] .layui-table-sort-asc{border-bottom-color: #000;}
.layui-table-sort[lay-sort="desc"] .layui-table-sort-desc{border-top-color: #000;}
/* weidy@2018-03-15 ä¿®æ”¹é»˜è®¤é«˜åº¦ï¼ŒåŽŸä¸º28,现在修改到16*/
.layui-table-cell{height: 16px; line-height: 16px; padding: 0 15px; position: relative; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; box-sizing: border-box;}
.layui-table-cell .layui-form-checkbox[lay-skin="primary"]{top: -1px; vertical-align: middle;padding: 0}
.layui-table-cell .layui-table-link{color: #01AAED;}
.laytable-cell-checkbox,
.laytable-cell-space,
.laytable-cell-numbers{padding: 0; text-align: center;}
.layui-table-body{position: relative; overflow: auto; margin-right: -1px; margin-bottom: -1px;}
.layui-table-body .layui-none{line-height: 40px; text-align: center; color: #999;}
.layui-table-fixed{position: absolute; left: 0; top: 0;overflow: hidden;}
.layui-table-fixed .layui-table-body{overflow: hidden;}
.layui-table-fixed-l{box-shadow: 0 -1px 8px rgba(0,0,0,.08);}
.layui-table-fixed-r{left: auto; right: -1px; border-width: 0; border-left-width: 1px; box-shadow: -1px 0 8px rgba(0,0,0,.08);}
.layui-table-fixed-r .layui-table-header{position: relative; overflow: visible;}
.layui-table-mend{position: absolute; right: -49px; top: 0; height: 100%; width: 50px;}
.laydate-grid-item{width:90%;height:16px;border:none;}
.layui-table-tool{position: relative; width: 100%; height: 50px; line-height: 30px; padding: 10px 15px; border-width: 0; border-bottom-width: 1px;}
.layui-table-tool-temp{padding-left:120px;}
.layui-table-tool-self{position: absolute;right:10%;top:10px;margin:0 0 0 10px;}
.layui-inline[lay-event]{border:1px solid #ccc;width:26px;height:26px;text-align:center;padding:5px;}
.layui-table-tool-panel{position:absolute; z-index:999;top:-180px;right:30px;padding:5px 0;min-width:170px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow: 0 2px 4px rgba(0,0,0,.12);}
.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px;}
.layui-table-tool-panel li{padding:0 10px;line-height:30px;cursor: pointer;}
.layui-table-tool-panel-special{top:-80px;right:0;}
.layui-table-page{position: relative; width: 100%; padding: 7px 7px 0; border-width: 0; border-top-width: 1px; height: 41px; margin-bottom: -1px; font-size: 12px;}
.layui-table-page>div{height: 26px;}
.layui-table-page .layui-laypage{margin: 0;}
.layui-table-page .layui-laypage a,
.layui-table-page .layui-laypage span{height: 26px; line-height: 26px; margin-bottom: 10px; border: none; background: none;}
.layui-table-page .layui-laypage a,
.layui-table-page .layui-laypage span.layui-laypage-curr{padding: 0 12px;}
.layui-table-page .layui-laypage span{margin-left: 0; padding: 0;}
.layui-table-page .layui-laypage .layui-laypage-prev{margin-left: -7px!important;}
.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left: 0; top: 0; padding: 0;}
.layui-table-page .layui-laypage input,
.layui-table-page .layui-laypage button{height: 26px; line-height: 26px; }
.layui-table-page .layui-laypage input{width: 40px;}
.layui-table-page .layui-laypage button{padding: 0 10px;}
.layui-table-page select{height: 18px;}
.layui-table-view select[lay-ignore]{display: inline-block;}
.layui-table-patch .layui-table-cell{padding: 0; width: 30px;}
.layui-table-edit{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 0 14px 1px; border-radius: 0; box-shadow: 1px 1px 20px rgba(0,0,0,.15)}
.layui-table-edit:focus{border-color: #5FB878!important;}
select.layui-table-edit{padding: 0 0 0 10px; border-color: #C9C9C9;}
.layui-table-view .layui-form-switch,
.layui-table-view .layui-form-checkbox,
.layui-table-view .layui-form-radio{top: 0; margin: 0; box-sizing: content-box;}
.layui-table-view .layui-form-checkbox{top: -1px; height: 26px; line-height: 26px;}
.layui-table-grid-down {position: absolute;top: 0;right: 0;width: 26px;height: 100%;padding: 5px 0;border-width: 0 0 0 1px;text-align: center;background-color: #fff;color: #999;cursor: pointer}
.layui-table-grid-down .layui-icon {position: absolute;top: 50%;left: 50%;margin: -8px 0 0 -8px}
.layui-table-grid-down:hover {background-color: #fbfbfb}
body .layui-table-tips .layui-layer-content{background: none; padding: 0; box-shadow: 0 1px 6px rgba(0,0,0,.1);}
.layui-table-tips-main{margin: -44px 0 0 -1px; max-height: 150px; padding: 8px 15px; font-size: 14px; overflow-y: scroll; background-color: #fff; color: #333;}
.layui-table-tips-c{position: absolute; right: -3px; top: -12px; width: 18px; height: 18px; padding: 3px; text-align: center; font-weight: 700; border-radius: 100%; font-size: 14px; cursor: pointer; background-color: #666;}
.layui-table-tips-c:hover{background-color: #999;}
/** æ–‡ä»¶ä¸Šä¼  **/
.layui-upload-file{display: none!important; opacity: .01; filter: Alpha(opacity=1);}
.layui-upload-list{margin: 10px 0;}
.layui-upload-choose{padding: 0 10px; color: #999;}
.layui-upload-drag{position: relative; display: inline-block; padding: 30px; border: 1px dashed #e2e2e2; background-color: #fff; text-align: center; cursor: pointer; color: #999;}
.layui-upload-drag .layui-icon{font-size: 50px; color: #009688;}
.layui-upload-drag[lay-over]{border-color: #009688}
.layui-upload-form{display: inline-block;}
.layui-upload-iframe{position: absolute; width: 0; height: 0; border: 0; visibility: hidden}
.layui-upload-wrap{position: relative; display: inline-block; vertical-align: middle;}
.layui-upload-wrap .layui-upload-file{display: block!important; position: absolute; left: 0; top: 0; z-index: 10; font-size: 100px; width: 100%; height: 100%; opacity: .01; filter: Alpha(opacity=1); cursor: pointer;}
/** ä»£ç ä¿®é¥°å™¨ **/
.layui-code{position: relative; margin: 10px 0; padding: 15px; line-height: 20px; border: 1px solid #ddd; border-left-width: 6px; background-color: #f2f2f2; color: #333; font-family: Courier New; font-size: 12px;}
/** æ ‘组件(重写中) **/
.layui-tree{/* line-height: 26px; */}
.layui-tree li{text-overflow: ellipsis; /* overflow:hidden; */ white-space: nowrap;}
.layui-tree li a,
.layui-tree li .layui-tree-spread{display: inline-block; vertical-align: top; height: 26px; *display: inline; *zoom:1; cursor: pointer;}
.layui-tree li a{font-size: 0;}
.layui-tree li a i{font-size: 16px;}
.layui-tree li a cite{padding: 0 6px; font-size: 14px; font-style: normal;}
.layui-tree li i{/*padding-left: 6px;*/ color: #333; -moz-user-select: none;}
/*.layui-tree li .layui-tree-check{font-size: 13px; cursor: pointer;}*//*添加手势*/
.layui-tree li .layui-tree-check{cursor: pointer;display:inline-block;position: relative; top: 0; width: 14px; height: 14px; line-height: 14px; border: 1px solid #d2d2d2; font-size: 12px; border-radius: 2px; background-color: #fff; -webkit-transition: .1s linear; transition: .1s linear;}/*添加手势*/
.layui-tree li .layui-tree-check:hover{color: #009E94;}
/*.layui-tree li .layui-tree-checked{color:#ff0000;border-color: #ff0000;}*/
.layui-tree li .layui-tree-checked{border-color: #5FB878; background-color: #5FB878; color: #fff;text-align:center}
.layui-tree li ul{display: none; margin-left: 20px;}
.layui-tree li .layui-tree-enter{line-height: 24px; border: 1px dotted #000;}
.layui-tree-drag{display: none; position: absolute; left: -666px; top: -666px; background-color: #f2f2f2; padding: 5px 10px; border: 1px dotted #000; white-space: nowrap}
.layui-tree-drag i{padding-right: 5px;}
/** å¯¼èˆªèœå• **/
.layui-nav{position: relative; padding: 0 20px; background-color: #393D49; color: #fff; border-radius: 2px; font-size: 0; box-sizing: border-box;}
.layui-nav *{font-size: 14px;}
.layui-nav .layui-nav-item{position: relative; display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; line-height: 60px;}
.layui-nav .layui-nav-item a{display: block; padding: 0 20px; color: #fff; color: rgba(255,255,255,.7); transition: all .3s; -webkit-transition: all .3s;}
.layui-nav-bar,
.layui-nav .layui-this:after,
.layui-nav-tree .layui-nav-itemed:after{position: absolute; left: 0; top: 0; width: 0; height: 5px; background-color: #5FB878; transition: all .2s; -webkit-transition: all .2s;}
.layui-nav-bar{z-index: 1000;}
.layui-nav .layui-this a
,.layui-nav .layui-nav-item a:hover{color: #fff;}
.layui-nav .layui-this:after{content: ''; top: auto; bottom: 0; width: 100%;}
.layui-nav-img{width: 30px; height: 30px; margin-right: 10px; border-radius: 50%;}
.layui-nav .layui-nav-more{content:''; width: 0; height: 0; border-style: dashed; border-color: transparent; overflow: hidden; cursor: pointer; transition: all .2s; -webkit-transition: all .2s;}
.layui-nav .layui-nav-more{position: absolute; top: 50%; right: 3px; margin-top: -3px; border-width: 6px; border-top-style: solid; border-top-color: #fff; border-top-color: rgba(255,255,255,.7);}
.layui-nav .layui-nav-mored,
/* .layui-nav-itemed .layui-nav-more{margin-top: -9px; border-style: dashed; border-color: transparent; border-bottom-style: solid; border-bottom-color: #fff;} */
.layui-nav-child{display: none; position: absolute; left: 0; top: 65px; min-width: 100%; line-height: 36px; padding: 5px 0;  box-shadow: 0 2px 4px rgba(0,0,0,.12); border: 1px solid #d2d2d2; background-color: #fff; z-index: 100; border-radius: 2px; white-space: nowrap;}
.layui-nav .layui-nav-child a{color: #333;}
.layui-nav .layui-nav-child a:hover{background-color: #f2f2f2; color: #000;}
.layui-nav-child dd{position: relative;}
.layui-nav-child dd.layui-this{background-color: #5FB878; color: #fff;}
.layui-nav .layui-nav-child dd.layui-this a{background-color: #5FB878; color: #fff;}
.layui-nav-child dd.layui-this:after{display: none;}
/*!* åž‚直导航菜单 *!.layui-nav-tree{width: 200px; padding: 0;}*/
/*.layui-nav-tree .layui-nav-item{display: block; width: 100%; line-height: 45px;}*/
/*.layui-nav-tree .layui-nav-item a{height: 45px; line-height: 45px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}*/
/*.layui-nav-tree .layui-nav-item a:hover{background-color: #4E5465;}*/
/*.layui-nav-tree .layui-nav-bar{width: 5px; height: 0;}*/
/*.layui-nav-tree .layui-this,*/
/*.layui-nav-tree .layui-this>a,*/
/*.layui-nav-tree .layui-this>a:hover,*/
/*.layui-nav-tree .layui-nav-child dd.layui-this,*/
/*.layui-nav-tree .layui-nav-child dd.layui-this a{background-color: #009688; color: #fff;}*/
/*.layui-nav-tree .layui-this:after{display: none;}*/
/*.layui-nav-tree .layui-nav-title a,*/
/*.layui-nav-tree .layui-nav-title a:hover,*/
/*.layui-nav-itemed>a{color: #fff !important;}*/
/*.layui-nav-tree .layui-nav-bar{background-color: #009688;}*/
/*.layui-nav-tree .layui-nav-child{position: relative; z-index: 0; top: 0; border: none; box-shadow: none;}*/
/*.layui-nav-tree .layui-nav-child a{height: 40px; line-height: 40px;}*/
/*.layui-nav-tree .layui-nav-child a{color: #fff; color: rgba(255,255,255,.7);}*/
/*.layui-nav-tree .layui-nav-child a:hover,*/
/*.layui-nav-tree .layui-nav-child{background: none; color: #fff;}*/
/*.layui-nav-tree .layui-nav-more{top: 20px; right: 10px; margin: 0;}*/
/*.layui-nav-itemed .layui-nav-more{top: 14px;}*/
/*.layui-nav-itemed .layui-nav-child{display: block; padding: 0; background-color: rgba(0,0,0,.3) !important;} */
/* åž‚直导航菜单 */.layui-nav-tree{width: 200px; padding: 0;}
.layui-nav-tree .layui-nav-item{display: block; width: 100%; line-height: 45px;}
.layui-nav-tree .layui-nav-item a{position: relative; height: 45px; line-height: 45px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
.layui-nav-tree .layui-nav-item a:hover{background-color: #4E5465;}
.layui-nav-tree .layui-nav-bar{width: 5px; height: 0;}
.layui-nav-tree .layui-this,
.layui-nav-tree .layui-this>a,
.layui-nav-tree .layui-this>a:hover,
.layui-nav-tree .layui-nav-child dd.layui-this,
.layui-nav-tree .layui-nav-child dd.layui-this a{background-color: #009688; color: #fff;}
.layui-nav-tree .layui-this:after{display: none;}
.layui-nav-tree .layui-nav-title a,
.layui-nav-tree .layui-nav-title a:hover,
.layui-nav-itemed>a{color: #fff !important;}
.layui-nav-tree .layui-nav-bar{background-color: #009688;}
.layui-nav-tree .layui-nav-child{position: relative; z-index: 0; top: 0; border: none; box-shadow: none;}
.layui-nav-tree .layui-nav-child a{height: 40px; line-height: 40px;}
.layui-nav-tree .layui-nav-child a{color: #fff; color: rgba(255,255,255,.7);}
.layui-nav-tree .layui-nav-child a:hover,
.layui-nav-tree .layui-nav-child{background: none; color: #fff;}
.layui-nav-tree .layui-nav-more{right: 10px;}
.layui-nav-itemed>.layui-nav-child{display: block; padding: 0; background-color: #1d1d1d !important;}
.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display: block;}
/* ä¾§è¾¹ */.layui-nav-side{position: fixed; top: 0; bottom: 0; left: 0; overflow-x: hidden; z-index: 999;}
/* å¯¼èˆªä¸»é¢˜è‰² */.layui-bg-blue .layui-nav-bar,
.layui-bg-blue .layui-this:after,
.layui-bg-blue .layui-nav-itemed:after{background-color: #93D1FF;}
.layui-bg-blue .layui-nav-child dd.layui-this{background-color: #1E9FFF;}
.layui-nav-tree.layui-bg-blue .layui-nav-title a,
.layui-nav-tree.layui-bg-blue .layui-nav-title a:hover,
.layui-bg-blue .layui-nav-itemed>a{background-color: #007DDB /*!important;*/}
.vciWebMenuLevel1 .layui-nav-itemed>a{
  background-color:  #1E9FFF;
}
/** é¢åŒ…屑 **/
.layui-breadcrumb{visibility: hidden; font-size: 0;}
.layui-breadcrumb>*{font-size: 14px;}
.layui-breadcrumb a{color: #999 !important;}
.layui-breadcrumb a:hover{color: #5FB878 !important;}
.layui-breadcrumb a cite{color: #666; font-style: normal;}
.layui-breadcrumb span[lay-separator]{margin: 0 10px; color: #999;}
/** Tab选项卡 **/
.layui-tab{margin: 10px 0; text-align: left !important;}
.layui-tab[overflow]>.layui-tab-title{overflow: hidden;}
.layui-tab-title{position: relative; left: 0; height: 40px; white-space: nowrap; font-size: 0; border-bottom-width: 1px; border-bottom-style: solid; transition: all .2s; -webkit-transition: all .2s;}
.layui-tab-title li{display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; font-size: 14px; transition: all .2s; -webkit-transition: all .2s;}
.layui-tab-title li{position: relative; line-height: 40px; min-width: 65px; padding: 0 15px; text-align: center; cursor: pointer;}
.layui-tab-title li a{display: block;}
.layui-tab-title .layui-this{color: #000;}
.layui-tab-title .layui-this:after{position: absolute; left:0; top: 0; content: ''; width:100%; height: 41px; border-width: 1px; border-style: solid; border-bottom-color: #fff; border-radius: 2px 2px 0 0; box-sizing: border-box; pointer-events: none;}
.layui-tab-bar{position: absolute; right: 0; top: 0; z-index: 10; width: 30px; height: 39px; line-height: 39px; border-width: 1px; border-style: solid; border-radius: 2px; text-align: center; background-color: #fff; cursor: pointer;}
.layui-tab-bar .layui-icon{position: relative; display: inline-block; top: 3px; transition: all .3s; -webkit-transition: all .3s;}
.layui-tab-item{display: none;}
.layui-tab-more{padding-right: 30px; height: auto !important; white-space: normal !important;}
.layui-tab-more li.layui-this:after{border-bottom-color: #e2e2e2; border-radius: 2px;}
.layui-tab-more .layui-tab-bar .layui-icon{top: -2px; top: 3px\0; -webkit-transform: rotate(180deg); transform: rotate(180deg);}
:root .layui-tab-more .layui-tab-bar .layui-icon{top: -2px\0/IE9;}
.layui-tab-content{padding: 5px;} /*weidy修改间隔大小*/
/* Tab关闭 */.layui-tab-title li .layui-tab-close{position: relative; display: inline-block; width: 18px; height: 18px; line-height: 20px; margin-left: 8px; top: 1px; text-align: center; font-size: 14px; color: #c2c2c2; transition: all .2s; -webkit-transition: all .2s;}
.layui-tab-title li .layui-tab-close:hover{border-radius: 2px; background-color: #FF5722; color: #fff;}
/* Tab简洁风格 */.layui-tab-brief > .layui-tab-title .layui-this{color: #009688;}
.layui-tab-brief > .layui-tab-title .layui-this:after
,.layui-tab-brief > .layui-tab-more li.layui-this:after{border: none; border-radius: 0; border-bottom: 2px solid #5FB878;}
.layui-tab-brief[overflow] > .layui-tab-title .layui-this:after{top: -1px;}
/* Tab卡片风格 */.layui-tab-card{border-width: 1px; border-style: solid; border-radius: 2px; box-shadow: 0 2px 5px 0 rgba(0,0,0,.1);}
.layui-tab-card > .layui-tab-title{ background-color: #f2f2f2;}
.layui-tab-card > .layui-tab-title li{margin-right: -1px; margin-left: -1px;}
.layui-tab-card > .layui-tab-title .layui-this{background-color: #fff;     }
.layui-tab-card > .layui-tab-title .layui-this:after{border-top: none; border-width: 1px; border-bottom-color: #fff;}
.layui-tab-card > .layui-tab-title .layui-tab-bar{height: 40px; line-height: 40px; border-radius: 0; border-top: none; border-right: none;}
.layui-tab-card > .layui-tab-more .layui-this{background: none; color: #5FB878;}
.layui-tab-card > .layui-tab-more .layui-this:after{border: none;}
/* æ—¶é—´çº¿ */
.layui-timeline{padding-left: 5px;}
.layui-timeline-item{position: relative; padding-bottom: 20px;}
.layui-timeline-axis{position: absolute; left: -5px; top: 0; z-index: 10; width: 20px; height: 20px; line-height: 20px; background-color: #fff; color: #5FB878; border-radius: 50%; text-align: center; cursor: pointer;}
.layui-timeline-axis:hover{color: #FF5722;}
.layui-timeline-item:before{content: ''; position: absolute; left: 5px; top: 0; z-index: 0; width: 1px; height: 100%;}
.layui-timeline-item:last-child:before{display: none;}
.layui-timeline-item:first-child:before{display: block;}
.layui-timeline-content{padding-left: 25px;;}
.layui-timeline-title{position: relative; margin-bottom: 10px;}
/* å°å¾½ç«  */
.layui-badge,
.layui-badge-dot,
.layui-badge-rim{position:relative; display: inline-block; padding: 0 6px; font-size: 12px; text-align: center; background-color: #FF5722; color: #fff; border-radius: 2px;}
.layui-badge{height: 18px; line-height: 18px;}
.layui-badge-dot{width: 8px; height: 8px; padding: 0; border-radius: 50%;}
.layui-badge-rim{height: 18px; line-height: 18px; border-width: 1px; border-style: solid; background-color: #fff; color: #666;}
.layui-btn .layui-badge,
.layui-btn .layui-badge-dot{margin-left: 5px;}
.layui-nav .layui-badge,
.layui-nav .layui-badge-dot{position: absolute; top: 50%; margin: -8px 6px 0;}
.layui-tab-title .layui-badge,
.layui-tab-title .layui-badge-dot{left: 5px; top: -2px;}
/* carousel è½®æ’­ */
.layui-carousel{position: relative; left: 0; top: 0; background-color: #f8f8f8;}
.layui-carousel>*[carousel-item]{position: relative; width: 100%; height: 100%; overflow: hidden;}
.layui-carousel>*[carousel-item]:before{position: absolute; content: '\e63d'; left: 50%; top: 50%; width: 100px; line-height: 20px; margin: -10px 0 0 -50px; text-align: center; color: #c2c2c2; font-family:"layui-icon" !important; font-size: 30px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}
.layui-carousel>*[carousel-item] > *{display: none; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-color: #f8f8f8; transition-duration: .3s; -webkit-transition-duration: .3s;}
.layui-carousel-updown > *{-webkit-transition: .3s ease-in-out up; transition: .3s ease-in-out up;}
.layui-carousel-arrow{display: none\0; opacity: 0; position: absolute; left: 10px; top: 50%; margin-top: -18px; width: 36px; height: 36px; line-height: 36px; text-align: center; font-size: 20px; border: none 0; border-radius: 50%; background-color: rgba(0,0,0,.2); color: #fff; -webkit-transition-duration: .3s; transition-duration: .3s; cursor: pointer;}
.layui-carousel-arrow[lay-type="add"]{left: auto!important; right: 10px;}
.layui-carousel[lay-arrow="always"] .layui-carousel-arrow{opacity: 1; left: 20px;}
.layui-carousel[lay-arrow="always"] .layui-carousel-arrow[lay-type="add"]{right: 20px;}
.layui-carousel[lay-arrow="none"] .layui-carousel-arrow{display: none;}
.layui-carousel-arrow:hover,
.layui-carousel-ind ul:hover{background-color: rgba(0,0,0,.35);}
.layui-carousel:hover .layui-carousel-arrow{display: block\0; opacity: 1; left: 20px;}
.layui-carousel:hover .layui-carousel-arrow[lay-type="add"]{right: 20px;}
.layui-carousel-ind{position: relative; top: -35px; width: 100%; line-height: 0!important; text-align: center; font-size: 0;}
.layui-carousel[lay-indicator="outside"]{margin-bottom: 30px;}
.layui-carousel[lay-indicator="outside"] .layui-carousel-ind{top: 10px;}
.layui-carousel[lay-indicator="outside"] .layui-carousel-ind ul{background-color: rgba(0,0,0,.5);}
.layui-carousel[lay-indicator="none"] .layui-carousel-ind{display: none;}
.layui-carousel-ind ul{display: inline-block; padding: 5px; background-color: rgba(0,0,0,.2); border-radius: 10px; -webkit-transition-duration: .3s; transition-duration: .3s;}
.layui-carousel-ind li{display: inline-block; width: 10px; height: 10px; margin: 0 3px; font-size: 14px; background-color: #e2e2e2; background-color: rgba(255,255,255,.5); border-radius: 50%; cursor: pointer; -webkit-transition-duration: .3s; transition-duration: .3s;}
.layui-carousel-ind li:hover{background-color: rgba(255,255,255,.7);}
.layui-carousel-ind li.layui-this{background-color: #fff;}
.layui-carousel>*[carousel-item]>.layui-this,
.layui-carousel>*[carousel-item]>.layui-carousel-prev,
.layui-carousel>*[carousel-item]>.layui-carousel-next{display: block}
.layui-carousel>*[carousel-item]>.layui-this{left: 0;}
.layui-carousel>*[carousel-item]>.layui-carousel-prev{left: -100%;}
.layui-carousel>*[carousel-item]>.layui-carousel-next{left: 100%;}
.layui-carousel>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,
.layui-carousel>*[carousel-item]>.layui-carousel-next.layui-carousel-left{left: 0;}
.layui-carousel>*[carousel-item]>.layui-this.layui-carousel-left{left: -100%;}
.layui-carousel>*[carousel-item]>.layui-this.layui-carousel-right{left: 100%;}
/* ä¸Šä¸‹åˆ‡æ¢ */.layui-carousel[lay-anim="updown"] .layui-carousel-arrow{left: 50%!important; top: 20px; margin: 0 0 0 -18px;}
.layui-carousel[lay-anim="updown"] .layui-carousel-arrow[lay-type="add"]{top: auto!important; bottom: 20px;}
.layui-carousel[lay-anim="updown"] .layui-carousel-ind{position: absolute; top: 50%; right: 20px; width: auto; height: auto;}
.layui-carousel[lay-anim="updown"] .layui-carousel-ind ul{padding: 3px 5px;}
.layui-carousel[lay-anim="updown"] .layui-carousel-ind li{display: block; margin: 6px 0;}
.layui-carousel[lay-anim="updown"]>*[carousel-item]>*{left: 0!important;}
.layui-carousel[lay-anim="updown"]>*[carousel-item]>.layui-this{top: 0;}
.layui-carousel[lay-anim="updown"]>*[carousel-item]>.layui-carousel-prev{top: -100%;}
.layui-carousel[lay-anim="updown"]>*[carousel-item]>.layui-carousel-next{top: 100%;}
.layui-carousel[lay-anim="updown"]>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,
.layui-carousel[lay-anim="updown"]>*[carousel-item]>.layui-carousel-next.layui-carousel-left{top: 0;}
.layui-carousel[lay-anim="updown"]>*[carousel-item]>.layui-this.layui-carousel-left{top: -100%;}
.layui-carousel[lay-anim="updown"]>*[carousel-item]>.layui-this.layui-carousel-right{top: 100%;}
/* æ¸æ˜¾åˆ‡æ¢ */.layui-carousel[lay-anim="fade"]>*[carousel-item]>*{left: 0!important;}
.layui-carousel[lay-anim="fade"]>*[carousel-item]>.layui-carousel-prev,
.layui-carousel[lay-anim="fade"]>*[carousel-item]>.layui-carousel-next{opacity: 0;}
.layui-carousel[lay-anim="fade"]>*[carousel-item]>.layui-carousel-prev.layui-carousel-right,
.layui-carousel[lay-anim="fade"]>*[carousel-item]>.layui-carousel-next.layui-carousel-left{opacity: 1;}
.layui-carousel[lay-anim="fade"]>*[carousel-item]>.layui-this.layui-carousel-left,
.layui-carousel[lay-anim="fade"]>*[carousel-item]>.layui-this.layui-carousel-right{opacity: 0}
/** fixbar **/
.layui-fixbar{position: fixed; right: 15px; bottom: 15px; z-index: 9999;}
.layui-fixbar li{width: 50px; height: 50px; line-height: 50px; margin-bottom: 1px; text-align:center; cursor: pointer; font-size:30px; background-color: #9F9F9F; color:#fff; border-radius: 2px; opacity: 0.95;}
.layui-fixbar li:hover{opacity: 0.85;}
.layui-fixbar li:active{opacity: 1;}
.layui-fixbar .layui-fixbar-top{display: none; font-size: 40px;}
/** è¡¨æƒ…面板 **/
body .layui-util-face{border: none; background: none;}
body .layui-util-face  .layui-layer-content{padding:0; background-color:#fff; color:#666; box-shadow:none}
.layui-util-face .layui-layer-TipsG{display:none;}
.layui-util-face ul{position:relative; width:372px; padding:10px; border:1px solid #D9D9D9; background-color:#fff; box-shadow: 0 0 20px rgba(0,0,0,.2);}
.layui-util-face ul li{cursor: pointer; float: left; border: 1px solid #e8e8e8; height: 22px; width: 26px; overflow: hidden; margin: -1px 0 0 -1px; padding: 4px 2px; text-align: center;}
.layui-util-face ul li:hover{position: relative; z-index: 2; border: 1px solid #eb7350; background: #fff9ec;}
/** åŠ¨ç”» **/
.layui-anim{-webkit-animation-duration: 0.3s; animation-duration: 0.3s; -webkit-animation-fill-mode: both; animation-fill-mode: both;}
.layui-anim.layui-icon{display: inline-block;}
.layui-anim-loop{-webkit-animation-iteration-count: infinite; animation-iteration-count: infinite;}
@-webkit-keyframes layui-rotate{ /* å¾ªçŽ¯æ—‹è½¬ */
  from {-webkit-transform: rotate(0deg);}
  to {-webkit-transform: rotate(360deg);}
}
@keyframes layui-rotate{
  from {transform: rotate(0deg);}
  to {transform: rotate(360deg);}
}
.layui-anim-rotate{-webkit-animation-name: layui-rotate; animation-name: layui-rotate; -webkit-animation-duration: 1s; animation-duration: 1s;  -webkit-animation-timing-function: linear; animation-timing-function: linear;}
@-webkit-keyframes layui-up{ /* ä»Žæœ€åº•部往上滑入 */
  from {-webkit-transform: translate3d(0, 100%, 0); opacity: 0.3;}
  to {-webkit-transform: translate3d(0, 0, 0);  opacity: 1;}
}
@keyframes layui-up{
  from {transform: translate3d(0, 100%, 0);  opacity: 0.3;}
  to {transform: translate3d(0, 0, 0);  opacity: 1;}
}
.layui-anim-up{-webkit-animation-name: layui-up; animation-name: layui-up;}
@-webkit-keyframes layui-upbit{ /* å¾®å¾®å¾€ä¸Šæ»‘å…¥ */
  from {-webkit-transform: translate3d(0, 30px, 0); opacity: 0.3;}
  to {-webkit-transform: translate3d(0, 0, 0);  opacity: 1;}
}
@keyframes layui-upbit{
  from {transform: translate3d(0, 30px, 0);  opacity: 0.3;}
  to {transform: translate3d(0, 0, 0);  opacity: 1;}
}
.layui-anim-upbit{-webkit-animation-name: layui-upbit; animation-name: layui-upbit;}
@-webkit-keyframes layui-scale { /* æ”¾å¤§ */
  0% {opacity: 0.3; -webkit-transform: scale(.5);}
  100% {opacity: 1; -webkit-transform: scale(1);}
}
@keyframes layui-scale {
  0% {opacity: 0.3; -ms-transform: scale(.5); transform: scale(.5);}
  100% {opacity: 1; -ms-transform: scale(1); transform: scale(1);}
}
.layui-anim-scale{-webkit-animation-name: layui-scale; animation-name: layui-scale}
@-webkit-keyframes layui-scale-spring { /* å¼¹ç°§å¼æ”¾å¤§ */
  0% {opacity: 0.5; -webkit-transform: scale(.5);}
  80% {opacity: 0.8; -webkit-transform: scale(1.1);}
  100% {opacity: 1; -webkit-transform: scale(1);}
}
@keyframes layui-scale-spring {
  0% {opacity: 0.5; transform: scale(.5);}
  80% {opacity: 0.8; transform: scale(1.1);}
  100% {opacity: 1; transform: scale(1);}
}
.layui-anim-scaleSpring{-webkit-animation-name: layui-scale-spring; animation-name: layui-scale-spring}
@-webkit-keyframes layui-fadein { /* æ¸çް */
  0% {opacity: 0;}
  100% {opacity: 1;}
}
@keyframes layui-fadein {
  0% {opacity: 0;}
  100% {opacity: 1;}
}
.layui-anim-fadein{-webkit-animation-name: layui-fadein; animation-name: layui-fadein}
@-webkit-keyframes layui-fadeout { /* æ¸éš */
  0% {opacity: 1;}
  100% {opacity: 0;}
}
@keyframes layui-fadeout {
  0% {opacity: 1;}
  100% {opacity: 0;}
}
.layui-anim-fadeout{-webkit-animation-name: layui-fadeout; animation-name: layui-fadeout}
#selectWrapForIE{
  width:20px;
  height:26px;
  margin-top:2px;
  margin-bottom:2px;
  background:#ffffff;
  float:right;
  position:absolute;
  top:0px;
  right:22px;
}
#selectWrapForIE:hover{
  cursor:pointer;
}
.layui-transfer-active, .layui-transfer-box {
  display: inline-block;
  vertical-align: middle
}
.layui-transfer-box, .layui-transfer-header, .layui-transfer-search {
  border-width: 0;
  border-style: solid;
  border-color: #e6e6e6
}
.layui-transfer-box {
  position: relative;
  border-width: 1px;
  width: 200px;
  height: 360px;
  border-radius: 2px;
  background-color: #fff
}
.layui-transfer-box .layui-form-checkbox {
  width: 100%;
  margin: 0 !important
}
.layui-transfer-header {
  height: 38px;
  line-height: 38px;
  padding: 0 10px;
  border-bottom-width: 1px
}
.layui-transfer-search {
  position: relative;
  padding: 10px;
  border-bottom-width: 1px
}
.layui-transfer-search .layui-input {
  height: 32px;
  padding-left: 30px;
  font-size: 12px
}
.layui-transfer-search .layui-icon-search {
  position: absolute;
  left: 20px;
  top: 50%;
  margin-top: -8px;
  color: #666
}
.layui-transfer-active {
  margin: 0 15px
}
.layui-transfer-active .layui-btn {
  display: block;
  margin: 0;
  padding: 0 15px;
  background-color: #5FB878;
  border-color: #5FB878;
  color: #fff
}
.layui-transfer-active .layui-btn-disabled {
  background-color: #FBFBFB;
  border-color: #e6e6e6;
  color: #C9C9C9
}
.layui-transfer-active .layui-btn:first-child {
  margin-bottom: 15px
}
.layui-transfer-active .layui-btn .layui-icon {
  margin: 0;
  font-size: 14px !important
}
.layui-transfer-data {
  padding: 5px 0;
  overflow: auto
}
.layui-transfer-data li {
  height: 32px;
  line-height: 32px;
  padding: 0 10px
}
.layui-transfer-data li:hover {
  background-color: #f2f2f2;
  transition: .5s all
}
.layui-transfer-data .layui-none {
  padding: 15px 10px;
  text-align: center;
  color: #999
}
.layui-rate, .layui-rate * {
  display: inline-block;
  vertical-align: middle
}
.layui-rate {
  padding: 10px 5px 10px 0;
  font-size: 0
}
.layui-rate li i.layui-icon {
  font-size: 20px;
  color: #FFB800;
  margin-right: 5px;
  transition: all .3s;
  -webkit-transition: all .3s
}
.layui-rate li i:hover {
  cursor: pointer;
  transform: scale(1.12);
  -webkit-transform: scale(1.12)
}
.layui-rate[readonly] li i:hover {
  cursor: default;
  transform: scale(1)
}
/* ä¾§è¾¹æ”¶ç¼©æ‚¬æµ® */
.side-hover {
  position: absolute;
  top: 0;
  left: 55px;
  z-index: 100001;
}
.side-hover dd {
  height: 35px;
}
.side-hover dl {
  width: 185px;
  background-color: #393d49;
  border-radius: 5px;
  /* padding-bottom: 10px; */
}
.side-hover a {
  width: 180px;
  display: block;
  position: relative;
  color: rgba(255,255,255,.7);
  font-size: 24px;
}
.side-hover span:nth-of-type(2) {
  position: absolute;
  right: 15px;
  top: 8px;
  font-size: 18px;
}
.side-hover .leve3 {
  position: absolute;
  top: 0;
  left: 190px;
}
.side-hover .isHover {
  background-color: #4e5465;
  color: #fff;
  border-radius: 5px;
}
.vciWebReferGridInDojo .layui-unselect dl {
  font-size: 16px;
}
.vciWebReferGridInDojo .layui-unselect input {
  font-size: 15px;
}
.hisTable_overflow .layui-layer-content {
  overflow: hidden !important;
}
.hisTable_dvi {
  float: none !important;
}
.layui-font-12 {
  font-size: 12px!important
}
.layui-font-14 {
  font-size: 14px!important
}
.layui-font-16 {
  font-size: 16px!important
}
.layui-font-18 {
  font-size: 18px!important
}
.layui-font-20 {
  font-size: 20px!important
}
.layui-font-red {
  color: #FF5722!important
}
.layui-font-orange {
  color: #FFB800!important
}
.layui-font-green {
  color: #009688!important
}
.layui-font-cyan {
  color: #2F4056!important
}
.layui-font-blue {
  color: #01AAED!important
}
.layui-font-black {
  color: #000!important
}
.layui-font-gray {
  color: #c2c2c2!important
}
.layui-border-blue {
  border-color: #1E9FFF !important;
  color: #1E9FFF !important;
}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/layui.mobile.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,192 @@
/**
 @Name: layui mobile
 @Author: è´¤å¿ƒ
 @Site: http://www.layui.com/mobile/
 */
/* reset */
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,input,button,textarea,p,blockquote,th,td,form,legend{margin:0; padding:0; -webkit-tap-highlight-color:rgba(0,0,0,0)}
html{font:12px 'Helvetica Neue','PingFang SC',STHeitiSC-Light,Helvetica,Arial,sans-serif; -ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}
a,button,input{-webkit-tap-highlight-color:rgba(255,0,0,0);}
a{text-decoration: none; background:transparent}
a:active,a:hover{outline:0}
table{border-collapse:collapse;border-spacing:0}
li{list-style:none;}
b,strong{font-weight:700;}
h1, h2, h3, h4, h5, h6{font-weight:500;}
address,cite,dfn,em,var{font-style:normal;}
dfn{font-style:italic}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
img{border:0; vertical-align: bottom}
button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0; outline: 0;}
button,select{text-transform:none}
select{-webkit-appearance: none; border:none;}
input{line-height:normal; }
input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}
input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}
label,input{vertical-align: middle;}
/** å›¾æ ‡å­—体 **/
@font-face {font-family: 'layui-icon';
  src: url('../font/iconfont.eot?v=1.0.7');
  src: url('../font/iconfont.eot?v=1.0.7#iefix') format('embedded-opentype'),
  url('../font/iconfont.woff?v=1.0.7') format('woff'),
  url('../font/iconfont.ttf?v=1.0.7') format('truetype'),
  url('../font/iconfont.svg?v=1.0.7#iconfont') format('svg');
}
.layui-icon{
  font-family:"layui-icon" !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/** åŸºç¡€é€šç”¨ **/
/* æ¶ˆé™¤ç¬¬ä¸‰æ–¹ui可能造成的冲突 */.layui-box, .layui-box *{-webkit-box-sizing: content-box !important; -moz-box-sizing: content-box !important; box-sizing: content-box !important;}
.layui-border-box, .layui-border-box *{-webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}
.layui-inline{position: relative; display: inline-block; *display:inline; *zoom:1; vertical-align: middle;}
/* ä¸‰è§’å½¢ */.layui-edge{position: absolute; width: 0; height: 0; border-style: dashed; border-color: transparent; overflow: hidden;}
/* å•行溢出省略 */.layui-elip{text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
/* å±è”½é€‰ä¸­ */.layui-unselect{-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}
.layui-disabled,.layui-disabled:active{background-color: #d2d2d2 !important; color: #fff !important; cursor: not-allowed !important;}
/* çº¯åœ†è§’ */.layui-circle{border-radius: 100%;}
.layui-show{display: block !important;}
.layui-hide{display: none !important;}
.layui-upload-iframe{position: absolute; width: 0px; height: 0px; border: 0px; visibility: hidden;}
.layui-upload-enter{border: 1px solid #009E94; background-color: #009E94; color: #fff; -webkit-transform: scale(1.1); transform: scale(1.1);}
/* å¼¹å‡ºåŠ¨ç”» */
@-webkit-keyframes layui-m-anim-scale { /* é»˜è®¤ */
    0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
    100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
}
@keyframes layui-m-anim-scale { /* ç”±å°åˆ°å¤§ */
    0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
    100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
}
.layui-m-anim-scale{animation-name:  layui-m-anim-scale; -webkit-animation-name:  layui-m-anim-scale;}
@-webkit-keyframes layui-m-anim-up{ /* ä»Žä¸‹å¾€ä¸Š */
  0%{opacity: 0; -webkit-transform: translateY(800px); transform: translateY(800px)}
  100%{opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
}
@keyframes layui-m-anim-up{
  0%{opacity: 0; -webkit-transform: translateY(800px); transform: translateY(800px)}
  100%{opacity: 1; -webkit-transform: translateY(0); transform: translateY(0)}
}
.layui-m-anim-up{-webkit-animation-name: layui-m-anim-up; animation-name: layui-m-anim-up}
@-webkit-keyframes layui-m-anim-left{ /* ä»Žå³å¾€å·¦ */
  0%{-webkit-transform: translateX(100%); transform: translateX(100%)}
  100%{-webkit-transform: translateX(0); transform: translateX(0)}
}
@keyframes layui-m-anim-left{
  0%{-webkit-transform: translateX(100%); transform: translateX(100%)}
  100%{-webkit-transform: translateX(0); transform: translateX(0)}
}
.layui-m-anim-left{-webkit-animation-name: layui-m-anim-left; animation-name: layui-m-anim-left}
@-webkit-keyframes layui-m-anim-right{ /* ä»Žå·¦å¾€å³ */
  0%{-webkit-transform: translateX(-100%); transform: translateX(-100%)}
  100%{-webkit-transform: translateX(0); transform: translateX(0)}
}
@keyframes layui-m-anim-right{
  0%{-webkit-transform: translateX(-100%); transform: translateX(-100%)}
  100%{-webkit-transform: translateX(0); transform: translateX(0)}
}
.layui-m-anim-right{-webkit-animation-name: layui-m-anim-right; animation-name: layui-m-anim-right}
@-webkit-keyframes layui-m-anim-lout{ /* å¾€å·¦æ”¶ç¼© */
  0%{-webkit-transform: translateX(0); transform: translateX(0)}
  100%{-webkit-transform: translateX(-100%); transform: translateX(-100%)}
}
@keyframes layui-m-anim-lout{
  0%{-webkit-transform: translateX(0); transform: translateX(0)}
  100%{-webkit-transform: translateX(-100%); transform: translateX(-100%)}
}
.layui-m-anim-lout{-webkit-animation-name: layui-m-anim-lout; animation-name: layui-m-anim-lout}
@-webkit-keyframes layui-m-anim-rout{ /* å¾€å³æ”¶ç¼© */
  0%{-webkit-transform: translateX(0); transform: translateX(0)}
  100%{-webkit-transform: translateX(100%); transform: translateX(100%)}
}
@keyframes layui-m-anim-rout{
  0%{-webkit-transform: translateX(0); transform: translateX(0)}
  100%{-webkit-transform: translateX(100%); transform: translateX(100%)}
}
.layui-m-anim-rout{-webkit-animation-name: layui-m-anim-rout; animation-name: layui-m-anim-rout}
/** layer mobile */
.layui-m-layer{position:relative; z-index: 19891014;}
.layui-m-layer *{-webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box;}
.layui-m-layershade,
.layui-m-layermain{position:fixed; left:0; top:0; width:100%; height:100%;}
.layui-m-layershade{background-color:rgba(0,0,0, .7); pointer-events:auto;}
.layui-m-layermain{display:table; font-family: Helvetica, arial, sans-serif; pointer-events: none;}
.layui-m-layermain .layui-m-layersection{display:table-cell; vertical-align:middle; text-align:center;}
.layui-m-layerchild{position:relative; display:inline-block; text-align:left; background-color:#fff; font-size:14px; border-radius: 5px; box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);  pointer-events:auto;  -webkit-overflow-scrolling: touch;}
.layui-m-layerchild{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration: .2s; animation-duration: .2s;}
.layui-m-layer0 .layui-m-layerchild{width: 90%; max-width: 640px;}
.layui-m-layer1 .layui-m-layerchild{border:none; border-radius:0;}
.layui-m-layer2 .layui-m-layerchild{width:auto; max-width:260px; min-width:40px; border:none; background: none; box-shadow: none; color:#fff;}
.layui-m-layerchild h3{padding: 0 10px; height: 60px; line-height: 60px; font-size:16px; font-weight: 400;  border-radius: 5px 5px 0 0; text-align: center;}
.layui-m-layerchild h3,
.layui-m-layerbtn span{ text-overflow:ellipsis; overflow:hidden; white-space:nowrap;}
.layui-m-layercont{padding: 50px 30px; line-height: 22px; text-align:center;}
.layui-m-layer1 .layui-m-layercont{padding:0; text-align:left;}
.layui-m-layer2 .layui-m-layercont{text-align:center; padding: 0; line-height: 0;}
.layui-m-layer2 .layui-m-layercont i{width:25px; height:25px; margin-left:8px; display:inline-block; background-color:#fff; border-radius:100%;}
.layui-m-layer2 .layui-m-layercont p{margin-top: 20px;}
/* loading */
@-webkit-keyframes layui-m-anim-loading{
    0%,80%,100%{transform:scale(0); -webkit-transform:scale(0)}
    40%{transform:scale(1); -webkit-transform:scale(1)}
}
@keyframes layui-m-anim-loading{
    0%,80%,100%{transform:scale(0); -webkit-transform:scale(0)}
    40%{transform:scale(1); -webkit-transform:scale(1)}
}
.layui-m-layer2 .layui-m-layercont i{-webkit-animation: layui-m-anim-loading 1.4s infinite ease-in-out; animation: layui-m-anim-loading 1.4s infinite ease-in-out; -webkit-animation-fill-mode: both; animation-fill-mode: both;}
.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0; -webkit-animation-delay: -.32s; animation-delay: -.32s;}
.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay: -.16s; animation-delay: -.16s;}
.layui-m-layer2 .layui-m-layercont>div{line-height:22px; padding-top:7px; margin-bottom:20px; font-size: 14px;}
.layui-m-layerbtn{display: box; display: -moz-box; display: -webkit-box; width: 100%; position:relative; height: 50px; line-height: 50px; font-size: 0; text-align:center;  border-top:1px solid #D0D0D0; background-color: #f2f2f2; border-radius: 0 0 5px 5px;}
.layui-m-layerbtn span{position:relative; display: block; -moz-box-flex: 1; box-flex: 1; -webkit-box-flex: 1;  text-align:center; font-size:14px; border-radius: 0 0 5px 5px; cursor:pointer;}
.layui-m-layerbtn span[yes]{color: #40AFFE;}
.layui-m-layerbtn span[no]{border-right: 1px solid #D0D0D0; border-radius: 0 0 0 5px;}
.layui-m-layerbtn span:active{background-color: #F6F6F6;}
.layui-m-layerend{position:absolute; right:7px; top:10px; width:30px; height:30px; border: 0; font-weight:400; background: transparent; cursor: pointer; -webkit-appearance: none; font-size:30px;}
.layui-m-layerend::before, .layui-m-layerend::after{position:absolute; left:5px; top:15px; content:''; width:18px; height:1px; background-color:#999; transform:rotate(45deg); -webkit-transform:rotate(45deg); border-radius: 3px;}
.layui-m-layerend::after{transform:rotate(-45deg);  -webkit-transform:rotate(-45deg);}
/* åº•部对话框风格 */
body .layui-m-layer .layui-m-layer-footer{position: fixed; width: 95%; max-width: 100%; margin: 0 auto; left:0; right: 0; bottom: 10px; background: none;}
.layui-m-layer-footer .layui-m-layercont{padding: 20px; border-radius: 5px 5px 0 0; background-color: rgba(255,255,255,.8);}
.layui-m-layer-footer .layui-m-layerbtn{display: block; height: auto; background: none; border-top: none;}
.layui-m-layer-footer .layui-m-layerbtn span{background-color: rgba(255,255,255,.8);}
.layui-m-layer-footer .layui-m-layerbtn span[no]{color: #FD482C; border-top: 1px solid #c2c2c2; border-radius: 0 0 5px 5px;}
.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top: 10px; border-radius: 5px;}
/* é€šç”¨æç¤º */
body .layui-m-layer .layui-m-layer-msg{width: auto; max-width: 90%; margin: 0 auto; bottom: -150px; background-color: rgba(0,0,0,.7); color: #fff;}
.layui-m-layer-msg .layui-m-layercont{padding: 10px 20px;}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/code.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
/**
 @Name: layui.code
 @Author: è´¤å¿ƒ
 @Site: http://www.layui.com
 */
/* åŠ è½½å°±ç»ªæ ‡å¿— */
html #layuicss-skincodecss{display:none; position: absolute; width:1989px;}
/* é»˜è®¤é£Žæ ¼ */
.layui-code-view{display: block; position: relative; margin: 10px 0; padding: 0; border: 1px solid #e2e2e2; border-left-width: 6px; background-color: #f2f2f2; color: #333; font-family: Courier New; font-size: 12px;}
.layui-code-h3{position: relative; padding: 0 10px; height: 32px; line-height: 32px; border-bottom: 1px solid #e2e2e2; font-size: 12px;}
.layui-code-h3 a{position: absolute; right: 10px; top: 0; color: #999;}
.layui-code-view .layui-code-ol{position: relative; overflow: auto;}
.layui-code-view .layui-code-ol li{position: relative; margin-left: 45px; line-height: 20px; padding: 0 5px; border-left: 1px solid #e2e2e2; list-style-type: decimal-leading-zero; *list-style-type: decimal; background-color: #fff;}
.layui-code-view pre{margin: 0;}
/* notepadd++风格 */
.layui-code-notepad{border: 1px solid #0C0C0C; border-left-color: #3F3F3F; background-color: #0C0C0C; color: #C2BE9E}
.layui-code-notepad .layui-code-h3{border-bottom: none;}
.layui-code-notepad .layui-code-ol li{background-color: #3F3F3F; border-left: none;}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/laydate/default/font.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
/** å›¾æ ‡å­—体 **/
@font-face {font-family: 'laydate-icon';
  src: url('./font/iconfont.eot');
  src: url('./font/iconfont.eot#iefix') format('embedded-opentype'),
  url('./font/iconfont.svg#iconfont') format('svg'),
  url('./font/iconfont.woff') format('woff'),
  url('./font/iconfont.ttf') format('truetype');
}
.laydate-icon{
  font-family:"laydate-icon" !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/laydate/default/laydate.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,168 @@
/**
 @Name: laydata
 @Author: è´¤å¿ƒ
 **/
html #layuicss-laydate{display: none; position: absolute; width: 1989px;}
/* åˆå§‹åŒ– */
.layui-laydate *{margin: 0; padding: 0;}
/* ä¸»ä½“结构 */
.layui-laydate, .layui-laydate *{box-sizing: border-box;}
.layui-laydate{position: absolute; z-index: 66666666; margin: 5px 0; border-radius: 2px; font-size: 14px; -webkit-animation-duration: 0.3s; animation-duration: 0.3s; -webkit-animation-fill-mode: both; animation-fill-mode: both;}
.layui-laydate-main{width: 272px;}
.layui-laydate-header *,
.layui-laydate-content td,
.layui-laydate-list li{transition-duration: .3s; -webkit-transition-duration: .3s;}
@-webkit-keyframes laydate-upbit{ /* å¾®å¾®å¾€ä¸Šæ»‘å…¥ */
  from {-webkit-transform: translate3d(0, 20px, 0); opacity: 0.3;}
  to {-webkit-transform: translate3d(0, 0, 0);  opacity: 1;}
}
@keyframes laydate-upbit{
  from {transform: translate3d(0, 20px, 0);  opacity: 0.3;}
  to {transform: translate3d(0, 0, 0);  opacity: 1;}
}
.layui-laydate{-webkit-animation-name: laydate-upbit; animation-name: laydate-upbit;}
.layui-laydate-static{ position: relative; z-index: 0; display: inline-block; margin: 0; -webkit-animation: none; animation: none;}
/* å±•开年月列表时 */
.laydate-ym-show .laydate-prev-m,
.laydate-ym-show .laydate-next-m{display: none !important;}
.laydate-ym-show .laydate-prev-y,
.laydate-ym-show .laydate-next-y{display: inline-block !important;}
.laydate-ym-show .laydate-set-ym span[lay-type="month"]{display: none !important;}
/* å±•开时间列表时 */
.laydate-time-show .layui-laydate-header .layui-icon,
.laydate-time-show .laydate-set-ym span[lay-type="year"],
.laydate-time-show .laydate-set-ym span[lay-type="month"]{display: none !important;}
/* å¤´éƒ¨ç»“æž„ */
.layui-laydate-header{position: relative; line-height:30px; padding: 10px 70px 5px;}
.layui-laydate-header *{display: inline-block; vertical-align: bottom;}
.layui-laydate-header i{position: absolute; top: 10px; padding: 0 5px; color: #999; font-size: 18px; cursor: pointer;}
.layui-laydate-header i.laydate-prev-y{left: 15px;}
.layui-laydate-header i.laydate-prev-m{left: 45px;}
.layui-laydate-header i.laydate-next-y{right: 15px;}
.layui-laydate-header i.laydate-next-m{right: 45px;}
.laydate-set-ym{width: 100%; text-align: center; box-sizing: border-box; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
.laydate-set-ym span{padding: 0 5px; cursor: pointer;}
.laydate-time-text{cursor: default !important;}
/* ä¸»ä½“结构 */
.layui-laydate-content{position: relative; padding: 10px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}
.layui-laydate-content table{border-collapse: collapse; border-spacing: 0;}
.layui-laydate-content th,
.layui-laydate-content td{width: 36px; height: 30px; padding: 5px; text-align: center;}
.layui-laydate-content th{font-weight: 400;}
.layui-laydate-content td{position: relative; cursor: pointer;}
.laydate-day-mark{position: absolute; left: 0; top: 0; width: 100%; height: 100%; line-height: 30px; font-size: 12px; overflow: hidden;}
.laydate-day-mark:after{position: absolute; content:''; right: 2px; top: 2px; width: 5px; height: 5px; border-radius: 50%;}
/* åº•部结构 */
.layui-laydate-footer{position: relative; height: 46px; line-height: 26px; padding: 10px 20px;}
.layui-laydate-footer span{margin-right: 15px; display: inline-block; cursor: pointer; font-size: 12px;}
.layui-laydate-footer span:hover{color: #5FB878;}
.laydate-footer-btns{position: absolute; right: 10px; top: 10px;}
.laydate-footer-btns span{height: 26px; line-height: 26px; margin: 0 0 0 -1px; padding: 0 10px; border: 1px solid #C9C9C9; background-color: #fff;  white-space: nowrap; vertical-align: top; border-radius: 2px;}
/* å¹´æœˆåˆ—表 */
.layui-laydate-list{position: absolute; left: 0; top: 0; width: 100%; height: 100%; padding: 10px; box-sizing: border-box; background-color: #fff;}
.layui-laydate-list>li{position: relative; display: inline-block; width: 33.3%; height: 36px; line-height: 36px; margin: 3px 0; vertical-align: middle; text-align: center; cursor: pointer;}
.laydate-month-list>li{width: 25%; margin: 17px 0;}
.laydate-time-list{}
.laydate-time-list>li{height: 100%; margin: 0; line-height: normal; cursor: default;}
.laydate-time-list p{position: relative; top: -4px; line-height: 29px;}
.laydate-time-list ol{height: 181px; overflow: hidden;}
.laydate-time-list>li:hover ol{overflow-y: auto;}
.laydate-time-list ol li{width: 130%; padding-left: 33px; line-height: 30px; text-align: left; cursor: pointer;}
/* æç¤º */
.layui-laydate-hint{position: absolute; top: 115px; left: 50%; width: 250px; margin-left: -125px; line-height: 20px; padding: 15px; text-align: center; font-size: 12px; color: #FF5722;}
/* åŒæ—¥åކ */
.layui-laydate-range{width: 546px;}
.layui-laydate-range .layui-laydate-main{display: inline-block; vertical-align: middle;}
.layui-laydate-range .laydate-main-list-0 .laydate-next-m,
.layui-laydate-range .laydate-main-list-0 .laydate-next-y,
.layui-laydate-range .laydate-main-list-1 .laydate-prev-y,
.layui-laydate-range .laydate-main-list-1 .laydate-prev-m{display: none;}
.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left: 1px solid #e2e2e2;}
/* é»˜è®¤ç®€çº¦ä¸»é¢˜ */
.layui-laydate, .layui-laydate-hint{border: 1px solid #d2d2d2; box-shadow: 0 2px 4px rgba(0,0,0,.12); background-color: #fff; color: #666;}
.layui-laydate-header{border-bottom: 1px solid #e2e2e2;}
.layui-laydate-header i:hover,
.layui-laydate-header span:hover{color: #5FB878;}
.layui-laydate-content{border-top: none 0; border-bottom: none 0;}
.layui-laydate-content th{color: #333;}
.layui-laydate-content td{color: #666;}
.layui-laydate-content td.laydate-selected{background-color: #00F7DE;}
.laydate-selected:hover{background-color: #00F7DE !important;}
.layui-laydate-content td:hover,
.layui-laydate-list li:hover{background-color: #eaeaea; /*color: #333;*/}
.laydate-time-list li ol{margin: 0; padding: 0; border: 1px solid #e2e2e2; border-left-width: 0;}
.laydate-time-list li:first-child ol{border-left-width: 1px;}
.laydate-time-list>li:hover{background: none;}
.layui-laydate-content .laydate-day-prev,
.layui-laydate-content .laydate-day-next{color: #d2d2d2;}
.laydate-selected.laydate-day-prev,
.laydate-selected.laydate-day-next{background-color: #f8f8f8 !important;}
.layui-laydate-footer{border-top: 1px solid #e2e2e2;}
.layui-laydate-hint{color: #FF5722;}
.laydate-day-mark:after{background-color: #5FB878;}
.layui-laydate-content td.layui-this .laydate-day-mark:after{display: none;}
.layui-laydate-footer span[lay-type="date"]{color: #5FB878;}
.layui-laydate .layui-this{background-color: #009688 !important; color: #fff !important;}
.layui-laydate .laydate-disabled,
.layui-laydate .laydate-disabled:hover{background:none !important; color: #d2d2d2 !important; cursor: not-allowed !important; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;}
.layui-laydate-content .laydate-day-red{
  color: #ff3333;
}
.laydate-day-red:hover{
  color: #ff3333;
}
.layui-laydate-content .laydate-day-yellow{
  color: #ffbb00;
}
.laydate-day-yellow:hover{
  color: #ffbb00;
}
.laydate-day-blue{background-color: #00F7DE;}
/* å¢¨ç»¿/自定义背景色主题 */
.laydate-theme-molv{border: none;}
.laydate-theme-molv.layui-laydate-range{width: 548px}
.laydate-theme-molv .layui-laydate-main{width: 274px;}
.laydate-theme-molv .layui-laydate-header{border: none; background-color: #009688;}
.laydate-theme-molv .layui-laydate-header i,
.laydate-theme-molv .layui-laydate-header span{color: #f6f6f6;}
.laydate-theme-molv .layui-laydate-header i:hover,
.laydate-theme-molv .layui-laydate-header span:hover{color: #fff;}
.laydate-theme-molv .layui-laydate-content{border: 1px solid #e2e2e2; border-top: none; border-bottom: none;}
.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left: none;}
.laydate-theme-molv .layui-laydate-footer{border: 1px solid #e2e2e2;}
/* æ ¼å­ä¸»é¢˜ */
.laydate-theme-grid .layui-laydate-content td,
.laydate-theme-grid .layui-laydate-content thead,
.laydate-theme-grid .laydate-year-list>li,
.laydate-theme-grid .laydate-month-list>li{border: 1px solid #e2e2e2;}
.laydate-theme-grid .laydate-selected,
.laydate-theme-grid .laydate-selected:hover{background-color: #f2f2f2 !important; color: #009688 !important;}
.laydate-theme-grid .laydate-selected.laydate-day-prev,
.laydate-theme-grid .laydate-selected.laydate-day-next{color: #d2d2d2 !important;}
.laydate-theme-grid .laydate-year-list,
.laydate-theme-grid .laydate-month-list{margin: 1px 0 0 1px;}
.laydate-theme-grid .laydate-year-list>li,
.laydate-theme-grid .laydate-month-list>li{margin: 0 -1px -1px 0;}
.laydate-theme-grid .laydate-year-list>li{height: 43px; line-height: 43px;}
.laydate-theme-grid .laydate-month-list>li{height: 71px; line-height: 71px;}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/icon-ext.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/icon.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/layer.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,179 @@
/**
 @Name: layer
 **/
/* *html{background-image: url(about:blank); background-attachment: fixed;} */
html #layuicss-layer{display: none; position: absolute; width: 1989px;}
/* common */
.layui-layer-shade, .layui-layer{position:fixed; _position:absolute; pointer-events: auto;}
.layui-layer-shade{top:0; left:0; width:100%; height:100%; _height:expression(document.body.offsetHeight+"px");}
.layui-layer{-webkit-overflow-scrolling: touch;}
.layui-layer{top:150px; left: 0; margin:0; padding:0; background-color:#fff; -webkit-background-clip: content; border-radius: 2px; box-shadow: 1px 1px 50px rgba(0,0,0,.3);}
.layui-layer-close{position:absolute;}
.layui-layer-content{position:relative;}
.layui-layer-border{border: 1px solid #B2B2B2; border: 1px solid rgba(0,0,0,.1); box-shadow: 1px 1px 5px rgba(0,0,0,.2);}
.layui-layer-load{background:url(loading-1.gif) #eee center center no-repeat;}
.layui-layer-ico{ background:url(icon.png) no-repeat;}
.layui-layer-dialog .layui-layer-ico,
.layui-layer-setwin a,
.layui-layer-btn a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;}
.layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}
/* åŠ¨ç”» */
.layer-anim{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.3s; animation-duration:.3s;}
@-webkit-keyframes layer-bounceIn { /* é»˜è®¤ */
    0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
    100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
}
@keyframes layer-bounceIn {
    0% {opacity: 0; -webkit-transform: scale(.5); -ms-transform: scale(.5); transform: scale(.5)}
    100% {opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1)}
}
.layer-anim-00{-webkit-animation-name: layer-bounceIn;animation-name: layer-bounceIn}
@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}
@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}
@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}
@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}
@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}
@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
/* æ ‡é¢˜æ  */
.layui-layer-title{padding:0 80px 0 20px; height: 50px; line-height: 50px; border-bottom:1px solid #F0F0F0; font-size: 14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;background-color: #F8F8F8; border-radius: 2px 2px 0 0;}
.layui-layer-setwin{position:absolute; right: 15px; *right:0; top: 17px; font-size:0; line-height: initial;}
.layui-layer-setwin a{position:relative; width: 16px; height:16px; margin-left:10px; font-size:12px; _overflow:hidden;}
.layui-layer-setwin .layui-layer-min cite{position:absolute; width:14px; height:2px; left:0; top:50%; margin-top:-1px; background-color:#2E2D3C; cursor:pointer; _overflow:hidden;}
.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA; }
.layui-layer-setwin .layui-layer-max{background-position:-32px -40px;}
.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px;}
.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px;}
.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px;}
.layui-layer-setwin .layui-layer-close1{background-position: 1px -40px; cursor: pointer;}
.layui-layer-setwin .layui-layer-close1:hover{opacity:0.7;}
.layui-layer-setwin .layui-layer-close2{position:absolute; right:-28px; top:-28px; width:30px; height:30px;  margin-left:0; background-position:-149px -31px; *right:-18px; _display:none;}
.layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
/* æŒ‰é’®æ  */
.layui-layer-btn{text-align: right; padding: 0 15px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;}
.layui-layer-btn a{height: 28px; line-height: 28px; margin: 5px 5px 0; padding: 0 15px; border: 1px solid #dedede; background-color:#fff; color: #333; border-radius: 2px; font-weight:400; cursor:pointer; text-decoration: none;}
.layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;}
.layui-layer-btn a:active{opacity: 0.8;}
.layui-layer-btn .layui-layer-btn0{border-color: #1E9FFF; background-color: #1E9FFF; color:#fff;}
.layui-layer-btn-l{text-align: left;}
.layui-layer-btn-c{text-align: center;}
/* å®šåˆ¶åŒ– */
.layui-layer-dialog{min-width: 300px;}
.layui-layer-dialog .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}
.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;}
.layui-layer-ico1{background-position:-30px 0 }
.layui-layer-ico2{background-position:-60px 0;}
.layui-layer-ico3{background-position:-90px 0;}
.layui-layer-ico4{background-position:-120px 0;}
.layui-layer-ico5{background-position:-150px 0;}
.layui-layer-ico6{background-position:-180px 0;}
.layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;}
.layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;}
.layui-layer-hui{min-width:100px;  background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;}
.layui-layer-hui .layui-layer-content{padding:12px 25px; text-align:center;}
.layui-layer-dialog .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;}
.layui-layer-page .layui-layer-content{position:relative; overflow:auto;}
.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
.layui-layer-nobg{background:none;}
.layui-layer-iframe iframe{display: block; width: 100%;}
.layui-layer-loading{border-radius:100%; background:none;  box-shadow:none;  border:none;}
.layui-layer-loading .layui-layer-content{width:60px; height:24px; background:url(loading-0.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading1{width:37px; height:37px; background:url(loading-1.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px; height:32px; background:url(loading-2.gif) no-repeat;}
.layui-layer-tips{background: none; box-shadow:none; border:none;}
.layui-layer-tips .layui-layer-content{position: relative; line-height: 22px; min-width: 12px; padding: 8px 15px; font-size: 12px; _float:left; border-radius: 2px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;}
.layui-layer-tips .layui-layer-close{right:-2px; top:-1px;}
.layui-layer-tips i.layui-layer-TipsG{ position:absolute;  width:0; height:0; border-width:8px; border-color:transparent; border-style:dashed; *overflow:hidden;}
.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px; border-right-style:solid; border-right-color: #000;}
.layui-layer-tips i.layui-layer-TipsT{bottom:-8px;}
.layui-layer-tips i.layui-layer-TipsB{top:-8px;}
.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top: 5px; border-bottom-style:solid; border-bottom-color: #000;}
.layui-layer-tips i.layui-layer-TipsR{left:-8px;}
.layui-layer-tips i.layui-layer-TipsL{right:-8px;}
/* skin */
.layui-layer-lan[type="dialog"]{min-width:280px;}
.layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;}
.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; text-align: right; border-top:1px solid #E9E7E7}
.layui-layer-lan .layui-layer-btn a{background: #fff; border-color: #E9E7E7; color: #333;}
.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;}
.layui-layer-molv .layui-layer-title{background: #009f95; color:#fff; border: none;}
.layui-layer-molv .layui-layer-btn a{background: #009f95; border-color: #009f95;}
.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}
/**
 @Name: layer拓展样式
 */
.layui-layer-iconext{background:url(icon-ext.png) no-repeat;}
/* prompt模式 */
.layui-layer-prompt .layui-layer-input{display: block; width: 260px; height: 36px; margin: 0 auto; line-height: 30px; padding-left: 10px; border: 1px solid #e6e6e6; color: #333;}
.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}
.layui-layer-prompt .layui-layer-content{padding: 20px;}
.layui-layer-prompt .layui-layer-btn{padding-top: 0;}
/* tab模式 */
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
.layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}
.layui-layer-tab .layui-layer-title span{position:relative; float:left; min-width:80px; max-width: 300px; padding:0 20px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}
.layui-layer-tab .layui-layer-title span.layui-this{height: 51px; border-left: 1px solid #eee; border-right: 1px solid #eee; background-color: #fff; z-index: 10;}
.layui-layer-tab .layui-layer-title span:first-child{border-left:none;}
.layui-layer-tabmain{line-height:24px; clear:both;}
.layui-layer-tabmain .layui-layer-tabli{display:none;}
.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}
/* photo模式 */
.layui-layer-photos{background: none; box-shadow: none;}
.layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
.layui-layer-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
.layui-layer-imgprev, .layui-layer-imgnext{position: fixed; top: 50%; width: 27px; _width: 44px; height: 44px;  margin-top:-22px; outline:none;blr:expression(this.onFocus=this.blur());}
.layui-layer-imgprev{left: 30px; background-position:-5px -5px; _background-position:-70px -5px;}
.layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;}
.layui-layer-imgnext{right: 30px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;}
.layui-layer-imgnext:hover{background-position: -33px -50px; _background-position: -120px -50px;}
.layui-layer-imgbar{position: fixed; left:0; right: 0; bottom:0; width:100%; height: 40px; line-height: 40px; background-color:#000\9; filter:Alpha(opacity=60); background-color: rgba(2,0,0,.35); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
.layui-layer-imgtit{/*position:absolute; left:20px;*/}
.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
.layui-layer-imgtit a{max-width:65%;  text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
.layui-layer-imgtit a:hover{color:#fff; text-decoration:underline;}
.layui-layer-imgtit em{padding-left:10px; font-style: normal;}
/* å…³é—­åŠ¨ç”» */
@-webkit-keyframes layer-bounceOut {
  100% {opacity: 0; -webkit-transform: scale(.7); transform: scale(.7)}
  30% {-webkit-transform: scale(1.05); transform: scale(1.05)}
  0% {-webkit-transform: scale(1); transform: scale(1);}
}
@keyframes layer-bounceOut {
  100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);}
  30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);}
  0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);}
}
.layer-anim-close{-webkit-animation-name: layer-bounceOut; animation-name: layer-bounceOut; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.2s; animation-duration:.2s;}
@media screen and (max-width: 1100px) {
  .layui-layer-iframe{overflow-y: auto; -webkit-overflow-scrolling: touch;}
}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/layer.old.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,182 @@
/**
 @Name: layer
 @Author: è´¤å¿ƒ
 **/
/* *html{background-image: url(about:blank); background-attachment: fixed;} */
html #layuicss-layer{display: none; position: absolute; width: 1989px;}
/* common */
.layui-layer-shade, .layui-layer{position:fixed; _position:absolute; pointer-events: auto;}
.layui-layer-shade{top:0; left:0; width:100%; height:100%; _height:expression(document.body.offsetHeight+"px");}
.layui-layer{-webkit-overflow-scrolling: touch;}
.layui-layer{top:150px; left: 0; margin:0; padding:0; background-color:#fff; -webkit-background-clip: content; border-radius: 2px; box-shadow: 1px 1px 50px rgba(0,0,0,.3);border:1px solid #B2B2B2 \9;}
.layui-layer-close{position:absolute;}
.layui-layer-content{position:relative;}
.layui-layer-border{border: 1px solid #B2B2B2; border: 1px solid rgba(0,0,0,.1); box-shadow: 1px 1px 5px rgba(0,0,0,.2);}
.layui-layer-load{background:url(loading-1.gif) #eee center center no-repeat;}
.layui-layer-ico{ background:url(icon.png) no-repeat;}
.layui-layer-dialog .layui-layer-ico,
.layui-layer-setwin a,
.layui-layer-btn a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;}
.layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}
/* åŠ¨ç”» */
.layer-anim{-webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.3s; animation-duration:.3s;}
@-webkit-keyframes layer-bounceIn { /* é»˜è®¤ */
    0% {opacity: 0; -webkit-transform: scale(.5); transform: scale(.5)}
    100% {opacity: 1; -webkit-transform: scale(1); transform: scale(1)}
}
@keyframes layer-bounceIn {
    0% {opacity: 0; -webkit-transform: scale(.5); -ms-transform: scale(.5); transform: scale(.5)}
    100% {opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1)}
}
.layer-anim-00{-webkit-animation-name: layer-bounceIn;animation-name: layer-bounceIn}
@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}
@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}
@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}
@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}
@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}
@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
/* æ ‡é¢˜æ  */
.layui-layer-title{padding:0 80px 0 20px; height:42px; line-height:42px; border-bottom:1px solid #eee; font-size:14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background-color: #F8F8F8; border-radius: 2px 2px 0 0;}
.layui-layer-setwin{position:absolute; right:15px; *right:0; top:15px; font-size:0; line-height: initial;}
.layui-layer-setwin a{position:relative; width: 16px; height:16px; margin-left:10px; font-size:12px; _overflow:hidden;}
.layui-layer-setwin .layui-layer-min cite{position:absolute; width:14px; height:2px; left:0; top:50%; margin-top:-1px; background-color:#2E2D3C; cursor:pointer; _overflow:hidden;}
.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA; }
.layui-layer-setwin .layui-layer-max{background-position:-32px -40px;}
.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px;}
.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px;}
.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px;}
.layui-layer-setwin .layui-layer-close1{background-position: 1px -40px; cursor: pointer;}
.layui-layer-setwin .layui-layer-close1:hover{opacity:0.7;}
.layui-layer-setwin .layui-layer-close2{position:absolute; right:-28px; top:-28px; width:30px; height:30px;  margin-left:0; background-position:-149px -31px; *right:-18px; _display:none;}
.layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
.layui-layer-setwin .layui-layer-closetrue{background-position: 1px -40px;cursor: pointer;}
/* æŒ‰é’®æ  */
.layui-layer-btn{text-align: right; padding: 0 15px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;}
.layui-layer-btn a{height: 28px; line-height: 28px; margin: 5px 5px 0; padding: 0 15px; border: 1px solid #dedede; background-color:#fff; color: #333; border-radius: 2px; font-weight:400; cursor:pointer; text-decoration: none;}
.layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;}
.layui-layer-btn a:active{opacity: 0.8;}
.layui-layer-btn .layui-layer-btn0{border-color: #1E9FFF; background-color: #009688; color:#fff;}
.layui-layer-btn-l{text-align: left;}
.layui-layer-btn-c{text-align: center;}
/* å®šåˆ¶åŒ– */
.layui-layer-dialog{min-width:260px;}
.layui-layer-dialog .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}
.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;}
.layui-layer-ico1{background-position:-30px 0 }
.layui-layer-ico2{background-position:-60px 0;}
.layui-layer-ico3{background-position:-90px 0;}
.layui-layer-ico4{background-position:-120px 0;}
.layui-layer-ico5{background-position:-150px 0;}
.layui-layer-ico6{background-position:-180px 0;}
.layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;}
.layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;}
.layui-layer-hui{min-width:100px;  background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;}
.layui-layer-hui .layui-layer-content{padding:12px 25px; text-align:center;}
.layui-layer-dialog .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;}
.layui-layer-page .layui-layer-content{position:relative; overflow:auto;}
.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
.layui-layer-nobg{background:none;}
.layui-layer-iframe iframe{display: block; width: 100%;}
.layui-layer-loading{border-radius:100%; background:none;  box-shadow:none;  border:none;}
.layui-layer-loading .layui-layer-content{width:60px; height:24px; background:url(loading-0.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading1{width:37px; height:37px; background:url(loading-1.gif) no-repeat;}
.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px; height:32px; background:url(loading-2.gif) no-repeat;}
.layui-layer-tips{background: none; box-shadow:none; border:none;}
.layui-layer-tips .layui-layer-content{position: relative; line-height: 22px; min-width: 12px; padding: 8px 15px; font-size: 12px; _float:left; border-radius: 2px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;}
.layui-layer-tips .layui-layer-close{right:-2px; top:-1px;}
.layui-layer-tips i.layui-layer-TipsG{ position:absolute;  width:0; height:0; border-width:8px; border-color:transparent; border-style:dashed; *overflow:hidden;}
.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px; border-right-style:solid; border-right-color: #000;}
.layui-layer-tips i.layui-layer-TipsT{bottom:-8px;}
.layui-layer-tips i.layui-layer-TipsB{top:-8px;}
.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top: 5px; border-bottom-style:solid; border-bottom-color: #000;}
.layui-layer-tips i.layui-layer-TipsR{left:-8px;}
.layui-layer-tips i.layui-layer-TipsL{right:-8px;}
/* skin */
.layui-layer-lan[type="dialog"]{min-width:280px;}
.layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;}
.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; text-align: right; border-top:1px solid #E9E7E7}
/*.layui-layer-lan .layui-layer-btn a{background: #fff; border-color: #E9E7E7; color: #333;}*/
.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#fff;}
.layui-layer-molv .layui-layer-title{background: #009f95; color:#fff; border: none;}
.layui-layer-molv .layui-layer-btn a{background: #009f95; border-color: #009f95;}
.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}
/**
 @Name: layer拓展样式
 */
.layui-layer-iconext{background:url(icon-ext.png) no-repeat;}
/* prompt模式 */
.layui-layer-prompt .layui-layer-input{display: block; width: 230px; height: 36px; margin: 0 auto; line-height: 30px; padding-left: 10px; border: 1px solid #e6e6e6; color: #333;}
.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}
.layui-layer-prompt .layui-layer-content{padding: 20px;}
.layui-layer-prompt .layui-layer-btn{padding-top: 0;}
/* tab模式 */
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
.layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}
.layui-layer-tab .layui-layer-title span{position:relative; float:left; min-width:80px; max-width:260px; padding:0 20px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}
.layui-layer-tab .layui-layer-title span.layui-this{height: 43px; border-left: 1px solid #eee; border-right: 1px solid #eee; background-color: #fff; z-index: 10;}
.layui-layer-tab .layui-layer-title span:first-child{border-left:none;}
.layui-layer-tabmain{line-height:24px; clear:both;}
.layui-layer-tabmain .layui-layer-tabli{display:none;}
.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}
/* photo模式 */
.layui-layer-photos{-webkit-animation-duration: .8s; animation-duration: .8s;}
.layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
.layui-layer-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
.layui-layer-imguide,.layui-layer-imgbar{display:none;}
.layui-layer-imgprev, .layui-layer-imgnext{position:absolute; top:50%; width:27px; _width:44px; height:44px;  margin-top:-22px; outline:none;blr:expression(this.onFocus=this.blur());}
.layui-layer-imgprev{left:10px; background-position:-5px -5px; _background-position:-70px -5px;}
.layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;}
.layui-layer-imgnext{right:10px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;}
.layui-layer-imgnext:hover{background-position:-33px -50px; _background-position:-120px -50px;}
.layui-layer-imgbar{position:absolute; left:0; bottom:0; width:100%; height:32px; line-height:32px; background-color:rgba(0,0,0,.8); background-color:#000\9; filter:Alpha(opacity=80); color:#fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
.layui-layer-imgtit{/*position:absolute; left:20px;*/}
.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
.layui-layer-imgtit a{max-width:65%;  text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
.layui-layer-imgtit a:hover{color:#fff; text-decoration:underline;}
.layui-layer-imgtit em{padding-left:10px; font-style: normal;}
/* å…³é—­åŠ¨ç”» */
@-webkit-keyframes layer-bounceOut {
  100% {opacity: 0; -webkit-transform: scale(.7); transform: scale(.7)}
  30% {-webkit-transform: scale(1.05); transform: scale(1.05)}
  0% {-webkit-transform: scale(1); transform: scale(1);}
}
@keyframes layer-bounceOut {
  100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);}
  30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);}
  0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);}
}
.layer-anim-close{-webkit-animation-name: layer-bounceOut; animation-name: layer-bounceOut; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration:.2s; animation-duration:.2s;}
@media screen and (max-width: 1100px) {
  .layui-layer-iframe{overflow-y: auto; -webkit-overflow-scrolling: touch;}
}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/loading-0.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/loading-1.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/layer/default/loading-2.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/css/modules/treetable.css
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
.treeTable-empty {
    width: 30px;
    display: inline-block;
}
.treeTable-icon {
    cursor: pointer;
}
.treeTable-icon .layui-icon-triangle-d:before {
    content: "\e623";
}
.treeTable-icon.open .layui-icon-triangle-d:before {
    content: "\e625";
    background-color: transparent;
}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.eot
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,554 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="layui-icon" horiz-adv-x="1024" >
  <font-face
    font-family="layui-icon"
    font-weight="500"
    font-stretch="normal"
    units-per-em="1024"
    ascent="896"
    descent="-128"
  />
    <missing-glyph />
    <glyph glyph-name="reply-fill" unicode="&#58897;" d="M507.904 835.5840000000001q93.184 1.024 175.104-33.792t143.872-94.72 97.792-141.312 36.864-174.592q1.024-88.064-30.208-165.888t-87.04-137.728-131.072-98.816-162.304-48.128q-22.528-3.072-48.128-5.12t-56.832-3.072-69.632 0-86.528 6.144q-106.496 10.24-158.208 26.624t-41.472 18.432q54.272 9.216 93.184 29.696 20.48 11.264 16.896 32.256t-19.968 39.424q-52.224 57.344-84.48 133.632t-34.304 164.352q-1.024 93.184 33.792 175.104t95.232 143.36 142.336 97.28 175.104 36.864zM707.584 385.024q0-26.624 18.432-45.568t45.056-18.944 45.568 18.944 18.944 45.568-18.944 45.056-45.568 18.432-45.056-18.432-18.432-45.056zM450.56 385.024q0-26.624 19.456-46.08t46.08-19.456q27.648 0 46.592 19.456t18.944 46.08q0 27.648-18.944 46.592t-46.592 18.944q-26.624 0-46.08-18.944t-19.456-46.592zM196.608 386.048q0-26.624 18.944-46.08t45.568-19.456q27.648 0 46.592 19.456t18.944 46.08-18.944 45.568-46.592 18.944q-26.624 0-45.568-18.944t-18.944-45.568z"  horiz-adv-x="1024" />
    <glyph glyph-name="set-fill" unicode="&#58900;" d="M916.9398 445.2101l-69.9664 10.7833c-18.6619 2.863-38.1388 17.826-43.3424 33.2487-5.1618 15.3809-15.0883 65.4524-3.9288 80.6661l41.9004 57.135c11.1595 15.2346 9.3832 38.5985-3.9706 51.9314l-30.6364 30.6573c-13.3538 13.3538-36.7177 15.151-51.9314 3.9497l-57.135-41.8795c-15.2346-11.1804-39.4344-14.3987-53.7704-7.168-14.3569 7.2307-57.3022 35.7773-60.1652 54.4183l-10.7833 69.9664C570.3471 807.6016 552.542 822.8571 533.6712 822.8571h-43.34236734693877c-18.8709 0-36.6759-15.2555-39.5389-33.9174l-10.7833-69.9664c-2.863-18.6619-17.826-38.1388-33.2487-43.3424-15.4018-5.1827-65.4524-15.1092-80.687-3.9288L268.9567 713.5817c-15.2346 11.1804-38.6194 9.3832-51.9523-3.9497l-30.6364-30.6573c-13.3747-13.3538-15.151-36.7177-3.9706-51.9314l41.9004-57.135c11.1595-15.2346 14.3778-39.4136 7.168-53.7704-7.2307-14.3569-35.7773-57.2813-54.4183-60.1443l-69.9664-10.7833C88.3984 442.3471 73.1429 424.542 73.1429 405.6712v-43.34236734693877c0-18.8709 15.2555-36.6759 33.9174-39.5389l69.9664-10.7833c18.6619-2.863 38.1388-17.8469 43.3424-33.2487 5.1618-15.4018 15.0883-65.4733 3.9288-80.687l-41.9004-57.135c-11.1595-15.2346-9.3832-38.6194 3.9706-51.9314l30.6364-30.6573c13.3538-13.3538 36.7177-15.151 51.9523-3.9706l57.135 41.9213c15.2346 11.1386 39.4136 14.3778 53.7704 7.168 14.3569-7.2307 57.2813-35.7773 60.1443-54.4183l10.7833-69.9664c2.863-18.6619 20.6472-33.9174 39.5389-33.9174h43.34236734693877c18.8709 0 36.6759 15.2555 39.5389 33.9174l10.7833 69.9664c2.863 18.6619 17.826 38.1388 33.2487 43.3215 15.4018 5.1827 65.4524 15.0883 80.6661 3.9288l57.1559-41.9213c15.2346-11.1595 38.5985-9.3623 51.9314 3.9706l30.6364 30.6573c13.3747 13.3329 15.151 36.7177 3.9706 51.9314l-41.9004 57.135c-11.1595 15.2346-14.3778 39.4136-7.168 53.7496 7.2307 14.3778 35.7773 57.3231 54.4183 60.1861l69.9664 10.7833c18.6619 2.863 33.9174 20.6472 33.9174 39.5389v43.34236734693877C950.8571 424.542 935.6016 442.3471 916.9398 445.2101zM512 210.4633c-95.838 0-173.5367 77.6986-173.5367 173.5367s77.6986 173.5367 173.5367 173.5367 173.5367-77.6986 173.5367-173.5367S607.838 210.4633 512 210.4633zM512 384m-104.7824 0a5.014 5.014 0 1 1 209.5647 0 5.014 5.014 0 1 1-209.5647 0Z"  horiz-adv-x="1024" />
    <glyph glyph-name="menu-fill" unicode="&#58895;" d="M511.999488 834.254727c-248.678712 0-450.273176-201.585181-450.273176-450.254727s201.594464-450.254727 450.273176-450.254727 450.273176 201.585181 450.273176 450.254727S760.6782 834.254727 511.999488 834.254727zM266.371377 589.705012l491.256222 0 0-33.772174L266.371377 555.932838 266.371377 589.705012zM757.627599 178.29396499999996L266.371377 178.29396499999996l0 33.773198 491.256222 0L757.627599 178.29396499999996zM140.487278 367.11340099999995l0 33.771151 743.024421 0 0-33.771151L140.487278 367.11340099999995z"  horiz-adv-x="1024" />
    <glyph glyph-name="search" unicode="&#58901;" d="M439.323351 120.52219c-49.280352 0-97.09834 9.656941-142.126681 28.699646-43.480015 18.388812-82.522793 44.706201-116.043584 78.225619s-59.841305 72.560596-78.230871 116.03883C83.878729 388.513804 74.222416 436.330856 74.222416 485.609189c0 49.284473 9.656313 97.104595 28.699798 142.133138 18.388542 43.479257 44.71008 82.520435 78.231894 116.03883 33.518745 33.515325 72.562546 59.832713 116.043584 78.219479 45.027318 19.039635 92.846329 28.694529 142.125658 28.694529 49.280352 0 97.099364-9.653871 142.126681-28.694529 43.481039-18.385742 82.525863-44.704155 116.044608-78.220502 33.520791-33.518395 59.842328-72.559573 78.230871-116.03883 19.042462-45.028543 28.699798-92.848665 28.699798-142.133138 0-49.278333-9.657336-97.095385-28.701845-142.122905-18.388542-43.47721-44.708033-82.520435-78.228824-116.03883s-72.563569-59.838853-116.043584-78.226642C536.422715 130.177084 488.603703 120.52219 439.323351 120.52219zM439.323351 797.483242c-171.975699 0-311.887855-139.906423-311.887855-311.875077S267.347652 173.734112 439.323351 173.734112s311.887855 139.907447 311.887855 311.874053S611.299051 797.483242 439.323351 797.483242zM890.678206-48.734702c-22.121716 0-42.90387 8.562003-58.541653 24.115234L674.672953 128.025071l37.039062 38.20616 157.888289-153.058978c5.606924-5.606695 13.091693-8.692986 21.077901-8.692986 7.983139 0 15.464837 3.087315 21.070738 8.69094 5.616135 5.622044 8.715856 13.126972 8.715856 21.123087 0 7.980765-3.091535 15.46318-8.702552 21.067828l-0.301888 0.306992L758.714395 213.230662l38.207726 37.035498 152.611906-157.427472c15.571265-15.638165 24.144876-36.422538 24.144876-58.549487 0-22.195511-8.625801-43.054585-24.287121-58.735729C933.723298-40.112324 912.876674-48.734702 890.678206-48.734702zM281.015489 327.245392c-42.340005 42.320874-65.652899 98.584296-65.643689 158.421102 0.008187 59.818387 23.319034 116.074645 65.637549 158.4078l37.634651-37.619806c-66.60666-66.629513-66.60973-175.00071-0.007163-241.577011L281.015489 327.245392z"  horiz-adv-x="1024" />
    <glyph glyph-name="share" unicode="&#58945;" d="M769.714 306.453c-51.754 0-97.702-24.851-126.571-63.269L394.479 367.94100000000003c3.93 13.798 6.034 28.364 6.034 43.424 0 16.496-2.527 32.399-7.211 47.35l247.724 124.288c28.71-40.052 75.647-66.151 128.687-66.151 87.388 0 158.229 70.84 158.229 158.229 0 87.388-70.841 158.229-158.229 158.229-87.389 0-158.229-70.841-158.229-158.229 0-6.046 0.352-12.009 1.011-17.88L351.22 526.116c-28.371 26.943-66.723 43.479-108.938 43.479-87.388 0-158.229-70.84-158.229-158.229s70.84-158.229 158.229-158.229c43.752 0 83.354 17.758 111.997 46.459l258.676-129.779c-0.964-7.062-1.474-14.266-1.474-21.592 0-87.389 70.84-158.229 158.229-158.229s158.229 70.84 158.229 158.229C927.938 235.61199999999997 857.103 306.453 769.714 306.453L769.714 306.453z"  horiz-adv-x="1024" />
    <glyph glyph-name="set-sm" unicode="&#58912;" d="M946.367 405.895c0.02 21.85-13.04 38.49-31.74 41.57-18.69 3.07-79.05 13.01-85.99 14.14-6.95 1.15-14.09 8.07-15.4 11.45-1.32 3.37-8.94 22.2-11.87 29.46-2.95 7.27-1.92 16.58 4.39 25.52 6.3 8.93 39.9 55.87 48.38 67.72 8.49 11.87 8.65 34.61-4.84 48.39-13.48 13.78-47.75 47.09-56.73 55.86-8.99 8.76-31.08 8.64-42.67 0.43-11.58-8.2-71.69-51.01-71.69-51.01s-9.97-6.89-20.67-2.64c-10.7 4.24-33.43 14.07-33.43 14.07s-7.19 5.43-9.68 19.79c-2.5 14.37-11.11 65.28-14.07 82.7-2.97 17.42-20.67 29.62-37.83 29.46-17.16-0.14-57.91 0-74.33 0s-32.26-15.68-34.75-29.46c-2.49-13.79-11.56-69.16-14.07-84.45-2.52-15.3-11.44-18.48-11.44-18.48s-19.56-8.06-29.91-12.31c-10.34-4.26-15.39-2.64-30.35 7.48-14.95 10.11-44.74 31.03-63.04 43.83-18.3 12.81-38.12 7.92-49.26-3.52s-36.06-35.77-51.02-50.43c-14.95-14.66-12.61-37.54 0.58-55.71 13.2-18.18 32.34-45.43 41.35-58.21 9.01-12.78 10.84-19.5 8.36-26.82-2.49-7.34-6.64-16.58-11.43-27.72-4.81-11.13-9.69-13.64-27.86-17.01-17.36-3.21-58.42-9.92-77.4-13.31-18.99-3.37-30.66-21.43-30.66-41.81l0-64.66c0-24.34 13.2-37.24 38.42-41.93 25.22-4.69 62.66-10.66 74.77-12.61 12.1-1.95 17.67-6.6 21.41-15.54 3.73-8.94 5.13-10.12 9.37-22.57 4.26-12.47 6.46-15.55-4.98-31.67-11.44-16.13-34.31-48.11-46.03-64.51-11.74-16.4-6.45-37.83 4.98-49.85 11.44-12.03 35.47-35.64 48.97-48.97 13.49-13.33 35.19-16.28 53.36-3.52 18.19 12.75 54.98 38.99 65.69 46.62 10.7 7.63 21.91 5.28 27.85 2.94 5.94-2.35 11.25-4.6 22-9.1 10.73-4.48 13.85-11.2 16.41-23.45 2.57-12.24 10.19-56.85 13.93-78.59 3.75-21.72 18.91-33.43 40.62-33.72 21.7-0.29 33.27-0.12 61.57 0 28.29 0.13 41.86 12.61 45.45 31.38 3.59 18.76 12.45 72.94 14.22 83.72 1.78 10.76 5.94 14.73 13.63 18.47 7.7 3.74 14.32 6.47 26.84 11.88 12.51 5.4 18.91 0.66 27.7-5.72 8.8-6.39 47.51-33.78 63.78-45.31 16.28-11.53 36.73-10.33 51.9 4.4 15.18 14.73 31.62 30.99 49.27 48.38 17.64 17.4 12.16 39.59 4.4 51.46-7.77 11.88-44.49 62.95-49.71 70.23-5.21 7.28-4.4 18.62-1.75 24.63 2.64 6.01 8.44 18.24 11.72 25.22 3.29 6.97 9.6 11.22 18.18 12.9 8.58 1.69 62.72 11 83.75 14.61 21.03 3.64 31.11 19.92 31.26 39.92C946.427 359.93499999999995 946.347 388.525 946.367 405.895zM908.587 338.615c0.21-5.76-4.66-10.65-8.82-11.38-4.17-0.73-63.26-11.38-81.48-14.29-18.21-2.92-33.23-15.07-38.72-28.06-3.98-9.44-5.47-13.51-10.59-26.96-5.12-13.44-4.64-32.19 2.56-42.26 7.2-10.08 46.82-64.9 50.38-70.45s4.27-11.95-1.28-17.5-40.99-41.2-47.39-47.39c-6.41-6.19-11.83-4.8-18.79 0-6.95 4.8-39.61 26.39-64.44 44.36-16.96 12.28-32.82 12.43-48.7 6.02-15.87-6.42 1.28 0.28-22.2-8.97-23.48-9.25-30.23-27.62-33.73-48.24-3.5-20.63-10.67-62.98-11.95-70.45-1.28-7.47-5.55-11.1-13.66-11.1l-64.9 0c-8.11 0-11.74 2.99-14.52 11.95-2.77 8.97-10.03 54.87-12.8 74.29-2.78 19.43-13.82 36.12-24.77 40.56-10.94 4.45-4.98 2.14-27.32 11.1-22.34 8.97-39.63 4.5-51.23-3.84-11.61-8.34-58.64-42.69-65.33-46.96-6.68-4.28-14.65-3.28-18.35 0.42-3.7 3.7-40.56 40.56-46.54 46.54-5.98 5.98-5.36 12.92 0 20.49 5.36 7.58 28.39 40.76 40.99 57.95 12.59 17.2 17.93 34.74 9.82 53.49-8.12 18.74-4.42 10.24-12.39 28.6-7.96 18.36-24.28 24.46-38.42 26.9-14.14 2.43-68.88 11.53-76.85 13.23-7.97 1.71-11.95 7.26-11.95 14.09l0 66.18c0 9.53 7.67 12.44 12.38 13.23 4.7 0.8 54.22 9.18 73 12.39 18.79 3.2 36.36 11.32 43.55 29.03 7.19 17.7 4.27 11.1 11.1 27.32 6.83 16.23 3.8 33.94-7.68 49.96-11.49 16.01-38.85 54-44.4 61.9-5.55 7.9-5.77 12.6 0.85 19.21 6.62 6.62 42.05 42.48 46.96 46.97 4.91 4.48 12.07 5.4 18.36 0.85 6.3-4.55 49.31-35.65 64.04-46.11 14.73-10.46 32.35-12.56 49.1-5.55 16.75 7.02 10.25 4.48 26.9 11.1s24.84 19.09 28.18 39.71c3.33 20.61 11.95 74.14 12.81 77.7 0.85 3.55 5.55 10.46 11.74 10.46s65.82-0.07 69.8 0c3.99 0.07 10.3-3.29 11.32-9.18 1.02-5.9 13.02-74.29 14.94-86.25 1.92-11.95 15.58-28.57 25.54-32.73 9.96-4.16 21.35-8.75 31.31-13.09 9.97-4.34 30.13-1.91 36.15 2.28 6.03 4.18 70.52 48.81 75.43 52.37 4.91 3.56 11.52 3.27 17.64-2.85s43.34-43.19 47.54-47.53c4.19-4.34 4.66-8.66 1.14-13.66-3.53-5.01-36.72-51.8-47.54-67.46-10.81-15.65-11.73-33.73-5.41-48.96 6.33-15.22 3.99-9.39 9.11-21.91 5.13-12.53 16.28-29.03 33.59-31.88 17.31-2.85 76.92-12.74 84.82-13.95 7.9-1.21 11.1-7.18 11.1-13.37S908.377 344.385 908.587 338.615zM526.833 573.1949999999999c-110.45 0-200-89.54-200-200s89.55-200 200-200c110.46 0 200 89.54 200 200S637.293 573.1949999999999 526.833 573.1949999999999zM526.833 208.19500000000005c-91.12 0-165 73.87-165 165s73.88 165 165 165c91.13 0 165-73.87 165-165S617.963 208.19500000000005 526.833 208.19500000000005z"  horiz-adv-x="1024" />
    <glyph glyph-name="engine" unicode="&#58920;" d="M422.214332 360.70413299999996L186.183684 360.70413299999996l0 46.568461 236.030648 0c10.379577 40.075407 46.47537 69.794509 89.785668 69.794509 51.432433 0 93.067103-41.657943 93.067103-93.067103C605.067103 332.56756700000005 563.40916 290.909624 512 290.909624 468.689703 290.909624 432.593909 320.65199900000005 422.214332 360.70413299999996L422.214332 360.70413299999996zM512 779.634098c-218.529658 0-395.634098-177.10444-395.634098-395.634098 0-218.529658 177.10444-395.634098 395.634098-395.634098 154.76275 0 288.417257 89.064217 353.440885 218.55293l101.398692-59.112389-23.063141-39.959044-62.161099 35.909613c-33.745261-51.595341-77.42792-96.115813-129.093079-129.744711l35.653614-61.765464-40.308133-23.295867-35.653614 61.765464c-53.620057-27.345298-113.360805-44.404109-176.894987-47.73209L535.319139-127.99706800000001l-46.568461 0 0 70.981412c-63.534182 3.327981-123.27493 20.386792-176.894987 47.73209l-35.653614-61.765464-40.308133 23.295867 35.653614 61.765464c-51.665159 33.628898-95.347818 78.149371-129.093079 129.744711l-62.161099-35.909613-23.295867 40.308133 62.114553 35.863067c-27.415116 53.550239-44.799743 113.104807-48.127724 176.685534L0.002932 360.70413299999996l0 46.568461 70.958139 0c3.327981 63.580727 20.712609 123.135295 48.127724 176.685534l-62.114553 35.863067 23.295867 40.308133 62.161099-35.909613c33.745261 51.595341 77.42792 96.115813 129.093079 129.744711l-35.653614 61.765464 40.308133 23.295867 35.653614-61.765464c53.620057 27.345298 113.360805 44.404109 176.894987 47.73209L488.727406 895.997068l46.568461 0 0-70.981412c63.534182-3.327981 123.27493-20.386792 176.894987-47.73209l35.653614 61.765464 40.308133-23.295867-35.653614-61.765464c51.665159-33.628898 95.347818-78.149371 129.093079-129.744711l62.161099 35.909613 23.063141-39.959044-101.398692-59.112389C800.417257 690.569881 666.76275 779.634098 512 779.634098L512 779.634098z"  horiz-adv-x="1024" />
    <glyph glyph-name="close" unicode="&#4102;" d="M783.483 701.249L512 429.775 240.517 701.249c-10.082 10.083-26.429 10.083-36.51 0-10.083-10.082-10.083-26.429 0-36.509l271.481-271.475L204.008 121.78800000000001c-10.083-10.081-10.083-26.428 0-36.508 10.082-10.082 26.429-10.082 36.51 0L512 356.755l271.483-271.475c10.082-10.082 26.429-10.082 36.513 0 10.081 10.083 10.081 26.428 0 36.508L548.51 393.265l271.485 271.474c10.081 10.083 10.081 26.429 0 36.509C809.912 711.33 793.564 711.33 783.483 701.249z"  horiz-adv-x="1024" />
    <glyph glyph-name="close-fill" unicode="&#4103;" d="M512 822.022125c-217.47508 0-394.423141-176.949085-394.423141-394.423141 0-217.474057 176.948061-394.422118 394.423141-394.422118 217.473033 0 394.422118 176.948061 394.422118 394.422118C906.422118 645.07304 729.473033 822.022125 512 822.022125zM702.228529 270.92978200000005c8.030907-8.030907 8.030907-21.052478 0-29.083385s-21.052478-8.030907-29.083385 0L512 402.992563 350.853833 241.84741899999995c-8.030907-8.030907-21.052478-8.030907-29.083385 0s-8.030907 21.052478 0 29.083385l161.146167 161.146167L321.771471 593.222115c-8.030907 8.030907-8.030907 21.052478 0 29.083385s21.052478 8.030907 29.083385 0l161.146167-161.146167L673.145144 622.305501c8.030907 8.030907 21.052478 8.030907 29.083385 0s8.030907-21.052478 0-29.083385L541.082362 432.075949 702.228529 270.92978200000005z"  horiz-adv-x="1024" />
    <glyph glyph-name="chart-screen" unicode="&#58921;" d="M963.930903 179.21903299999997l0 34.824133-37.354769-2.675946L926.576133 694.8538169999999 691.413206 694.8538169999999l0 70.462818L330.260819 765.316635l0-70.462818L95.690386 694.8538169999999l0-480.809627-35.621289 0 0-34.824133 432.583253 0 0-141.228535-90.313935 0 0-35.307134 216.753649 0 0 35.307134-90.313935 0L528.778128 179.21903299999997 963.930903 179.21903299999997zM366.212636 730.008478L655.216819 730.008478l0-35.307134L366.212636 694.7013440000001 366.212636 730.008478zM364.817869 332.73133600000006L222.224244 406.252817l14.295588 27.736715 123.238812-63.523779 173.928285 159.755494 127.5807-92.634794 93.13826 122.414027 12.420891-9.449209 12.420891-9.449209L667.639756 394.365068l-131.636063 95.621824L364.817869 332.73133600000006z"  horiz-adv-x="1024" />
    <glyph glyph-name="star" unicode="&#58880;" d="M749.624889-84.152889c-15.672889 0-31.246222 3.882667-45.084444 11.306667l-192.526222 103.637333L319.544889-72.817778c-31.203556-16.64-70.314667-14.392889-99.043556 5.304889-29.511111 20.337778-44.743111 55.921778-38.840889 90.695111l37.703111 225.251556L56.661333 410.908444c-25.002667 24.888889-33.464889 60.984889-22.058667 94.193778 11.349333 32.910222 40.064 56.576 74.965333 61.752889l221.326222 32.896 96.128 199.580444c15.488 32.085333 48.853333 52.807111 84.992 52.807111 36.167111 0 69.518222-20.736 84.963556-52.807111l96.156444-199.580444 221.297778-32.910222c34.872889-5.162667 63.616-28.8 74.979556-61.696 11.392-33.28 2.944-69.361778-22.030222-94.250667L804.622222 248.433778l37.745778-225.28c5.845333-34.773333-9.386667-70.357333-38.812444-90.638222C787.569778-78.392889 768.938667-84.152889 749.624889-84.152889zM512.014222 91.548444c4.636444 0 9.272889-1.137778 13.482667-3.384889l205.937778-110.862222c12.373333-6.641778 28.316444-5.802667 39.936 2.133333 11.392 7.836444 17.123556 21.006222 14.890667 34.304L746.097778 253.496889c-1.507556 9.088 1.450667 18.332444 7.964444 24.832l173.141333 172.842667c9.457778 9.429333 12.686222 23.025778 8.405333 35.484444-4.380444 12.672-15.701333 21.873778-29.525333 23.921778L669.866667 545.706667c-9.315556 1.379556-17.365333 7.296-21.447111 15.786667L545.720889 774.641778c-6.030222 12.529778-19.256889 20.608-33.706667 20.608s-27.690667-8.092444-33.763556-20.622222L375.608889 561.493333c-4.081778-8.490667-12.131556-14.407111-21.447111-15.786667L117.930667 510.577778c-13.624889-2.033778-25.201778-11.434667-29.539556-23.992889-4.266667-12.416-1.024-25.984 8.433778-35.399111L269.937778 278.328889c6.513778-6.499556 9.472-15.744 7.964444-24.832l-40.135111-239.744c-2.247111-13.312 3.484444-26.439111 14.976-34.360889 11.434667-7.836444 27.349333-8.775111 39.950222-2.062222l205.852444 110.833778C502.741333 90.410667 507.377778 91.548444 512.014222 91.548444zM200.32 439.210667c-6.840889 0-12.885333 4.963556-14.023111 11.946667-1.251556 7.751111 4.010667 15.061333 11.761778 16.312889l9.443556 1.536c7.793778 1.336889 15.061333-4.010667 16.312889-11.761778 1.251556-7.751111-4.010667-15.061333-11.761778-16.312889l-9.443556-1.536C201.856 439.267556 201.073778 439.210667 200.32 439.210667zM252.544 447.687111c-6.684444 0-12.643556 4.721778-13.937778 11.534222-1.493333 7.708444 3.555556 15.175111 11.264 16.654222l153.927111 29.696 58.055111 133.148444c3.157333 7.182222 11.548444 10.496 18.716444 7.352889 7.210667-3.143111 10.510222-11.52 7.367111-18.716444l-61.056-140.017778c-1.877333-4.295111-5.745778-7.395556-10.353778-8.277333l-161.28-31.118222C254.336 447.758222 253.44 447.687111 252.544 447.687111z"  horiz-adv-x="1024" />
    <glyph glyph-name="circle-dot" unicode="&#58903;" d="M513.133312 830.6731560000001c-247.538793 0-448.208115-200.669322-448.208115-448.207092 0-247.538793 200.670346-448.208115 448.208115-448.208115 247.538793 0 448.208115 200.670346 448.208115 448.208115C961.341427 630.004857 760.673128 830.6731560000001 513.133312 830.6731560000001zM513.132288-6.649187999999981c-214.901465 0-389.113205 174.212764-389.113205 389.114229 0 214.902488 174.21174 389.115252 389.113205 389.115252 214.903511 0 389.115252-174.212764 389.115252-389.115252C902.24754 167.563576 728.0358-6.649187999999981 513.132288-6.649187999999981zM513.133312 382.46504100000004m-344.602456 0a336.754 336.754 0 1 1 689.204911 0 336.754 336.754 0 1 1-689.204911 0Z"  horiz-adv-x="1024" />
    <glyph glyph-name="chat" unicode="&#58886;" d="M132.682393 414.567179c0 208.287837 166.471452 377.143593 379.317095 377.143593s385.380184-168.855756 385.380184-377.143593c0-177.196725-122.197086-325.812507-290.49821-366.259708l-116.291586-51.04763 0 41.126676C290.570353 52.175568999999996 132.682393 215.31206599999996 132.682393 414.567179zM83.799056 414.567179c0-211.946157 160.764474-387.135154 369.469819-415.152255-3.2623-20.458961-10.036587-65.024969-7.286963-65.024969 2.384303 0 114.89068 47.294143 189.700503 78.865185 176.193885 51.91437 304.518528 211.946157 304.518528 401.312038 0 231.432976-191.70823 419.042865-428.200432 419.042865S83.799056 646.0001560000001 83.799056 414.567179zM340.71952 276.63573699999995c22.935362-41.481763 89.831958-75.102489 170.391738-75.102489 79.650061 0 148.489916 32.909527 172.168198 73.681116-12.701277 5.979178-19.068288 8.02886-28.131711 12.21009-19.894096-31.257911-75.425853-59.661821-142.729725-59.661821-66.969251 0-122.836653 28.40391-143.598512 61.083194L340.71952 276.63573699999995z"  horiz-adv-x="1024" />
    <glyph glyph-name="release" unicode="&#58889;" d="M990.78144 828.5388800000001c-3.35872 1.59744-7.04512 2.37568-11.01824 2.37568-14.45888 0-27.60704-10.81344-27.40224-10.81344-8.8064-4.42368-880.59904-443.22816-911.44192-459.44832-17.408-9.13408-27.36128-24.73984-25.92768-40.71424 1.10592-13.14816 9.78944-23.51104 23.10144-27.77088 26.17344-8.27392 290.24256-91.58656 290.24256-91.58656l4.83328-1.47456 16.67072 50.05312-254.32064 79.54432 780.73856 406.28224c-82.82112-93.88032-420.53632-476.32384-436.10112-493.93664-20.11136-22.48704-29.4912-45.09696-29.40928-70.98368l0.28672-153.27232-0.08192 0c0 0 0.08192-53.49376 0.08192-53.6576l0-1.96608 0 0c1.18784-13.5168 12.73856-24.24832 26.54208-24.24832s25.51808 10.73152 26.74688 24.24832l0 0c0 0 0.53248 191.03744 0 205.08672-0.49152 12.4928 5.07904 26.54208 10.69056 33.05472 5.65248 6.38976 390.63552 442.61376 465.75616 527.81056-21.38112-106.41408-126.68928-629.76-128.24576-637.41952-0.8192-4.05504-2.58048-4.05504-3.35872-4.05504-0.6144 0-1.31072 0.12288-2.048 0.36864-7.45472 2.37568-268.82048 81.55136-279.92064 84.91008l-4.7104 1.4336-17.16224-50.50368 5.07904-1.59744c2.58048-0.77824 258.90816-79.09376 284.38528-86.46656 5.07904-1.47456 10.24-2.2528 15.44192-2.2528 26.99264 0 49.5616 19.37408 54.8864 46.98112 2.08896 10.93632 27.0336 134.67648 55.9104 277.99552 39.77216 197.14048 84.7872 420.61824 85.93408 427.6224l0.6144 3.31776C1009.70496 798.96576 1013.26848 817.9712 990.78144 828.5388800000001z"  horiz-adv-x="1024" />
    <glyph glyph-name="list" unicode="&#58890;" d="M618.04471 733.97072l-397.175835 0c-16.927531 0-30.699186-13.771655-30.699186-30.699186l0-638.543068c0-16.927531 13.771655-30.699186 30.699186-30.699186l582.261227 0c16.927531 0 30.699186 13.771655 30.699186 30.699186l-0.726547 476.760404L618.04471 733.97072zM803.771715 541.488871 619.537713 541.488871 619.537713 705.552483 803.771715 541.488871zM813.363164 64.728466c0-5.64251-4.590552-10.233062-10.233062-10.233062l-582.261227 0c-5.64251 0-10.233062 4.590552-10.233062 10.233062l0 638.543068c0 5.64251 4.590552 10.233062 10.233062 10.233062l378.202715 0 0-192.481849 214.291574 0L813.363164 64.728466zM298.129516 482.495268l55.258535 0 0-55.258535-55.258535 0 0 55.258535ZM399.777591 468.168981l323.364759 0 0-26.605961-323.364759 0 0 26.605961ZM298.129516 342.044446l55.258535 0 0-55.258535-55.258535 0 0 55.258535ZM399.777591 327.718159l323.364759 0 0-26.605961-323.364759 0 0 26.605961ZM298.129516 199.804884l55.258535 0 0-55.258535-55.258535 0 0 55.258535ZM399.777591 185.478598l323.364759 0 0-26.605961-323.364759 0 0 26.605961ZM881.315812 53.053566"  horiz-adv-x="1024" />
    <glyph glyph-name="chart" unicode="&#58924;" d="M953.440991 315.668729L784.061302 315.668729 681.06451 437.392024c-0.312108 0.373507-0.635473 0.737804-0.969071 1.094938-0.013303 0.014326-0.026606 0.027629-0.039909 0.041956-0.276293 0.293689-0.559748 0.582261-0.851391 0.86367-0.053212 0.051165-0.107447 0.099261-0.160659 0.150426-0.249687 0.237407-0.50142 0.470721-0.76134 0.697895-0.089028 0.078795-0.181125 0.153496-0.272199 0.230244-0.225127 0.191358-0.451278 0.381693-0.683569 0.565888-0.124843 0.099261-0.251733 0.192382-0.3776 0.288572-0.200568 0.153496-0.402159 0.306992-0.607844 0.454348-0.159636 0.11461-0.322341 0.224104-0.485047 0.334621-0.177032 0.12075-0.354064 0.242524-0.535189 0.35918-0.195451 0.12689-0.394996 0.246617-0.593518 0.367367-0.152473 0.092098-0.302899 0.186242-0.457418 0.275269-0.237407 0.137123-0.477884 0.268106-0.718361 0.397043-0.121773 0.065492-0.2415 0.132006-0.364297 0.195451-0.283456 0.146333-0.571005 0.285502-0.859577 0.420579-0.085958 0.040932-0.170892 0.082888-0.257873 0.122797-0.337691 0.154519-0.679475 0.298805-1.022283 0.437975-0.044002 0.017396-0.086981 0.036839-0.130983 0.055259-1.604544 0.638543-3.2623 1.113357-4.948709 1.416256-0.343831 0.062422-0.687662 0.112564-1.031493 0.160659-0.055259 0.008186-0.110517 0.01842-0.165776 0.025583-1.633197 0.216941-3.25923 0.26913-4.861728 0.173962-0.013303-0.001023-0.026606-0.001023-0.040932-0.002047-0.363274-0.022513-0.724501-0.054235-1.085728-0.091074-0.060375-0.00614-0.119727-0.011256-0.180102-0.017396-0.310062-0.034792-0.618077-0.077771-0.926092-0.122797-0.116657-0.017396-0.232291-0.032746-0.348947-0.051165-0.24764-0.040932-0.494257-0.086981-0.740874-0.135076-0.178055-0.033769-0.355087-0.067538-0.532119-0.105401-0.183172-0.039909-0.36532-0.083911-0.547469-0.127913-0.237407-0.056282-0.474814-0.113587-0.710175-0.176009-0.12075-0.032746-0.240477-0.068562-0.360204-0.102331-0.292666-0.082888-0.584308-0.168846-0.874927-0.26299-0.063445-0.020466-0.125867-0.042979-0.188288-0.063445-0.338714-0.112564-0.675382-0.230244-1.010003-0.357134-0.019443-0.007163-0.038886-0.01535-0.058328-0.022513-1.493004-0.571005-2.948145-1.284249-4.340865-2.149966-0.067538-0.041956-0.13303-0.088004-0.200568-0.12996-0.273223-0.172939-0.545422-0.346901-0.813528-0.531096-1.416256-0.971118-2.734274-2.089591-3.936659-3.333932-0.025583-0.026606-0.049119-0.053212-0.074701-0.079818-0.26299-0.275269-0.521886-0.555655-0.773619-0.843204-0.058328-0.066515-0.112564-0.134053-0.169869-0.200568-0.211824-0.246617-0.420579-0.496304-0.62217-0.751107-0.083911-0.106424-0.164752-0.214894-0.246617-0.322341-0.167822-0.218988-0.334621-0.437975-0.49528-0.663102-0.102331-0.14224-0.199545-0.287549-0.298805-0.431835-0.13303-0.194428-0.26606-0.387833-0.393973-0.586354-0.115634-0.179079-0.225127-0.360204-0.335644-0.541329-0.103354-0.168846-0.207731-0.336668-0.306992-0.508583-0.12689-0.220011-0.24764-0.443092-0.36839-0.666172-0.074701-0.138146-0.151449-0.275269-0.223081-0.416486-0.137123-0.265036-0.265036-0.533143-0.39295-0.802272-0.050142-0.105401-0.101307-0.209778-0.150426-0.316202-0.144286-0.317225-0.279363-0.63752-0.410346-0.958838-0.026606-0.064468-0.055259-0.127913-0.080841-0.193405-0.150426-0.378623-0.291642-0.760317-0.423649-1.14508-0.005117-0.016373-0.011256-0.031722-0.017396-0.048095-0.157589-0.463558-0.303922-0.930185-0.434905-1.400906l-97.897657-342.642824L435.093423 811.832042c-0.071631 0.569982-0.165776 1.13587-0.275269 1.696642-0.008186 0.040932-0.017396 0.081864-0.025583 0.12382-0.071631 0.356111-0.148379 0.709151-0.234337 1.061169-0.031722 0.128937-0.065492 0.255827-0.099261 0.38374-0.066515 0.254803-0.135076 0.508583-0.208754 0.760317-0.060375 0.206708-0.124843 0.411369-0.190335 0.615007-0.053212 0.166799-0.107447 0.332575-0.164752 0.49835-0.092098 0.26913-0.190335 0.535189-0.290619 0.800225-0.037862 0.098237-0.074701 0.196475-0.113587 0.293689-0.12382 0.313132-0.25378 0.623193-0.38988 0.930185-0.022513 0.050142-0.044002 0.100284-0.066515 0.150426-0.152473 0.338714-0.311085 0.672312-0.477884 1.00284-0.01228 0.024559-0.024559 0.049119-0.037862 0.074701-0.173962 0.343831-0.356111 0.682545-0.545422 1.017166-0.011256 0.019443-0.022513 0.039909-0.033769 0.059352-0.188288 0.330528-0.382717 0.654916-0.584308 0.975211-0.021489 0.034792-0.044002 0.068562-0.065492 0.103354-0.190335 0.298805-0.385786 0.592494-0.587378 0.88209-0.045025 0.065492-0.091074 0.12996-0.137123 0.194428-0.180102 0.252757-0.363274 0.502443-0.551562 0.74906-0.079818 0.105401-0.162706 0.208754-0.24457 0.312108-0.157589 0.199545-0.317225 0.396019-0.480954 0.590448-0.124843 0.149403-0.252757 0.295735-0.381693 0.442068-0.125867 0.14224-0.251733 0.284479-0.38067 0.424672-0.174985 0.191358-0.355087 0.378623-0.536212 0.563842-0.088004 0.090051-0.176009 0.180102-0.26606 0.26913-0.224104 0.222057-0.452301 0.440022-0.684592 0.653893-0.054235 0.050142-0.10847 0.100284-0.163729 0.150426-0.265036 0.240477-0.535189 0.474814-0.810459 0.704035-0.028653 0.023536-0.056282 0.047072-0.084934 0.070608-0.294712 0.243547-0.595564 0.479931-0.902556 0.711198-0.01535 0.011256-0.029676 0.022513-0.045025 0.033769-0.311085 0.232291-0.627287 0.458441-0.949628 0.677429-0.019443 0.013303-0.037862 0.025583-0.057305 0.038886-0.309038 0.208754-0.623193 0.411369-0.942465 0.606821-0.045025 0.027629-0.090051 0.054235-0.134053 0.081864-0.288572 0.174985-0.581238 0.343831-0.877997 0.50756-0.090051 0.050142-0.181125 0.098237-0.272199 0.147356-0.25071 0.134053-0.502443 0.265036-0.759293 0.391926-0.156566 0.077771-0.314155 0.151449-0.472767 0.226151-0.194428 0.091074-0.38988 0.182149-0.587378 0.268106-0.239454 0.105401-0.481977 0.204661-0.724501 0.302899-0.12382 0.049119-0.246617 0.100284-0.37146 0.148379-0.334621 0.128937-0.673335 0.249687-1.014096 0.36532-0.042979 0.014326-0.085958 0.029676-0.128937 0.044002-1.6158 0.536212-3.296069 0.915859-5.02034 1.119497-0.01535 0.002047-0.029676 0.004093-0.044002 0.00614-0.309038 0.035816-0.620124 0.062422-0.931209 0.086981-0.132006 0.010233-0.265036 0.025583-0.397043 0.033769-0.174985 0.011256-0.349971 0.01535-0.525979 0.022513-0.270153 0.01228-0.539282 0.024559-0.808412 0.027629-0.054235 0.001023-0.10847-0.001023-0.162706-0.001023-1.696642 0.010233-3.371794-0.149403-5.006014-0.466628-0.065492-0.01228-0.12996-0.027629-0.195451-0.039909-0.331551-0.067538-0.662079-0.13917-0.989537-0.218988-0.148379-0.035816-0.295735-0.075725-0.443092-0.11461-0.234337-0.061398-0.468674-0.124843-0.700965-0.192382-0.224104-0.065492-0.445138-0.135076-0.666172-0.206708-0.149403-0.048095-0.297782-0.096191-0.446162-0.147356-0.286526-0.098237-0.568958-0.201591-0.850367-0.309038-0.079818-0.030699-0.160659-0.061398-0.240477-0.093121-0.330528-0.12996-0.655939-0.267083-0.979304-0.410346-0.033769-0.01535-0.067538-0.029676-0.101307-0.045025-0.355087-0.159636-0.705058-0.325411-1.050935-0.500397-0.008186-0.004093-0.016373-0.008186-0.023536-0.01228-0.360204-0.182149-0.714268-0.372483-1.064238-0.569982-0.004093-0.002047-0.008186-0.005117-0.013303-0.007163-0.344854-0.196475-0.684592-0.399089-1.019213-0.610914-0.020466-0.013303-0.040932-0.025583-0.060375-0.038886-0.313132-0.199545-0.621147-0.404206-0.925069-0.61603-0.050142-0.034792-0.099261-0.070608-0.149403-0.105401-0.268106-0.190335-0.532119-0.38374-0.791016-0.583285-0.091074-0.069585-0.181125-0.141216-0.271176-0.212848-0.212848-0.167822-0.422625-0.337691-0.629333-0.512676-0.137123-0.11461-0.271176-0.232291-0.406253-0.349971-0.154519-0.1361-0.308015-0.272199-0.459464-0.412392-0.179079-0.164752-0.354064-0.332575-0.528026-0.502443-0.102331-0.100284-0.204661-0.199545-0.304945-0.301875-0.211824-0.212848-0.418532-0.430812-0.623193-0.651846-0.059352-0.064468-0.119727-0.128937-0.179079-0.194428-0.231267-0.254803-0.456395-0.515746-0.678452-0.780783-0.031722-0.037862-0.063445-0.075725-0.095167-0.11461-0.23536-0.285502-0.465604-0.577145-0.688685-0.874927-0.01842-0.024559-0.036839-0.048095-0.055259-0.072655-0.226151-0.301875-0.445138-0.60989-0.657986-0.923022-0.019443-0.028653-0.038886-0.057305-0.058328-0.084934-0.202615-0.300852-0.400113-0.606821-0.590448-0.916882-0.032746-0.053212-0.064468-0.105401-0.096191-0.158612-0.169869-0.282433-0.335644-0.567935-0.49528-0.857531-0.053212-0.097214-0.105401-0.194428-0.158612-0.292666-0.130983-0.24457-0.258896-0.490164-0.381693-0.73985-0.080841-0.162706-0.157589-0.326435-0.234337-0.491187-0.088004-0.189312-0.177032-0.378623-0.260943-0.571005-0.107447-0.245593-0.209778-0.493234-0.310062-0.741897-0.047072-0.11768-0.095167-0.234337-0.141216-0.354064-0.130983-0.340761-0.25378-0.684592-0.370437-1.030469-0.013303-0.037862-0.026606-0.075725-0.038886-0.113587-0.180102-0.543376-0.345877-1.092891-0.48914-1.650593L244.22942 305.59939599999996 67.355037 305.59939599999996c-14.128789 0-25.582655-11.453866-25.582655-25.582655s11.453866-25.582655 25.582655-25.582655l191.314257 0c0.867764 0 1.725294 0.044002 2.570545 0.128937 0.828878-0.080841 1.656733-0.1361 2.478448-0.1361 11.218506 0 21.512966 7.439436 24.644283 18.779715l113.358791 410.43686 103.412254-723.884758c0.00921-0.072655 0.021489-0.145309 0.030699-0.217964l0.046049-0.320295c0.002047-0.011256 0.005117-0.021489 0.00614-0.032746 0.109494-0.7552 0.25071-1.502213 0.425695-2.238994 0.01535-0.064468 0.031722-0.12689 0.047072-0.191358 0.166799-0.679475 0.358157-1.350764 0.579191-2.01182 0.041956-0.124843 0.088004-0.24764 0.130983-0.37146 0.210801-0.600681 0.437975-1.194198 0.692778-1.77646 0.068562-0.156566 0.144286-0.309038 0.215918-0.464581 0.223081-0.484024 0.460488-0.961908 0.713244-1.431605 0.106424-0.196475 0.213871-0.390903 0.325411-0.584308 0.265036-0.462534 0.545422-0.914836 0.838088-1.359974 0.088004-0.13303 0.170892-0.268106 0.260943-0.399089 0.354064-0.51677 0.732687-1.016143 1.12359-1.506307 0.078795-0.099261 0.156566-0.198521 0.237407-0.296759 0.420579-0.511653 0.864694-1.004887 1.325182-1.482771 0.051165-0.052189 0.101307-0.105401 0.152473-0.157589 0.494257-0.50449 1.010003-0.989537 1.548262-1.454118 0.00921-0.007163 0.017396-0.014326 0.026606-0.022513 1.636267-1.408069 3.466961-2.620687 5.466502-3.592828 0.075725-0.036839 0.151449-0.074701 0.228197-0.11154 0.576121-0.273223 1.165546-0.525979 1.768273-0.75827 0.158612-0.061398 0.319272-0.118704 0.478907-0.177032 0.558725-0.202615 1.124614-0.393973 1.704828-0.559748 0.005117-0.001023 0.010233-0.002047 0.01535-0.004093 0.278339-0.079818 0.562818-0.13917 0.844228-0.209778 0.394996-0.098237 0.789992-0.194428 1.184989-0.274246 0.283456-0.056282 0.568958-0.103354 0.854461-0.149403 0.445138-0.073678 0.889253-0.134053 1.333368-0.183172 0.229221-0.024559 0.456395-0.052189 0.686638-0.071631 0.710175-0.059352 1.418302-0.099261 2.122337-0.099261 0.337691 0 0.671289 0.027629 1.007957 0.040932 0.276293 0.011256 0.550539 0.013303 0.828878 0.033769 0.401136 0.029676 0.799202 0.079818 1.196245 0.127913 0.191358 0.022513 0.38067 0.033769 0.572028 0.061398 0.069585 0.010233 0.1361 0.024559 0.205685 0.034792 0.232291 0.034792 0.462534 0.075725 0.692778 0.116657 0.463558 0.082888 0.921999 0.176009 1.3743 0.283456 0.109494 0.025583 0.218988 0.047072 0.327458 0.074701 0.582261 0.145309 1.152243 0.316202 1.716084 0.499373 0.098237 0.031722 0.196475 0.063445 0.293689 0.097214 1.90335 0.644683 3.694135 1.50119 5.351891 2.540869 0.014326 0.00921 0.028653 0.01842 0.042979 0.027629 1.089821 0.686638 2.121314 1.452071 3.087315 2.287089 0.083911 0.071631 0.167822 0.143263 0.25071 0.215918 0.424672 0.3776 0.837064 0.76748 1.235131 1.170662 0.12382 0.124843 0.243547 0.254803 0.36532 0.382717 0.317225 0.334621 0.626263 0.677429 0.925069 1.028423 0.155543 0.183172 0.308015 0.36839 0.458441 0.556679 0.26606 0.331551 0.523933 0.670266 0.773619 1.01512 0.130983 0.180102 0.261966 0.35918 0.387833 0.543376 0.294712 0.429789 0.575098 0.86981 0.843204 1.316995 0.099261 0.165776 0.195451 0.334621 0.290619 0.503467 0.283456 0.499373 0.555655 1.004887 0.806365 1.52268 0.031722 0.065492 0.060375 0.13303 0.091074 0.199545 0.276293 0.584308 0.530073 1.178849 0.762363 1.784646 0.00614 0.017396 0.014326 0.034792 0.020466 0.051165 0.251733 0.661056 0.472767 1.336438 0.669242 2.020006 0.002047 0.008186 0.00614 0.016373 0.008186 0.024559l0.061398 0.215918c0.029676 0.106424 0.062422 0.210801 0.090051 0.317225l117.579929 411.527704 79.800487-94.308923c0.070608-0.083911 0.146333-0.161682 0.217964-0.243547 0.190335-0.220011 0.38374-0.436952 0.581238-0.649799 0.134053-0.144286 0.26913-0.285502 0.405229-0.425695 0.164752-0.168846 0.331551-0.335644 0.50142-0.500397 0.164752-0.159636 0.329505-0.319272 0.496304-0.473791 0.138146-0.12689 0.279363-0.25071 0.419556-0.37453 0.198521-0.174985 0.397043-0.350994 0.599657-0.518816 0.081864-0.067538 0.166799-0.132006 0.249687-0.198521 0.817622-0.661056 1.667989-1.264806 2.545986-1.811252 0.098237-0.061398 0.195451-0.125867 0.294712-0.185218 0.228197-0.138146 0.459464-0.267083 0.691755-0.398066 0.157589-0.089028 0.315178-0.178055 0.474814-0.264013 0.200568-0.107447 0.403183-0.208754 0.606821-0.311085 0.202615-0.101307 0.406253-0.201591 0.611937-0.297782 0.173962-0.080841 0.348947-0.159636 0.523933-0.237407 0.245593-0.10847 0.494257-0.212848 0.743944-0.313132 0.144286-0.058328 0.289596-0.115634 0.434905-0.171915 0.291642-0.11154 0.586354-0.216941 0.883113-0.317225 0.11154-0.037862 0.223081-0.076748 0.334621-0.113587 0.337691-0.109494 0.677429-0.210801 1.02126-0.305969 0.078795-0.021489 0.157589-0.046049 0.236384-0.066515 0.376577-0.101307 0.757247-0.193405 1.140986-0.277316 0.050142-0.011256 0.100284-0.023536 0.150426-0.034792 0.405229-0.085958 0.813528-0.162706 1.225921-0.229221 0.031722-0.005117 0.063445-0.01228 0.096191-0.017396 0.412392-0.065492 0.828878-0.12075 1.24741-0.165776 0.032746-0.004093 0.064468-0.00921 0.097214-0.01228 0.382717-0.039909 0.768503-0.068562 1.155313-0.092098 0.068562-0.004093 0.1361-0.01228 0.204661-0.01535 0.25992-0.013303 0.521886-0.01535 0.782829-0.020466 0.188288-0.004093 0.376577-0.01535 0.564865-0.01535 0.008186 0 0.01535 0.001023 0.023536 0.001023l181.208085 0c14.129812 0 25.582655 11.453866 25.582655 25.582655S967.56978 315.668729 953.440991 315.668729z"  horiz-adv-x="1024" />
    <glyph glyph-name="ok-circle" unicode="&#4101;" d="M516.152065-63.152063c-60.696384 0-119.594819 11.894911-175.056991 35.353183-53.55473 22.651906-101.646028 55.073316-142.936433 96.364745-41.291428 41.291428-73.712839 89.381703-96.363721 142.936433-23.458271 55.462173-35.353183 114.359584-35.353183 175.055968s11.894911 119.594819 35.353183 175.056991c22.651906 53.55473 55.073316 101.646028 96.363721 142.936433 41.290405 41.291428 89.381703 73.712839 142.936433 96.363721 55.462173 23.458271 114.359584 35.353183 175.056991 35.353183s119.594819-11.894911 175.056991-35.353183c53.55473-22.651906 101.645005-55.073316 142.936433-96.363721 41.291428-41.290405 73.711815-89.38068 96.363721-142.936433 23.459295-55.462173 35.353183-114.359584 35.353183-175.056991 0-60.696384-11.893888-119.593795-35.353183-175.055968-22.651906-53.55473-55.072293-101.645005-96.363721-142.936433s-89.381703-73.712839-142.936433-96.364745C635.747907-51.25715200000002 576.849472-63.152063 516.152065-63.152063zM516.152065 774.870222c-214.115566 0-388.311956-174.196391-388.311956-388.311956s174.196391-388.311956 388.311956-388.311956 388.311956 174.196391 388.311956 388.311956S730.268654 774.870222 516.152065 774.870222zM434.74908 132.830517L209.49278 358.08784 289.087583 437.68162 434.74908 292.020122 743.218594 600.488613 822.812373 520.89381Z"  horiz-adv-x="1024" />
    <glyph glyph-name="layim-theme" unicode="&#58907;" d="M958.830745 538.643056L740.659817 692.753993l-100.539834 0-3.977591-9.332553c-0.37146-0.871857-38.021965-86.8613-124.772748-88.667435-35.691897 0.76441-67.206658 15.500019-93.680613 43.828204-20.658506 22.106484-30.374798 44.584428-30.456662 44.776809l-3.955078 9.393951-100.587929 0L64.518433 538.643056 169.320337 379.756349l89.956801 65.019853-19.016099-368.05254 268.86654 0 4.093225 0 269.866311 0-19.016099 368.051517 89.956801-65.018829L958.830745 538.643056zM730.105437 507.20402l20.655436-399.781172-237.540068 0-4.093225 0L272.587282 107.42284700000005l20.656459 399.781172-115.938546-83.797521-36.3243 55.070246 159.440315 111.641683-19.276019 30.638811L121.066333 508.667348l-14.548344 22.056342 185.921433 131.330094 71.077825 0c5.332449-10.04375 15.433504-26.779923 30.951943-43.580564 32.047904-34.69622 72.256674-53.486168 116.345822-54.411237l0-0.031722c0.203638 0.00307 0.406253 0.01228 0.60989 0.016373 0.203638-0.00307 0.406253-0.013303 0.60989-0.016373l0 0.031722c44.073798 0.925069 84.359316 19.703761 116.566856 54.379515 15.623839 16.821107 25.814945 33.579793 31.188326 43.612287l71.120804 0 185.921433-131.330094-14.548344-22.056342L742.203986 620.7551920000001l-19.276019-30.638811 159.440315-111.641683-36.3243-55.070246L730.105437 507.20402z"  horiz-adv-x="1024" />
    <glyph glyph-name="table" unicode="&#58925;" d="M304.738028 343.684806M729.544153 511.153982M595.52788 637.723655M143.806755 686.614156l0-601.704045L881.172549 84.91011100000003l0 601.704045L143.806755 686.614156zM420.318416 299.80441299999995l0 128.936581 184.341448 0 0-128.936581L420.318416 299.80441299999995zM604.659865 256.825552l0-128.936581L420.318416 127.88897099999997l0 128.936581L604.659865 256.825552zM604.659865 600.656435l0-128.936581L420.318416 471.719854l0 128.936581L604.659865 600.656435zM374.232798 600.656435l0-128.936581L189.89135 471.719854l0 128.936581L374.232798 600.656435zM189.89135 428.740994L374.232798 428.740994l0-128.936581L189.89135 299.80441299999995 189.89135 428.740994zM650.745483 428.740994l184.341448 0 0-128.936581L650.745483 299.80441299999995 650.745483 428.740994zM650.745483 471.719854l0 128.936581 184.341448 0 0-128.936581L650.745483 471.719854zM189.89135 256.825552L374.232798 256.825552l0-128.936581L189.89135 127.88897099999997 189.89135 256.825552zM650.745483 127.88897099999997l0 128.936581 184.341448 0 0-128.936581L650.745483 127.88897099999997z"  horiz-adv-x="1024" />
    <glyph glyph-name="right" unicode="&#58882;" d="M283.648 721.9189759999999L340.873216 780.926976 740.352 383.99795200000005 340.876288-12.925952000000052 283.648 46.07795199999998 619.52 383.99795200000005Z"  horiz-adv-x="1024" />
    <glyph glyph-name="left" unicode="&#58883;" d="M740.352 721.9189759999999L683.126784 780.926976 283.648 383.99795200000005 683.123712-12.925952000000052 740.352 46.07795199999998 404.48 383.99795200000005Z"  horiz-adv-x="1024" />
    <glyph glyph-name="cart-simple" unicode="&#59032;" d="M235.097303 196.866982C247.384597 160.417152 286.382106 132.37606800000003 324.772759 132.37606800000003L861.658537 132.37606800000003 880.429732 132.37606800000003 885.649214 150.54185399999994 1009.08775 580.154957C1021.388907 622.967661 993.187631 660.786325 949.051586 660.786325L424.585365 660.786325C410.791718 660.786325 399.609756 649.5207379999999 399.609756 635.623932 399.609756 621.727125 410.791718 610.461538 424.585365 610.461538L949.051586 610.461538C959.924 610.461538 964.161052 604.779539 961.106394 594.148171L837.667859 164.53506800000002 861.658537 182.70085500000005 324.772759 182.70085500000005C307.742153 182.70085500000005 287.789837 197.04752900000005 282.395194 213.05054900000005L73.600164 832.433664C69.16437 845.592294 54.980454 852.636656 41.919502 848.167687 28.858551 843.698719 21.86648 829.408727 26.302275 816.250097L235.097303 196.866982ZM399.609756-6.017094000000043C399.609756 49.57012899999995 354.881911 94.63247799999999 299.707317 94.63247799999999 244.532723 94.63247799999999 199.804878 49.57012899999995 199.804878-6.017094000000043 199.804878-61.604318000000035 244.532723-106.66666699999996 299.707317-106.66666699999996 354.881911-106.66666699999996 399.609756-61.604318000000035 399.609756-6.017094000000043ZM249.756098-6.017094000000043C249.756098 21.77651800000001 272.120021 44.30769299999997 299.707317 44.30769299999997 327.294613 44.30769299999997 349.658537 21.77651800000001 349.658537-6.017094000000043 349.658537-33.810704999999984 327.294613-56.34187899999995 299.707317-56.34187899999995 272.120021-56.34187899999995 249.756098-33.810704999999984 249.756098-6.017094000000043ZM924.097562-6.017094000000043C924.097562 49.57012899999995 879.369715 94.63247799999999 824.195121 94.63247799999999 769.020529 94.63247799999999 724.292683 49.57012899999995 724.292683-6.017094000000043 724.292683-61.604318000000035 769.020529-106.66666699999996 824.195121-106.66666699999996 879.369715-106.66666699999996 924.097562-61.604318000000035 924.097562-6.017094000000043ZM774.243902-6.017094000000043C774.243902 21.77651800000001 796.607825 44.30769299999997 824.195121 44.30769299999997 851.782419 44.30769299999997 874.146342 21.77651800000001 874.146342-6.017094000000043 874.146342-33.810704999999984 851.782419-56.34187899999995 824.195121-56.34187899999995 796.607825-56.34187899999995 774.243902-33.810704999999984 774.243902-6.017094000000043Z"  horiz-adv-x="1024" />
    <glyph glyph-name="face-cry" unicode="&#59036;" d="M1024 384C1024 666.769792 794.769792 896 512 896 229.230208 896 0 666.769792 0 384 0 101.23020799999995 229.230208-128 512-128 629.410831-128 740.826187-88.33104600000001 830.768465-16.686661999999956 841.557579-8.092490999999995 843.33693 7.620766000000003 834.742758 18.409879000000046 826.148587 29.198990999999978 810.43533 30.978341999999998 799.646219 22.384173000000033 718.470035-42.277495000000044 618.001779-78.04878099999996 512-78.04878099999996 256.817504-78.04878099999996 49.951219 128.81750399999999 49.951219 384 49.951219 639.182496 256.817504 846.048781 512 846.048781 767.182496 846.048781 974.048781 639.182496 974.048781 384 974.048781 296.507166 949.714859 212.66323599999998 904.470807 140.039307 897.177109 128.33175700000004 900.755245 112.92820300000005 912.462793 105.63450699999999 924.170342 98.34080900000004 939.573897 101.91894200000002 946.867595 113.62649199999998 997.013826 194.11920399999997 1024 287.101621 1024 384ZM337.170731 396.487806C371.654852 396.487806 399.609756 424.442709 399.609756 458.926829 399.609756 493.41095 371.654852 521.365854 337.170731 521.365854 302.686611 521.365854 274.731708 493.41095 274.731708 458.926829 274.731708 424.442709 302.686611 396.487806 337.170731 396.487806ZM711.804879 396.487806C746.288998 396.487806 774.243902 424.442709 774.243902 458.926829 774.243902 493.41095 746.288998 521.365854 711.804879 521.365854 677.320757 521.365854 649.365854 493.41095 649.365854 458.926829 649.365854 424.442709 677.320757 396.487806 711.804879 396.487806ZM352.788105 191.21547499999997C396.165222 225.91716899999994 453.151987 246.639629 524.487806 246.639629 595.823622 246.639629 652.810387 225.91716899999994 696.187505 191.21547499999997 722.700531 170.00505399999997 738.882517 148.42907300000002 746.631548 132.931012 752.800254 120.59359800000004 747.799529 105.59142399999996 735.462114 99.42271600000004 723.124702 93.25401 708.122526 98.25473499999998 701.953818 110.59214899999995 701.03616 112.42746499999998 698.492224 116.61747600000001 694.165854 122.38597100000004 686.602473 132.47047699999996 676.927317 142.654852 664.983226 152.21012499999995 630.311565 179.947456 584.273939 196.68840999999998 524.487806 196.68840999999998 464.70167 196.68840999999998 418.664045 179.947456 383.992384 152.21012499999995 372.048292 142.654852 362.373137 132.47047699999996 354.809756 122.38597100000004 350.483386 116.61747600000001 347.93945 112.42746499999998 347.021792 110.59214899999995 340.853084 98.25473499999998 325.850908 93.25401 313.513495 99.42271600000004 301.176081 105.59142399999996 296.175356 120.59359800000004 302.344062 132.931012 310.093092 148.42907300000002 326.275078 170.00505399999997 352.788105 191.21547499999997Z"  horiz-adv-x="1024" />
    <glyph glyph-name="face-smile" unicode="&#59055;" d="M1024 384C1024 666.769792 794.769792 896 512 896 229.230208 896 0 666.769792 0 384 0 101.23020799999995 229.230208-128 512-128 629.410831-128 740.826187-88.33104600000001 830.768465-16.686661999999956 841.557579-8.092490999999995 843.33693 7.620766000000003 834.742758 18.409879000000046 826.148587 29.198990999999978 810.43533 30.978341999999998 799.646219 22.384173000000033 718.470035-42.277495000000044 618.001779-78.04878099999996 512-78.04878099999996 256.817504-78.04878099999996 49.951219 128.81750399999999 49.951219 384 49.951219 639.182496 256.817504 846.048781 512 846.048781 767.182496 846.048781 974.048781 639.182496 974.048781 384 974.048781 296.507166 949.714859 212.66323599999998 904.470807 140.039307 897.177109 128.33175700000004 900.755245 112.92820300000005 912.462793 105.63450699999999 924.170342 98.34080900000004 939.573897 101.91894200000002 946.867595 113.62649199999998 997.013826 194.11920399999997 1024 287.101621 1024 384ZM337.170731 396.487806C371.654852 396.487806 399.609756 424.442709 399.609756 458.926829 399.609756 493.41095 371.654852 521.365854 337.170731 521.365854 302.686611 521.365854 274.731708 493.41095 274.731708 458.926829 274.731708 424.442709 302.686611 396.487806 337.170731 396.487806ZM711.804879 396.487806C746.288998 396.487806 774.243902 424.442709 774.243902 458.926829 774.243902 493.41095 746.288998 521.365854 711.804879 521.365854 677.320757 521.365854 649.365854 493.41095 649.365854 458.926829 649.365854 424.442709 677.320757 396.487806 711.804879 396.487806ZM352.788105 127.22903299999996C396.165222 92.52733899999998 453.151987 71.80487900000003 524.487806 71.80487900000003 595.823622 71.80487900000003 652.810387 92.52733899999998 696.187505 127.22903299999996 722.700531 148.43945399999996 738.882517 170.01543500000002 746.631548 185.51349500000003 752.800254 197.850908 747.799529 212.85308399999997 735.462114 219.021792 723.124702 225.19049800000005 708.122526 220.18977299999995 701.953818 207.85235799999998 701.03616 206.01704299999994 698.492224 201.82703100000003 694.165854 196.058537 686.602473 185.97402899999997 676.927317 175.78965500000004 664.983226 166.23438299999998 630.311565 138.49705200000005 584.273939 121.75609799999995 524.487806 121.75609799999995 464.70167 121.75609799999995 418.664045 138.49705200000005 383.992384 166.23438299999998 372.048292 175.78965500000004 362.373137 185.97402899999997 354.809756 196.058537 350.483386 201.82703100000003 347.93945 206.01704299999994 347.021792 207.85235799999998 340.853084 220.18977299999995 325.850908 225.19049800000005 313.513495 219.021792 301.176081 212.85308399999997 296.175356 197.850908 302.344062 185.51349500000003 310.093092 170.01543500000002 326.275078 148.43945399999996 352.788105 127.22903299999996Z"  horiz-adv-x="1024" />
    <glyph glyph-name="survey" unicode="&#59058;" d="M722.355804 849.454545C761.006291 849.454545 792.380951 818.166023 792.380951 779.627344L792.380951 437.500928 799.081094 453.813218 401.874746 51.22138 418.539682 58.181818 138.070006 58.181818C99.387643 58.181818 68.063492 89.328555 68.063492 127.771428L68.063492 872.727273 44.698413 849.454545 722.355804 849.454545ZM21.333333 896 21.333333 872.727273 21.333333 127.771428C21.333333 63.604277 73.59726 11.636363 138.070006 11.636363L418.539682 11.636363 428.337293 11.636363 435.204619 18.596802 832.410967 421.18864 839.11111 427.979625 839.11111 437.500928 839.11111 779.627344C839.11111 843.859757 786.827324 896 722.355804 896L44.698413 896 21.333333 896ZM775.859347 307.365395 759.337741 290.90909 775.859347 274.452787 869.319663 181.361879 885.841269 164.905574 902.362876 181.361879 972.458114 251.18006 988.979721 267.636363 972.458114 284.092668 878.997796 377.183575 862.47619 393.639878 845.954583 377.183575 775.859347 307.365395ZM845.954583 344.27097 939.414901 251.18006 939.414901 284.092668 869.319663 214.274485 902.362876 214.274485 808.902558 307.365395 808.902558 274.452787 878.997796 344.27097 845.954583 344.27097ZM518.843473 51.365395 513.841133 46.382827 512.453734 39.473248 489.088655-76.890387 482.215251-111.121568 516.58227-104.275332 633.407665-81.002605 640.344663-79.620689 645.347004-74.638121 902.362876 181.361879 918.884482 197.818182 902.362876 214.274485 808.902558 307.365395 792.380951 323.821698 775.859347 307.365395 518.843473 51.365395ZM775.859347 274.452787 869.319663 181.361879 869.319663 214.274485 612.303791-41.725515 624.243127-35.361033 507.41773-58.633758 534.911345-86.018703 558.276425 30.344934 551.886686 18.452787 808.902558 274.452787 775.859347 274.452787ZM426.576706 298.269073C444.201086 298.269073 458.488469 284.053815 458.488469 266.500753L458.488469 258.086116C458.488469 240.540958 444.323959 226.317797 426.576706 226.317797L426.576706 226.317797C408.952326 226.317797 394.664943 240.533054 394.664943 258.086116L394.664943 266.500753C394.664943 284.045911 408.829453 298.269073 426.576706 298.269073L426.576706 298.269073ZM278.349205 552.435127C278.349205 552.435127 280.851125 530.485568 305.477133 530.485568 330.103138 530.485568 331.559155 552.435127 331.559155 552.435127 329.927383 623.508937 362.988497 657.25782 430.67155 653.905282 475.722639 648.839223 499.06407 623.508937 500.624896 577.839917 497.503245 557.501184 480.405116 531.202385 449.969026 499.092521 409.671358 458.489557 389.522524 422.133143 389.522524 390.023279L389.522524 357.093903C389.522524 357.093903 392.614705 337.454532 414.885933 337.454532 437.157161 337.454532 440.249342 357.093903 440.249342 357.093903L440.249342 379.965664C440.249342 406.785969 459.546816 439.044836 498.21271 476.369762 538.652271 513.471183 558.730159 547.369069 558.730159 577.839917 555.395669 662.323878 511.195938 706.353877 425.776235 709.780917 327.515198 711.419936 278.349205 658.971339 278.349205 552.435127Z"  horiz-adv-x="1024" />
    <glyph glyph-name="tree" unicode="&#58926;" d="M962.691679 258.53447400000005c-8.721639 54.163597-34.298154 97.584526-73.089645 133.8638-44.721551 41.825594-99.282191 65.724911-156.512636 84.432994-26.935466 8.80555-54.079686 16.971533-81.129762 25.427112 41.188074 7.485485 81.495082 10.991332 121.872698 12.269441 39.906895 1.26276 79.885422 0.276293 120.633475 0.276293-30.644951 44.233434-74.588789 71.110571-127.260405 84.384899-53.004191 13.357216-103.742782 9.715269-152.261822-32.081673 18.715247 66.336848 12.464893 120.18936-38.810934 160.830989-32.450063 25.719778-77.127611 31.000038-111.319341 14.916734 58.583257-31.127951 82.051761-84.265172 94.304829-145.102772-44.638663 69.056795-110.067838 96.432283-187.710173 86.487793-56.123228-7.187703-110.723777-26.270317-166.003801-40.048111 15.677051-14.358009 31.136138-24.116257 47.932686-27.839045 51.427276-11.399631 103.405091-20.301372 155.098427-30.524201 37.036521-7.323802 75.163887-12.144598 104.448864-40.879036-78.096682 23.458271-155.928329 30.034037-235.541551 9.092076C186.718589 530.20385 104.838743 479.821369 81.996502 429.437865c46.955428 23.955598 95.807043 18.776645 144.606469 17.139356 37.737486-1.266853 76.089979-3.461845 113.238041 1.594311 52.683896 7.170307 104.513332 20.624736 159.209048 31.909757-91.88164-62.077847-186.516997-122.342396-159.194722-259.889075 58.852386 100.205213 163.392324 150.107763 229.951229 238.105956-16.239869-91.498924 6.980995-169.376619 66.432015-237.83785 41.815361-48.152696 89.979314-92.010577 110.706381-156.013263 12.758582 141.877311-25.823132 270.789333-97.911984 396.334677C755.996107 391.809873 858.199837 325.909977 962.691679 258.53447400000005zM513.476631 320.10169099999996c-27.767414-14.065344-39.008432-35.954887-42.252313-64.998363-6.078439-54.437843-15.162328-108.532879-21.799492-162.916487-3.90903-32.026414-5.519714-64.333214-8.16496-96.53052 30.078039 0 55.507198 0 79.961146 0 9.912767 78.200036 19.732413 154.247037 28.913517 230.369761 0.883113 7.322779-0.756223 15.746636-3.705392 22.591531C536.246217 272.25086999999996 524.967336 295.41135899999995 513.476631 320.10169099999996z"  horiz-adv-x="1024" />
    <glyph glyph-name="ie" unicode="&#59323;" d="M734.208 267.1616l236.05248 0c1.82272 16.36352 2.53952 33.09568 2.53952 50.19648 0 80.22016-21.52448 155.46368-59.12576 220.2624 38.87104 103.30112 37.49888 190.99648-14.56128 243.38432-49.50016 49.27488-182.29248 41.28768-332.41088-25.1904-11.10016 0.83968-22.3232 1.26976-33.62816 1.26976-206.04928 0-378.92096-141.80352-426.7008-332.84096 64.63488 82.75968 132.62848 142.7456 223.47776 186.44992-8.25344-7.74144-56.46336-55.64416-64.55296-63.75424-239.55456-239.47264-315.0848-552.30464-233.79968-633.61024 61.78816-61.76768 173.75232-51.34336 302.36672 11.65312 59.8016-30.45376 127.50848-47.63648 199.20896-47.63648 193.1264 0 356.80256 124.3136 416.09216 297.45152l-237.8752 0c-32.72704-60.37504-96.74752-101.4784-170.20928-101.4784s-137.48224 41.10336-170.20928 101.4784c-14.5408 27.27936-22.91712 58.55232-22.91712 91.648l0 0.7168 386.2528 0zM348.30336 383.20128c5.44768 97.11616 86.20032 174.592 184.77056 174.592s179.3024-77.47584 184.77056-174.592l-369.54112 0zM896.96256 732.20096c33.52576-33.87392 32.68608-96.21504 4.01408-174.01856-49.13152 74.91584-120.5248 133.9392-204.8 167.64928 90.112 38.64576 163.40992 43.76576 200.78592 6.38976zM93.4912-71.24992c-42.78272 42.8032-29.88032 132.608 25.23136 240.82432 34.304-96.27648 101.15072-177.09056 187.33056-229.15072-95.4368-43.3152-173.52704-50.66752-212.56192-11.6736z"  horiz-adv-x="1024" />
    <glyph glyph-name="upload-circle" unicode="&#58927;" d="M512-128c282.768 0 512 229.216 512 512C1024 666.768 794.768 896 512 896 229.216 896 0 666.768 0 384 0 101.21600000000001 229.216-128 512-128zM512 848c256.272 0 464-207.744 464-464 0-256.272-207.728-464-464-464S48 127.72799999999995 48 384C48 640.256 255.728 848 512 848zM377.728 534.544L480 534.544l0-478c0-17.664 14.336-32 32-32s32 14.336 32 32L544 534.544l102.272 0c17.616 0 23.424 11.568 12.944 25.68l-128.128 172.624c-10.496 14.128-27.664 14.128-38.16 0L364.8 560.24C354.32 546.1120000000001 360.128 534.544 377.728 534.544z"  horiz-adv-x="1024" />
    <glyph glyph-name="add-circle" unicode="&#58911;" d="M675.04 412.736l-127.04 0 0 127.264c0 20.064-16.288 36.32-36.32 36.32-20.064 0-36.32-16.192-36.32-36.32l0-127.232-127.072 0c-20.064 0-36.352-16.32-36.352-36.352 0-20.064 16.224-36.352 36.352-36.352l127.072 0 0-127.232c0-20 16.256-36.384 36.32-36.384 20.032 0 36.32 16.256 36.32 36.384l0 127.136 127.04 0c19.968 0 36.352 16.256 36.352 36.384C711.36 396.448 695.136 412.736 675.04 412.736L675.04 412.736zM511.328 830.56c-250.24 0-453.952-203.616-453.952-453.952 0-250.336 203.712-453.952 453.952-453.952 250.336 0 453.984 203.584 453.984 453.952C965.312 626.944 761.696 830.56 511.328 830.56L511.328 830.56zM511.328-20.576000000000022c-219.04 0-397.184 178.176-397.184 397.152 0 219.104 178.144 397.216 397.184 397.216s397.216-178.112 397.216-397.216C908.576 157.63199999999995 730.368-20.576000000000022 511.328-20.576000000000022L511.328-20.576000000000022zM511.328-20.576000000000022"  horiz-adv-x="1024" />
    <glyph glyph-name="download-circle" unicode="&#58881;" d="M510.771521 828.211081c-244.998947 0-443.597097-198.60429-443.597097-443.590957s198.59815-443.591981 443.597097-443.591981c244.986667 0 443.583794 198.60429 443.583794 443.591981S755.758188 828.211081 510.771521 828.211081zM510.771521-30.044013999999947c-229.010811 0-414.664138 185.65435-414.664138 414.664138 0 229.010811 185.653327 414.657998 414.664138 414.657998 228.996484 0 414.652881-185.647187 414.652881-414.657998C925.424402 155.60931300000004 739.768005-30.044013999999947 510.771521-30.044013999999947zM662.749888 352.39518799999996L537.719266 245.82501100000002l0 324.388065c0 14.887059-12.06478 26.953885-26.947745 26.953885-14.894222 0-26.961048-12.066827-26.961048-26.953885l0-325.410348L357.936647 352.39518799999996c-10.56359 10.599406-27.693736 10.599406-38.267559 0-10.56359-10.596336-10.56359-27.777647 0-38.375006l170.181961-161.220868c5.629207-5.652743 13.111622-8.060583 20.49887-7.680936 7.373944-0.379647 14.859429 2.02717 20.488637 7.680936l170.181961 161.220868c10.562567 10.597359 10.562567 27.77867 0 38.375006C690.443623 362.99561700000004 673.313477 362.99561700000004 662.749888 352.39518799999996z"  horiz-adv-x="1024" />
    <glyph glyph-name="templeate-1" unicode="&#58928;" d="M320 384L106.666667 384c-35.349333 0-64-28.650667-64-64l0-213.333333c0-35.349333 28.650667-64 64-64l213.333333 0c35.349333 0 64 28.650667 64 64L384 320C384 355.349333 355.349333 384 320 384zM256 341.33333300000004l0-256L170.666667 85.33333300000004 170.666667 341.33333300000004 256 341.33333300000004zM85.333333 106.66666699999996L85.333333 320c0 11.754667 9.578667 21.333333 21.333333 21.333333l42.666667 0 0-256L106.666667 85.33333300000004C94.912 85.33333300000004 85.333333 94.91200000000003 85.333333 106.66666699999996zM341.333333 106.66666699999996c0-11.754667-9.578667-21.333333-21.333333-21.333333l-42.666667 0L277.333333 341.33333300000004l42.666667 0c11.754667 0 21.333333-9.578667 21.333333-21.333333L341.333333 106.66666699999996zM576 554.666667L234.666667 554.666667c-47.061333 0-85.333333-38.272-85.333333-85.333333l0-42.666667 42.666667 0 0 42.666667c0 23.530667 19.136 42.666667 42.666667 42.666667l42.666667 0 0-96 21.333333 0L298.666667 512l213.333333 0 0-426.666667-85.333333 0-21.333333-42.666667 170.666667 0c47.061333 0 85.333333 38.272 85.333333 85.333333L661.333333 469.333333C661.333333 516.394667 623.061333 554.666667 576 554.666667zM618.666667 128c0-23.530667-19.136-42.666667-42.666667-42.666667l-42.666667 0L533.333333 512l42.666667 0c23.530667 0 42.666667-19.136 42.666667-42.666667L618.666667 128zM853.333333 42.66666699999996c47.061333 0 85.333333 38.272 85.333333 85.333333L938.666667 640c0 47.061333-38.272 85.333333-85.333333 85.333333L341.333333 725.333333c-47.061333 0-85.333333-38.272-85.333333-85.333333l0-42.666667 42.666667 0 0 42.666667c0 23.530667 19.136 42.666667 42.666667 42.666667l85.333333 0 0-85.333333 21.333333 0 0 85.333333 298.666667 0 0-597.333333-42.666667 0-21.333333-42.666667L853.333333 42.66666699999996zM896 128c0-23.530667-19.136-42.666667-42.666667-42.666667l-85.333333 0L768 682.666667l85.333333 0c23.530667 0 42.666667-19.136 42.666667-42.666667L896 128z"  horiz-adv-x="1024" />
    <glyph glyph-name="util" unicode="&#58929;" d="M282.127566 639.0826059999999c-13.120832-13.221116-30.625508-20.50808-49.278333-20.50808-18.618033 0-36.157501 7.286963-49.311079 20.50808l-32.885991 33.019021 98.623181 99.027387 32.885991-33.019021c13.186324-13.221116 20.473287-30.829146 20.473287-49.548486C302.599829 669.8769589999999 295.347658 652.26893 282.127566 639.0826059999999L282.127566 639.0826059999999zM249.308089 705.0899489999999l-0.032746 0-32.884968-32.987299c4.418636-4.417613 10.252505-6.845918 16.458857-6.845918 6.206352 0 12.041244 2.428306 16.426111 6.813173 4.418636 4.452405 6.845918 10.288321 6.845918 16.493649C256.121262 694.802652 253.693979 700.671313 249.308089 705.0899489999999L249.308089 705.0899489999999zM396.703067 496.343671L249.578242 638.778684l32.278147 33.626865 147.157571-142.468782L396.703067 496.343671 396.703067 496.343671zM751.45979 133.92852400000004L618.131179 274.071332l32.884968 32.985252 133.330658-140.141784L751.45979 133.92852400000004 751.45979 133.92852400000004zM850.184279 67.95597399999997c-22.700001-22.766516-52.481282-34.168194-82.264609-34.168194-29.714765 0-59.395762 11.333116-81.994456 34.033118L538.194592 222.398462l32.884968 33.021068L718.811206 100.806149c27.117614-27.183106 71.269183-27.116591 98.488105 0.169869 27.186176 27.287483 27.117614 71.773673-0.135076 99.196233l-147.426701 154.273642 32.851199 33.021068 147.461493-154.308435C895.447159 187.557956 895.514697 113.421468 850.184279 67.95597399999997L850.184279 67.95597399999997zM801.716404 468.380806c-30.726815-30.860868-71.605851-47.861054-115.082038-47.861054-43.442418 0-84.321454 16.999163-115.082038 47.861054-30.760584 30.861892-47.692209 71.877027-47.692209 115.521037s16.931624 84.691891 47.692209 115.554806l42.497906 42.666752 32.885991-32.986275-42.497906-42.667775c-21.99085-22.090111-34.099632-51.367925-34.065863-82.566484 0-31.163767 12.108782-60.441581 34.065863-82.499969 21.956058-22.058388 51.16531-34.20094 82.196047-34.20094 31.064506 0 60.239989 12.142551 82.196047 34.20094l42.49893 42.665729 32.884968-33.019021L801.716404 468.380806 801.716404 468.380806zM844.214311 511.049604l-49.311079 49.51267-16.45988-16.493649c-17.538445-17.638729-40.879036-27.352975-65.73719-27.352975l-0.032746 0c-24.824385 0-48.198745 9.713222-65.73719 27.352975-17.539468 17.607006-27.252691 41.082674-27.252691 66.007343 0 24.925692 9.679453 48.400337 27.252691 66.040089l16.458857 16.495696-49.344848 49.51267 32.885991 33.021068 82.196047-82.533738-49.311079-49.482995c-8.769734-8.835226-13.626345-20.571525-13.626345-33.051767 0-12.446473 4.856611-24.183795 13.626345-32.987299 8.768711-8.835226 20.439518-13.69286 32.884968-13.69286 12.411681 0 24.082488 4.857635 32.852222 13.69286l49.344848 49.514717 82.196047-82.534761L844.214311 511.049604 844.214311 511.049604zM233.591129 129.139451l0 46.681182 46.512337 0 0-46.681182L233.591129 129.139451 233.591129 129.139451zM538.160823 356.538555l-92.247984 91.572602 32.717146 33.18889 92.214215-91.539856L538.160823 356.538555 538.160823 356.538555zM304.2187 101.04355599999997l173.634596 239.842507 37.641295-27.454282L338.318332 69.23715300000003c-21.923312-22.057365-51.132564-34.20094-82.19707-34.20094-31.028691 0-60.237943 12.143575-82.196047 34.168194-21.958104 22.057365-34.065863 51.335179-34.065863 82.533738 0 31.198559 12.107759 60.476373 34.065863 82.533738l2.765997 2.360767L417.243893 412.054963l27.353998-37.742603L205.596542 200.00340600000004c-12.411681-13.053294-19.224854-30.119995-19.224854-48.26526 0-18.71934 7.252171-36.291554 20.438495-49.513694C232.747925 76.15265599999998 277.775444 75.71263499999998 304.2187 101.04355599999997L304.2187 101.04355599999997z"  horiz-adv-x="1024" />
    <glyph glyph-name="face-surprised" unicode="&#58980;" d="M485.656116-128C221.592397-128 6.762016 86.81718000000001 6.762016 350.87649799999997s214.830381 478.867697 478.8941 478.867697c264.041716 0 478.854495-214.812779 478.854495-478.867697S749.697832-128 485.656116-128zM485.656116 798.834741c-247.024795 0-447.975846-200.959852-447.975846-447.962644 0-247.002792 200.951051-447.962644 447.975846-447.962644 247.002792 0 447.953843 200.959852 447.953843 447.962644C933.609959 597.8748889999999 732.658908 798.834741 485.656116 798.834741zM352.033458 447.380528c0-30.469398-24.682677-55.147675-55.143274-55.147675-30.451796 0-55.143274 24.678276-55.143274 55.147675 0 30.460597 24.691478 55.138874 55.143274 55.138874C327.350781 502.519402 352.033458 477.845526 352.033458 447.380528zM674.417647 502.519402c-30.460597 0-55.156476-24.678276-55.156476-55.138874 0-30.469398 24.695879-55.147675 55.156476-55.147675 30.451796 0 55.143274 24.678276 55.143274 55.147675C729.560922 477.845526 704.869444 502.519402 674.417647 502.519402zM562.005634 165.30976499999997c0-59.733046-34.192262-108.165484-76.349518-108.165484-42.166057 0-76.36272 48.432438-76.36272 108.165484 0 59.724245 34.196663 108.152282 76.36272 108.152282C527.813371 273.45764699999995 562.005634 225.03400999999997 562.005634 165.30976499999997zM835.631745 793.712503c0 0 12.871605 56.819883 41.959231 85.925112 29.083226 29.096427 69.915916 15.124685 78.492585-8.801097 9.461179-26.385689-2.033053-50.069442-29.092027-56.164202C899.404495 808.463141 874.880237 826.192952 835.631745 793.712503zM916.698651 757.570797c0 0 35.767659 20.576965 64.877288 19.393218 29.136032-1.174946 41.431165-29.144833 33.109728-45.110024-9.192746-17.588993-27.054573-22.966463-43.217788-11.797871C954.979023 731.44034 952.453108 752.721393 916.698651 757.570797z"  horiz-adv-x="1024" />
    <glyph glyph-name="edit" unicode="&#58946;" d="M769.089 516.251l-125.896 125.89 62.974 62.947c20.866 20.838 54.652 20.838 75.517 0l50.353-50.351c20.865-20.865 20.865-54.703 0-75.567L769.089 516.251zM403.349 150.52700000000004L277.453 276.418 619.706 615.982 745.601 490.09ZM176.314 47.283000000000015L252.912 251.87699999999995 377.753 127.01199999999994Z"  horiz-adv-x="1024" />
    <glyph glyph-name="speaker" unicode="&#58949;" d="M587.182306 754.7203c-6.003737 2.705622-13.043061 1.642406-17.984606-2.721994l-259.223926-229.293243-148.246369 0c-9.253758 0-16.752546-7.498788-16.752546-16.756639l0-267.886213c0-9.249665 7.498788-16.756639 16.752546-16.756639l144.050814 0c9.253758 0 16.752546 7.506974 16.752546 16.756639L322.530764 490.391099c1.774413 0.704035 3.433192 1.719154 4.892427 3.010567l236.127905 208.861912 0-653.332912-160.751171 137.64287c-2.12643 1.824555-90.300632 78.69941-93.927229 76.162634-4.427846-3.097548-15.768125-17.59882-18.419512-22.512736-0.953721-1.768273-2.196015-1.334391 15.413038-16.379039 25.674753-21.936615 73.780377-61.548798 75.144444-62.717414l10.007935-8.570189 178.388876-152.761196c3.093455-2.653433 6.978948-4.028757 10.900258-4.028757 2.369977 0 4.756327 0.503467 7.003508 1.534959 5.939269 2.738367 9.749038 8.677637 9.749038 15.217586L597.060281 739.446431C597.060281 746.034477 593.190137 752.013655 587.182306 754.7203L587.182306 754.7203zM290.453185 254.814756l-115.040083 0L175.413102 489.195877l115.03906 0 0-234.381122L290.453185 254.814756zM747.742119 375.98444300000006c0-51.55212-34.83232-96.658434-84.702124-109.693308-1.415232-0.375553-2.846838-0.551562-4.245697-0.551562-7.438413 0-14.234189 4.992711-16.200984 12.523221-2.338255 8.949836 3.021823 18.104333 11.967566 20.442588 35.136242 9.18929 59.672054 40.96397 59.672054 77.279061 0 36.307927-24.535813 68.090794-59.672054 77.271898-8.945743 2.346441-14.305821 11.492752-11.967566 20.450774 2.342348 8.953929 11.499915 14.305821 20.446681 11.967566C712.909799 472.643899 747.742119 427.530422 747.742119 375.98444300000006L747.742119 375.98444300000006zM864.950588 375.793084c0-88.87619-48.554856-170.44495-126.718053-212.883505-2.537799-1.375324-5.276167-2.02717-7.982812-2.02717-5.939269 0-11.69946 3.166109-14.733563 8.762571-4.417613 8.134261-1.39886 18.303878 6.727215 22.720468 67.350944 36.566824 109.198028 106.851587 109.198028 183.427636 0 76.844156-42.055838 147.272181-109.741403 183.78784-8.154727 4.396123-11.192923 14.557554-6.795776 22.700001 4.38896 8.142447 14.558577 11.184737 22.701025 6.795776C816.151162 546.697499 864.950588 464.976266 864.950588 375.793084L864.950588 375.793084z"  horiz-adv-x="1024" />
    <glyph glyph-name="down" unicode="&#58906;" d="M888.306 619.94c15.615 15.617 40.93 15.617 56.545 0v0c15.617-15.615 15.617-40.93 0-56.545l-405.733-405.734c-15.615-15.617-40.928-15.617-56.545 0v0c-15.615 15.615-15.615 40.93 0 56.545l405.733 405.734zM538.619 214.20600000000002c15.617-15.615 15.617-40.93 0-56.545v0c-15.615-15.617-40.928-15.617-56.545 0l-405.734 405.734c-15.615 15.615-15.615 40.93 0 56.545v0c15.617 15.617 40.93 15.617 56.547 0l405.732-405.734zM538.619 214.20600000000002z"  horiz-adv-x="1024" />
    <glyph glyph-name="file" unicode="&#58913;" d="M887.443911 598.6304l0-44.578133 0-45.511111 0-477.866667c0-37.705956-30.560711-68.266667-68.266667-68.266667l-614.4 0c-37.705956 0-68.266667 30.560711-68.266667 68.266667l0 705.422222c0 37.6832 30.560711 68.266667 68.266667 68.266667l386.844444 0 45.511111 0 38.024533 0c7.805156 2.594133 16.566044 1.2288 22.778311-5.006222l183.136711-183.159467C885.919289 611.373511 887.876267 604.9564439999999 887.443911 598.6304zM659.888356 531.296711c-12.583822 0-22.755556 10.171733-22.755556 22.755556l0 204.8-45.511111 0-364.088889 0c-25.122133 0-45.511111-20.388978-45.511111-45.511111l0-659.911111c0-25.122133 20.388978-45.511111 45.511111-45.511111l568.888889 0c25.122133 0 45.511111 20.388978 45.511111 45.511111l0 455.111111 0 22.755556L659.888356 531.296711zM682.643911 750.273422l0-173.4656 159.288889 0 0 14.176711L682.643911 750.273422z"  horiz-adv-x="1024" />
    <glyph glyph-name="layouts" unicode="&#58930;" d="M917.213-103.239h-810.426c-23.151 0-41.918 18.766-41.918 41.917l0 698.644c0 23.148 18.767 41.917 41.918 41.917h810.426c23.149 0 41.918-18.769 41.918-41.917v-698.643c0-23.151-18.769-41.918-41.918-41.918zM316.38-61.321h600.833v363.294h-600.833v-363.294zM106.787-61.321h167.674v363.294h-167.674v-363.294zM148.705 637.322c-23.151 0-41.918-18.769-41.918-41.92s18.767-41.92 41.918-41.92 41.92 18.768 41.92 41.92-18.769 41.92-41.92 41.92zM274.461 637.322c-23.151 0-41.918-18.769-41.918-41.92s18.767-41.92 41.918-41.92c23.151 0 41.92 18.768 41.92 41.92s-18.77 41.92-41.92 41.92zM400.216 637.322c-23.15 0-41.918-18.769-41.918-41.92s18.769-41.92 41.918-41.92c23.152 0 41.92 18.768 41.92 41.92s-18.768 41.92-41.92 41.92zM875.293 511.566h-768.506v-167.675h810.426l0 167.675h-41.921z"  horiz-adv-x="1024" />
    <glyph glyph-name="rate-half" unicode="&#59081;" d="M1012.064 504l-359.552 31.008-140.512 331.04-140.512-331.552-359.552-30.496 273.024-236.544-82.016-351.552 309.056 186.528 309.056-186.528-81.504 351.552 272.544 236.544zM512 195.96799999999996l0 465.056 85.504-202.016 219.04-19.008-166.016-144.032 50.016-214.016-188.512 114.016z"  horiz-adv-x="1024" />
    <glyph glyph-name="add-circle-fine" unicode="&#58888;" d="M509.989715-60.972421000000054c-246.734474 0-446.75195 200.023616-446.75195 446.75809 0 246.732427 200.017476 446.75195 446.75195 446.75195 246.733451 0 446.757067-200.019523 446.757067-446.75195C956.746782 139.051195 756.723166-60.972421000000054 509.989715-60.972421000000054L509.989715-60.972421000000054zM509.989715 812.433746c-235.633648 0-426.650123-191.014428-426.650123-426.648077 0-235.639788 191.016475-426.654216 426.650123-426.654216 235.638765 0 426.654216 191.014428 426.654216 426.654216C936.643931 621.419318 745.62848 812.433746 509.989715 812.433746L509.989715 812.433746zM527.863804 153.46957999999995l-35.741016 0L492.122789 367.909533 277.678742 367.909533 277.678742 403.653619l214.443024 0L492.121765 618.0956189999999l35.741016 0L527.862781 403.653619l214.442 0 0-35.744086L527.863804 367.909533 527.863804 153.46957999999995 527.863804 153.46957999999995zM527.863804 153.46957999999995"  horiz-adv-x="1024" />
    <glyph glyph-name="prev-circle" unicode="&#58931;" d="M508.638018 827.97307c-246.403458 0-446.845649-200.463469-446.845649-446.845649 0-246.382179 200.442191-446.845649 446.845649-446.845649 246.382179 0 446.845649 200.463469 446.845649 446.845649C955.483667 627.5096 755.041476 827.97307 508.638018 827.97307zM508.638018-23.16149900000005c-222.933422 0-404.28892 181.355498-404.28892 404.28892 0 222.933422 181.355498 404.28892 404.28892 404.28892 222.912144 0 404.28892-181.355498 404.28892-404.28892C912.926939 158.19399899999996 731.57144-23.16149900000005 508.638018-23.16149900000005zM252.87208 485.1999c8.639016 26.129831-32.470784 37.215859-41.067243 11.32009-27.810822-83.730363-22.321004-168.545923 14.086277-248.573851 11.362646-24.938243 48.025268-3.298146 36.747735 21.491148C230.976644 339.081373 228.806251 412.853462 252.87208 485.1999zM599.262572 247.73335499999996l-127.627629 133.394065 127.47868 133.223838c9.043305 9.064583 9.022026 23.789211-0.021278 32.832516-8.809243 8.830521-24.087108 8.766686-32.832516 0l-148.310199-148.310199c-4.617405-4.638683-6.979303-11.064749-6.553736-17.746156-0.404289-6.702685 1.936331-13.107472 6.575015-17.788712l148.310199-148.28892c4.383343-4.383343 10.213615-6.787798 16.405619-6.787798 6.170726 0 12.000997 2.404455 16.405619 6.787798C608.156928 224.114371 608.156928 238.83899899999994 599.262572 247.73335499999996z"  horiz-adv-x="1024" />
    <glyph glyph-name="read" unicode="&#59141;" d="M335.282306 712.495464C399.587328 713.451107 442.778899 696.882717 470.183494 669.3706540000001 479.127332 660.39174 485.691302 650.857363 490.241971 641.442689 492.795622 636.159553 494.049041 632.438701 494.358795 631.0740940000001L493.723712 636.7409230000001 493.723706 196.90019600000005C493.723706 199.018106 495.816045 203.920655 503.591595 207.36436700000002 511.039185 210.66283299999998 515.68422 209.16527399999995 517.176538 207.906613L500.671543 188.33763 521.297207 203.50146800000005C514.140179 213.23636899999997 499.631258 225.71450900000002 476.134074 237.35914000000002 439.577969 255.475456 390.86048 266.10507900000005 328.491925 266.10508200000004 265.860796 266.10508200000004 219.424582 255.71817999999996 186.827162 237.741581 164.977332 225.69198700000004 152.538132 212.28117299999997 147.220271 201.30886999999996L170.257196 190.14374199999997 151.035786 207.05224299999998C152.884078 209.15336100000002 158.307299 211.80336599999998 167.849005 208.050434 177.092077 204.41496099999995 179.2 199.20011699999998 179.2 196.66445199999998L179.2 497.049743 179.2 636.7409230000001 175.817447 624.023021C177.078908 626.226721 180.088681 630.807811 184.828724 636.965629 192.95423 647.521524 202.792594 658.127492 214.297641 668.007961 247.526453 696.544681 287.381649 713.209056 334.514421 712.495571L335.282306 712.495464ZM335.289387 763.689705C274.661039 764.607483 223.081402 743.04085 180.940156 706.850184 156.32698 685.712527 139.975514 664.470237 131.382553 649.4588249999999L128 643.549699 128 636.7409230000001 128 497.049743 128 196.66445199999998C128 159.26104999999995 164.542545 144.88818300000003 189.478606 173.23524099999997L191.776657 175.84764199999995 193.294121 178.978613C194.07832 180.59664399999997 199.156367 186.07133399999998 211.552092 192.907243 236.030601 206.40648099999999 274.024879 214.905082 328.491925 214.905082 383.221547 214.905079 424.163878 205.97190999999998 453.399258 191.483569 469.376966 183.56540600000005 477.614626 176.48075300000005 480.045882 173.17379000000005L481.844905 170.72677999999996 484.166551 168.768644C511.279708 145.90070000000003 544.923706 160.801293 544.923706 196.90019600000005L544.923712 636.740922 544.288627 642.407751C540.427211 659.419023 529.175531 682.697124 506.45814 705.503602 468.987716 743.1209699999999 412.352271 764.846461 334.521502 763.689812L335.289387 763.689705ZM0 506.026694L0 27.856867999999963C0-8.875636999999983 34.793167-23.40043300000002 61.4635 1.2485080000000153L63.46242 3.315859000000046C65.301149 5.444836000000009 69.655573 9.862312999999972 76.498228 15.820363000000043 88.306297 26.101906999999983 102.566352 36.46294 119.251411 46.17438500000003 167.295691 74.13829099999998 224.90855 90.95018200000004 292.337329 90.95018200000004 358.378978 90.95018000000005 409.459345 71.66956600000003 448.125308 39.64774 461.506042 28.56627400000002 472.380655 16.734758000000056 480.912593 4.997000999999955 485.832384-1.7713730000000396 488.762874-6.741985999999997 489.872527-9.02252199999998 496.058545-21.73590200000001 511.379537-27.027375000000006 524.092917-20.84135500000002 536.806298-14.655337000000031 542.097771 0.6656550000000152 535.91175 13.379036000000042 527.471002 30.726293000000055 509.777717 55.06771800000001 480.782336 79.08069999999998 433.134118 118.54132300000003 370.586889 142.15017999999998 292.337329 142.15018199999997 215.474895 142.15018499999996 149.074727 122.77408400000002 93.495781 90.424668 59.761154 70.78961500000003 36.872315 50.859801999999945 24.713677 36.78188399999999L44.088049 20.048869999999965 26.712598 38.84923500000002C28.162783 40.189508000000046 32.877261 41.946117999999956 40.792576 38.64178100000004 49.035365 35.200736000000006 51.2 30.12989200000004 51.2 27.856867999999963L51.2 506.026694C51.2 520.165184 39.73849 531.626694 25.6 531.626694 11.46151 531.626694 0 520.165184 0 506.026694L0 506.026694ZM696.80221 763.689812C618.971441 764.846461 562.335996 743.1209699999999 524.86557 705.503602 502.148181 682.697124 490.896501 659.419023 487.035083 642.407751L486.4 636.740922 486.400004 196.90019600000005C486.400006 160.801293 520.044004 145.90070000000003 547.157161 168.768644L549.478807 170.72677999999996 551.27783 173.17379000000005C553.709086 176.48075300000005 561.946746 183.56540600000005 577.924452 191.483569 607.159834 205.97190999999998 648.102165 214.905079 702.831787 214.905082 757.298833 214.905082 795.293111 206.40648099999999 819.77162 192.907243 832.167345 186.07133399999998 837.245391 180.59664399999997 838.029591 178.978613L839.547055 175.84764199999995 841.845105 173.23524099999997C866.781167 144.88818300000003 903.323712 159.26104999999995 903.323712 196.66445199999998L903.323712 497.049743 903.323712 636.7409230000001 903.323712 643.549699 899.941158 649.4588249999999C891.348196 664.470237 874.996732 685.712527 850.383556 706.850184 808.24231 743.04085 756.662673 764.607483 696.034325 763.689705L696.80221 763.689812ZM696.809291 712.495571C743.942063 713.209056 783.797257 696.544681 817.026071 668.007961 828.531119 658.127492 838.369481 647.521524 846.494989 636.965629 851.235031 630.807811 854.244804 626.226721 855.506263 624.023021L852.123712 636.7409230000001 852.123712 497.049743 852.123712 196.66445199999998C852.123712 199.20011699999998 854.231635 204.41496099999995 863.474707 208.050434 873.016412 211.80336599999998 878.439633 209.15336100000002 880.287925 207.05224299999998L861.066515 190.14374199999997 884.103441 201.30886999999996C878.785579 212.28117299999997 866.346381 225.69198700000004 844.49655 237.741581 811.89913 255.71817999999996 765.462916 266.10508200000004 702.831785 266.10508200000004 640.463232 266.10507900000005 591.745741 255.475456 555.189638 237.35914000000002 531.692454 225.71450900000002 517.183533 213.23636899999997 510.026502 203.50146800000005L530.652166 188.33763 514.147172 207.906613C515.63949 209.16527399999995 520.284527 210.66283299999998 527.732117 207.36436700000002 535.507665 203.920655 537.600004 199.018106 537.600004 196.90019600000005L537.6 636.7409230000001 536.964917 631.0740940000001C537.274671 632.438701 538.52809 636.159553 541.081741 641.442689 545.63241 650.857363 552.196378 660.39174 561.140218 669.3706540000001 588.544813 696.882717 631.736384 713.451107 696.041406 712.495464L696.809291 712.495571ZM972.799998 506.026694L972.799998 27.856867999999963C972.799998 30.12989200000004 974.964631 35.200736000000006 983.207422 38.64178100000004 991.122737 41.946117999999956 995.837214 40.189508000000046 997.287401 38.84923500000002L979.911949 20.048869999999965 999.286321 36.78188399999999C987.127682 50.859801999999945 964.238844 70.78961500000003 930.504218 90.424668 874.925269 122.77408400000002 808.525103 142.15018499999996 731.662669 142.15018199999997 653.132708 142.15017999999998 590.55104 117.26282200000003 543.127755 75.73800100000005 514.370099 50.55719499999998 496.945662 25.10259599999995 488.705389 7.022771000000034 482.841769-5.842485000000011 488.517717-21.02524200000005 501.382974-26.888862000000017 514.248233-32.752481999999986 529.430987-27.07653300000004 535.294607-14.211275 536.420563-11.740835999999945 539.350332-6.450639000000024 544.25735 0.7178109999999833 552.731727 13.097653000000037 563.54464 25.561581000000047 576.856734 37.21792900000003 615.190044 70.78337499999998 665.901421 90.95018000000005 731.662669 90.95018200000004 799.091447 90.95018200000004 856.704307 74.13829099999998 904.748587 46.17438500000003 921.433645 36.46294 935.6937 26.101906999999983 947.501771 15.820363000000043 954.344425 9.862312999999972 958.698848 5.444836000000009 960.537577 3.315859000000046L962.536497 1.2485080000000153C989.206831-23.40043300000002 1023.999998-8.875636999999983 1023.999998 27.856867999999963L1023.999998 506.026694C1023.999998 520.165184 1012.538487 531.626694 998.399998 531.626694 984.261508 531.626694 972.799998 520.165184 972.799998 506.026694L972.799998 506.026694Z"  horiz-adv-x="1024" />
    <glyph glyph-name="404" unicode="&#58908;" d="M300.197309 299.705317l4.427931 1.803972c1.147982-2.787956 10.167841-7.543882 26.89558-14.267777l5.411915-12.955798c10.659833-24.927611 23.123639-62.483024 37.555413-112.66624 14.431775 5.575913 34.439462 0.983985 60.351057-13.611787l1.803972-4.427931L389.575913 107.828315l18.203716-42.639334c2.459962-5.575913-12.463805-15.579757-44.7713-29.847534-11.151826 7.215887-19.84369 9.675849-26.403587 7.05189l-0.983985 2.131967c-10.823831 25.419603-16.235746 42.311339-16.399744 50.675208l-4.427931-1.803972 6.3959-14.923767-11.151826-4.263933c-41.655349-16.235746-71.830878-18.695708-90.690583-7.871877l-4.427931-1.803972-1.803972 4.263933c-7.05189 16.727739 3.607944 77.406791 32.307495 182.037156 11.479821 4.427931 19.1877 14.923767 22.959641 31.323511C281.337604 290.685458 291.83344 296.425368 300.197309 299.705317L300.197309 299.705317zM216.230621 80.276746c28.371557 19.515695 40.999359 32.799488 38.047406 39.68738-0.983985 2.131967-0.65599 5.575913 0.65599 10.167841l-0.983985 2.131967c-25.5836-21.483664-38.047406-32.963485-37.391416-34.439462C215.246637 88.804612 215.082639 83.064702 216.230621 80.276746L216.230621 80.276746zM216.722614 72.896861l0.983985-2.131967c11.643818 1.147982 21.155669 3.279949 28.699552 6.231903 0.819987 0.327995 7.379885 5.411915 19.84369 15.251762l-0.983985 2.131967c-7.543882-2.951954-12.7918-0.983985-15.743754 6.067905C226.398463 85.032671 215.574632 75.848815 216.722614 72.896861L216.722614 72.896861zM225.90647 143.743754l11.151826 4.263933c-1.147982-2.623959-6.3959-8.691864-15.579757-18.53171-2.295964-10.823831-2.787956-17.547726-1.639974-20.335682 27.715567 20.663677 40.34337 33.783472 37.883408 39.523382l0.819987 10.331839-3.443946-3.935939-9.019859-3.443946-0.983985 2.131967c11.151826 4.263933 17.875721 16.891736 20.49968 37.719411l-0.983985 2.131967C239.35426 172.443306 227.21845 160.307495 227.874439 157.027546L225.90647 143.743754 225.90647 143.743754zM231.646381 173.42729l0.983985-2.131967 2.131967 0.819987c28.371557 23.123639 40.179372 40.179372 35.423447 51.331198 1.475977 0.65599 1.967969 1.639974 1.475977 2.951954l-2.295964-0.819987c-28.863549-21.647662-40.999359-38.047406-36.407431-49.035234C231.482383 175.723254 230.990391 174.73927 231.646381 173.42729L231.646381 173.42729zM240.994234 211.966688l0.983985-2.131967c13.775785 10.331839 35.915439 29.847534 66.418962 58.21909l2.131967 0.819987-6.3959 14.923767 0.491992 5.083921-2.295964-0.819987c-36.571429-32.963485-55.431134-51.82319-56.579116-56.743113L240.994234 211.966688 240.994234 211.966688zM311.67713 107.336323l-35.751441-13.939782c-1.475977-0.491992-6.887892-4.263933-16.235746-11.315823l0.819987-1.967969 12.299808 2.131967 20.007687 7.871877c11.643818 4.591928 32.143498 19.84369 61.171044 46.08328l-6.3959 14.923767-2.131967-0.819987c-24.107623-16.891736-34.439462-29.191544-31.159513-36.899423C315.449071 110.616272 314.629084 108.484305 311.67713 107.336323L311.67713 107.336323zM267.889814 264.773863l0.819987-1.967969c17.875721 16.891736 27.387572 25.419603 28.207559 25.747598l-0.983985 2.131967-8.855862-3.443946C274.941704 282.485586 268.545804 274.941704 267.889814 264.773863L267.889814 264.773863zM275.597694 222.954516c16.071749-37.883408 20.007687-67.894939 11.971813-90.034593l-3.443946-28.863549 26.89558 10.495836c-7.543882 30.011531-18.367713 65.598975-32.471493 106.926329l-0.983985 2.131967L275.597694 222.954516 275.597694 222.954516zM279.369635 231.810378l6.3959-14.923767c13.44779 15.087764 24.435618 24.271621 32.63549 27.55157l-3.607944 8.527867-2.459962 11.643818-2.131967-0.819987C289.045484 247.06214 278.713645 236.566304 279.369635 231.810378L279.369635 231.810378zM292.817425 194.58296c23.943626 17.219731 33.619475 30.995516 29.191544 41.491352l-2.787956 6.3959-2.295964-0.819987c-21.483664-18.859705-30.667521-31.651505-27.879564-38.3754L292.817425 194.58296 292.817425 194.58296zM294.457399 190.483024l2.787956-6.3959 2.295964-11.807816 2.295964 0.819987-0.491992-5.083921 6.3959-14.923767 32.471493 27.387572-6.3959 15.087764c-9.347854-10.331839-16.235746-16.399744-20.827675-18.203716l-2.295964-0.983985c-0.65599 1.639974 6.067905 10.167841 20.335682 25.419603l-3.115951 13.611787-0.983985 2.131967L294.457399 190.483024 294.457399 190.483024zM307.413197 148.171685l2.787956-6.3959 2.295964-11.643818c23.943626 17.219731 35.259449 27.387572 33.94747 30.503523l-5.411915 12.955798C329.224856 165.719411 318.07303 157.191544 307.413197 148.171685L307.413197 148.171685zM355.792441 131.935939c-23.779628-17.711723-34.111467-30.011531-30.995516-37.227418l1.475977-9.347854c25.255605 18.039718 36.899423 29.355541 34.931454 33.783472 24.435618 21.155669 38.703395 32.471493 42.803331 33.94747l-0.819987 1.967969c-1.803972 2.787956-6.723895 4.099936-14.595772 4.427931l-30.831518-31.9795L355.792441 131.935939 355.792441 131.935939zM327.912876 81.26073l4.591928-10.659833-0.491992-5.083921 2.295964 0.819987c23.451634 14.595772 34.275464 23.615631 32.63549 27.55157l-5.411915 12.955798L327.912876 81.26073 327.912876 81.26073zM333.816784 61.253043l5.411915-12.7918c25.747598 13.283792 37.719411 22.139654 35.915439 26.403587l-4.591928 10.659833C348.412556 70.272902 336.112748 62.237028 333.816784 61.253043L333.816784 61.253043zM357.596413 139.971813l1.803972-4.099936c4.919923 1.967969 8.527867 9.839846 10.823831 23.943626l-2.295964-0.819987C364.648302 147.679693 361.204356 141.44779 357.596413 139.971813L357.596413 139.971813zM731.674568 256.081999l3.935939-0.163997c-0.163997-2.459962 4.755926-9.019859 14.759769-19.515695l-0.65599-11.315823c-1.147982-21.975657-5.411915-53.955157-12.955798-95.774504 12.627803-0.65599 25.911595-10.659833 39.68738-30.175529l-0.163997-3.935939-47.887252-10.823831-1.967969-37.719411c-0.327995-4.919923-14.923767-7.379885-43.951313-7.379885-5.575913 9.019859-11.151826 13.775785-16.891736 13.939782l0.163997 1.967969c1.147982 22.467649 3.279949 36.735426 6.231903 42.967329l-3.935939 0.163997-0.65599-13.119795-9.839846 0.491992c-36.571429 1.803972-60.023062 9.839846-70.026906 24.271621l-3.935939 0.163997 0.163997 3.771941c0.819987 14.759769 30.667521 56.087124 89.706598 124.14606 10.167841-0.491992 19.515695 4.755926 28.371557 15.579757C714.290839 255.754004 724.294683 256.573991 731.674568 256.081999L731.674568 256.081999zM587.848815 115.86419l-0.163997-1.967969c9.019859-2.951954 16.891736-4.591928 23.615631-4.919923 0.65599 0 7.379885 1.475977 20.171685 4.755926l0.163997 1.967969c-6.723895 0.327995-9.839846 3.607944-9.511851 9.675849C599.328635 121.6041 588.012812 118.324151 587.848815 115.86419L587.848815 115.86419zM590.144779 121.440102c28.043562 5.083921 42.147341 10.659833 42.475336 16.727739 0.163997 1.803972 1.475977 4.263933 4.099936 7.215887l0.163997 1.967969c-26.731582-7.379885-40.015375-11.807816-40.179372-13.119795C592.440743 128.163997 590.308776 123.900064 590.144779 121.440102L590.144779 121.440102zM620.15631 165.227418l9.839846-0.491992c-1.803972-1.475977-7.871877-4.427931-18.367713-8.527867-5.575913-7.215887-8.527867-12.13581-8.527867-14.595772 28.043562 6.067905 42.147341 11.643818 42.311339 16.727739l4.263933 7.379885-3.935939-1.803972-8.035874 0.327995 0.163997 1.967969c9.839846-0.491992 19.351698 6.559898 28.863549 21.155669l0.163997 1.967969c-26.23959-7.379885-39.68738-12.463805-40.34337-14.923767L620.15631 165.227418 620.15631 165.227418zM670.667521 109.960282l-31.487508 1.475977c-1.31198 0-6.559898-0.983985-16.071749-2.951954l-0.163997-1.803972 9.839846-2.459962 17.711723-0.819987c10.331839-0.491992 30.995516 4.099936 61.991031 13.939782l0.65599 13.119795-1.803972 0.163997c-23.943626-4.591928-36.079436-10.167841-36.407431-16.891736C674.603459 110.944266 673.29148 109.796284 670.667521 109.960282L670.667521 109.960282zM635.244074 185.399103l-0.163997-1.967969 1.803972-0.163997c29.355541 7.70788 44.279308 16.563741 44.7713 26.23959 1.31198 0 2.131967 0.491992 2.131967 1.639974l-1.967969 0.163997c-29.191544-6.3959-44.115311-14.595772-44.607303-24.271621C635.900064 187.039078 635.244074 186.547085 635.244074 185.399103L635.244074 185.399103zM685.755285 207.37476c-1.803972-33.29148-9.675849-56.907111-23.615631-70.682896l-12.955798-20.171685 23.779628-1.147982c5.247918 24.763613 10.167841 54.611147 14.595772 89.870596l0.163997 1.967969L685.755285 207.37476 685.755285 207.37476zM656.071749 210.818706l-0.163997-1.967969c13.939782 3.115951 37.391416 10.167841 70.354901 21.155669l1.803972-0.163997 0.65599 13.119795 2.295964 3.607944-1.967969 0.163997c-39.03139-12.299808-59.859065-20.007687-62.483024-23.287636L656.071749 210.818706 656.071749 210.818706zM670.339526 68.46893l-0.65599-11.315823c23.943626 1.31198 35.915439 3.935939 36.079436 7.70788l0.491992 9.347854C684.443306 70.272902 672.471493 68.304933 670.339526 68.46893L670.339526 68.46893zM673.29148 85.196669l-0.491992-9.347854-2.295964-3.607944 1.967969-0.163997c22.631646 2.951954 33.94747 6.231903 34.111467 9.511851l0.65599 11.315823L673.29148 85.196669 673.29148 85.196669zM712.158873 113.568225c-23.943626-5.247918-36.079436-10.987828-36.407431-17.219731l-2.295964-7.379885c25.255605 5.083921 37.883408 9.511851 38.211403 13.44779 25.747598 7.543882 40.34337 11.151826 43.951313 10.987828l0.163997 1.803972c-0.327995 2.623959-3.443946 5.247918-9.347854 8.035874l-34.439462-13.44779L712.158873 113.568225 712.158873 113.568225zM682.147341 141.611787l-0.327995-5.73991-2.459962-9.347854c23.943626 4.755926 36.079436 8.691864 36.079436 11.479821l0.65599 11.315823C704.778988 147.351698 693.463165 144.727739 682.147341 141.611787L682.147341 141.611787zM688.051249 177.199231l-0.327995-5.73991-2.623959-9.511851 1.967969-0.163997-2.295964-3.607944-0.65599-13.119795 33.94747 9.511851 0.65599 13.283792c-10.659833-4.591928-18.039718-6.723895-21.975657-6.559898l-1.967969 0.163997c0 1.475977 8.199872 5.411915 24.271621 12.13581l2.623959 11.151826 0.163997 1.967969L688.051249 177.199231 688.051249 177.199231zM688.215247 180.807175c23.943626 4.755926 36.243434 11.807816 36.735426 20.991672l0.327995 5.73991-1.967969 0.163997c-22.631646-6.887892-34.275464-13.283792-34.603459-19.1877L688.215247 180.807175 688.215247 180.807175zM691.82319 212.786675l-0.65599-13.119795c15.415759 6.723895 26.89558 10.003844 34.111467 9.511851l0.327995 7.543882 2.459962 9.511851-1.803972 0.163997C704.450993 220.986547 692.971172 216.558616 691.82319 212.786675L691.82319 212.786675zM695.103139 240.994234l-0.163997-1.803972c19.351698 6.559898 29.355541 9.839846 30.339526 9.839846l0.163997 1.967969-7.871877 0.327995C706.746957 251.818065 699.367072 248.374119 695.103139 240.994234L695.103139 240.994234zM716.422806 118.980141l-0.163997-3.607944c4.427931-0.163997 10.003844 4.427931 16.727739 14.10378l-1.967969 0.163997C724.45868 122.26009 719.538757 118.816143 716.422806 118.980141L716.422806 118.980141zM479.118514 382.196028c53.627162 10.167841 89.870596 1.967969 109.222293-24.599616 9.675849-18.695708 15.579757-33.455477 17.875721-44.279308 11.807816-56.743113-5.903908-103.154388-53.299167-138.741832-12.463805-5.083921-22.631646-8.363869-30.339526-10.003844-31.651505-6.067905-63.631006 5.083921-95.938501 33.455477-9.347854 16.399744-15.251762 31.159513-18.039718 44.279308-13.283792 63.795003 1.967969 108.238309 45.919283 133.165919L479.118514 382.196028 479.118514 382.196028zM410.075593 265.429853c6.231903 5.247918 11.479821 8.199872 15.579757 9.019859-9.675849-9.347854-14.431775-15.087764-13.939782-17.219731-0.327995-5.411915-0.163997-10.167841 0.819987-14.267777l2.131967 0.327995c24.271621 15.743754 35.915439 25.5836 35.095452 29.519539l-2.131967 10.003844c-4.099936-3.607944-8.035874-5.73991-11.643818-6.559898l-0.819987 4.099936c10.823831 2.131967 15.251762 11.971813 13.44779 29.519539l-1.967969-0.327995c-22.467649-16.399744-34.603459-27.715567-36.407431-33.94747C409.255605 273.30173 409.255605 269.857783 410.075593 265.429853L410.075593 265.429853zM410.23959 286.257527c33.127482 21.647662 47.887252 40.34337 44.607303 56.251121-29.683536-23.615631-44.443306-36.079436-44.279308-37.555413C409.747598 295.769379 409.5836 289.537476 410.23959 286.257527L410.23959 286.257527zM412.699552 315.777066l0.491992-2.131967c27.059577 20.663677 44.607303 37.227418 52.643177 49.527226 10.331839 1.967969 17.055734 7.379885 20.49968 16.235746l-2.131967-0.491992C447.303011 372.028187 423.523382 350.872518 412.699552 315.777066L412.699552 315.777066zM414.339526 234.926329c2.459962-4.919923 4.263933-9.347854 5.083921-13.44779 18.859705 14.759769 30.339526 22.467649 34.111467 23.123639l-3.771941 18.039718C444.18706 261.493914 432.379244 252.310058 414.339526 234.926329L414.339526 234.926329zM421.883408 220.002562c2.131967-9.839846 5.247918-14.759769 9.675849-14.759769l27.879564 21.975657c-0.327995 1.147982-2.131967 6.231903-5.411915 15.415759C437.299167 228.530429 426.639334 220.986547 421.883408 220.002562L421.883408 220.002562zM432.707239 199.174888c5.083921-5.903908 8.527867-8.691864 10.495836-8.363869l3.935939 0.819987c10.987828 10.495836 19.1877 16.235746 24.599616 17.219731-0.819987 3.935939-3.935939 8.855862-9.511851 14.759769C442.21909 209.014734 432.379244 200.814862 432.707239 199.174888L432.707239 199.174888zM448.450993 185.563101l0.491992-2.131967c2.459962 0.491992 6.3959-0.819987 11.807816-3.771941 18.859705 10.003844 28.207559 16.727739 28.207559 19.84369-6.067905 1.639974-9.511851 4.427931-10.331839 8.363869C466.818706 202.946829 456.814862 195.566944 448.450993 185.563101L448.450993 185.563101zM469.442665 179.331198l0.491992-2.131967 14.923767 0.65599 12.627803 2.459962c2.459962 0.491992 8.199872 3.771941 17.547726 9.839846l-0.491992 2.131967c-6.887892-1.31198-13.611787 0.163997-20.49968 4.263933L469.442665 179.331198 469.442665 179.331198zM476.494555 249.030109l4.591928-21.811659c2.951954-14.431775 12.463805-25.091608 28.535554-31.9795l4.099936 0.819987c24.599616 34.275464 32.143498 73.798847 22.795644 118.570147l-2.459962 11.971813-6.231903 19.515695-6.067905-1.147982c-3.935939-0.819987-14.267777 0-30.831518 2.295964C473.870596 316.597053 469.278668 283.961563 476.494555 249.030109L476.494555 249.030109zM476.494555 363.172325l0.327995-1.967969c10.823831-2.131967 17.547726-3.115951 20.007687-2.623959 13.939782 10.167841 21.647662 17.875721 23.287636 23.287636l-21.319667-1.967969C496.174247 379.408072 488.630365 373.832159 476.494555 363.172325L476.494555 363.172325zM508.966047 363.172325l3.771941 2.787956c1.147982 0.163997 6.231903-2.951954 15.087764-9.675849 10.331839 13.119795 18.203716 20.171685 23.779628 21.155669-0.65599 2.951954-8.199872 4.263933-22.467649 4.099936C515.361947 370.716208 508.638053 364.648302 508.966047 363.172325L508.966047 363.172325zM511.590006 185.235106l0.491992-2.131967 4.099936 0.819987c19.84369 3.771941 35.751441 17.219731 47.723254 40.34337C554.557335 214.754644 537.173607 201.634849 511.590006 185.235106L511.590006 185.235106zM521.921845 197.534914c38.211403 24.271621 56.087124 42.311339 53.79116 53.79116 1.967969 4.919923 2.623959 8.527867 2.295964 10.823831-35.095452-26.567585-51.495195-44.935298-49.363229-54.939142C526.349776 206.71877 524.217809 203.602819 521.921845 197.534914L521.921845 197.534914zM528.64574 352.348495l7.543882-15.251762 2.131967 0.491992c4.263933 5.73991 13.283792 14.431775 27.059577 25.911595l-0.491992 2.131967c-5.411915 5.247918-8.363869 8.855862-8.855862 10.823831l-4.099936-0.819987L528.64574 352.348495 528.64574 352.348495zM536.845612 333.324792l4.263933-9.675849-0.491992-8.363869 4.099936 0.819987c19.515695 17.711723 29.027546 27.059577 28.863549 28.371557l-0.491992 2.131967c-1.967969 9.347854-4.263933 13.611787-7.05189 13.119795C548.817425 342.508648 539.141576 333.652787 536.845612 333.324792L536.845612 333.324792zM539.797566 236.402306c27.715567 19.84369 40.999359 32.63549 39.68738 38.703395 1.31198 7.215887 1.803972 12.13581 1.147982 14.759769l-1.967969-0.327995-35.095452-29.519539C540.78155 245.586163 539.469571 237.714286 539.797566 236.402306L539.797566 236.402306zM542.257527 307.413197l2.459962-11.971813 10.003844 3.935939c-7.05189-7.871877-10.331839-12.627803-10.003844-14.267777-0.65599-10.495836-0.819987-16.727739-0.327995-18.695708 18.695708 13.611787 30.831518 24.927611 36.243434 33.94747l-2.459962 11.971813c-7.05189-7.05189-12.7918-10.987828-16.727739-11.807816 8.035874 11.315823 13.939782 17.383728 17.711723 18.039718l-4.099936 19.84369C554.557335 320.532992 543.733504 310.201153 542.257527 307.413197L542.257527 307.413197zM307.249199 569.153107c-9.675849 0-17.711723-6.887892-19.84369-16.071749-4.263933-12.463805 1.639974-28.863549 29.519539-35.751441 1.31198 35.587444 0 49.527226 0 49.527226C313.809097 568.33312 310.693145 569.153107 307.249199 569.153107L307.249199 569.153107zM709.862908 537.173607c0-1.147982 0-2.131967-0.163997-3.115951 2.131967 3.279949 3.279949 7.215887 3.279949 11.479821 0 11.643818-9.183857 21.155669-20.49968 21.155669-3.443946 0-6.723895-0.819987-9.511851-2.459962C697.891095 563.905189 709.862908 551.933376 709.862908 537.173607L709.862908 537.173607zM531.761691 520.281871c0.65599 15.743754-32.963485 49.199231-32.963485 49.199231 0-18.203716 9.347854-42.803331 12.463805-48.707239-8.035874-11.643818-13.283792-32.307495-13.283792-32.307495S531.105701 504.374119 531.761691 520.281871L531.761691 520.281871zM488.794363 507.326073c2.459962 0 4.427931 1.967969 4.427931 4.427931 0 2.459962-1.967969 4.427931-4.427931 4.427931-2.459962 0-4.427931-1.967969-4.427931-4.427931C484.366432 509.294042 486.334401 507.326073 488.794363 507.326073L488.794363 507.326073zM445.335042 629.668161c-0.819987 8.855862-2.131967 16.235746-2.131967 16.235746s-53.627162 7.05189-63.959001-30.503523C395.151826 632.94811 427.623318 631.144138 445.335042 629.668161L445.335042 629.668161zM620.648302 614.908392c-9.675849 37.719411-63.303011 31.651505-63.303011 31.651505s-1.475977-7.379885-2.459962-16.235746C572.597053 631.636131 605.232543 632.784113 620.648302 614.908392L620.648302 614.908392zM419.587444 518.313901c29.847534 0 53.955157 21.975657 53.955157 49.035234 0 27.059577-24.271621 49.035234-53.955157 49.035234-29.847534 0-53.955157-21.975657-53.955157-49.035234C365.632287 540.289558 389.903908 518.313901 419.587444 518.313901L419.587444 518.313901zM419.587444 613.76041c28.371557 0 51.331198-20.827675 51.331198-46.411275 0-25.5836-22.959641-46.411275-51.331198-46.411275-28.207559 0-51.331198 20.827675-51.331198 46.411275C368.256246 592.932735 391.379885 613.76041 419.587444 613.76041L419.587444 613.76041zM419.587444 534.38565c20.007687 0 36.243434 14.759769 36.243434 32.799488 0 18.203716-16.235746 32.799488-36.243434 32.799488s-36.243434-14.759769-36.243434-32.799488C383.34401 549.14542 399.579757 534.38565 419.587444 534.38565L419.587444 534.38565zM435.331198 552.261371c1.967969 2.131967 4.919923 2.623959 6.559898 1.147982 1.639974-1.475977 1.475977-4.263933-0.491992-6.3959-1.967969-2.131967-4.919923-2.623959-6.559898-1.147982C433.035234 547.341448 433.199231 550.129404 435.331198 552.261371L435.331198 552.261371zM395.971813 585.880846c5.411915 5.73991 13.283792 7.05189 17.875721 3.115951 4.591928-3.935939 3.935939-11.807816-1.475977-17.547726-5.411915-5.73991-13.283792-7.05189-17.875721-3.115951C389.903908 572.433056 390.559898 580.304933 395.971813 585.880846L395.971813 585.880846zM584.240871 518.313901c29.847534 0 53.955157 21.975657 53.955157 49.035234 0 27.059577-24.271621 49.035234-53.955157 49.035234-29.847534 0-53.955157-21.975657-53.955157-49.035234C530.121717 540.289558 554.393338 518.313901 584.240871 518.313901L584.240871 518.313901zM584.240871 613.76041c28.371557 0 51.331198-20.827675 51.331198-46.411275 0-25.5836-22.959641-46.411275-51.331198-46.411275-28.207559 0-51.331198 20.827675-51.331198 46.411275C532.909673 592.932735 555.869315 613.76041 584.240871 613.76041L584.240871 613.76041zM584.240871 534.38565c20.007687 0 36.243434 14.759769 36.243434 32.799488 0 18.203716-16.235746 32.799488-36.243434 32.799488-20.007687 0-36.243434-14.759769-36.243434-32.799488C547.997438 549.14542 564.233184 534.38565 584.240871 534.38565L584.240871 534.38565zM599.820628 552.261371c1.967969 2.131967 4.919923 2.623959 6.559898 1.147982 1.639974-1.475977 1.475977-4.263933-0.491992-6.3959-1.967969-2.131967-4.919923-2.623959-6.559898-1.147982C597.688661 547.341448 597.852659 550.129404 599.820628 552.261371L599.820628 552.261371zM560.62524 585.880846c5.411915 5.73991 13.283792 7.05189 17.875721 3.115951 4.591928-3.935939 3.935939-11.807816-1.475977-17.547726-5.411915-5.73991-13.283792-7.05189-17.875721-3.115951C554.557335 572.433056 555.213325 580.304933 560.62524 585.880846L560.62524 585.880846zM957.171044 381.540038C957.171044 381.540038 957.171044 381.540038 957.171044 381.540038c-0.65599 0.983985-1.31198 1.803972-1.967969 2.951954-0.327995 0.327995-0.491992 0.65599-0.819987 0.983985-0.327995 0.327995-1.967969 0.65599-2.295964 0.983985-11.315823 14.759769-29.355541 40.34337-62.975016 46.247277l0 34.931454c0 4.263933-0.819987 8.691864-5.083921 8.691864L685.919283 476.330557c-0.163997 10.331839-0.327995 18.203716-0.65599 27.879564 24.435618 1.803972 43.295324 19.351698 43.295324 41.491352 0 22.467649-19.84369 40.671365-45.263293 41.819347-1.967969 78.226778-5.903908 143.98975-7.70788 150.549648l-0.491992 0.983985c-1.967969 2.295964-9.511851 5.247918-21.155669 8.363869 0.327995 13.939782-3.279949 29.355541-11.643818 46.08328 3.443946-21.647662-22.795644-36.079436-26.567585-38.047406-0.163997 0-0.327995 0-0.491992 0 0.163997 4.427931 0 57.727098-88.230621 97.90647-1.475977-44.115311-14.10378-70.682896-31.9795-86.754644L494.534273 766.606022l-5.411915-0.327995 0-0.163997 0 0 0 0 0.327995 0 0.327995-0.163997c-0.819987-0.163997-0.983985-0.491992-1.147982-1.147982-10.331839-8.035874-28.043562-18.203716-64.450993-18.203716-13.283792 0-28.207559 1.31198-44.607303 3.935939-4.099936 0.819987-7.70788 1.147982-11.151826 1.147982-5.575913 0-10.003844-0.983985-16.071749-2.295964l-0.327995 0-0.327995-0.163997c-17.547726-4.099936-27.55157-7.70788-30.011531-10.659833l-0.491992-0.983985c-0.491992-2.131967-2.295964-8.363869-5.73991-150.549648-25.255605-0.983985-45.263293-19.351698-45.263293-41.983344 0-22.139654 18.859705-39.523382 43.459321-41.163357-0.163997-9.675849-0.327995-17.547726-0.65599-27.879564L132.099936 476.002562c-4.427931 0-10.495836-4.591928-10.495836-8.691864l0-97.414478c-11.807816-0.65599-19.679693-2.295964-26.731582-4.755926-29.027546-10.495836-35.751441-35.915439-35.587444-60.023062 0-1.475977 0.491992-2.787956 0.983985-3.771941-6.723895-11.643818-6.231903-25.5836-5.083921-35.587444 0.983985-8.035874 2.623959-12.13581 4.427931-13.939782-4.263933-8.855862-0.983985-18.859705 1.967969-26.731582 3.771941-10.167841 12.13581-11.971813 22.139654-10.003844-4.755926-9.019859-2.459962-17.219731 11.643818-28.699552 4.427931-3.607944 14.267777 7.05189 26.075593 16.071749l0-267.151826c0-4.263933 6.067905-6.067905 10.331839-6.067905l751.928251 0c4.427931 0 5.083921 1.803972 5.083921 6.067905L888.784113 248.374119c16.727739 0.983985 29.355541 7.70788 38.539398 19.84369 4.591928 6.231903 7.871877 11.807816 8.691864 16.891736C977.670724 313.153107 982.262652 344.640615 957.171044 381.540038L957.171044 381.540038zM316.433056 508.638053c-22.959641 0.491992-40.835362 16.727739-40.835362 36.735426 0 20.335682 18.859705 36.899423 41.983344 36.899423l0 2.623959 0.163997-0.65599c0-0.819987 0-1.475977 0-2.295964 0.491992 0.163997 0.983985 0.163997 1.475977 0.327995l1.803972 0 0 0.491992c5.247918 1.31198 12.7918 2.951954 19.351698 3.771941 10.003844 35.095452 34.111467 64.122998 34.111467 64.122998s-9.839846 28.863549-13.939782 67.238949c51.167201-85.11467 229.268418-81.178732 280.107623-10.823831-4.591928-32.799488-12.627803-56.415119-12.627803-56.415119s24.107623-28.863549 34.111467-64.122998c6.559898-0.819987 13.939782-1.147982 19.023703-2.295964 0 0.491992 0 2.623959 0 2.623959l0.491992 0c23.123639 0 41.983344-18.695708 41.983344-39.03139 0-9.347854-3.935939-18.695708-10.495836-25.419603-10.167841-6.723895-25.091608-10.331839-40.835362-10.331839 0-6.723895 0.983985-19.351698 1.803972-35.423447L318.401025 476.658552c0.163997 10.331839 0.491992 19.84369 0.65599 30.175529l0 2.131967L316.433056 508.638053 316.433056 508.638053zM126.524023 462.554773c0 4.099936 6.3959 9.183857 10.823831 9.183857l741.432415 0c4.263933 0 5.575913-4.919923 5.575913-9.183857l0-29.027546c0 0.491992-6.723895 1.475977-10.823831 1.147982-22.795644-2.295964-44.443306-3.607944-60.679052-9.183857L176.215247 425.491352l-1.31198-2.787956 0-60.18706c-10.823831 5.903908-25.5836 8.363869-48.215247 7.871877L126.68802 462.554773 126.524023 462.554773zM821.381166-13.693786 180.807175-13.693786 180.807175 282.649584c10.823831 4.263933 15.579757 10.987828 15.087764 21.975657-0.491992 8.363869-4.263933 13.611787-15.087764 16.727739l0 7.379885c5.903908 1.967969 3.935939 4.263933 5.247918 6.723895 5.411915 10.495836 5.575913 18.203716-5.247918 23.779628l0 55.759129 615.318386 0c-2.787956-5.575913-4.755926-7.871877-5.575913-12.299808-1.475977-8.035874-1.639974-18.367713-1.147982-28.207559L697.891095 315.449071c0 0-28.371557-15.251762-16.727739-32.799488 11.643818-17.383728 32.307495-11.479821 50.511211-0.327995 12.13581 7.379885 39.68738 23.287636 63.959001 40.179372 0.163997-0.163997 0.327995-0.163997 0.491992-0.327995-1.803972-1.31198-2.951954-2.295964-2.951954-2.295964-11.151826-7.543882-6.887892-36.899423 15.415759-41.327354 3.115951-0.65599 9.675849 0 9.675849 1.147982l0-293.391416L821.381166-13.693786 821.381166-13.693786zM177.855221 271.169763c0 3.443946-2.131967 6.231903-4.755926 8.035874 1.639974 0.491992 3.771941 0.983985 4.755926 1.475977L177.855221 271.169763 177.855221 271.169763zM177.855221 322.828956c-0.983985 0.163997-1.639974 0.327995-2.459962 0.491992 0.819987 0.491992 1.475977 0.983985 2.459962 1.475977L177.855221 322.828956 177.855221 322.828956zM878.780269-65.516976 137.347854-65.516976c-4.263933 0-10.823831 2.131967-10.823831 6.3959L126.524023 206.882767c5.903908 1.147982 4.919923 2.295964 6.723895 3.279949 19.679693 8.035874 38.047406 25.255605 25.747598 33.127482-0.163997 0-1.475977 0.163997-1.639974 0.163997 9.511851 3.771941 17.547726 9.839846 17.547726 20.663677l0-289.29148 655.169763 2.459962 0 291.915439c9.839846-9.675849 21.647662-14.595772 34.603459-10.331839 3.279949-6.559898 13.611787-9.839846 19.515695-10.331839l0-307.495195C884.192184-63.38501 883.044202-65.516976 878.780269-65.516976L878.780269-65.516976zM878.780269-65.516976"  horiz-adv-x="1024" />
    <glyph glyph-name="carousel" unicode="&#58932;" d="M1002.069333 144.38400000000001L1002.069333 611.6906670000001c0 24.213333-16.917333 49.578667-42.069333 49.578667l-64 0 1.152 6.4c0 31.338667-26.005333 57.6-58.538667 57.6L186.432 725.269333c-31.936 0-58.410667-31.957333-58.410667-64l-0.213333 0.96L67.178667 662.229333c-25.152 0-45.226667-20.288-45.226667-44.501333l0-467.328L21.354667 150.39999999999998c0-24.789333 20.629333-44.693333 45.312-44.693333L127.786667 105.70666700000004l0-5.184C127.786667 69.03466700000001 153.792 42.66666699999996 186.432 42.66666699999996l652.842667 0c31.658667 0 56.277333 10.901333 56.725333 42.602667l64 0c24.661333 0 42.666667 34.325333 42.666667 59.114667L1002.069333 144.38400000000001zM128 149.26933299999996L64 149.26933299999996l0 469.333333 64 0L128 149.26933299999996zM853.333333 106.602667c0-6.421333-14.848-21.333333-21.333333-21.333333l-640 0c-6.485333 0-21.333333 14.848-21.333333 21.333333l0 554.666667c0 6.378667 9.258667 18.56 15.744 18.56l5.589333 2.773333 640 0c6.442667 0 21.333333-14.954667 21.333333-21.333333L853.333333 106.602667zM960 127.93600000000004l-64 0 0 490.666667 60.842667 1.984c4.970667 0 3.157333 2.944 3.157333-1.984l0-469.333333C960 144.29866700000002 965.013333 127.93600000000004 960 127.93600000000004zM412.458667 399.829333c43.925333 0 79.637333 34.773333 79.637333 77.482667 0 42.752-35.712 77.482667-79.637333 77.482667-43.925333 0-79.637333-34.730667-79.637333-77.482667C332.8 434.602667 368.533333 399.829333 412.458667 399.829333zM412.458667 516.0533330000001c21.952 0 39.829333-17.365333 39.829333-38.741333 0-21.333333-17.877333-38.741333-39.829333-38.741333-21.952 0-39.829333 17.408-39.829333 38.741333C372.629333 498.709333 390.506667 516.0533330000001 412.458667 516.0533330000001zM785.92 457.386667c-95.914667-23.338667-137.728-87.765333-168.256-134.805333-24.213333-37.269333-39.082667-58.346667-65.109333-58.346667l-0.042667 0c-35.456 0-57.109333 14.272-80.042667 28.16-24.362667 14.741333-49.536 29.952-88.64 29.952-75.648 0-156.906667-93.269333-165.930667-103.893333L213.333333 167.38133300000004c0-10.709333 8.917333-18.112 19.925333-18.112l557.504 0c10.986667 0 19.904 7.402667 19.904 18.112L810.666667 438.570667c0 5.973333-2.837333 11.626667-7.658667 15.296C798.186667 457.536 791.872 458.858667 785.92 457.386667zM770.858667 188.52266699999996L253.162667 188.52266699999996c24.874667 27.733333 85.290667 95.082667 130.666667 95.082667 27.733333 0 46.229333-11.157333 67.605333-24.128 25.152-15.168 53.632-32.426667 99.712-33.941333l2.944-0.064c47.637333 0 71.722667 37.12 97.237333 76.416 26.645333 41.088 56.469333 79.104 119.530667 102.485333L770.858667 188.52266699999996z"  horiz-adv-x="1024" />
    <glyph glyph-name="help" unicode="&#58887;" d="M690.2 741.8C635.2 783.6 573.2 798 494.6 798c-59.6 0-110.6-12.2-151-39.4C284 718 256 649.8 256 542l153.6 0c0 28.8-2.8 59.8 14 86.4 16.8 26.6 40.2 47 80.4 47 40.8 0 61.8-11.8 81.6-36.2 16.8-20.8 23.2-45.6 23.2-72 0-22.8-11.6-43.8-25.4-62.8-7.6-11.2-17.6-21.2-30.2-30.8 0 0-83-49.4-112.2-96.2-21.8-34.8-29.6-78.4-31.4-130.6-0.2-3.8 1.2-11.6 14.4-11.6 13 0 112 0 123.6 0 11.6 0 14 8.8 14.2 12.4 0.8 19 3.2 48.2 6.6 59.2 6.6 20.8 19.4 39 39.4 54.6l41.4 28.6c37.4 29.2 67.2 53 80.4 71.8 22.6 30.8 38.4 68.8 38.4 113.8C768 649 741 703.2 690.2 741.8zM484 155.6c-51.8 1.6-94.6-34.4-96.4-90.6-1.6-56.4 39-93.4 91-95 54-1.6 95.8 33.2 97.4 89.4C577.6 115.6 538 154 484 155.6z"  horiz-adv-x="1024" />
    <glyph glyph-name="code-circle" unicode="&#58933;" d="M513.544163 893.525741c-282.101629 0-510.78094-228.679311-510.78094-510.76288 0-282.083569 228.679311-510.76288 510.78094-510.76288s510.76288 228.679311 510.76288 510.76288C1024.325103 664.8464309999999 795.645793 893.525741 513.544163 893.525741zM513.544163-83.46335899999997c-257.503523 0-466.22622 208.740757-466.22622 466.22622S256.0587 848.989082 513.544163 848.989082s466.22622-208.740757 466.22622-466.22622S771.047686-83.46335899999997 513.544163-83.46335899999997zM171.771357 359.77212099999997L414.357086 256.088033 414.357086 300.805295 221.978945 380.50532599999997 414.357086 459.464886 414.357086 504.182148 171.771357 401.76228ZM442.585309 193.38272800000004L478.814238 193.38272800000004 584.737801 572.1429949999999 548.743656 572.1429949999999ZM612.749301 504.182148L612.749301 459.464886 804.874598 380.50532599999997 612.749301 300.805295 612.749301 256.088033 855.33503 359.77212099999997 855.33503 401.76228Z"  horiz-adv-x="1025" />
    <glyph glyph-name="windows" unicode="&#59007;" d="M437 329l0-325.5-341 47 0 278.5 341 0zm0 371.5l0-329.5-341 0 0 282.5zm491-371.5l0-393-453.5 62.5 0 330.5 453.5 0zm0 439l0-397-453.5 0 0 334.5z"  horiz-adv-x="1024" />
    <glyph glyph-name="water" unicode="&#58934;" d="M862.315763 33.684211000000005C802.869868 33.684211000000005 754.526289 82.94399999999996 754.526289 143.50371900000005 754.526289 162.33094700000004 759.35885 180.96056099999998 768.520956 197.43438600000002 768.64671 197.79368399999998 768.808394 198.15298199999995 769.006008 198.49431600000003L849.075622 334.542596 849.057657 334.542596 862.315763 357.052632 875.573868 334.542596 875.573868 334.542596 955.140464 199.356632C955.715341 198.67396499999995 956.164464 197.865544 956.380043 196.96729800000003 965.380464 180.60126300000002 970.123201 162.151298 970.105236 143.50371900000005 970.105236 82.94399999999996 921.761657 33.684211000000005 862.315763 33.684211000000005L862.315763 33.684211000000005ZM924.33064 188.57768399999998C924.204885 188.79326300000002 924.115061 189.02680699999996 924.025236 189.27831600000002L862.315763 302.996211 800.606289 189.260351C800.516464 189.02680699999996 800.42664 188.79326300000002 800.300885 188.57768399999998 793.977236 176.505263 790.635763 162.81600000000003 790.635763 148.965053 790.635763 105.29235100000005 822.792956 69.75775399999998 862.333727 69.75775399999998 901.856534 69.75775399999998 933.995763 105.29235100000005 933.995763 148.98301800000002 933.995763 162.81600000000003 930.654289 176.52322800000002 924.33064 188.57768399999998L924.33064 188.57768399999998ZM682.684605 392.982456C593.50678 392.982456 520.982429 469.602807 520.982429 563.8108070000001 520.982429 593.093614 528.240254 622.071018 541.965447 647.706947 542.163061 648.281825 542.396605 648.820772 542.684043 649.341754L662.815412 860.968421 662.797447 860.968421 682.684605 896 702.571763 860.968421 702.535833 860.968421 821.89471 650.689123C822.774991 649.647158 823.439692 648.3716489999999 823.781026 646.970386 837.25471 621.514105 844.368815 592.8241399999999 844.35085 563.8108070000001 844.35085 469.602807 771.844464 392.982456 682.684605 392.982456L682.684605 392.982456ZM791.408254 630.1192980000001C791.21064 630.4965609999999 791.030991 630.891789 790.887271 631.322947L682.684605 823.924772 574.446008 631.287018C574.320254 630.891789 574.140605 630.4965609999999 573.942991 630.1013330000001 562.840675 609.6931930000001 556.912254 596.075789 556.912254 572.631579 556.912254 498.634105 613.375973 428.876351 682.684605 428.876351 751.993236 428.876351 808.367131 489.058807 808.367131 563.056281 808.367131 586.500491 802.492605 609.6931930000001 791.408254 630.1192980000001L791.408254 630.1192980000001ZM538.695833 276.983018C540.115061 275.330246 541.174991 273.33614 541.713938 271.12645599999996 563.433517 231.11859600000003 574.895131 186.02666699999997 574.895131 140.43171900000004 574.895131-7.581192999999985 458.051341-128 314.403903-128 170.738499-128 53.89471-7.581192999999985 53.89471 140.43171900000004 53.89471 186.47578899999996 65.589868 231.998877 87.704675 272.294175 88.010078 273.17445599999996 88.387341 274.01880700000004 88.872394 274.863158L282.408394 607.411649 282.372464 607.411649 314.403903 662.45614 346.453306 607.411649 346.399412 607.411649 538.695833 276.983018 538.695833 276.983018ZM314.403903 590.614456L119.807973 257.79649099999995C119.556464 257.113825 119.251061 256.449123 118.873798 255.78442099999995 98.932745 220.48336800000004 88.387341 180.42161399999998 88.387341 139.91073700000004 88.387341 12.072420999999963 189.799271-91.89052600000002 314.421868-91.89052600000002 439.026499-91.89052600000002 540.420464 12.072420999999963 540.402499 139.91073700000004 540.402499 180.42161399999998 529.857096 220.50133300000005 509.916043 255.78442099999995 509.53878 256.449123 509.233377 257.131789 508.963903 257.86835099999996L314.403903 590.614456 314.403903 590.614456Z"  horiz-adv-x="1024" />
    <glyph glyph-name="username" unicode="&#58991;" d="M514.594 824.888c-144.11 0-260.979-118.46-260.979-264.558 0-88.783 43.497-166.928 109.711-214.898-135.361-59.354-230.159-195.858-230.159-354.931h0.894c1.541-21.375 18.641-38.377 40.117-38.377s38.575 17.051 40.117 38.377h0.645c0 0.944-0.099 1.79-0.099 2.734 0 0.05 0 0.099 0 0.149 0 0.099-0.05 0.149-0.05 0.199 0.05 159.967 120 291.054 273.009 304.924 8.948-0.944 17.598-2.734 26.844-2.734 144.11 0 260.979 118.46 260.979 264.558s-116.919 264.558-261.029 264.558zM514.594 377.54499999999996c-99.769 0-180.698 81.972-180.698 183.183s80.879 183.183 180.698 183.183c99.719 0 180.647-81.972 180.647-183.183s-80.879-183.183-180.647-183.183zM896.021-6.615000000000009c0 0.348-0.199 0.645-0.199 0.994-1.043 105.038-43.397 200.034-111.35 269.131v0c-7.157 7.357-17.001 11.98-27.986 11.98-21.574 0-39.122-17.747-39.122-39.668 0-11.135 4.573-21.127 11.83-28.334l-0.099-0.05c52.742-55.229 85.302-130.589 85.302-213.853 0-1.043-0.149-1.987-0.149-3.034h0.994c1.491-21.375 18.691-38.377 40.117-38.377 21.475 0 38.575 17.051 40.117 38.377h0.597c0 0.796-0.099 1.491-0.099 2.287-0.05 0.149 0.05 0.348 0.05 0.547z"  horiz-adv-x="1024" />
    <glyph glyph-name="find-fill" unicode="&#58992;" d="M512 896C229.236364 896 0 666.763636 0 384c0-282.786909 229.236364-512 512-512s512 229.213091 512 512C1024 666.763636 794.763636 896 512 896zM657.291636 383.976727c0-77.195636-60.392727-139.729455-136.424727-144.407273l-175.732364-151.714909-22.877091 13.242182 58.228364 222.021818c-8.634182 18.548364-13.800727 39.074909-13.800727 60.858182 0 77.195636 60.369455 139.729455 136.378182 144.430545l175.802182 151.714909 22.877091-13.172364-58.251636-222.068364C652.125091 426.309818 657.291636 405.806545 657.291636 383.976727zM512 384m-66.048 0a2.838 2.838 0 1 1 132.096 0 2.838 2.838 0 1 1-132.096 0Z"  horiz-adv-x="1024" />
    <glyph glyph-name="about" unicode="&#58891;" d="M514.27174 834.607768c-249.516844 0-451.789687-202.272843-451.789687-451.789687s202.272843-451.789687 451.789687-451.789687 451.789687 202.272843 451.789687 451.789687S763.788583 834.607768 514.27174 834.607768zM514.27174-20.12919999999997c-222.541469 0-402.947282 180.405813-402.947282 402.947282s180.405813 402.947282 402.947282 402.947282 402.947282-180.405813 402.947282-402.947282S736.814232-20.12919999999997 514.27174-20.12919999999997zM514.295276 593.979362c-9.44614-10.360975-14.307867-22.951735-14.307867-37.483706 0-11.960403 3.886517-22.396079 11.534707-30.457686 7.783267-8.211009 17.853623-12.450567 29.313629-12.450567 9.312086 0 23.139 2.849908 35.782971 16.900925 9.865695 10.641361 14.866592 23.437805 14.866592 37.693484 0 11.68104-4.031826 21.900799-11.744485 29.832446C562.925856 615.325529 532.358677 613.449809 514.295276 593.979362zM549.461193 293.282882c-12.110829-11.541871-20.589944-18.759249-26.236548-23.316032 2.77009 14.953573 9.976212 44.614104 27.330462 103.023398 17.297968 57.890478 18.799158 67.991534 18.799158 72.955592 0 8.65717-3.63683 16.335037-9.921977 21.642926-14.124695 11.661597-39.035038 9.349949-69.131497-7.677866-16.779152-9.408277-34.595936-24.759917-54.493102-46.576805l-10.377348-11.541871 34.425044-26.548656 8.818853 8.715499c9.573029 9.292644 16.086373 15.35164 20.411889 19.393699-26.294876-86.460164-39.093367-140.190903-39.093367-164.262134 0-10.907421 3.172249-19.970844 9.573029-26.839275 6.460132-7.039323 15.510252-10.736529 25.891693-10.736529 10.146081 0 21.792329 3.926426 35.922141 11.949146 12.741185 7.212262 31.883151 23.029506 58.641585 48.190559l10.837836 10.391674-31.30703 30.475082L549.461193 293.282882z"  horiz-adv-x="1024" />
    <glyph glyph-name="location" unicode="&#59157;" d="M451.673935-98.39569900000004C478.883834-129.01914699999998 524.254807-128.8089789999999 551.400292-97.92885100000001 553.755808-95.38790800000004 558.821323-89.79676199999994 565.872444-81.84834999999998 577.572838-68.65901699999995 590.597131-53.62432000000001 604.615947-36.99831500000005 644.662065 10.495494000000008 684.708678 61.282182000000034 722.129538 113.35355300000003 759.658524 165.575381 792.492213 216.29072599999995 819.314991 264.54153799999995 868.685946 353.35368300000005 896 430.456574 896 493.714285 896 715.890551 719.301715 896 501.333333 896 283.364952 896 106.666667 715.890551 106.666667 493.714285 106.666667 430.401284 134.05152 353.19426999999996 183.54613 264.23737800000004 210.371803 216.02347099999997 243.193308 165.34812399999998 280.699364 113.16684599999996 318.155192 61.05544999999995 358.239268 10.22578999999996 398.322835-37.31103099999996 412.354743-53.95207300000004 425.391185-69.00072999999998 437.102468-82.20257900000001 444.160087-90.15846599999998 449.230214-95.75492099999997 451.982775-98.73670600000003L451.673935-98.39569900000004ZM486.822684-65.32134799999994C484.281231-62.568254000000024 479.425084-57.207989 472.585916-49.49835900000005 461.135889-36.591016999999965 448.364015-21.84776099999999 434.602351-5.527214999999956 395.275714 41.11192700000004 355.949587 90.98045200000001 319.289224 141.985137 282.808749 192.739548 250.983685 241.87642200000005 225.158316 288.29247799999996 179.388826 370.55419500000005 154.50505 440.709839 154.50505 493.714285 154.50505 688.960095 309.785362 847.238095 501.333333 847.238095 692.881306 847.238095 848.161617 688.960095 848.161617 493.714285 848.161617 440.753978 823.345286 370.701737 777.693969 288.58074899999997 751.873483 242.13293399999998 720.038415 192.96007499999996 683.537446 142.16873799999996 646.912604 91.20503299999996 607.624538 41.38032599999997 568.335977-5.21503800000005 554.587654-21.52024300000005 541.828177-36.24924999999996 530.389289-49.14379699999995 523.556841-56.84571100000005 518.705521-62.20043499999997 516.166694-64.95052599999997 507.543772-74.74891100000002 495.255793-74.80583000000001 487.131524-65.66235300000005L486.822684-65.32134799999994ZM714.955981 428.971194C723.919106 453.372045 728.565658 479.331002 728.565658 505.904762 728.565658 627.091817 632.184774 725.333333 513.29293 725.333333 394.401086 725.333333 298.020202 627.091817 298.020202 505.904762 298.020202 384.717709 394.401086 286.47619 513.29293 286.47619 549.003859 286.47619 583.510052 295.36805300000003 614.373097 312.125591 626.032316 318.456132 630.449257 333.22218 624.238611 345.10648100000003 618.027966 356.99078199999997 603.541579 361.49299399999995 591.882359 355.16245100000003 567.900883 342.14136099999996 541.111735 335.23809500000004 513.29293 335.23809500000004 420.821495 335.23809500000004 345.858586 411.648164 345.858586 505.904762 345.858586 600.161359 420.821495 676.571428 513.29293 676.571428 605.764365 676.571428 680.727273 600.161359 680.727273 505.904762 680.727273 485.192019 677.117041 465.022684 670.154965 446.069408 665.522846 433.459117 671.796821 419.408892 684.168282 414.687349 696.53974 409.965809 710.323861 416.360905 714.955981 428.971194L714.955981 428.971194Z"  horiz-adv-x="1024" />
    <glyph glyph-name="up" unicode="&#58905;" d="M513.6 539.2l384-384c12.8-12.8 32-12.8 44.8 0 12.801 12.8 12.801 32 0 44.8l-403.2 403.2C532.8 609.6 520 616 513.6 616c-6.4 0-19.2 0-25.599-6.4L78.399 200c-12.8-12.8-12.8-32 0-44.8s32-12.8 44.8 0L513.6 539.2z"  horiz-adv-x="1024" />
    <glyph glyph-name="pause" unicode="&#58961;" d="M512-128c-282.714 0-511.893 229.232-511.893 512 0 282.768 229.179 512 511.893 512 282.714 0 511.893-229.232 511.893-512 0-282.768-229.179-512-511.893-512zM512 863.996c-265.043 0-479.9-214.91-479.9-479.996 0-265.097 214.857-479.996 479.9-479.996 265.043 0 479.9 214.899 479.9 479.996 0 265.086-214.857 479.996-479.9 479.996zM639.973 181.32299999999998h-21.329c-23.558 0-42.658 19.1-42.658 42.658v319.933c0 23.558 19.1 42.658 42.658 42.658h21.329c23.558 0 42.658-19.1 42.658-42.658v-319.933c0-23.558-19.1-42.658-42.658-42.658zM405.356 181.32299999999998h-21.329c-23.558 0-42.658 19.1-42.658 42.658v319.933c0 23.558 19.1 42.658 42.658 42.658h21.329c23.558 0 42.658-19.1 42.658-42.658v-319.933c0-23.558-19.1-42.658-42.658-42.658z"  horiz-adv-x="1024" />
    <glyph glyph-name="date" unicode="&#58935;" d="M933.185668 758.3591759999999l-167.054737 0 0 56.506968L732.333174 814.866145l0-56.506968L539.505447 758.3591759999999l0 56.506968-33.796734 0 0-56.506968-216.255299 0 0 56.506968-33.796734 0 0-56.506968L88.005356 758.3591759999999c-12.255115 0-22.224164-9.970072-22.224164-22.224164l0-706.60521c0-12.255115 9.970072-22.225187 22.224164-22.225187l845.179288 0c12.255115 0 22.225187 9.970072 22.225187 22.225187L955.409832 736.135012C955.409832 748.389104 945.43976 758.3591759999999 933.185668 758.3591759999999zM939.036933 29.528778999999986c0-3.226484-2.62478-5.852288-5.852288-5.852288l-845.179288 0c-3.226484 0-5.851265 2.62478-5.851265 5.852288L82.154092 736.135012c0 3.226484 2.62478 5.851265 5.851265 5.851265l167.650301 0 0-55.657624 33.796734 0 0 55.657624 216.255299 0 0-55.657624 33.796734 0 0 55.657624L732.333174 741.986277l0-55.657624 33.796734 0 0 55.657624 167.054737 0c3.226484 0 5.852288-2.62478 5.852288-5.851265L939.036933 29.528778999999986zM206.835765 608.260623l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM458.879152 608.260623l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM684.827207 608.260623l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM206.835765 433.345871l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM458.879152 433.345871l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM684.827207 433.345871l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM206.835765 257.877511l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM458.879152 257.877511l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM684.827207 257.877511l129.098263 0 0-94.008071-129.098263 0 0 94.008071Z"  horiz-adv-x="1024" />
    <glyph glyph-name="layim-uploadfile" unicode="&#58909;" d="M914.7359263333336 663.0359498888887c-20.806884999999987 20.806885000000012-48.471967999999976 32.265868000000026-77.89816099999994 32.265868000000054l-352.221993 2.2737367544323206e-13-120.26099099999992 95.03035300000005-11.157106999999995 8.816806000000007-14.220886 9.769962616701378e-15L197.09333633333344 799.148976888889c-51.69538300000001 2.1316282072803006e-14-93.75224400000005-42.88778599999995-93.75224400000006-95.60442799999993l-1.5631940186722204e-13-255.13888799999998c-1.7763568394002505e-15-2.302439 0.08391099999999785-4.716417999999999 0.24968699999999489-7.196911999999999l-1.9895196601282805e-13-340.692403c-1.9539925233402755e-14-29.426192999999998 11.458982999999954-57.09127599999999 32.26586799999994-77.89816100000002 20.806884999999987-20.806885000000012 48.471967999999976-32.265868000000026 77.89816099999994-32.265868000000054l623.083981-3.410605131648481e-13c29.426192999999998-1.9539925233402755e-14 57.09127599999999 11.458982999999954 77.89816100000002 32.26586799999994 20.806885000000012 20.806884999999987 32.265868000000026 48.471967999999976 32.265868000000054 77.89816099999994L947.0028173333335 585.1377888888885C947.0017943333336 614.5639818888885 935.5428113333334 642.2280418888886 914.7359263333336 663.0359498888887zM197.09333633333372 758.2167298888891l141.88345099999998-8.526512829121202e-14L470.3948853333333 654.369569888889l366.44287999999995-2.2737367544323206e-13c38.236859-2.1316282072803006e-14 69.23178099999997-30.99492100000004 69.23178099999994-69.23178100000004L906.0695463333333 465.9195468888886 144.27334033333327 465.91954688888893 144.2733403333336 703.5445488888892C144.2733403333336 733.7361748888891 167.92296933333355 758.2167298888891 197.09333633333372 758.2167298888891zM836.8377653333331 31.28558888888881L213.75480733333322 31.28558888888915c-38.236859 2.1316282072803006e-14-69.23178099999997 30.99492100000004-69.23178099999994 69.23178100000004L144.52302633333338 424.4776928888892l761.546519-6.252776074688882e-13-2.2737367544323206e-13-323.96134599999993C906.0695463333333 62.28050988888867 875.0746243333334 31.285588888888583 836.8377653333331 31.28558888888881z"  horiz-adv-x="1024" />
    <glyph glyph-name="delete" unicode="&#58944;" d="M738.923 24.288h-451.956c-27.2 0-49.327 21.603-49.327 48.157v418.017c0 26.548 22.129 48.147 49.327 48.147h451.956c27.2 0 49.327-21.598 49.327-48.147v-418.017c0-26.555-22.129-48.157-49.327-48.157zM286.966 494.547c-4.447 0-7.168-2.644-7.168-4.084v-418.017c0-1.443 2.722-4.093 7.168-4.093h451.956c4.448 0 7.168 2.651 7.168 4.093v418.017c0 1.44-2.722 4.084-7.168 4.084h-451.956zM832.199 496.302h-640.401c-27.201 0-49.327 20.131-49.327 44.876v61.045c0 24.74 22.128 44.867 49.327 44.867h640.401c27.2 0 49.327-20.127 49.327-44.867v-61.045c0-24.744-22.129-44.876-49.327-44.876zM184.631 541.327c0.387-0.733 2.722-2.866 7.168-2.866h640.401c4.445 0 6.782 2.132 7.168 2.867v60.741c-0.393 0.736-2.733 2.863-7.168 2.863h-640.401c-4.437 0-6.776-2.128-7.168-2.863v-60.742zM600.748 605.354h-174.546c-27.201 0-49.327 20.13-49.327 44.876v10.736c0 24.74 22.128 44.867 49.327 44.867h174.546c27.2 0 49.327-20.126 49.327-44.867v-10.736c0-24.745-22.128-44.876-49.327-44.876zM419.034 650.378c0.387-0.733 2.722-2.865 7.168-2.865h174.546c4.446 0 6.782 2.131 7.168 2.865v10.432c-0.393 0.736-2.734 2.862-7.168 2.862h-174.546c-4.437 0-6.776-2.126-7.168-2.862v-10.432zM404.099 430.833h-30.097c-7.297 0-13.213-5.916-13.213-13.213v-272.34c0-7.297 5.916-13.212 13.213-13.212h30.098c7.297 0 13.212 5.916 13.212 13.212v272.341c0 7.297-5.916 13.213-13.212 13.213zM659.583 430.833h-30.097c-7.298 0-13.213-5.916-13.213-13.213v-272.34c0-7.297 5.917-13.212 13.213-13.212h30.097c7.297 0 13.212 5.916 13.212 13.212v272.341c0 7.297-5.916 13.213-13.212 13.213zM531.841 430.833h-30.098c-7.297 0-13.213-5.916-13.213-13.213v-272.34c0-7.297 5.917-13.212 13.213-13.212h30.098c7.297 0 13.212 5.916 13.212 13.212v272.341c0 7.297-5.916 13.213-13.212 13.213z"  horiz-adv-x="1024" />
    <glyph glyph-name="play" unicode="&#58962;" d="M512 896C229.376 896 0 666.624 0 384 0 101.37599999999998 229.376-128 512-128 794.624-128 1024 101.37599999999998 1024 384 1024 666.624 794.624 896 512 896L512 896 512 896zM512-95.23199999999997C245.76-95.23199999999997 32.768 117.75999999999999 32.768 384 32.768 650.24 245.76 863.232 512 863.232S991.232 650.24 991.232 384C991.232 117.75999999999999 778.24-95.23199999999997 512-95.23199999999997L512-95.23199999999997 512-95.23199999999997zM733.184 392.192L393.216 588.8c-4.096 4.096-8.192 4.096-12.288 0C376.832 588.8 372.736 584.704 372.736 580.608l0-393.216c0-4.096 4.096-8.192 4.096-8.192 4.096-4.096 8.192-4.096 12.288 0l344.064 196.608c4.096 4.096 4.096 4.096 4.096 8.192C741.376 388.096 737.28 392.192 733.184 392.192L733.184 392.192 733.184 392.192zM733.184 392.192"  horiz-adv-x="1024" />
    <glyph glyph-name="top" unicode="&#58884;" d="M812 153.4l-300 172.8-300-172.8 300 604L812 153.4zM264.5 209.2l247.5 142.5 247.5-142.5L512 707.5 264.5 209.2zM371.7 138.3l0-126.2-15.9 0 0 126.2-45.9 0L309.9 153l107.4 0 0-14.8L371.7 138.2zM506.6 154.5c26.6 0 43.3-3.9 50-11.7 6.7-7.8 10-27.2 10-58.3 0-33.5-3.2-54.2-9.6-62-6.4-7.8-23.2-11.8-50.4-11.8-27 0-43.8 3.9-50.3 11.7-6.5 7.8-9.8 27.9-9.8 60.3l0 9.9 0.2 13.3c0 18.7 4.2 31.5 12.6 38.4C467.8 151 483.5 154.5 506.6 154.5zM506.5 141c-22.3 0-35.3-2.5-39.1-7.4-3.8-5-5.7-22-5.7-51 0-29.1 1.9-46.1 5.7-51.1 3.8-5 16.8-7.4 39.1-7.4 22.4 0 35.4 2.5 39.2 7.4 3.8 5 5.7 22 5.7 51.1l0 9.2-0.1 13.3c0 15.6-2.6 25.4-7.8 29.6S525.9 141 506.5 141zM608.4 12.1 608.4 153l59.2 0 5.4 0c15.9 0 26.7-3.1 32.5-9.2 5.8-6.1 8.7-17.6 8.7-34.4 0-16.1-3-27.1-9-32.9-6-5.9-17.3-8.8-33.9-8.8l-6.2-0.1-40.7 0 0-55.5L608.4 12.1zM624.3 81.1l37.7 0c15.8 0 25.9 1.6 30.3 4.9 4.4 3.2 6.7 10.7 6.7 22.3 0 13.6-1.5 22.2-4.5 25.9-3 3.6-10.1 5.4-21.3 5.4l-6.1 0.1-42.7 0L624.4 81.1z"  horiz-adv-x="1024" />
    <glyph glyph-name="firefox" unicode="&#59014;" d="M516.010667-128q-161.706667 0-288.277333 85.994667t-188.288 227.712q-33.152 74.858667-38.293333 172.010667t14.848 189.994667 63.424 178.282667 102.293333 138.581333l-6.293333-160.576q6.293333 8 38.848 8.853333t40-8.853333q24 46.293333 91.712 78.848t133.994667 33.706667q-30.848-25.706667-68.288-84.864t-33.429333-93.418667q14.293333-4.565333 35.712-7.722667t36.010667-4.288 38.848-2.282667 28.864-1.706667q8.576-2.858667 5.418667-26.005333t-17.429333-43.136q-2.858667-4.010667-9.429333-10.581333t-32.277333-20.288-57.706667-19.434667l8.576-108.010667-79.424 38.293333q-10.282667-24.576-4.288-46.570667t20.565333-37.994667 37.418667-23.722667 46.293333-3.712q29.141333 5.141333 56 19.712t47.722667 25.706667 42.005333 10.005333q34.858667-2.282667 51.136-18.858667t11.136-37.141333q-0.576-1.152-1.429333-3.136t-4.864-7.146667-10.282667-8.853333-18.005333-5.994667-26.581333-0.576q-34.282667-54.293333-82.581333-77.418667t-119.722667-16.853333q42.282667-34.858667 92.864-47.146667t96.277333-3.434667 88.277333 29.717333 73.152 50.005333 45.994667 59.434667q24.576 52.010667 22.293333 109.994667t-21.418667 107.712-44.864 71.424q49.706667-21.717333 78.293333-45.418667t44.010667-64.277333q8.576 97.152-32.853333 196.010667t-119.722667 162.282667q151.424-44.010667 235.434667-159.722667t86.293333-295.722667q1.152-72.576-23.146667-145.706667t-70.570667-136-108.010667-112-141.418667-77.418667-164.864-28.288z"  horiz-adv-x="1025" />
    <glyph glyph-name="friends" unicode="&#58898;" d="M672.02974 765.933689c7.66047-32.266891 8.420787-62.237483 7.713682-95.365998-0.283456-12.778024-7.291057-71.832002-5.3918-89.926102 1.561565-14.936177 5.132904-16.128329 10.759041-28.436656 9.803273-21.422915 6.51846-50.970882 2.76088-72.566736-2.056845-11.816117-6.404873-28.64541-13.017478-38.287001-7.291057-10.645454-21.864984-10.711969-28.319999-23.12365-9.29469-17.848507-4.045129-42.930765-9.903557-62.21497-6.65763-21.883403-23.599488-23.420409-24.877597-52.040237 8.316409-1.243317 16.59598-2.479471 24.877597-3.722788 8.316409-18.498306 23.533996-55.70265 39.08518-66.900689 13.024641-3.728928 26.048259-7.448646 39.07904-11.156084 45.641503-19.593244 96.365768-43.032072 142.108578-63.215764 41.656749-18.381649 91.51325-24.937972 106.575294-70.629617 0-31.026644 2.795673-104.309694 2.025123-144.978952L58.155515-56.631556000000046c-0.757247 40.669258 2.029216 113.952308 2.029216 144.978952 15.065114 45.691645 64.928778 52.247968 106.578364 70.629617 45.74281 20.182668 96.467075 43.62252 142.098345 63.215764 13.027711 3.707438 26.054399 7.427156 39.08211 11.156084 15.554254 11.197016 30.78105 48.402383 39.09439 66.900689l18.492166 4.710278c-4.196579 24.429389-18.658965 26.322505-24.682146 43.62559-2.356674 26.013467-4.729721 52.052516-7.095605 78.079286 0.107447-1.234107-17.006326 3.246951-19.252483 4.716418-24.130583 15.838733-24.618701 80.075757-26.941606 106.793258-1.063215 12.222369 15.163351 22.240537 10.654664 44.62536-26.433022 131.125433 11.437493 219.776496 71.330582 240.123916 41.564651 17.633612 119.167077 50.323129 191.563944 3.716648l17.971303-17.428951 29.061896-5.237281C662.71663 795.172617 672.02974 765.933689 672.02974 765.933689z"  horiz-adv-x="1024" />
    <glyph glyph-name="refresh-3" unicode="&#59818;" d="M820.376904 697.14807C740.637816 774.519228 631.884926 822.157201 511.999488 822.157201c-244.621347 0-442.925808-198.305485-442.925808-442.926832 0-244.6193 198.304462-442.925808 442.925808-442.925808 206.075449 0 379.271046 140.739395 428.740738 331.337337L822.859445 267.64189899999997c-45.759183-127.45381-167.656441-218.623229-310.859957-218.623229-182.371584 0-330.210677 147.842163-330.210677 330.210677 0 182.371584 147.840116 330.2117 330.210677 330.2117 88.762603 0 169.32443-35.035958 228.655723-92.015693L557.051567 433.822732l280.641725 0 113.880677 0 3.351328 0L954.925297 831.695438 820.376904 697.14807z"  horiz-adv-x="1024" />
    <glyph glyph-name="ok" unicode="&#58885;" d="M960 640L915.2 684.8 371.2 172.79999999999995 108.8 454.4 64 409.6 358.4 83.20000000000005 364.8 89.60000000000002 371.2 83.20000000000005Z"  horiz-adv-x="1024" />
    <glyph glyph-name="layer" unicode="&#58936;" d="M96.089 724.318l0-684.236 831.822 0L927.911 724.318 96.089 724.318zM884.178 84.457L140.464 84.457 140.464 489.559l743.714 0L884.178 84.457z"  horiz-adv-x="1024" />
    <glyph glyph-name="face-smile-fine" unicode="&#58892;" d="M511.558443 852.9315573333333c-246.787686 0-447.597201-200.783932-447.597201-447.598224 0-246.815315 200.783932-447.598224 447.597201-447.598224 246.841921 0 447.64939 200.782909 447.64939 447.598224C959.207833 652.1476253333334 758.400365 852.9315573333333 511.558443 852.9315573333333zM511.558443-4.962310666666667c-226.247884 0-410.295644 184.046736-410.295644 410.295644 0 226.249931 184.072319 410.296667 410.295644 410.296667 226.27449 0 410.346809-184.046736 410.346809-410.296667C921.905252 179.08442633333334 737.832933-4.962310666666667 511.558443-4.962310666666667zM724.38055 303.5726953333334c-9.698896 3.457752-20.366863-1.566682-23.848151-11.264555-28.500101-79.45461-104.372116-132.844587-188.82353-132.844587-84.798315 0-160.770614 53.689806-189.070146 133.590578-3.432169 9.723455-14.075577 14.772448-23.823592 11.364839-9.699919-3.432169-14.797008-14.100136-11.364839-23.823592 33.547047-94.77248 123.668601-158.434405 224.234017-158.434405 100.142791 0 190.140525 63.314001 223.935212 157.564595C739.125369 289.3978573333334 734.102982 300.0903843333334 724.38055 303.5726953333334zM302.49494 515.3479593333334c0-24.653493 19.98517-44.638663 44.638663-44.638663 24.653493 0 44.638663 19.98517 44.638663 44.638663s-19.98517 44.63764-44.638663 44.63764C322.48011 559.9855993333333 302.49494 540.0014523333333 302.49494 515.3479593333334L302.49494 515.3479593333334zM631.398856 515.3479593333334c0-24.653493 19.98517-44.638663 44.63764-44.638663 24.653493 0 44.63764 19.98517 44.63764 44.638663s-19.984147 44.63764-44.63764 44.63764C651.384026 559.9855993333333 631.398856 540.0014523333333 631.398856 515.3479593333334L631.398856 515.3479593333334z"  horiz-adv-x="1024" />
    <glyph glyph-name="dollar" unicode="&#58969;" d="M517.565-65.45399999999995c-244.263 0-442.299 198.014-442.299 442.299s198.014 442.299 442.299 442.299c244.263 0 442.299-198.014 442.299-442.299 0-244.263-198.014-442.299-442.299-442.299zM517.565 863.383c-268.751 0-486.564-217.834-486.564-486.564s217.834-486.564 486.564-486.564c268.751 0 486.564 217.834 486.564 486.564 0 268.751-217.834 486.564-486.564 486.564zM497.036 425.349c-18.443 6.957-33.605 16.314-45.238 27.617-11.581 11.306-20.059 23.465-25.468 36.742-5.423 13.177-8.178 26.235-8.178 39.172-0.004 18.194 2.564 34.357 7.846 48.514 5.327 14.231 13.748 25.85 25.468 35.02 11.581 9.167 26.798 15.204 45.482 18.295v-205.52zM534.455 356.13199999999995c16.937-6.756 32.277-14.997 46.035-24.855 13.748-9.678 24.613-21.601 32.929-35.57 8.204-13.909 12.436-30.734 12.622-50.307 0-14.231-1.859-27.907-5.785-40.833-3.858-12.866-9.542-24.531-17.271-34.804-7.691-10.211-17.271-18.443-28.678-24.613-11.328-6.318-24.613-9.678-39.76-10.341v221.377zM534.455 94.18299999999999c29.037 3.318 53.978 11.306 74.785 24.134 20.985 12.866 37.018 30.15 48.281 51.734 11.125 21.535 16.876 46.832 16.937 76.196 0 16.08-1.67 30.377-5.033 42.985-3.318 12.622-8.204 24.15-14.836 34.357-6.739 10.341-14.836 20.189-24.613 29.326-8.853 8.204-19.107 15.957-30.659 23.041-11.328 7.197-22.836 13.706-34.281 19.261-11.581 5.694-21.601 10.516-30.659 14.231v221.377c14.527-3.318 26.662-8.594 36.62-16.192 9.859-7.395 17.766-16.192 23.776-26.384 5.941-10.211 10.341-20.985 12.972-32.345 2.666-11.328 4.026-22.836 3.858-34.097h46.155c0.004 16.314-1.566 32.345-5.327 48.281-3.543 15.957-9.938 30.909-19.107 44.969-8.996 13.909-21.601 26.235-37.684 36.742-16.192 10.521-36.62 18.295-61.318 23.562v49.426h-37.441v-53.316c-23.465-2.624-42.985-8.178-58.595-16.314-15.633-8.204-28.279-18.194-37.684-29.562-9.441-11.328-16.523-23.302-21.226-35.317-4.59-12.062-7.846-23.302-9.316-33.326-1.566-10.211-2.256-18.194-2.115-24.029 0.004-21.601 3.452-40.612 9.863-57.238 6.479-16.523 15.58-30.909 27.178-43.441 11.659-12.436 25.361-23.562 40.833-33.204 15.633-9.678 32.649-18.443 51.098-26.235v-237.329c-18.194 1.984-33.326 7.197-45.094 15.633-11.97 8.369-21.074 19.107-27.714 31.902-6.739 12.972-11.011 27.178-13.363 42.701-2.256 15.58-3.034 31.313-2.115 47.367h-47.803c-1.183-23.776 0.397-46.035 5.033-66.676s12.357-39.03 23.376-55.019c10.892-16.08 25.361-29.037 43.142-39.03 17.847-9.863 39.472-16.08 64.586-18.295v-65.283h37.441v65.283z"  horiz-adv-x="1024" />
    <glyph glyph-name="group" unicode="&#58899;" d="M1328.72893437-13.274022189999982L1325.7954575 10.932401249999998 1319.19311938 40.27361905999999 1309.65730438 68.14729219000003 1296.45423969 96.75473719000001 1283.25117594 118.75984405999998 1264.91331781 140.03117906 1244.37414312 156.90310406000003 1215.76669813 173.03964562 1195.22913594 182.57546062999995 1168.08923563 189.17779874999997 1140.94772187 195.77852437 1117.47507031 204.58056750000003 1088.13546594 218.51740312000004 1064.66281438 229.52076375000001 1036.05536844 242.72382749999997 1014.0502625 255.19473187999995 1014.0502625 332.94718406000004 1023.58446406 343.95054469 1032.38811969 358.61954062999996 1038.98884531 373.29014906 1044.12363969 391.62800719 1049.992205 413.63472656 1052.19191 430.50504 1055.370515 429.77126719 1061.727725 430.75016813 1066.61900281 434.662545 1071.99731188 443.46458812 1075.42104594 453.7325625 1077.37723437 466.4469825 1079.82206656 489.43099031 1080.799355 508.991265 1079.82206656 525.61806187 1076.39833344 535.88764969 1069.55247969 539.80002656 1065.64010188 538.82112656 1069.06383594 560.82623344 1071.99731188 587.2339743800001 1072.97621281 611.19526969 1072.48595656 630.26689969 1069.55247969 647.870985 1064.17255719 664.98642656 1056.83805969 680.63432344 1046.56847188 698.24002125 1034.83295281 712.91063063 1021.13963187 724.15750594 1003.53554656 735.40438125 981.53043969 745.67396812 962.94745344 750.56363437 940.45370281 754.47601125 918.4469825 754.964655 895.95323188 751.05227812 874.43676969 743.71777969 855.36513875 735.893025 838.73834188 725.1347934400001 823.33396063 711.44308594 808.66335125 695.30493188 795.4602875 676.23330187 785.9244725 655.69573969 780.05751875 632.22308813 779.32374687 602.14809844 782.25722375 574.27442531 785.9244725 538.3324818799999 777.85620219 538.3324818799999 772.72140875 531.73014375 771.25547656 519.99462469 772.72140875 492.12095156 776.3886575 459.84625688 779.32374687 443.70810375 784.45854031 434.90606063 793.99435531 429.77126719 799.86130906 430.50504 803.53017031 404.83268344 807.19742 389.42830219 813.06598531 372.55637719000003 821.13425656 355.68606375 830.67007156 342.48299999999995 838.00456906 332.94718406000004 837.27079719 253.72718719 845.06329813 250.99690875 855.81346625 248.0392425 867.37158969 243.73981969 878.39107625 239.43878530999996 888.6058325 235.67638781000005 897.74331406 231.10603405999996 908.76441312 226.53729375 920.85956187 219.54952313 932.95471062 212.56014000000005 942.898535 205.30305094000005 955.80002656 195.62693156 966.82112656 185.41378874999998 977.30358781 172.51229719000003 988.32307531 158.26743750000003 1000.01505219 141.87125344000003 1010.0943425 122.51901655999995 1018.69641219 101.55409219 1026.22120719 82.20185436999998 1031.46243781 64.05913219000001 1035.09098281 45.110066250000045 1038.71952688 23.741970000000038 1041.13855625-1.2546703100000514 1041.54172812-18.187877810000032 1040.73538531-33.30681374999995 1037.30842625-44.99879062000002 1030.79156-57.83254968999995 1023.19742-66.36688593999997 1009.28799875-73.42238906 1298.65555719-73.42238906 1311.85862094-66.82005093999999 1322.12820875-56.552076560000046 1328.72893437-45.54871687000002 1330.19647906-31.611880309999947ZM443.23504906 789.36487031L427.10818437 771.62531906 412.59400625 750.66039469 402.11154406 728.08278469 395.66079781 702.27980156 394.854455 669.21972844 398.07982813 638.57868562 402.11154406 599.06786719 393.24176844 599.06786719 387.59736594 591.81077812 385.98467938 578.90928656 387.59736594 548.26824375 391.62908187 512.7891412500001 394.854455 495.04959 400.4988575 485.37347156 410.98131969 479.72906906 417.43206594 480.53541188 421.46378187 452.31339844 425.49549781 435.38019094 431.94624406 416.83429687 440.81601969 398.28840187 451.29848094 383.77422375000003 459.36191375 373.29176156000005 458.55557094 286.20669281000005 444.84773562 277.33691719 412.59400625 262.01639531 379.53393406 247.50221719 352.92460719 234.60072562000005 331.95968281 225.73095 308.57572906 218.47386094 284.3854325 213.63580125 261.00147875 207.99139875000003 236.81118125 197.50893656000005 214.23357031 186.22013156000003 194.07498969 171.70595344000003 171.49737969 149.12834250000003 155.370515 125.74438874999998 143.27536625 103.16677875000005 133.59924781 78.97648125 123.92312844 51.56081156000005 119.08506875 29.789544370000044 115.05335281 11.243650310000021 112.63432344-10.527616869999974 112.63432344-29.879854690000002 115.85969656-49.23209250000002 125.535815-62.133584059999976 140.04999313-71.80970344000002 158.59588719-73.42238906 965.74546437-73.42238906 980.2596425-66.1653 991.5484475-54.87649499999998 998.80553656-42.781346249999956 1000.41822312-27.46082531000002 998.80553656-7.302244689999952 995.58016438 19.30708218999996 988.32307531 51.56081156000005 977.84061313 82.20185436999998 963.326435 113.64924094000003 948.81225688 137.8395375 928.65367531 161.22349125000005 906.07606531 179.76938625000003 874.62867875 197.50893656000005 852.05106875 207.99139875000003 822.21636875 215.24848781000003 792.38166875 222.50557688000004 766.57868562 232.18169624999996 734.32495625 247.50221719 708.52197312 259.59736594000003 677.07458656 274.11154406 652.88429 287.81937937 652.88429 373.29176156000005 663.36675219 385.38691031 673.04287063 401.513775 680.29995969 417.64063969 685.94436219 437.79922031 692.39510844 461.98951781 694.81413781 480.53541188 698.30882938 479.72906906 705.2966 480.80473031 710.67168406 485.10415312 716.585405 494.78027156 720.3478025 506.06907656 722.49912688 520.04623031 725.18586219 545.31218906 726.26152437 566.8141378099999 725.18586219 585.09071344 721.42346469 596.3795184400001 713.89705719 600.68055375 709.59763438 599.6048915599999 713.36003188 623.79518906 716.585405 652.82354531 717.66106719 679.16516625 717.12242937 700.13008969 713.89705719 719.4823275 707.98494781 738.2959275000001 699.92151594 755.49845437 688.63271094 774.85069219 675.73121937 790.97755688 660.67840344 803.34202406 641.32616563 815.70487875 617.13586906 826.99368375 596.7095825 832.37038031 571.98064812 836.66980219 547.79035063 837.20844 523.06302875 832.90740469 499.40975656 824.84397281 478.44483313 816.24351562 460.16825656 804.4160728100001Z"  horiz-adv-x="1449" />
    <glyph glyph-name="layim-download" unicode="&#58910;" d="M186.888458 77.07363199999998l0 581.729108c14.85022-14.450107 35.050284-23.436782 57.359382-23.436782l560.03604 0 0-151.561881 25.029046 0 0 176.591951-585.065086 0c-31.191396 0-57.359382 26.166963-57.359382 57.359382 0 31.191396 26.165939 57.359382 57.359382 57.359382l572.551074 0L816.798914 800.143838 244.24784 800.143838c-45.431725 0-82.388429-36.957727-82.388429-82.388429l0-640.681778c0-41.796942 34.000372-75.789127 75.789127-75.789127l225.950102 0 0 25.029046L237.648538 26.31355099999996C209.661114 26.31355099999996 186.888458 49.078021000000035 186.888458 77.07363199999998zM236.947574 730.269421l560.38601 0 0-25.029046-560.38601 0 0 25.029046ZM686.086897 428.171012c-85.917812 0-164.908864-55.248302-194.553021-135.882783-30.013571-81.641415-4.269233-175.567621 62.624293-230.942813 67.00302-55.465243 164.474982-62.808488 238.931764-17.720593 74.094532 44.868907 113.272833 133.533272 96.080266 218.517829C869.882923 357.47283300000004 783.297916 428.171012 686.086897 428.171012zM686.086897 38.82858599999997c-75.595722 0-145.060817 48.634674-171.092703 119.595842-26.354228 71.839165-3.63069 154.438395 55.287187 203.074092 59.017138 48.718585 144.762011 55.029314 210.191186 15.237029 65.11195-39.59888 99.396801-117.681236 84.064604-192.408171C847.384513 100.72940100000005 771.387655 38.82858599999997 686.086897 38.82858599999997zM698.600909 152.23547199999996L698.600909 311.02496499999995 673.571862 311.02496499999995 673.571862 152.28459099999998 604.675726 221.17254100000002 586.978668 203.47548400000005 686.111456 104.35190499999999 785.185916 203.42738799999995 767.489882 221.123422Z"  horiz-adv-x="1024" />
    <glyph glyph-name="picture-fine" unicode="&#58893;" d="M958.648085 84.30682933333333L65.772494 84.30682933333333 65.772494 721.9115253333333l892.87559 0L958.648085 84.30682933333333zM97.660762 116.20328333333339l829.099055 0L926.759817 690.0570263333334 97.660762 690.0570263333334 97.660762 116.20328333333339zM648.731616 419.05893933333334l-1.991354 0c-47.801702 0-86.696548 38.900985-86.696548 86.695524l0 1.978051c0 47.809889 38.894845 86.671988 86.696548 86.671988l1.991354 0c47.801702 0 86.698594-38.862099 86.698594-86.671988l0-1.978051C735.43021 457.95992433333333 696.533318 419.05893933333334 648.731616 419.05893933333334zM646.740262 562.5193053333333c-30.224372 0-54.810327-24.582885-54.810327-54.787814l0-1.978051c0-30.230512 24.584931-54.803163 54.810327-54.803163l1.991354 0c30.222325 0 54.810327 24.572652 54.810327 54.803163l0 1.978051c0 30.203906-24.586978 54.787814-54.810327 54.787814L646.740262 562.5193053333333zM91.097276 181.7900473333334l-22.748097 22.338774 274.373974 279.332916 22.750143-22.351054L91.097276 181.7900473333334zM604.886015 215.92242633333342L339.999113 480.74793033333333l22.548552 22.525016L627.433544 238.4638153333334 604.886015 215.92242633333342zM619.007641 202.70744933333333l-22.763446 22.337751 167.989015 171.035398 22.765493-22.350031L619.007641 202.70744933333333zM925.622924 222.7939273333334L758.534418 389.8343373333333l22.548552 22.529109 167.086459-167.044504L925.622924 222.7939273333334z"  horiz-adv-x="1024" />
    <glyph glyph-name="link" unicode="&#58956;" d="M262.4-121.60000000000002c-64 0-128 25.6-179.2 76.8-102.4 102.4-102.4 262.4 0 364.8l134.4 134.4 89.6-89.6-134.4-134.4c-51.2-51.2-51.2-128 0-179.2 51.2-51.2 128-51.2 179.2 0l179.2 179.2c25.6 25.6 38.4 57.6 38.4 89.6S556.8 384 537.6 409.6L467.2 473.6l89.6 89.6 70.4-70.4C672 448 697.6 384 697.6 313.6c0-70.4-25.6-134.4-76.8-179.2l-179.2-179.2C396.8-96 326.4-121.60000000000002 262.4-121.60000000000002zM467.2 204.79999999999995L396.8 268.79999999999995c-102.4 102.4-102.4 262.4 0 364.8l179.2 179.2c102.4 102.4 262.4 102.4 364.8 0 102.4-102.4 102.4-262.4 0-364.8l-134.4-134.4-89.6 89.6 134.4 134.4c51.2 51.2 51.2 128 0 179.2-51.2 51.2-134.4 51.2-179.2 0L486.4 544c-51.2-51.2-51.2-128 0-179.2l70.4-70.4L467.2 204.79999999999995z"  horiz-adv-x="1024" />
    <glyph glyph-name="diamond" unicode="&#59189;" d="M998.4 526.933333L797.866667 802.133333c-4.266667 6.4-12.8 10.666667-19.2 10.666667L243.2 812.8c0 0-14.933333-2.133333-23.466667-17.066667C194.133333 753.066667 32 512 32 512L21.333333 494.933333l12.8-14.933333L469.333333-27.733333000000016c4.266667-4.266667 6.4-6.4 10.666667-8.533333 6.4-4.266667 32-10.666667 46.933333 0 4.266667 2.133333 6.4 6.4 10.666667 8.533333l409.6 420.266667c10.666667 8.533333 10.666667 25.6 0 34.133333-8.533333 10.666667-23.466667 10.666667-32 0L561.066667 61.86666700000001l153.6 422.4 0 0 251.733333 0c2.133333 0 19.2 0 23.466667 4.266667l2.133333 2.133333C1004.8 497.066667 1006.933333 512 998.4 526.933333zM782.933333 763.733333l-96-226.133333L341.333333 537.6l-85.333333 226.133333L782.933333 763.733333zM221.866667 714.666667l72.533333-179.2-192 0L221.866667 714.666667zM91.733333 488.533333l215.466667 0 138.666667-416L91.733333 488.533333zM503.466667 44.799999999999955l-147.2 443.733333 307.2 0L503.466667 44.799999999999955zM736 535.4666669999999L810.666667 701.866667l119.466667-168.533333L736 533.333333z"  horiz-adv-x="1024" />
    <glyph glyph-name="log" unicode="&#58894;" d="M828.01742 700.357158C743.476979 784.899646 631.076002 831.458031 511.516999 831.458031c-119.55798 0-231.959979-46.558385-316.500421-131.09985C110.47716 615.81774 63.918775 503.41574 63.918775 383.85776c0-87.103824 25.045419-171.548074 72.429613-244.204861 9.393951-14.402011 28.685319-18.46249 43.087331-9.071609 14.404058 9.393951 18.46556 28.685319 9.072633 43.089377-40.768519 62.511729-62.317301 135.194098-62.317301 210.187093 0 212.469066 172.85586 385.326972 385.325949 385.326972s385.325949-172.857906 385.325949-385.326972-172.85586-385.326972-385.325949-385.326972c-70.357418 0-139.188062 19.131733-199.052498 55.323003-14.71412 8.900717-33.856086 4.180206-42.753733-10.534937-8.896624-14.71719-4.180206-33.856086 10.534937-42.753733 69.584821-42.070164 149.556201-64.307631 231.271294-64.307631 119.559003 0 231.959979 46.558385 316.500421 131.09985 84.539418 84.539418 131.097804 196.941418 131.097804 316.499397S912.556838 615.81774 828.01742 700.357158zM494.28964 690.216193c-21.782096 0-39.397289-17.658172-39.397289-39.439244l0-283.524378c0-1.360997 0.358157-2.706645 0.493234-4.03285 2.020006-19.886933 18.959817-34.573423 39.379892-34.573423l0 0 0.146333 0.832971 223.590358 0c21.782096 0 39.438221 17.616216 39.438221 39.397289s-17.658172 39.397289-39.439244 39.397289L533.686928 408.273846l0 242.503103C533.686928 672.5580219999999 516.071735 690.216193 494.28964 690.216193z"  horiz-adv-x="1024" />
    <glyph glyph-name="key" unicode="&#59011;" d="M819.2 588.8c0-172.8-140.8-307.2-307.2-307.2-172.8 0-307.2 140.8-307.2 307.2C204.8 755.2 339.2 896 512 896S819.2 755.2 819.2 588.8L819.2 588.8zM512 838.4c-140.8 0-249.6-115.2-249.6-249.6 0-134.4 108.8-256 249.6-256s256 115.2 256 249.6S652.8 838.4 512 838.4L512 838.4zM480 300.79999999999995l64 0L544-128l-64 0L480 300.79999999999995 480 300.79999999999995zM512 192l192 0 0-64L512 128 512 192 512 192zM512 64l192 0 0-64L512 0 512 64 512 64z"  horiz-adv-x="1024" />
    <glyph glyph-name="rate-solid" unicode="&#59002;" d="M957.111079 492.519576c-3.927449 11.669784-14.447037 19.86442-26.723641 20.816095L647.68068 535.250796 540.183388 811.873997c-4.586458 11.803837-15.951297 19.579941-28.614711 19.579941s-24.02723-7.776104-28.614711-19.579941L375.458719 535.250796l-282.708803-21.915126c-12.276604-0.951675-22.796192-9.146311-26.723641-20.816095-3.927449-11.669784-0.50142-24.557302 8.701173-32.737612l217.547735-193.358823-67.980277-291.298436c-2.848884-12.20702 2.009773-24.919553 12.273535-32.114418 10.264784-7.195889 23.87271-7.42818 34.375925-0.586354l240.624313 156.709111 240.625336-156.709111c5.099135-3.320629 10.92891-4.974291 16.752546-4.974291 6.173606 0 12.342096 1.858324 17.623379 5.561669 10.263761 7.194866 15.122419 19.907399 12.273535 32.114418l-67.980277 291.299459L948.409906 459.781964C957.613522 467.962274 961.037505 480.849792 957.111079 492.519576z"  horiz-adv-x="1024" />
    <glyph glyph-name="fonts-del" unicode="&#58959;" d="M928 448l-143.616 0c-3.456 55.616-14.272 106.56-29.504 144.96C725.504 666.816 617.344 768 464.32 768L256 768l0-320L96 448C78.336 448 64 433.664 64 416S78.336 384 96 384L256 384l0-320 229.632 0c156.288 0 240.768 97.856 267.904 167.488C772.736 280.96000000000004 782.272 333.312 784.96 384L928 384C945.664 384 960 398.336 960 416S945.664 448 928 448zM349.376 711.488l63.936 0c35.712 0 251.84 27.968 266.944-263.488l-330.88 0L349.376 711.488zM439.296 120.51199999999994L349.376 120.51199999999994 349.376 382.528 349.376 384l330.88 0C665.344 113.98400000000004 467.968 120.51199999999994 439.296 120.51199999999994z"  horiz-adv-x="1024" />
    <glyph glyph-name="unlink" unicode="&#58957;" d="M150.336 767.6800000000001C133.44 762.304 124.16 744.3199999999999 129.472 727.488 131.2 722.1759999999999 134.208 717.44 138.304 713.664l122.624-122.432C270.208 576.192 289.92 571.52 304.96 580.736 320 590.0799999999999 324.672 609.7280000000001 315.456 624.832 312.832 629.056 309.184 632.64 304.96 635.264L182.336 757.696C175.168 765.44 164.672 769.216 154.304 767.6800000000001 152.96 767.808 151.552 767.808 150.336 767.6800000000001L150.336 767.6800000000001zM406.08 831.424c-13.696-4.48-22.72-17.6-22.016-32L384.064 672c0-17.664 14.336-32 32-32s31.872 14.336 31.872 32L447.936 799.424C448.256 817.088 434.304 831.6800000000001 416.64 832 414.464 832.064 412.16 831.808 410.048 831.424 408.704 831.552 407.296 831.552 406.08 831.424L406.08 831.424zM91.392 511.872C73.728 509.12 61.632 492.544 64.384 474.88 67.136 457.28 83.712 445.248 101.376 448L224 448C241.664 448 256 462.208 256 479.872s-14.336 32-32 32L101.376 511.872c-1.984 0.192-3.968 0.192-6.016 0C94.016 512 92.608 512 91.392 511.872L91.392 511.872zM795.456 320c-17.728-2.752-29.824-14.08-27.072-31.744 2.752-17.6 19.328-35.008 36.992-32.256L928 256c17.664 0 32 19.584 32 37.248S945.664 320 928 320l-122.624 0c-1.984 0.192-3.968 0.192-6.016 0-1.344 0.128-2.688 0.128-4.032 0L795.456 320zM598.272 127.42399999999998c-13.76-4.48-22.72-17.6-22.08-32L576.192-32c0-17.664 14.336-32 32-32S640-49.66399999999999 640-32l0 127.424c0.32 17.6-13.568 32.256-31.232 32.576-2.176 0.064-4.352-0.192-6.592-0.576-1.344 0.128-2.688 0.128-4.032 0L598.272 127.42399999999998zM726.272 191.67999999999995c-16.896-5.376-26.24-23.36-20.864-40.192 1.664-5.312 4.736-10.048 8.832-13.824l122.56-122.432c9.28-15.04 28.928-19.776 44.032-10.496 14.976 9.344 19.712 28.992 10.368 44.032-2.624 4.224-6.144 7.808-10.368 10.432l-122.56 122.432c-7.168 7.744-17.6 11.52-28.032 9.984-1.344 0.128-2.688 0.128-4.032 0L726.272 191.61599999999999zM339.968 28.03200000000004c-49.152 0-98.304 18.688-135.744 56.128-74.816 74.88-74.816 196.608 0 271.488l87.744 87.744c12.48 12.48 32.768 12.48 45.248 0s12.48-32.768 0-45.248L249.408 310.46400000000006c-49.92-49.856-49.92-131.136 0-180.992 49.856-49.856 131.136-49.856 180.992 0l87.744 87.744c12.48 12.48 32.768 12.48 45.248 0s12.48-32.768 0-45.248l-87.744-87.744C438.272 46.72000000000003 389.12 28.03200000000004 339.968 28.03200000000004zM702.144 323.712c-8.192 0-16.384 3.136-22.656 9.344-12.48 12.48-12.48 32.768 0 45.248l87.744 87.744c49.856 49.92 49.856 131.072 0 180.992-49.856 49.856-131.136 49.856-180.992 0L498.496 559.296c-12.48-12.48-32.768-12.48-45.248 0s-12.48 32.768 0 45.248l87.744 87.744c74.88 74.88 196.608 74.88 271.488 0 74.88-74.816 74.88-196.672 0-271.488l-87.744-87.744C718.528 326.784 710.336 323.712 702.144 323.712z"  horiz-adv-x="1024" />
    <glyph glyph-name="fonts-clear" unicode="&#58937;" d="M944.787709 197.20939699999997L857.081297 197.20939699999997 741.092979-127.73993700000005 815.146059-127.73993700000005 832.440281-65.58476199999996 966.82809-65.58476199999996 984.512408-127.73993700000005 1062.011328-127.73993700000005 944.787709 197.20939699999997 944.787709 197.20939699999997ZM848.04409 1.1865400000000363L898.951519 153.25866699999995 949.923963 1.1865400000000363 848.04409 1.1865400000000363 848.04409 1.1865400000000363ZM210.238376 489.910857L183.386821 513.121524 12.46009 313.522794C-5.874386 292.652698-3.728862 260.989968 17.271265 242.720508 38.401424 224.45104800000001 70.454249 226.66158700000005 88.853741 247.53168300000004L100.361551 260.599873C106.603075 267.55657099999996 117.200662 268.20673 124.287392 262.22527 131.309106 256.048762 132.024281 245.51619000000005 125.912789 238.55949199999998 107.448281 217.62438099999997 98.085995 173.08850800000005 119.216154 154.81904799999995 140.281297 136.614603 183.841932 151.76330199999995 202.371455 172.69841299999996 208.417932 179.525079 219.145551 180.30526999999995 226.167265 174.19377799999995 233.188979 168.14730199999997 233.904154 157.61473 227.792662 150.65803200000005 209.328154 129.85295199999996 199.965868 85.05701599999998 221.096027 66.91758700000003 242.16117 48.648127000000045 285.656789 63.86184100000003 304.186313 84.666921 310.362821 91.62361899999996 321.025424 92.40381000000002 327.982122 86.29231700000003 335.068852 80.18082500000003 335.784027 69.71326999999997 329.672535 62.75657100000001 311.143011 41.82146 301.845741-2.9094599999999673 322.910884-20.983873000000017 344.041043-39.253333 387.601678-24.039619000000016 406.00117-3.234540000000038 412.177678 3.7221590000000333 422.840281 4.437332999999967 429.927011-1.6091430000000173 436.948725-7.720635000000016 437.598884-18.31822199999999 431.487392-25.144889000000035 413.022884-46.08000000000004 403.725614-90.81092100000001 424.790757-109.01536499999997 445.920916-127.15479400000004 477.973741-125.00927000000001 496.373233-104.20419000000004L667.299963 95.52457100000004 658.652852 132.90869799999996 210.238376 489.910857 210.238376 489.910857ZM844.013106 329.516698L680.10809 471.12127 929.639011 715.190857C933.2799 718.376635 936.725741 721.562413 939.976535 725.203302 977.815773 768.048762 973.524725 833.129651 930.28917 870.513778 887.183646 907.702857 821.58263 903.281778 783.808408 860.631365L783.483328 860.761397 564.249805 571.3107299999999 399.824662 713.56546C385.391138 726.113524 363.480789 724.553143 350.867709 710.249651L248.14263 593.871238 225.322059 567.994921 251.393424 545.434413 695.7119 161.25561900000002 726.26936 136.679619 847.328916 281.014857C859.941995 295.318349 858.44663 316.96863499999995 844.013106 329.516698L844.013106 329.516698ZM817.941741 830.724063C839.136916 854.779937 876.000916 857.315556 900.186821 836.250413 924.372725 815.380317 926.908344 778.906413 905.648154 754.85054 884.452979 730.924698 847.588979 728.389079 823.403075 749.3892060000001 799.21717 770.324317 796.811582 806.798222 817.941741 830.724063L817.941741 830.724063ZM765.473932 758.491429C768.919773 741.522286 777.6319 725.593397 791.80536 713.305397 806.043836 701.017397 823.533106 694.580825 841.087392 693.540571L643.634186 494.526984 593.116852 538.2176509999999 765.473932 758.491429 765.473932 758.491429ZM776.006503 299.739429L709.755328 219.314794 307.502122 566.369524 376.809043 645.03873C382.920535 651.865397 393.38809 652.5155560000001 400.409805 646.534095L774.381106 323.01511100000005C781.337805 317.098667 782.117995 306.69612700000005 776.006503 299.739429L776.006503 299.739429Z"  horiz-adv-x="1063" />
    <glyph glyph-name="triangle-r" unicode="&#58915;" d="M293.291 728.256l426.88-355.456-426.88-355.52z"  horiz-adv-x="1024" />
    <glyph glyph-name="circle" unicode="&#58943;" d="M511.998 847.999C255.739 847.999 48 640.26 48 383.999c0-256.258 207.739-463.998 463.998-463.998C768.261-79.99900000000002 976 127.74199999999996 976 383.999 976 640.26 768.261 847.999 511.998 847.999zM512.002-16.000999999999976c-220.915 0-400.002 179.088-400.002 400 0 220.917 179.086 400 400.002 400 220.912 0 399.998-179.083 399.998-400C912 163.087 732.914-16.000999999999976 512.002-16.000999999999976z"  horiz-adv-x="1024" />
    <glyph glyph-name="radio" unicode="&#58947;" d="M512.5 383.5m-192 0a192 192 0 1 1 384 0 192 192 0 1 1-384 0ZM511.998 847.999C255.739 847.999 48 640.26 48 383.999c0-256.258 207.739-463.998 463.998-463.998C768.261-79.99900000000002 976 127.74199999999996 976 383.999 976 640.26 768.261 847.999 511.998 847.999zM512.002-16.000999999999976c-220.915 0-400.002 179.088-400.002 400 0 220.917 179.086 400 400.002 400 220.912 0 399.998-179.083 399.998-400C912 163.087 732.914-16.000999999999976 512.002-16.000999999999976z"  horiz-adv-x="1024" />
    <glyph glyph-name="align-center" unicode="&#58951;" d="M992 448L32 448C14.32 448 0 462.336 0 480 0 497.664 14.32 512 32 512L992 512C1009.68 512 1024 497.664 1024 480 1024 462.336 1009.68 448 992 448ZM800 704C817.664 704 832 689.664 832 672 832 654.336 817.664 640 800 640L224 640C206.32 640 192 654.336 192 672 192 689.664 206.32 704 224 704L800 704ZM992 832L32 832C14.32 832 0 846.336 0 864 0 881.664 14.32 896 32 896L992 896C1009.68 896 1024 881.664 1024 864 1024 846.336 1009.68 832 992 832ZM224 256C206.32 256 192 270.336 192 288 192 305.664 206.32 320 224 320L800 320C817.664 320 832 305.664 832 288 832 270.336 817.664 256 800 256L224 256ZM32 128L992 128C1009.68 128 1024 113.66399999999999 1024 96 1024 78.33600000000001 1009.68 64 992 64L32 64C14.32 64 0 78.33600000000001 0 96 0 113.66399999999999 14.32 128 32 128ZM224-64L800-64C817.664-64 832-78.33600000000001 832-96 832-113.66399999999999 817.664-128 800-128L224-128C206.32-128 192-113.66399999999999 192-96 192-78.33600000000001 206.32-64 224-64Z"  horiz-adv-x="1024" />
    <glyph glyph-name="align-right" unicode="&#58952;" d="M992 64L32 64C14.32 64 0 78.33600000000001 0 96 0 113.66399999999999 14.32 128 32 128L992 128C1009.68 128 1024 113.66399999999999 1024 96 1024 78.33600000000001 1009.68 64 992 64ZM992 256L288 256C270.32 256 256 270.336 256 288 256 305.664 270.32 320 288 320L992 320C1009.68 320 1024 305.664 1024 288 1024 270.336 1009.68 256 992 256ZM992 448L32 448C14.32 448 0 462.336 0 480 0 497.664 14.32 512 32 512L992 512C1009.68 512 1024 497.664 1024 480 1024 462.336 1009.68 448 992 448ZM992 640L288 640C270.32 640 256 654.336 256 672 256 689.664 270.32 704 288 704L992 704C1009.68 704 1024 689.664 1024 672 1024 654.336 1009.68 640 992 640ZM992 832L32 832C14.32 832 0 846.336 0 864 0 881.664 14.32 896 32 896L992 896C1009.68 896 1024 881.664 1024 864 1024 846.336 1009.68 832 992 832ZM288-64L992-64C1009.68-64 1024-78.33600000000001 1024-96 1024-113.66399999999999 1009.68-128 992-128L288-128C270.32-128 256-113.66399999999999 256-96 256-78.33600000000001 270.32-64 288-64Z"  horiz-adv-x="1024" />
    <glyph glyph-name="align-left" unicode="&#58953;" d="M992 448L32 448C14.336 448 0 462.336 0 480 0 497.664 14.336 512 32 512L992 512C1009.664 512 1024 497.664 1024 480 1024 462.336 1009.664 448 992 448ZM32 704L736 704C753.68 704 768 689.664 768 672 768 654.336 753.68 640 736 640L32 640C14.336 640 0 654.336 0 672 0 689.664 14.336 704 32 704ZM992 832L32 832C14.336 832 0 846.336 0 864 0 881.664 14.336 896 32 896L992 896C1009.664 896 1024 881.664 1024 864 1024 846.336 1009.664 832 992 832ZM32 320L736 320C753.68 320 768 305.664 768 288 768 270.336 753.68 256 736 256L32 256C14.336 256 0 270.336 0 288 0 305.664 14.336 320 32 320ZM32 128L992 128C1009.664 128 1024 113.66399999999999 1024 96 1024 78.33600000000001 1009.664 64 992 64L32 64C14.336 64 0 78.33600000000001 0 96 0 113.66399999999999 14.336 128 32 128ZM32-64L736-64C753.68-64 768-78.33600000000001 768-96 768-113.66399999999999 753.68-128 736-128L32-128C14.336-128 0-113.66399999999999 0-96 0-78.33600000000001 14.336-64 32-64Z"  horiz-adv-x="1024" />
    <glyph glyph-name="loading-1" unicode="&#58942;" d="M537.574469 831.696462c-14.123672 0-25.574469-11.447726-25.574469-25.574469 0-14.123672 11.450796-25.574469 25.574469-25.574469 204.495464 0 370.82877-166.358889 370.82877-370.82877 0-14.123672 11.450796-25.574469 25.574469-25.574469 14.123672 0 25.574469 11.450796 25.574469 25.574469C959.551152 642.385838 770.241552 831.696462 537.574469 831.696462z"  horiz-adv-x="1024" />
    <glyph glyph-name="return" unicode="&#58972;" d="M927.858848 417.938973L168.863431 417.938973l308.721247 308.86758c11.685133 11.69025 11.435447 30.881334-0.557702 42.868343-11.992125 11.985986-31.18321 12.226462-42.868343 0.536212L75.199191 411.071565c-1.994424-1.662873-3.773953-3.583618-5.294586-5.713119-4.047176-5.373381-6.013971-11.839653-5.9055-18.328437-0.12996-7.794523 2.725064-15.561417 8.595772-21.432125l361.565802-361.744881c11.685133-11.691273 30.876218-11.449773 42.868343 0.535189 11.993149 11.985986 12.242835 31.17707 0.557702 42.868343L168.441828 356.54571799999997l759.417019 0c16.527418 0 29.925566 13.738909 29.925566 30.694069S944.386266 417.938973 927.858848 417.938973z"  horiz-adv-x="1024" />
    <glyph glyph-name="fonts-strong" unicode="&#58923;" d="M199.092919 848.487893l355.326704 0c70.335928 0 122.780371-2.942005 157.349701-8.809643 34.568307-5.884011 65.491597-18.131963 92.78522-36.759205 27.27725-18.627243 50.01409-43.427068 68.209498-74.397431 18.195408-30.986735 27.293623-65.699328 27.293623-104.169501 0-41.7161-11.17655-79.977519-33.496905-114.802676s-52.604078-60.951187-90.818425-78.362742c54.075593-15.765055 95.647407-42.626843 124.715443-80.585363s43.602054-82.58388 43.602054-133.877103c0-40.388872-9.417487-79.673597-28.220738-117.839849-18.803251-38.182624-44.482097-68.673056-77.035514-91.489714-32.55444-22.833031-72.702835-36.855396-120.414487-42.09984-29.931706-3.229554-102.122889-5.260817-216.572524-6.060019L199.092919-40.765192999999954 199.092919 848.487893zM378.171504 700.1084940000001l0-205.684546 117.64849 0c69.935816 0 113.410979 1.006933 130.390699 3.038196 30.730908 3.629667 54.891168 14.246469 72.478731 31.850405 17.588587 17.588587 26.381857 40.756239 26.381857 69.473281 0 27.501354-7.594979 49.838082-22.75219 67.042929-15.158235 17.188474-37.702694 27.597545-67.618027 31.242562-17.796318 2.01489-68.945255 3.038196-153.431461 3.038196L378.171504 700.109518zM378.171504 346.04454999999996l0-236.383732 166.622902 0c64.85203 0 106.008382 1.807159 123.43631 5.420453 26.750247 4.828982 48.543599 16.58063 65.363683 35.272341s25.247011 43.714617 25.247011 75.085092c0 26.526143-6.491855 49.03888-19.459191 67.538209-12.983709 18.48398-31.722492 31.961946-56.250118 40.404222s-77.739549 12.663414-159.619394 12.663414L378.171504 346.04454999999996z"  horiz-adv-x="1024" />
    <glyph glyph-name="upload" unicode="&#59004;" d="M831.488 478.208C831.488 478.208 831.488 478.208 831.488 478.208c0 143.36-114.688 258.048-253.952 258.048-98.304 0-184.32-57.344-225.28-139.264C327.68 605.184 307.2 609.28 286.72 609.28c-90.112 0-159.744-73.728-159.744-159.744 0-16.384 4.096-28.672 8.192-40.96C57.344 379.904 0 310.27200000000005 0 224.25599999999997c0-106.496 86.016-192.512 192.512-192.512l192.512 0 0 192.512L258.048 224.25599999999997l258.048 258.048 258.048-258.048-126.976 0 0-192.512 192.512 0L839.68 35.84000000000003c106.496 16.384 192.512 110.592 192.512 221.184C1024 371.712 937.984 465.92 831.488 478.208z"  horiz-adv-x="1033" />
    <glyph glyph-name="dialogue" unicode="&#58938;" d="M998.4 500.992C998.4 682.24 811.392 829.696 581.632 829.696c-121.216 0-235.904-41.472-315.264-114.048 37.504 8.192 76.416 13.056 115.456 14.464 59.264 30.592 128.256 46.72 199.808 46.72 198.144 0 359.296-123.776 359.296-275.968 0-31.872-7.04-63.232-20.992-93.056 7.552-28.16 11.264-57.344 11.008-86.528C975.104 374.784 998.4 436.736 998.4 500.992L998.4 500.992zM442.368 398.72c-30.72 0-55.808-23.04-55.808-51.328s25.088-51.328 55.808-51.328 55.808 23.04 55.808 51.328S473.088 398.72 442.368 398.72zM243.328 398.72c-30.72 0-55.808-23.04-55.808-51.328s25.088-51.328 55.808-51.328 55.808 23.04 55.808 51.328C299.264 375.67999999999995 274.176 398.72 243.328 398.72zM641.28 398.72c-30.72 0-55.808-23.04-55.808-51.328s25.088-51.328 55.808-51.328 55.808 23.04 55.808 51.328S672.128 398.72 641.28 398.72zM442.368 677.888C212.608 677.888 25.6 530.432 25.6 349.312c0-179.968 173.696-296.192 332.544-321.664l60.8-78.336c5.632-7.424 14.464-11.008 23.296-11.008 8.832 0 17.792 3.712 23.424 11.008l60.8 78.464C685.312 53.24800000000005 859.008 169.47199999999998 859.008 349.44000000000005 859.136 530.432 672.128 677.888 442.368 677.888zM714.88 173.82399999999996c-52.224-45.184-124.288-77.952-197.376-89.6C503.168 81.91999999999996 490.112 74.24000000000001 481.28 62.72000000000003l-38.784-49.92-38.912 49.92c-8.96 11.52-21.888 19.2-36.224 21.504-73.216 11.776-145.152 44.416-197.376 89.728-39.68 34.304-86.912 92.544-86.912 175.36 0 69.76 35.584 136.192 100.352 187.264 68.736 54.144 160.768 84.096 258.944 84.096 98.304 0 190.336-29.824 259.072-84.096 64.768-51.072 100.352-117.504 100.352-187.264C801.664 266.36800000000005 754.56 208.12800000000004 714.88 173.82399999999996z"  horiz-adv-x="1024" />
    <glyph glyph-name="video" unicode="&#59117;" d="M952.523633 599.2477269999999L952.523633 599.2477269999999 952.523633 599.2477269999999zM100.53762400000005 661.054062C100.53762400000005 661.054062 100.53762400000005 661.054062 100.53762400000005 661.054062 100.53762400000005 661.054062 100.53762400000005 661.054062 100.53762400000005 661.054062zM100.74228 720.404517L100.74228 720.404517 100.74228 720.404517zM660.990107 739.9449716666666c8.697911 0 17.498151-0.511642 25.684421-2.353553 12.279404-2.865194 23.22854-8.18627 34.382332-16.679524 15.144599-11.460777 26.196063-29.572899 32.02878-52.187469 3.479165-13.405016 2.967523-28.651944 2.558209-42.05696-0.102328-4.195463-0.204657-8.083941-0.204657-11.665434l0-37.759169 101.407415 70.401919 25.479764 17.60048c0.511642 0.306985 1.330269 1.023284 2.148896 1.637254 4.40012 3.376836 11.051464 8.595583 20.977316 11.051464 3.274508 0.818627 6.549016 1.22794 10.02818 1.22794 9.618867 0 19.44239-3.274508 27.730987999999996-9.311882 18.82842-13.916657999999998 18.726092-35.405616 18.726092-51.061857 0-1.023284 0-2.148896 0-3.172179l0-409.620466c0-15.963226 0.102328-37.963825-19.647047-51.982812-6.753672-4.809433-16.679524-8.390926-27.219346-8.390926-5.01409 0-10.130509 0.818627-15.144599 2.762866-7.162986 2.762866-12.279404 6.856000999999999-16.065554 9.823524-0.920955 0.716299-1.841911 1.432597-2.353553 1.841911l-24.968122 17.395823-101.10043 70.094934 0-37.963825c0-3.581493 0.102328-7.367643 0.204657-11.460777 0.409313-14.735285 0.818627-29.982212-2.865194-43.796542-5.62806-21.488957999999997-16.679524-39.396423-31.107825-50.447886-7.879285-6.037374-18.930748-13.405016-34.075347-16.986509-7.776956-1.841911-16.167882-2.353553-24.45648-2.353553-4.297792 0-8.595583 0.102328-12.688718 0.204657-3.683821 0.102328-7.162986 0.204657-10.232837 0.204657L167.15339300000005 84.94107466666674c-1.944239 0-3.888478 0-5.832717 0-1.944239 0-3.990806 0-5.935045 0-16.577196 0-33.461377 0.61397-47.787349 6.549016-27.935644999999997 11.563106-46.764065 37.759169-53.006096 73.574098l-0.409313 2.251224 0 2.353553c-0.102328 18.930748-0.204657 37.861497-0.306985 56.792245l0 0.511642L53.87588699999998 598.0155226666666c0 4.40012-0.102328 8.902568-0.102328 13.712001999999998-0.306985 27.01469-0.716299 54.950335 9.311882 76.643949 9.823524 21.284300999999996 27.526331999999996 38.066154 48.708304 45.945438 5.730389 2.148896 11.051464 2.762866 15.04227 3.172179 1.023284 0.102328 2.353553 0.306985 3.069851 0.409313l4.093135 1.534926 500.9997 0c3.581493 0 7.572299 0.102328 11.767763 0.306985C651.166583 739.7403146666667 656.078345 739.9449716666666 660.990107 739.9449716666666M304.273409 266.7785886666668L559.889677 394.2797376666667l0 33.973019L304.273409 555.9585626666667 304.273409 266.7785886666668M660.990107 780.8763196666666c-5.62806 0-10.949136-0.204657-15.758569-0.306985-3.888478-0.102328-7.469971-0.204657-10.437494-0.204657L133.79434400000002 780.3646776666667l-7.265314 0-6.446687-2.353553c-5.3210749999999996-0.61397-13.609673-1.841911-22.716898-5.218747-31.210153-11.665434-57.303887-36.121915-71.629859-67.229739-13.814329999999998-30.084541-13.405016-64.159888-12.995703-94.244429 0.102328-4.604777 0.102328-9.004897 0.102328-13.20036l0-371.349655 0-0.102328 0-0.102328 0-0.511642c0.102328-18.930748 0.204657-37.861497 0.306985-56.792245l0-2.251224 0-3.479165 0.61397-3.376836 0.409313-2.251224c4.195463-23.944839 12.791046-45.126811 25.479764-62.727291 13.609673-18.82842 31.107825-32.847407 52.08514-41.545318 21.488957999999997-8.902568 44.001199-9.618867 63.443589-9.618867 2.046567 0 4.093135 0 6.139702 0 1.841911 0 3.78615 0 5.62806 0l473.166384 0c2.558209 0 5.62806-0.102328 9.004897-0.204657 4.195463-0.102328 8.902568-0.306985 13.916657999999998-0.306985 13.302688 0 24.149495 1.125612 33.973019 3.479165 22.819227 5.423404 39.089437 16.474868 49.322274 24.251824 21.693613999999997 16.577196 37.963825 42.363944999999994 45.84311 72.653143 2.251224 8.595583 3.376836 17.088838 3.990806 25.377436l36.838213-25.582093 24.558809-17.088838c0.306985-0.204657 0.61397-0.511642 0.920955-0.716299 4.809433-3.683821 13.609673-10.642149999999999 26.400719-15.656241 9.516538-3.683821 19.647047-5.62806 30.084541-5.62806 18.009793 0 36.53122799999999 5.832717 50.8572 15.963226 16.577196 11.767763 27.730987999999996 27.935644999999997 33.052064 48.094334 3.78615 14.4283 3.78615 27.628659999999996 3.78615 37.34985499999999l0 409.518137c0 0.920955 0 1.739582 0 2.660538l0 0.409313c0 9.41421 0.102328 22.409913-3.479165 36.53122799999999-5.116419 19.749375-15.758569 35.81493-31.721795 47.68502-15.144599 11.153792-33.666034 17.293495-52.08514 17.293495-6.753672 0-13.507345-0.818627-19.954032-2.455881-18.21445-4.604777-30.289198-13.916657999999998-36.019586-18.419107l0 0c-0.204657-0.204657-0.511642-0.409313-0.716299-0.511642l-25.172779-17.293495-0.102328 0-0.102328 0-37.14519799999999-25.786749c-0.511642 7.674628-1.637254 15.553912-3.683821 23.433197-8.18627 31.721795-24.354152 57.508544-46.866394 74.597382-15.758569 11.972419-32.02878 19.851704-49.833916 23.944839C685.8559009999999 779.7507076666667 674.702109 780.8763196666666 660.990107 780.8763196666666L660.990107 780.8763196666666zM345.204757 332.9850436666668L345.204757 489.75210666666663l157.074048-78.48586L345.204757 332.9850436666668 345.204757 332.9850436666668zM347.455981 429.177975L347.455981 308.02118499999995 347.455981 429.177975Z"  horiz-adv-x="1024" />
    <glyph glyph-name="headset" unicode="&#59132;" d="M356.285031 2.1522690000000466L356.396571 2.1522690000000466 356.396571 285.236626 253.462201 285.236626 253.462201 2.1522690000000466ZM665.076886 285.236626l103.042841 0 0-283.08538-103.042841 0 0 283.08538ZM63.809793 301.950286c0-38.758746-3.195785-112.220874 5.457292-148.208507l65.735144 0c-10.112312 35.644825-7.747451 109.176538-7.747451 148.208507 0 219.937155 172.264389 398.231887 384.763131 398.231887 212.498742 0 384.763131-178.294732 384.763131-398.231887 0-39.031968 2.266623-112.563682-7.845689-148.208507l65.735144 0c8.653077 35.987632 5.555529 109.449761 5.555529 148.208507 0 256.20415-200.670346 463.898469-448.208115 463.898469C264.479115 765.848755 63.809793 558.1544349999999 63.809793 301.950286z"  horiz-adv-x="1024" />
    <glyph glyph-name="cellphone-fine" unicode="&#58939;" d="M731.514252 896L292.485748 896C195.323702 896 116.154627 816.830925 116.154627 719.6688790000001l0-671.337759c0-97.162046 79.169075-176.331121 176.331121-176.331121l438.628661 0c97.162046 0 176.331121 79.169075 176.331121 176.331121L907.445529 719.6688790000001C907.845373 816.830925 828.676298 896 731.514252 896zM292.485748 853.216712l438.628661 0c70.772355 0 128.349863-55.178446 133.147989-124.751269L159.737602 728.465443C164.135884 798.038266 222.113237 853.216712 292.485748 853.216712zM865.062085 48.73096399999997c0-73.571261-59.976572-133.547833-133.547833-133.547833L292.485748-84.816868c-73.571261 0-133.547833 59.976572-133.547833 133.547833l0 45.582194 705.724326 0L864.662241 48.73096399999997zM865.062085 137.096447L158.937915 137.096447 158.937915 685.682155l705.724326 0L864.662241 137.096447zM512-54.82858299999998c13.59469 0 26.789535 5.597813 36.385787 15.194065 9.596251 9.596251 15.194065 22.791097 15.194065 36.385787 0 13.59469-5.597813 26.789535-15.194065 36.385787-9.596251 9.596251-22.791097 15.194065-36.385787 15.194065-13.59469 0-26.789535-5.597813-36.385787-15.194065-9.596251-9.596251-15.194065-22.791097-15.194065-36.385787 0-13.59469 5.597813-26.789535 15.194065-36.385787C485.210465-49.23076900000001 498.40531-54.82858299999998 512-54.82858299999998z"  horiz-adv-x="1024" />
    <glyph glyph-name="add-1" unicode="&#58964;" d="M566.935 57.63900000000001c0-30.366-24.612-54.972-54.935-54.972v0c-30.384 0-54.996 24.612-54.996 54.972v610.057c0 30.361 24.612 54.972 54.996 54.972v0c30.33 0 54.935-24.612 54.935-54.972v-610.057zM817.004 417.633c30.384 0 54.996-24.606 54.996-54.966v0c0-30.354-24.612-54.966-54.996-54.966h-610.062c-30.33 0-54.942 24.612-54.942 54.966v0c0 30.359 24.612 54.966 54.942 54.966h610.062zM817.004 417.633z"  horiz-adv-x="1024" />
    <glyph glyph-name="face-smile-b" unicode="&#58960;" d="M511.931733-128c-136.738133 0-265.284267 53.213867-361.984 149.879467C53.282133 118.51093300000002 0 247.09119999999996 0 384c0 136.738133 53.282133 265.3184 150.050133 362.0864C246.749867 842.683733 375.296 896 512.136533 896s265.4208-53.316267 362.1888-149.9136c199.645867-199.714133 199.543467-524.5952 0-724.206933C777.454933-74.71786699999996 648.772267-128 511.931733-128L511.931733-128 511.931733-128 511.931733-128 511.931733-128 511.931733-128zM512.034133 829.303467c-118.920533 0-230.741333-46.2848-314.914133-130.389333C113.083733 614.8778669999999 66.7648 502.8864 66.7648 384c0-118.9888 46.2848-230.912 130.3552-315.016533 84.0704-84.0704 195.857067-130.321067 314.811733-130.321067 119.022933 0 230.946133 46.318933 315.016533 130.423467 173.704533 173.636267 173.704533 456.157867 0 629.794133C742.877867 782.984533 631.057067 829.303467 512.034133 829.303467L512.034133 829.303467 512.034133 829.303467 512.034133 829.303467 512.034133 829.303467 512.034133 829.303467zM330.103467 244.25813300000004c0 0 59.904-95.9488 181.828267-95.9488s201.8304 95.9488 201.8304 95.9488 45.294933 0.136533 45.192533-47.957333c0 0-78.506667-111.8208-247.022933-111.8208s-223.368533 111.8208-223.368533 111.8208S286.856533 244.25813300000004 330.103467 244.25813300000004L330.103467 244.25813300000004 330.103467 244.25813300000004 330.103467 244.25813300000004 330.103467 244.25813300000004zM363.2128 548.590933c-34.5088 0-62.702933-28.091733-62.702933-62.737067 0-34.679467 28.194133-62.6688 62.702933-62.6688 34.679467 0 62.702933 28.091733 62.702933 62.6688C425.915733 520.4992 397.858133 548.590933 363.2128 548.590933L363.2128 548.590933 363.2128 548.590933 363.2128 548.590933 363.2128 548.590933 363.2128 548.590933zM684.544 548.590933c-34.679467 0-62.702933-28.091733-62.702933-62.737067 0-34.679467 28.023467-62.6688 62.702933-62.6688 34.6112 0 62.600533 28.091733 62.600533 62.6688C747.144533 520.4992 719.121067 548.590933 684.544 548.590933L684.544 548.590933 684.544 548.590933 684.544 548.590933 684.544 548.590933 684.544 548.590933zM684.544 548.590933"  horiz-adv-x="1025" />
    <glyph glyph-name="fonts-html" unicode="&#58955;" d="M194.33 416.235h-101.295v101.28h-46.035v-267.03h46.035v119.7h101.28v-119.7h46.035v267.03h-46.035v-101.28zM277.205 480.69h73.665v-230.205h46.035v230.205h73.665v36.825h-193.365v-36.825zM627.815 335.58000000000004l-46.755 181.935h-73.665v-267.03h46.035v211.785l46.035-211.785h55.245l46.83 213.93-0.795-213.93h46.035v267.03h-73.665l-45.3-181.935zM848.09 287.30999999999995v230.205h-46.035v-267.03h174.945v36.825h-128.91z"  horiz-adv-x="1024" />
    <glyph glyph-name="screen-full" unicode="&#58914;" d="M641.750109 511.899972l205.227128 204.519-0.704035-115.89966c-0.282433-9.611915 7.489578-18.09103 17.101493-17.808598l12.297071 0c9.611915 0.283456 17.667382 5.936199 17.808598 15.689331l0.565888 172.57752c0 0.14224 0.282433 9.187243 0.282433 9.187243 0.14224 4.804423-0.99056 9.187243-4.100388 12.297071-3.109828 3.109828-7.347339 5.086855-12.297071 4.946662l-8.763594-0.14224c-0.141216 0-0.278339 0-0.420579-0.14224L697.581696 797.833213c-9.611915-0.283456-17.667382-8.200776-17.808598-17.950837l0-12.297071c1.416256-11.44875 10.458189-18.092054 20.070104-17.808598l112.789832-0.283456-204.66124-203.814965c-9.329483-9.329483-9.329483-24.449855 0-33.778314 9.329483-9.470699 24.452925-9.470699 33.782408 0L641.750109 511.899972zM383.095141 319.11010699999997L177.726797 115.29411900000002l0.707105 115.338888c0.283456 9.607822-7.492648 18.086937-17.104563 17.808598l-13.001105 0c-9.611915-0.283456-17.667382-5.937223-17.808598-15.690354l-0.565888-172.718737c0-0.14224-0.282433-9.187243-0.282433-9.187243-0.14224-4.808516 0.99056-9.187243 4.096295-12.297071 3.109828-3.109828 7.351432-5.086855 12.297071-4.946662l8.762571 0.14224c0.14224 0 0.283456 0 0.425695 0.14224l171.873486-0.708128c9.607822 0.283456 17.667382 8.196683 17.808598 17.950837L344.93503 63.42477399999996c-1.415232 11.44875-10.461259 18.092054-20.074198 17.808598L212.069977 81.51682800000003 416.59 285.32872299999997c9.329483 9.329483 9.329483 24.453948 0 33.782408C407.40685 328.58182999999997 392.424624 328.58182999999997 383.095141 319.11010699999997L383.095141 319.11010699999997zM894.047276 60.03251399999999l-0.424672 172.718737c-0.283456 9.612938-8.200776 15.406898-17.809621 15.690354l-12.296047 0c-9.612938 0.278339-17.243733-8.200776-17.105586-17.808598l0.708128-115.903753L641.750109 319.11010699999997c-9.329483 9.329483-24.452925 9.329483-33.782408 0-9.325389-9.328459-9.325389-24.452925 0-33.782408L812.490795 81.51682800000003l-112.789832-0.283456c-9.611915 0.283456-18.515702-6.502088-20.073174-17.808598l0-12.297071c0.282433-9.611915 8.200776-17.667382 17.808598-17.950837l171.166381 0.708128c0.141216 0 0.282433-0.14224 0.424672-0.14224l8.763594-0.14224c4.803399-0.141216 9.187243 1.694595 12.296047 4.946662 3.109828 3.109828 4.238534 7.488555 4.097318 12.297071 0 0-0.14224 9.046027-0.14224 9.187243L894.047276 60.03149099999996zM212.216309 749.493252l112.789832 0.283456c9.607822-0.283456 18.512632 6.502088 20.070104 17.808598L345.076246 779.883399c-0.283456 9.611915-8.196683 17.667382-17.808598 17.950837l-172.011632-0.708128c-0.14224 0-0.283456 0.14224-0.425695 0.14224l-8.761548 0.14224c-4.808516 0.141216-9.187243-1.694595-12.297071-4.946662-3.109828-3.109828-4.242627-7.488555-4.096295-12.297071 0 0 0.282433-9.046027 0.282433-9.187243l0.420579-172.718737c0.14224-9.608845 8.200776-15.406898 17.808598-15.686261l13.005198 0c9.611915-0.282433 17.242709 8.196683 17.10047 17.808598l-0.564865 115.334795 205.231221-203.958228c9.324366-9.329483 24.448832-9.329483 33.777291 0 9.329483 9.329483 9.329483 24.452925 0 33.782408L212.216309 749.493252 212.216309 749.493252zM212.216309 749.493252"  horiz-adv-x="1024" />
    <glyph glyph-name="form" unicode="&#58940;" d="M314.278111 437.019389l395.439892 0 0-30.297458-395.439892 0L314.278111 437.019389zM314.278111 315.83495200000004l395.439892 0 0-30.297458-395.439892 0L314.278111 315.83495200000004zM314.278111 194.62833l263.626661 0 0-30.297458L314.278111 164.330872 314.278111 194.62833zM609.376235 739.9931730000001c-7.849678 42.966669-48.394988 75.742447-97.378777 75.742447-48.961604 0-89.51311-32.775778-97.380776-75.742447L116.55177 739.9931730000001l0-787.725922 790.893774 0 0 787.725922L609.376235 739.9931730000001zM446.091342 670.440529l0 17.613058 0 36.791056c0 33.410348 29.57295 60.594317 65.906116 60.594317 36.352353 0 65.907115-27.183969 65.907115-60.594317l0-36.791056 0-17.621053 16.672696-8.712493c32.358061-16.929922 57.169039-42.663874 71.406386-73.213161L358.043239 588.50688c14.240345 30.555683 39.051523 56.281241 71.408385 73.213161L446.091342 670.440529zM874.489888-17.436289999999985L149.505227-17.436289999999985 149.505227 709.694715 413.138884 709.694715l0-21.641327c-51.44492-26.923746-88.727643-74.124144-98.86377-129.845165l395.44289 0c-10.102151 55.730615-47.40466 102.921419-98.859773 129.845165l0 21.641327 263.631658 0L874.489888-17.436289999999985z"  horiz-adv-x="1024" />
    <glyph glyph-name="cart" unicode="&#58967;" d="M365.920994 84.618469c-39.030945 0-70.78516-31.754215-70.78516-70.78516s31.754215-70.784136 70.78516-70.784136c39.030945 0 70.784136 31.753191 70.784136 70.784136S404.951939 84.618469 365.920994 84.618469zM365.920994-5.784493999999995c-10.818393 0-19.61985 8.801457-19.61985 19.618826 0 10.818393 8.801457 19.61985 19.61985 19.61985s19.618826-8.801457 19.618826-19.61985C385.540843 3.015939000000003 376.739387-5.784493999999995 365.920994-5.784493999999995zM808.821219 84.618469c-39.030945 0-70.784136-31.754215-70.784136-70.78516s31.753191-70.784136 70.784136-70.784136 70.78516 31.753191 70.78516 70.784136S847.852164 84.618469 808.821219 84.618469zM808.821219-5.784493999999995c-10.81737 0-19.618826 8.801457-19.618826 19.618826 0 10.818393 8.801457 19.61985 19.618826 19.61985 10.818393 0 19.61985-8.801457 19.61985-19.61985C828.441069 3.015939000000003 819.640636-5.784493999999995 808.821219-5.784493999999995zM443.99107 305.940157c-14.057157-1.416256-24.305569-13.959943-22.890336-28.0171 1.328251-13.187347 12.446473-23.02132 25.423019-23.02132 0.856507 0 1.723248 0.042979 2.594081 0.130983l439.314561 44.245713c0.088004 0.007163 0.174985 0.01842 0.261966 0.026606l0.180102 0.01842c0.50449 0.051165 1.001817 0.119727 1.496074 0.198521 0.222057 0.035816 0.443092 0.076748 0.663102 0.11768 0.552585 0.103354 1.100054 0.217964 1.638313 0.355087 0.085958 0.022513 0.169869 0.047072 0.254803 0.069585 0.586354 0.156566 1.161453 0.334621 1.728364 0.530073 0.077771 0.026606 0.155543 0.051165 0.233314 0.078795 0.626263 0.222057 1.239224 0.469698 1.840928 0.737804 0.039909 0.017396 0.078795 0.035816 0.118704 0.054235 1.277086 0.577145 2.496867 1.252527 3.647063 2.020006 0.001023 0.001023 0.002047 0.001023 0.00307 0.002047 0.553609 0.369414 1.088798 0.76134 1.609661 1.170662 0.069585 0.054235 0.137123 0.10847 0.205685 0.163729 0.48607 0.38988 0.958838 0.795109 1.413186 1.218758 0.092098 0.084934 0.180102 0.173962 0.270153 0.25992 0.394996 0.378623 0.778736 0.76748 1.14815 1.169639 0.11154 0.121773 0.222057 0.243547 0.331551 0.367367 0.333598 0.3776 0.653893 0.766456 0.964978 1.163499 0.12382 0.158612 0.249687 0.314155 0.370437 0.475837 0.322341 0.432859 0.629333 0.876973 0.925069 1.329275 0.113587 0.173962 0.224104 0.348947 0.333598 0.525979 0.296759 0.479931 0.580215 0.968048 0.845251 1.467421 0.069585 0.130983 0.134053 0.265036 0.201591 0.397043 0.289596 0.568958 0.563842 1.147126 0.811482 1.738597 0.00307 0.007163 0.005117 0.014326 0.008186 0.021489 0.569982 1.369184 1.019213 2.796696 1.345648 4.26514 0 0.001023 0 0.002047 0.001023 0.00307l0.00307 0.013303c0.035816 0.162706 0.075725 0.323365 0.10847 0.487094l56.17951 252.734118c0.895393 4.030803 0.780783 8.04728-0.165776 11.794627 0.50449 2.003634 0.774643 4.101411 0.774643 6.261611 0 14.128789-11.452843 25.582655-25.582655 25.582655L195.47502 616.098125l-52.358485 159.553902c-3.631714 11.067057-14.093996 17.972327-25.177426 17.590634-0.207731 0.005117-0.413416 0.01535-0.62217 0.01535L54.663994 793.258011c-14.128789 0-25.582655-11.453866-25.582655-25.582655s11.453866-25.582655 25.582655-25.582655l45.614897 0 197.955514-603.235934c3.536546-10.776438 13.546527-17.613146 24.303522-17.613146 2.067079 0 4.16281 0.26299 6.245238 0.788969l567.583946 0c14.129812 0 25.582655 11.453866 25.582655 25.582655s-11.452843 25.582655-25.582655 25.582655L340.816223 173.1979 212.265428 564.933839l701.224666 0-48.137347-216.557174L443.99107 305.940157z"  horiz-adv-x="1024" />
    <glyph glyph-name="camera-fill" unicode="&#58973;" d="M512 480C436.515555 480 375.111111 419.712 375.111111 345.6 375.111111 271.48800000000006 436.515555 211.20000000000005 512 211.20000000000005 587.484446 211.20000000000005 648.888887 271.48800000000006 648.888887 345.6 648.888887 419.712 587.484446 480 512 480M512 172.79999999999995C414.808889 172.79999999999995 336 250.15679999999998 336 345.6 336 441.0432 414.808889 518.4 512 518.4 609.210667 518.4 688 441.0432 688 345.6 688 250.15679999999998 609.210667 172.79999999999995 512 172.79999999999995M903.111113 691.2L723.767113 691.2C713.383113 691.2 703.448887 695.2512 696.115554 702.4512L640.792887 756.7488C633.459554 763.9488 623.505779 768 613.141333 768L512 768 410.878222 768C400.494222 768 390.56 763.9488 383.226667 756.7488L327.904 702.4512C320.570667 695.2512 310.616889 691.2 300.252445 691.2L120.888889 691.2C77.866667 691.2 42.666667 656.64 42.666667 614.4L42.666667 76.79999999999995C42.666667 34.559999999999945 77.866667 0 120.888889 0L903.111113 0C946.133333 0 981.333333 34.559999999999945 981.333333 76.79999999999995L981.333333 614.4C981.333333 656.64 946.133333 691.2 903.111113 691.2"  horiz-adv-x="1024" />
    <glyph glyph-name="tabs" unicode="&#58922;" d="M310.30303 523.636364L124.121212 523.636364c-17.128727 0-31.030303-13.901576-31.030303-31.030303l0-186.181818c0-17.128727 13.901576-31.030303 31.030303-31.030303l186.181818 0c17.128727 0 31.030303 13.901576 31.030303 31.030303L341.333333 492.606061C341.333333 509.734788 327.431758 523.636364 310.30303 523.636364zM294.787879 306.42424200000005L139.636364 306.42424200000005c-17.128727 0-15.515152-1.613576-15.515152 15.515152L124.121212 477.090909c0 17.128727-1.613576 15.515152 15.515152 15.515152l155.151515 0c17.128727 0 15.515152 1.613576 15.515152-15.515152l0-155.151515C310.30303 304.81066699999997 311.916606 306.42424200000005 294.787879 306.42424200000005zM418.909091 352.969697l480.969697 0 0 31.030303L418.909091 384 418.909091 352.969697zM418.909091 228.84848499999998l480.969697 0 0 31.030303L418.909091 259.878788 418.909091 228.84848499999998zM418.909091 89.21212100000002l480.969697 0 0 31.030303L418.909091 120.24242400000003 418.909091 89.21212100000002zM418.909091 492.606061l480.969697 0 0 31.030303L418.909091 523.636364 418.909091 492.606061zM992.969697 725.333333l-15.515152 0L977.454545 849.454545c0 17.128727-13.901576 31.030303-31.030303 31.030303L775.757576 880.484848c-17.128727 0-31.030303-13.901576-31.030303-31.030303l0-124.121212-139.636364 0L605.090909 849.454545c0 17.128727-13.901576 31.030303-31.030303 31.030303L403.393939 880.484848c-17.128727 0-31.030303-13.901576-31.030303-31.030303l0-124.121212-124.121212 0L248.242424 849.454545c0 17.128727-13.901576 31.030303-31.030303 31.030303L31.030303 880.484848C13.901576 880.484848 0 866.583273 0 849.454545l0-946.424242c0-17.128727 13.901576-31.030303 31.030303-31.030303l961.939394 0c17.128727 0 31.030303 13.901576 31.030303 31.030303L1024 694.30303C1024 711.431758 1010.098424 725.333333 992.969697 725.333333zM992.969697-65.939394c0-17.128727-13.901576-31.030303-31.030303-31.030303L62.060606-96.969697c-17.128727 0-31.030303 13.901576-31.030303 31.030303L31.030303 818.424242c0 17.128727 13.901576 31.030303 31.030303 31.030303l124.121212 0c17.128727 0 31.030303-13.901576 31.030303-31.030303l0-124.121212 744.727273 0c17.128727 0 31.030303-13.901576 31.030303-31.030303L992.969697-65.939394z"  horiz-adv-x="1024" />
    <glyph glyph-name="heart-fill" unicode="&#59023;" d="M729.068827 776.44202c-94.686523 0-176.905082-48.314379-217.069851-118.640074-40.163745 70.325695-122.382305 118.640074-217.044268 118.640074-143.767358 0-229.665727-123.660414-229.665727-243.219417 0-283.128359 415.870616-527.841803 433.576883-538.126031 4.062526-2.363837 8.584516-3.538593 13.132088-3.538593 4.547573 0 9.070586 1.174756 13.132088 3.538593 17.706267 10.283204 433.576883 254.997672 433.576883 538.126031C958.708971 652.781606 872.811626 776.44202 729.068827 776.44202z"  horiz-adv-x="1024" />
    <glyph glyph-name="fonts-code" unicode="&#58958;" d="M270 626c-12 12-32 12-44 0L9 409c-12-12-12-32 0-44l217-217c6-6 14-9 22-9s16 3 22 9c12 12 12 32 0 44L75 387 270 582C282 595 282 614 270 626zM1015 409L798 626c-12 12-32 12-44 0-12-12-12-32 0-44l195-195L754 192c-12-12-12-32 0-44 6-6 14-9 22-9s16 3 22 9l217 217C1027 377 1027 397 1015 409zM624 696L624 696c-16 6-34-3-40-19L382 119c-6-16 2-34 19-40l0 0c16-6 34 3 40 19l202 558C648 672 640 690 624 696z"  horiz-adv-x="1025" />
    <glyph glyph-name="ios" unicode="&#59008;" d="M821.235026 351.984884c-1.287001 129.729651 105.791442 191.891776 110.553344 194.980577-60.102924 88.030835-153.796561 100.12864-187.258574 101.54434-79.794032 7.979403-155.598362-46.975519-196.010178-46.975519-40.411816 0-102.831341 45.688518-168.983167 44.530218-86.872534-1.287001-167.052666-50.57912-211.840284-128.442651-90.347436-156.756662-23.166009-388.931554 64.864826-515.958505 42.985817-62.162125 94.337137-132.046252 161.647264-129.600951 64.864826 2.574001 89.317835 41.956217 167.696167 41.956217s100.38604-41.956217 169.111867-40.669216c69.755428 1.287001 114.028245 63.449125 156.756662 125.86865 49.42082 72.200729 69.755428 142.084856 70.913728 145.559758C957.14228 145.550002 822.522026 197.030023 821.235026 351.984884L821.235026 351.984884 821.235026 351.984884zM692.277575 732.550935c35.778614 43.371917 59.845524 103.474841 53.281821 163.449065-51.48002-2.059201-113.899545-34.234214-150.83646-77.477431C561.647023 780.041254 532.560811 718.78003 540.411514 660.092806 597.811737 655.588305 656.49896 689.307718 692.277575 732.550935L692.277575 732.550935 692.277575 732.550935z"  horiz-adv-x="1084" />
    <glyph glyph-name="at" unicode="&#59015;" d="M514.162246 831.556269c-246.201331 0-446.51045-200.783932-446.51045-447.571618 0-246.772336 201.037712-447.539896 448.157973-447.539896 50.29857 0 99.615788 8.224312 146.523121 24.436552 18.414395 6.370081 31.060413 12.423961 31.472805 12.630668 7.194866 3.217275 12.614296 9.049097 15.213493 16.401552 2.63092 7.305383 2.155083 15.133675-1.299599 22.043039l-2.883677 5.831822c-7.131421 14.262842-24.974811 20.569478-40.156582 13.850449-0.031722-0.031722-5.8001-3.02694-20.094664-8.082072-41.075511-14.627139-84.21196-22.059412-128.235616-22.059412-210.92592 0-382.487298 171.57775-382.487298 382.487298S305.423131 766.487298 516.349051 766.487298c210.894198 0 382.455575-171.5931 382.455575-382.423853-0.887206-51.868321-13.882172-100.486622-36.606733-136.855948-20.664645-33.104979-46.939055-51.994188-72.199369-51.994188-0.317225 0-0.601704 0-0.887206 0-45.829791 0.792039-75.433016 68.586075-75.433016 172.718737l0 185.269587c0 5.53097-1.426489 9.635451-4.373611 12.550851-4.944616 4.944616-12.360516 4.817726-21.267373 4.864798l-2.472308-0.016373-9.223059 0.016373c-7.701402-0.031722-13.469779 0.063445-17.495466-3.945869-3.645017-3.613294-4.119831-9.096169-4.119831-13.469779l0-31.060413c-45.196365 36.100196-80.440054 59.474556-131.9758 60.378136-1.045819 0.016373-2.059915 0.031722-3.074012 0.031722-108.74368 0-198.470237-99.218746-200.657043-222.779899-2.155083-124.701117 84.845387-227.723491 193.969737-229.625818 1.045819-0.01535 2.059915-0.031722 3.074012-0.031722 63.293535 0 122.276904 34.087353 159.992901 92.103698 24.373107-60.251246 61.519122-91.216491 110.48637-92.071975 0.697895-0.01535 1.394766-0.01535 2.060939-0.01535 33.945113 0 66.716494 14.610766 94.924953 42.328038 47.63695 46.796816 76.066443 124.796284 76.066443 208.643947l0 2.883677C959.595154 630.772336 759.761873 831.556269 514.162246 831.556269zM646.73975 354.651578c0-92.230588-58.475809-167.282934-130.390699-167.282934s-130.390699 75.052347-130.390699 167.282934c0 92.246961 58.475809 167.298284 130.390699 167.298284S646.73975 446.897515 646.73975 354.651578z"  horiz-adv-x="1024" />
    <glyph glyph-name="fire" unicode="&#59222;" d="M890.059904 352.19948999999997C845.890699 458.956706 840.554889 548.4951550000001 857.396326 618.42714 859.144623 625.686731 860.991676 631.9776790000001 862.858846 637.425182 863.763607 640.064841 865.906573 645.659889 866.16406 646.532651L880.890349 696.448108 833.062903 675.9309969999999C832.106692 675.5208 830.618069 674.894716 827.426684 673.550492 824.667648 672.380966 822.310677 671.354022 819.868514 670.244809 813.291441 667.2575449999999 807.049466 664.090938 800.697749 660.4128450000001 784.089623 650.795565 768.486253 638.656896 753.86285 623.033596 727.630498 595.007563 706.526618 557.766355 691.78157 509.713231 675.041103 455.157161 671.516484 411.46006 673.004574 347.939834 673.477918 327.73476900000003 673.463923 322.197583 672.83965 318.324215 673.779618 324.156339 684.455526 333.67819899999995 696.104608 329.19567600000005 693.056849 330.36844199999996 685.695898 339.012828 676.314007 361.368339 660.550914 398.92921 646.834249 460.170272 636.817284 549.350468 625.445924 650.588768 630.103925 734.7280519999999 644.646978 801.338628 647.677924 815.221065 650.899934 827.082435 654.086773 836.904609 655.91465 842.538316 657.254607 846.094657 657.880284 847.554385L678.645286 896 628.243642 880.578031C617.409833 877.263087 599.94569 869.52239 578.105438 855.845223 542.547644 833.577626 507.199569 802.385036 474.400401 760.836776 447.596676 726.883228 423.611383 687.30061 403.118547 641.7016189999999 378.907516 587.829195 363.003277 542.798944 353.158029 503.238462 349.274261 487.632585 346.433259 473.323627 344.1945 458.925156 343.334411 453.39353 342.592734 448.063234 341.804612 441.911844 341.502524 439.553997 340.356619 430.329551 340.073506 428.145504 337.596047 409.033293 335.848224 404.35337 329.235273 398.312868 336.081933 404.566848 343.232634 404.098227 346.608002 402.086756 344.852318 403.133013 341.598345 406.493651 337.991853 411.887149 327.030897 428.279226 317.980358 454.883162 313.690598 489.339595 311.250185 508.941598 310.203772 539.08627 310.370048 576.545325 310.480474 601.422138 311.113088 628.122479 312.099068 654.977888 312.481453 665.393013 312.891081 675.105466 313.30045 683.8491750000001 313.545346 689.079919 313.735044 692.813105 313.84201 694.783403L317.55517 763.179488 271.360516 712.604139C270.467691 711.626645 268.852992 709.837042 266.618705 707.326295 262.927895 703.178805 258.823678 698.493751 254.407949 693.3614689999999 241.78797 678.693606 229.164348 663.340425 217.341267 648.004036 211.724185 640.717803 206.411389 633.591345 201.450577 626.6638379999999 176.017063 591.147305 156.617347 555.4025280000001 138.122768 512.155497 90.841957 401.595812 76.97672 299.64870599999995 99.261816 188.13489300000003 126.80821 50.29373899999996 188.553235-37.64422200000001 278.8297-84.690336 344.19104-118.75233700000001 408.837235-128 507.940695-128 525.713007-128 557.977207-125.567138 590.857378-120.46215900000004 641.152493-112.65333099999998 687.496192-99.78932299999997 726.063273-80.59104400000001 738.155853-74.57148800000004 743.07901-59.88870199999997 737.059454-47.79612199999997 731.039898-35.70354299999997 716.357111-30.780384000000026 704.264531-36.79993999999999 670.855859-53.43041900000003 629.092954-65.02289699999994 583.352478-72.12456999999995 552.984316-76.83953499999996 523.228215-79.08327499999996 507.940695-79.08327499999996 416.16215-79.08327499999996 357.934257-70.75375399999996 301.436271-41.310745999999995 224.830174-1.3887230000000272 171.977796 73.88423 147.230072 197.72094500000003 126.99711 298.965952 139.514783 391.004811 183.099329 492.921284 200.282663 533.1021499999999 218.020237 565.784358 241.22153 598.183718 245.831691 604.6215589999999 250.802959 611.289899 256.082244 618.137961 267.31885 632.713596 279.402035 647.409487 291.488864 661.457681 298.732051 669.8762429999999 304.338773 676.1767130000001 307.478705 679.614406L264.997214 697.435142C264.883874 695.347445 264.688038 691.493511 264.43725 686.13688 264.020474 677.234965 263.603959 667.359281 263.215279 656.7726250000001 262.21142 629.430212 261.566827 602.224414 261.453805 576.7624579999999 261.278897 537.3588179999999 262.385015 505.49418 265.148621 483.296209 276.058157 395.668083 322.627019 326.024497 362.226031 362.19561799999997 379.341732 377.829698 384.756649 392.328523 388.584361 421.857186 397.932742 493.974714 407.332926 531.746825 447.736538 621.64966 466.587287 663.594818 488.484326 699.731218 512.795234 730.526996 542.034492 767.565749 573.156162 795.028785 604.068111 814.386984 614.696751 821.043029 624.472062 826.201428 633.124687 830.036563 638.02329 832.207788 641.258688 833.404991 642.556233 833.802016L612.91959 866.825663C608.658554 856.884484 602.686705 838.478616 596.856038 811.772799 581.186705 740.003594 576.231674 650.498985 588.206246 543.890345 607.295279 373.94226100000003 638.819345 298.82556999999997 678.537329 283.542234 701.302332 274.78234499999996 717.731637 289.43566899999996 721.133156 310.5407 722.475759 318.870999 722.489387 324.26340300000004 721.907881 349.08549100000005 720.532565 407.791853 723.691247 446.952173 738.546223 495.36355 751.151827 536.44438 768.544047 567.135763 789.576147 589.605967 809.230566 610.60429 821.725461 617.839716 852.347733 630.9761169999999L842.705318 653.453557 819.246577 660.374464C822.235501 670.505564 813.450321 644.87463 809.839253 629.8801189999999 790.647573 550.1890470000001 796.611315 450.1135 844.8591 333.498332 883.105728 241.056017 874.587669 126.06492400000002 824.002925 61.39712899999995 815.680378 50.75754500000005 817.558709 35.38570000000004 828.198295 27.063153000000057 838.837879 18.740607999999952 854.209724 20.618939999999952 862.532269 31.258523999999966 924.762731 110.81426299999998 934.658528 244.404363 890.059904 352.19948999999997Z"  horiz-adv-x="1024" />
    <glyph glyph-name="set" unicode="&#59158;" d="M466.496-126.62400000000002l-1.056 0.064c-25.184 2.08-47.456 22.368-51.744 47.232l-17.344 102.4c-0.672 4.064-6.624 11.04-10.56 12.416l-30.336 12.416c-5.44 2.496-15.424 0.8-17.472-0.64l-84.992-60.16c-19.584-14.016-51.456-12.736-70.08 3.168l-64.288 64c-17.952 20.48-19.488 50.592-4.736 71.296l60.416 84.672c2.176 3.072 2.784 11.52 1.024 15.04l0 0c0 0-1.664 3.104-7.264 16.608-6.176 14.848-6.816 17.44-6.816 17.44-0.992 3.04-7.456 8.672-11.36 9.376l-102.56 17.248c-25.152 4.288-45.44 26.624-47.168 52L0 428.288c2.112 27.36 22.496 49.6 47.52 53.728l102.528 17.344c4.128 0.672 11.008 6.56 12.416 10.496l12.608 30.336c2.368 4.992 1.6 14.112-0.8 17.504L113.984 642.24C99.36 662.88 100.704 692.896 117.056 712.192l64.416 64.224c20.672 18.208 51.296 18.784 71.36 4.64l84.992-60.16c1.952-1.376 13.28-2.016 15.04-1.056 0.384 0.192 2.528 1.344 16.704 7.168 14.24 5.92 16.576 6.592 16.576 6.592 3.84 1.184 9.504 7.648 10.144 11.424l17.44 102.4c4.32 25.152 26.752 45.376 52.128 47.104l90.528 0.064c27.328-2.112 49.632-22.368 53.952-47.232l17.344-102.432c0.672-4.064 6.656-11.04 10.624-12.48l30.304-12.352c6.24-2.784 15.456-0.8 17.44 0.608l85.024 60.16c19.52 14.016 51.392 12.704 70.08-3.136l64.288-64.032c17.952-20.48 19.456-50.56 4.736-71.264l-60.416-84.672c-2.208-3.136-2.848-11.616-1.056-15.04 0.16-0.352 1.376-2.56 7.232-16.672 5.856-14.112 6.592-16.512 6.592-16.512 1.248-4.032 7.712-9.6 11.648-10.304l102.56-17.248c25.152-4.224 45.44-26.592 47.168-52l0.096-90.304c-2.112-27.392-22.528-49.6-47.552-53.728l-102.528-17.376c-4.128-0.672-10.944-6.496-12.32-10.432l-12.736-30.432c-2.336-4.928-1.568-14.112 0.832-17.472l60.288-84.512c14.624-20.736 13.216-50.816-3.232-70.048l-64.192-64.096c-11.328-9.92-24.64-14.72-38.784-14.72l0 0c-11.904 0-23.52 3.552-32.704 10.016l-84.992 60.16c-1.952 1.408-13.312 2.016-15.072 1.056-0.288-0.16-2.432-1.312-16.608-7.2-14.08-5.792-16.384-6.496-16.384-6.496-4.16-1.28-9.792-7.776-10.432-11.52l-17.408-102.4c-4.352-25.152-26.72-45.344-52.032-47.104L466.496-126.62400000000002zM347.84 100.60799999999995c10.368 0 20.192-2.112 28.48-6.112l27.648-11.296c20.416-7.072 38.976-28.992 42.848-51.584l17.344-102.336c0.288-1.6 3.136-4.32 5.056-4.832l87.296 0.064c-0.032 0.064 3.04 2.944 3.328 4.672l17.408 102.368c3.872 22.656 23.328 44.832 45.28 51.584 0 0 0 0 0 0-0.096 0 2.976 1.152 12.448 5.056 9.472 3.936 12.384 5.248 13.12 5.568 18.208 9.6 49.44 8.032 67.776-4.96l84.928-60.16c0.192-0.128 1.312-0.64 3.104-0.64l0 0c2.048 0 3.52 0.672 3.872 0.96l61.536 61.408 0 0c-0.16 0 0.064 4.416-0.992 5.952l-60.224 84.448c-13.248 18.624-15.68 47.168-5.792 67.872l11.648 27.84c6.944 19.968 29.408 38.912 51.68 42.496l102.464 17.376c1.824 0.384 4.736 3.648 4.864 5.408L972.8 428.288l0 0c-0.096 0-2.88 3.072-4.576 3.424l-102.72 17.28c-23.168 4.032-44.896 22.976-51.776 45.056l0 0c-0.032 0-1.216 3.04-5.12 12.512-3.968 9.568-5.28 12.512-5.632 13.248-10.24 19.36-8.288 48.736 4.96 67.456L868.448 672c0.96 1.408 0.736 5.6-0.384 6.912l-61.408 61.184c0.704-0.8-0.768-0.192-2.848-0.192-1.728 0-2.784-0.416-3.008-0.576l-85.024-60.16c-17.824-12.8-47.776-15.36-68-5.664l-27.712 11.296c-20.512 7.2-39.04 29.088-42.88 51.584l-17.344 102.336c-0.288 1.76-3.616 4.704-5.504 4.864L467.616 843.52c0-0.064-3.104-2.944-3.392-4.672l-17.408-102.336c-3.84-22.624-23.264-44.8-45.216-51.584 0-0.032-3.008-1.184-12.416-5.088-9.568-3.936-12.512-5.248-13.248-5.568-17.984-9.568-49.344-8.032-67.744 4.992L223.264 739.36c-0.416 0.32-6.176 0.288-6.848-0.224L154.688 677.6320000000001c0 0 0 0 0 0 0.224 0 0.032-4.384 1.056-5.856L216 587.264c13.312-18.752 15.744-47.296 5.76-67.968l-11.52-27.648c-6.976-20.032-29.472-38.944-51.776-42.624L55.968 431.68c-1.824-0.384-4.704-3.648-4.832-5.408l0.096-86.56 0 0c0.096 0 2.912-3.104 4.608-3.424l102.656-17.28c23.04-4 44.704-22.912 51.712-44.928 0.256-0.736 1.44-3.84 5.088-12.64 3.68-8.832 5.024-11.84 5.472-12.736 10.592-20.288 8.672-48.96-4.672-67.904l-60.512-84.768c-0.96-1.408-0.736-5.632 0.384-6.912l61.408-61.184c-0.736 0.8 0.736 0.224 2.816 0.192 1.728 0 2.784 0.416 3.008 0.576l84.992 60.16C318.624 96.32000000000005 333.088 100.60799999999995 347.84 100.60799999999995zM512.032 133.856c-138.336 0-250.848 112.224-250.848 250.176 0 137.92 112.544 250.144 250.848 250.144s250.848-112.224 250.848-250.144C762.88 246.08000000000004 650.336 133.856 512.032 133.856zM512.032 583.136c-110.08 0-199.648-89.312-199.648-199.104s89.568-199.136 199.648-199.136 199.648 89.344 199.648 199.136S622.112 583.136 512.032 583.136z"  horiz-adv-x="1024" />
    <glyph glyph-name="fonts-u" unicode="&#58950;" d="M0-49.23076900000001L945.230769-49.23076900000001 945.230769-128 0-128 0-49.23076900000001ZM0 896L407.076943 896 407.076943 834.065644 319.153861 827.872177 299.076923 809.911217 299.076923 365.841959C299.076923 281.19796199999996 317.076716 220.709337 353.076933 184.37435100000005 389.077071 148.03936499999998 448.153442 129.87210800000003 530.307702 129.87210800000003 606.000364 129.87210800000003 660.807522 149.17482299999995 694.730752 187.78072599999996 728.653982 226.38662899999997 745.61536 289.66226700000004 745.61536 377.60953099999995L745.61536 804.956475 724.153817 826.633531 633.461524 834.065644 633.461524 896 955.384596 896 955.384596 834.065644 868.846119 826.633531 849.461563 804.956475 849.461563 364.60331299999996C849.461563 246.92743900000005 819.923338 161.66533900000002 760.846178 108.81441500000005 701.76894 55.96348999999998 606.462188 29.53846199999998 474.923087 29.53846199999998 406.153531 29.53846199999998 345.807951 38.51886300000001 293.884613 56.47990200000004 241.961275 74.44093999999996 201.230887 100.143419 171.692347 133.58820400000002 149.076834 160.01362700000004 133.038474 190.25793999999996 123.57695 224.32200899999998 114.115348 258.386078 109.384625 307.21047599999997 109.384625 370.796702L109.384625 809.911217 89.307687 827.872177 0 834.065644 0 896Z"  horiz-adv-x="1024" />
    <glyph glyph-name="triangle-d" unicode="&#58917;" d="M773.128299 88.65234199999998M889.696178 575.195553L158.862147 575.195553 524.357446 209.64704300000005 889.696178 575.195553Z"  horiz-adv-x="1024" />
    <glyph glyph-name="tips" unicode="&#59138;" d="M967.280184 578.537671c-24.915459 58.887178-60.544935 111.76755-105.96745 157.161413-45.393863 45.393863-98.273211 81.051991-157.160389 105.96745-60.988026 25.803689-125.735679 38.853913-192.494129 38.853913-66.729797 0-131.504056-13.0799-192.494129-38.853913-58.887178-24.916483-111.766526-60.544935-157.160389-105.96745-45.393863-45.393863-81.051991-98.274234-105.96745-157.161413-25.803689-60.988026-38.884612-125.734656-38.884612-192.464453s13.0799-131.50508 38.884612-192.464453c24.915459-58.887178 60.544935-111.737874 105.96745-157.161413 45.393863-45.393863 98.273211-81.051991 157.160389-105.96745 60.988026-25.803689 125.735679-38.853913 192.494129-38.853913 66.729797 0 131.504056 13.0799 192.494129 38.853913 58.887178 24.916483 111.766526 60.544935 157.160389 105.96745 45.393863 45.393863 81.051991 98.274234 105.96745 157.161413 25.803689 60.988026 38.853913 125.734656 38.853913 192.464453S993.084896 517.549645 967.280184 578.537671zM511.687892-55.138552000000004c-243.302305 0-441.241446 197.909465-441.241446 441.21177S268.385587 827.284989 511.687892 827.284989c243.273652-0.029676 441.210747-197.938118 441.210747-441.21177S754.990197-55.138552000000004 511.687892-55.138552000000004zM511.657192 573.565427m-45.511543 0a44.475 44.475 0 1 1 91.023086 0 44.475 44.475 0 1 1-91.023086 0ZM542.729885 184.14011300000004c0-17.162892-13.906731-31.071669-31.070646-31.071669l0 0c-17.163915 0-31.070646 13.907755-31.070646 31.071669L480.588593 426.998303c0 17.162892 13.906731 31.071669 31.070646 31.071669l0 0c17.163915 0 31.070646-13.907755 31.070646-31.071669L542.729885 184.14011300000004z"  horiz-adv-x="1024" />
    <glyph glyph-name="picture" unicode="&#58954;" d="M765.376 615.424c0 0 103.04 1.024 103.04-100.992 0 0 9.536-98.752-103.04-100.928 0 0-100.864-2.176-99.84 100.928C665.536 514.496 664.448 605.8879999999999 765.376 615.424ZM968.32 770.56c0 0 54.208-4.224 54.208-52.032l0-712.832c0 0-3.2-51.008-54.208-52.096L968.32 770.56ZM1.472 5.631999999999948c0 0 2.176-52.096 52.096-52.096L968.32-46.464000000000055l0 150.848-99.712 0-203.072 206.144-153.024-153.984L304.32 413.568l-205.056-307.072-45.632-1.024L52.48 718.4639999999999 1.472 718.4639999999999 1.472 5.631999999999948ZM968.32 770.56L53.568 770.56c0 0-52.096 1.088-52.096-52.032L968.32 718.528 968.32 770.56Z"  horiz-adv-x="1024" />
    <glyph glyph-name="more-vertical" unicode="&#58993;" d="M511.998465 623.681848c40.525995 0 73.386404 35.771715 73.386404 79.892585s-32.860409 79.892585-73.386404 79.892585c-40.524972 0-73.384357-35.771715-73.384357-79.892585S471.47247 623.681848 511.998465 623.681848L511.998465 623.681848zM511.998465 463.893608c-40.524972 0-73.384357-35.772738-73.384357-79.893608 0-44.12087 32.859385-79.892585 73.384357-79.892585 40.525995 0 73.386404 35.772738 73.386404 79.892585C585.384869 428.12087 552.52446 463.893608 511.998465 463.893608L511.998465 463.893608zM511.998465 144.320199c-40.524972 0-73.384357-35.733852-73.384357-79.894631 0-44.119847 32.859385-79.893608 73.384357-79.893608 40.525995 0 73.386404 35.772738 73.386404 79.893608C585.383846 108.58634600000005 552.52446 144.320199 511.998465 144.320199L511.998465 144.320199z"  horiz-adv-x="1024" />
    <glyph glyph-name="bluetooth" unicode="&#59017;" d="M844.799642 221.19607699999995L538.533306 374.84141l307.696917 177.029926c10.583033 5.006014 17.398252 15.59621 17.569144 27.302833s-6.332219 22.491247-16.764825 27.804253L475.584626 830.045869c-9.517771 4.846378-20.869307 4.39817-29.974685-1.181919-9.105379-5.581112-14.656815-15.493879-14.656815-26.174126l0-288.760636L210.662931 699.284733c-12.974499 10.915607-32.339546 9.248641-43.255153-3.724835-10.915607-12.973476-9.248641-32.339546 3.724835-43.255153L430.953126 433.687656l0-102.83511L171.558307 120.428046c-13.166881-10.68127-15.181771-30.013571-4.500501-43.180452 6.068206-7.480368 14.924921-11.360745 23.859407-11.360745 6.794753 0 13.634532 2.245134 19.322068 6.859221l220.714867 179.046862 0-283.065937c0-10.689457 5.561669-20.61041 14.680351-26.188452 4.903683-2.99931 10.455119-4.510734 16.019859-4.510734 4.78498 0 9.580193 1.118474 13.980409 3.368724l371.449917 224.085638c10.664897 5.456269 17.182334 16.618493 16.691147 28.589129C863.284645 206.04091200000005 855.875908 216.63110800000004 844.799642 221.19607699999995zM763.458055 580.639542L492.351498 420.917818l0 21.60711c0.563842 3.368724 0.558725 6.801916 0 10.153244L492.351498 752.604102 763.458055 580.639542zM492.351498 18.915047999999956L492.351498 311.51001199999996c0.558725 3.347235 0.562818 6.777357 0 10.146081l0 5.809309 267.472797-137.65822L492.351498 18.915047999999956z"  horiz-adv-x="1024" />
    <glyph glyph-name="flag" unicode="&#58988;" d="M878.368178 798.272211c-11.363815 4.799306-24.470321 2.360767-33.31578-6.245238-0.36532-0.350994-37.162388-35.304064-95.163383-56.05262-75.462692-26.993794-150.763702-18.409279-223.812415 25.517163-38.347376 23.060205-81.875752 40.665165-129.376603 52.327786-37.582967 9.228175-77.742619 14.777565-119.363552 16.496719-70.805626 2.925632-121.493052-6.224772-123.615389-6.615675-14.56574-2.682086-25.140587-15.380292-25.140587-30.191626L128.58047-31.312913999999978c0-16.954137 13.745049-30.699186 30.699186-30.699186s30.699186 13.745049 30.699186 30.699186L189.978842 266.68306099999995c15.562441 5.250584 47.994084 14.447037 91.40171 17.48728 35.985586 2.51938 72.440869 0.378623 108.35073-6.363941 44.847417-8.420787 89.059362-24.102954 131.409912-46.611597 46.26879-24.591071 93.776803-41.069371 141.203976-48.977481 38.270629-6.380314 76.541257-7.219425 113.740484-2.491751 64.277956 8.16803 103.877859 30.461779 105.532545 31.406291 9.56689 5.464455 15.471366 15.637142 15.471366 26.656103L897.089565 769.958352C897.091612 782.298402 889.73711 793.470859 878.368178 798.272211zM835.69324 257.496841c-14.58416-5.755074-38.82526-13.530155-70.319555-17.225313-30.990828-3.635807-62.940494-2.676969-94.952582 2.851954-40.201607 6.943133-80.731696 21.171182-120.464629 42.289152-48.455595 25.753547-99.208513 43.61945-150.848637 53.101405-29.29214 5.378497-58.896388 8.079002-88.407516 8.079002-12.228509 0-24.443715-0.464581-36.609803-1.39272-34.879392-2.663666-63.618946-8.741082-84.111676-14.355963L189.978842 766.569162c19.971867 2.003634 50.446949 3.910053 86.392626 2.334161 58.186214-2.554172 143.250588-15.041578 218.064504-60.029188 61.32674-36.877909 119.196753-49.491181 169.691797-49.488111 42.293245 0.002047 79.416747 8.854669 109.019972 19.711947 24.269753 8.901741 45.327348 19.747763 62.544475 30.179346L835.692217 257.496841z"  horiz-adv-x="1024" />
    <glyph glyph-name="loading" unicode="&#58941;" d="M511.999488 756.654348m-70.608128 0a69 69 0 1 1 141.216255 0 69 69 0 1 1-141.216255 0ZM236.047576 639.997442m-68.561515 0a67 67 0 1 1 137.123031 0 67 67 0 1 1-137.123031 0ZM125.530506 382.12428m-62.421678 0a61 61 0 1 1 124.843356 0 61 61 0 1 1-124.843356 0ZM227.861126 100.71507499999996m-54.235229 0a53 53 0 1 1 108.470457 0 53 53 0 1 1-108.470457 0ZM514.166851-16.84438799999998m-47.192835 0a46.118 46.118 0 1 1 94.385671 0 46.118 46.118 0 1 1-94.385671 0ZM804.730553 91.450061m-33.834596 0a33.064 33.064 0 1 1 67.669192 0 33.064 33.064 0 1 1-67.669192 0ZM935.55411 383.395226m-23.969924 0a23.424 23.424 0 1 1 47.939849 0 23.424 23.424 0 1 1-47.939849 0ZM856.723717 634.80007m-17.135262 0a16.745 16.745 0 1 1 34.270525 0 16.745 16.745 0 1 1-34.270525 0Z"  horiz-adv-x="1024" />
    <glyph glyph-name="fonts-i" unicode="&#58948;" d="M897.948 834.255l0-64.322-128.65 0L447.674-1.9329999999999927l128.65 0 0-64.32L126.052-66.25300000000004l0 64.32 128.65 0 321.622 771.866-128.65 0L447.674 834.255 897.948 834.255z"  horiz-adv-x="1024" />
    <glyph glyph-name="refresh-1" unicode="&#58982;" d="M688.146 736l-192 128v-256l192 128.001zM496.146 767.7090000000001c-231.174-8.416-416-198.479-416-431.709 0-238.587 193.413-432 432-432 233.23 0 423.293 184.826 431.709 416h-64.05c-8.377-195.817-169.778-352-367.658-352-203.241 0-368 164.759-368 368 0 197.88 156.183 359.282 352 367.658v64.051z"  horiz-adv-x="1024" />
    <glyph glyph-name="rmb" unicode="&#58974;" d="M511.998465 896C229.23338 896 0.004605 666.769178 0.004605 384.001023c0-282.773272 229.227752-512.001023 511.99386-512.001023 282.769178 0 511.994883 229.227752 511.994883 512.001023C1023.994372 666.769178 794.767644 896 511.998465 896zM511.998465-91.59690499999999c-262.660188 0-475.589742 212.930577-475.589742 475.597929 0 262.663258 212.929554 475.594859 475.589742 475.594859 262.663258 0 475.590765-212.9316 475.590765-475.594859C987.590254 121.33469500000001 774.662747-91.59690499999999 511.998465-91.59690499999999zM738.742652 301.137781L544.432155 301.137781l0 69.780273 194.310497 0c17.835204 0 32.249495 14.43885 32.249495 32.220842 0 17.784038-14.414291 32.19526-32.249495 32.19526L589.7462 435.334155l149.620669 209.579249c8.916067 15.397688 3.63069 35.099403-11.82021 43.988864-15.398712 8.891508-35.097356 3.629667-44.017516-11.793604L512.187777 437.098335 340.84334 677.108664c-8.864902 15.423271-28.617781 20.685111-44.016493 11.793604-15.395642-8.889461-20.685111-28.590152-11.82021-43.988864l149.622716-209.579249L285.628808 435.334155c-17.781992 0-32.245402-14.411221-32.245402-32.19526 0-17.781992 14.46341-32.220842 32.245402-32.220842l194.310497 0 0-69.780273L285.628808 301.137781c-17.781992 0-32.245402-14.413268-32.245402-32.19526s14.46341-32.220842 32.245402-32.220842l194.310497 0 0-132.435265c0-17.780969 14.46341-32.19526 32.248472-32.19526 17.835204 0 32.245402 14.414291 32.245402 32.19526L544.433178 236.72065499999997l194.310497 0c17.835204 0 32.249495 14.43885 32.249495 32.220842S756.577856 301.137781 738.742652 301.137781"  horiz-adv-x="1024" />
    <glyph glyph-name="addition" unicode="&#58916;" d="M544 768L480 768 480 416 128 416 128 352 480 352 480 0 544 0 544 352 895.936 352 895.936 416 544 416Z"  horiz-adv-x="1024" />
    <glyph glyph-name="home" unicode="&#59022;" d="M824.084343-40.42033900000001H232.898863c-74.604138 0-85.85232 28.334325-85.852321 49.997718l-0.584307 5.314029V447.645552h48.806589v-402.916582c0-25.547863 13.548574-36.343743 37.629015-36.343743h568.020898c25.928532 0 27.978215 6.220678 27.978215 37.84391V447.585177l48.806589 0.118704c0.022513-14.346753 0-382.76666 0-433.098999 0-38.130436-12.726859-54.765301-51.858088-54.765301l-1.76111-0.25992zM1012.470921 493.103884C849.773422 615.120868 687.101505 737.137853 524.404006 859.153814c-6.207375 4.659113-18.433838 4.659113-24.641213 0C337.077573 737.137853 174.393377 615.120868 11.696902 493.103884c-24.856108-18.635429-0.572028-61.044308 24.642236-42.13361A15995638.709915 15995638.709915 0 0 1 512.025071 807.737794c0.988514-0.715291 1.644453-1.144056 2.823302-2.037403 18.040888-13.524015 36.057217-27.036773 54.073546-40.560788 58.291614-43.718711 116.583229-87.437421 174.874843-131.143852 81.33647-61.008492 162.696476-122.015961 244.033969-183.024454 25.212218-18.911722 49.496298 23.497157 24.64019 42.132587z"  horiz-adv-x="1024" />
    <glyph glyph-name="time" unicode="&#59021;" d="M511.98464 829.44c-118.97856 0-230.83008-46.35136-314.95168-130.4832C112.90624 614.84032 66.56 502.95808 66.56 384.00512c0-118.9632 46.34624-230.84544 130.47296-314.9568C281.15456-15.093759999999975 393.00608-61.440000000000055 511.98464-61.440000000000055c118.98368 0 230.84032 46.34624 314.9824 130.48832C911.09376 153.15967999999998 957.44 265.02144 957.44 384.00512c0 118.97856-46.34624 230.8352-130.47296 314.95168C742.82496 783.0886399999999 630.96832 829.44 511.98464 829.44z m275.58912-721.02912c-73.61024-73.63584-171.47904-114.18624-275.58912-114.18624s-201.97376 40.5504-275.57888 114.18624c-73.63584 73.61024-114.16064 171.47904-114.16064 275.59424 0 104.11008 40.54528 201.97376 114.18112 275.58912 73.60512 73.63072 171.47392 114.176 275.584 114.176s201.97376-40.54528 275.584-114.176c73.63584-73.61536 114.18112-171.47904 114.18112-275.58912 0-104.1152-40.56576-201.984-114.2016-275.59424zM519.1168 340.20863999999995V628.08064a27.8528 27.8528 0 0 1-27.84256 27.84768 27.8528 27.8528 0 0 1-27.84256-27.84768v-306.23232a27.81184 27.81184 0 0 1 16.88064-25.58976M734.70464 321.84831999999994a31.0784 31.0784 0 0 0-31.07328-31.0784H496.44544a31.08864 31.08864 0 0 0-31.07328 31.0784 31.09376 31.09376 0 0 0 31.07328 31.0784h207.18592a31.08864 31.08864 0 0 0 31.07328-31.0784z"  horiz-adv-x="1024" />
    <glyph glyph-name="user" unicode="&#59248;" d="M611.2 342.4c70.4 54.4 115.2 140.8 115.2 230.4 0 156.8-128 288-284.8 288s-284.8-128-284.8-284.8c0-92.8 44.8-182.4 115.2-236.8C108.8 272 0 105.60000000000002 0-80c0-9.6 9.6-19.2 19.2-19.2h848c9.6 0 19.2 9.6 19.2 19.2 0 188.8-112 355.2-275.2 422.4z m-576-396.8C44.8 115.20000000000005 156.8 268.79999999999995 320 320c6.4 3.2 12.8 9.6 12.8 16s-3.2 16-9.6 19.2c-76.8 41.6-128 131.2-128 224 0 134.4 112 246.4 246.4 246.4s246.4-112 246.4-249.6c0-89.6-51.2-176-128-220.8-6.4-3.2-9.6-9.6-9.6-19.2 0-6.4 6.4-12.8 12.8-16 160-51.2 275.2-204.8 281.6-377.6H35.2zM812.8 361.6c54.4 41.6 86.4 108.8 86.4 176 0 89.6-54.4 172.8-134.4 208-9.6 3.2-22.4 0-25.6-9.6-3.2-9.6 0-22.4 9.6-25.6 67.2-28.8 112-99.2 112-172.8 0-67.2-38.4-131.2-96-163.2-6.4-3.2-9.6-9.6-9.6-19.2 0-6.4 6.4-12.8 12.8-16 131.2-41.6 217.6-160 217.6-297.6 0-9.6 9.6-19.2 19.2-19.2s19.2 9.6 19.2 19.2c-3.2 140.8-86.4 262.4-211.2 320z"  horiz-adv-x="1024" />
    <glyph glyph-name="notice" unicode="&#58983;" d="M544 798.976V864h-64v-65.024C289.536 786.304 160 658.624 160 416v-288h64V416c0 192 115.456 320 288 320 180.544 0 288-128 288-320v-288h64V416c0 242.88-122.496 370.56-320 382.976zM672 64a160 160 0 1 0-320 0h64a96 96 0 0 1 192 0h64zM64 128h896v-64H64v64z"  horiz-adv-x="1024" />
    <glyph glyph-name="chrome" unicode="&#59018;" d="M515.436 583.685H914.285C840.842 730.955 688.748 832.132 513 832.132c-141.284 0-267.274-65.395-349.42-167.546l151.66-262.682c8.535 102.325 95.704 181.781 200.196 181.781zM514.218 550.803c-91.476 0-165.631-74.155-165.631-165.631s74.155-165.631 165.631-165.631c52.7 0 99.615 24.642 129.95 62.999l1.428 2.474 0.355-0.205c21.252 27.852 33.898 62.624 33.898 100.363 0 84.774-63.702 154.626-145.841 164.413l-6.393 0.632c-4.424 0.354-8.882 0.586-13.397 0.586zM929.561 549.585H627.443c52.209-36.066 86.506-96.297 86.506-164.413 0-45.547-18.268-81.598-41.12-121.192L483.898-63.257c9.624-0.617 19.322-0.966 29.102-0.966 247.521 0 448.177 200.656 448.177 448.177 0 58.508-11.225 114.391-31.616 165.631zM514.218 185.441c-83.583 0-144.927 54.804-185.034 124.651l-0.235-0.136-187.482 324.727C93.081 563.124 64.823 476.84 64.823 383.954c0-225.02 165.839-411.288 381.958-443.298l152.278 263.752c-25.769-12.143-54.518-18.967-84.841-18.967z"  horiz-adv-x="1024" />
    <glyph glyph-name="edge" unicode="&#59019;" d="M854.794 669.297C797.923 743.783 683.626 823.59 548.62 830.822 136.707 852.889 85.742 435.448 85.742 435.448c55.449 53.038 58.01 97.116 163.936 154.293C673.983 818.768 676.394 476.432 676.394 476.432H346.111c-7.232 65.092 62.681 137.417 62.681 137.417-202.509-98.844-216.974-284.477-216.974-284.477s-28.93-279.655 219.385-364.034 452.029 42.189 452.029 42.189V193.16c-59.065-32.546-102.292-54.405-153.087-63.887-361.623-67.503-364.034 188.044-364.034 188.044h585.83c0 0.001 39.075 199.761-77.147 351.98z"  horiz-adv-x="1024" />
    <glyph glyph-name="login-weibo" unicode="&#58997;" d="M411.270737 288.350316c-17.973895 7.504842-41.189053-0.229053-52.264421-17.542737-11.223579-17.394526-5.955368-38.103579 11.870316-46.201263 18.108632-8.232421 42.132211-0.417684 53.342316 17.421474C435.253895 260.05557899999997 429.446737 280.62989500000003 411.270737 288.350316zM455.545263 306.64757899999995c-6.885053 2.721684-15.508211-0.579368-19.550316-7.329684-3.920842-6.790737-1.751579-14.524632 5.146947-17.367579 7.019789-2.883368 16.006737 0.458105 20.048842 7.370105C465.071158 296.259368 462.551579 304.087579 455.545263 306.64757899999995zM427.52 426.684632c-115.968-11.439158-203.924211-82.216421-196.378947-158.073263 7.531789-75.910737 107.654737-128.161684 223.649684-116.749474 115.994947 11.439158 203.924211 82.216421 196.392421 158.140632C643.664842 385.859368 543.541895 438.110316 427.52 426.684632zM529.300211 247.70021099999997c-23.673263-53.355789-91.769263-81.798737-149.530947-63.232-55.754105 17.933474-79.373474 72.811789-54.945684 122.246737 23.956211 48.464842 86.352842 75.870316 141.541053 61.561263C523.506526 353.562947 552.663579 299.85684200000003 529.300211 247.70021099999997zM512 896C229.241263 896 0 666.772211 0 384c0-282.758737 229.241263-512 512-512 282.772211 0 512 229.241263 512 512C1024 666.772211 794.772211 896 512 896zM455.531789 101.02568399999996c-145.354105 0-293.941895 70.197895-293.941895 185.667368 0 60.362105 38.386526 130.182737 104.474947 196.069053 88.252632 87.929263 191.164632 127.986526 229.874526 89.397895 17.084632-17.003789 18.741895-46.457263 7.760842-81.623579-5.726316-17.690947 16.666947-7.895579 16.666947-7.936 71.343158 29.763368 133.564632 31.514947 156.321684-0.862316 12.139789-17.246316 10.954105-41.472-0.215579-69.510737-5.173895-12.921263 1.589895-14.928842 11.466105-17.879579 40.178526-12.422737 84.924632-42.455579 84.924632-95.380211C772.837053 211.36168399999997 646.090105 101.02568399999996 455.531789 101.02568399999996zM718.672842 468.197053c4.715789 14.457263 1.765053 30.962526-9.202526 43.061895-10.954105 12.072421-27.136 16.666947-42.037895 13.527579l0 0.026947c-12.463158-2.694737-24.724211 5.268211-27.392 17.664-2.667789 12.463158 5.281684 24.697263 17.744842 27.338105 30.531368 6.467368 63.595789-2.937263 85.989053-27.715368 22.447158-24.764632 28.456421-58.489263 18.849684-88.064-3.907368-12.099368-16.936421-18.728421-29.062737-14.848-12.139789 3.920842-18.782316 16.922947-14.874947 28.995368L718.672842 468.183579zM853.261474 424.865684c-0.013474-0.013474-0.013474-0.080842-0.013474-0.107789-4.567579-14.026105-19.712-21.706105-33.778526-17.165474-14.133895 4.554105-21.854316 19.590737-17.300211 33.670737l0 0.013474c13.999158 43.169684 5.12 92.429474-27.567158 128.565895-32.714105 36.122947-80.949895 49.92-125.507368 40.488421-14.484211-3.085474-28.752842 6.130526-31.838316 20.574316-3.098947 14.403368 6.144 28.631579 20.641684 31.717053l0.026947 0c62.625684 13.271579 130.519579-6.117053 176.545684-56.966737C860.483368 554.886737 872.892632 485.618526 853.261474 424.865684z"  horiz-adv-x="1024" />
    <glyph glyph-name="voice" unicode="&#59016;" d="M463.380164 644.0568969999999v-0.003069c-4.550643 4.549619-10.484795 7.02295-16.913205 7.02295s-12.365632-2.473331-16.915251-7.02295c-4.549619-4.551666-7.020904-10.485819-7.020904-16.914229s2.471284-12.365632 7.020904-16.915251c60.437487-60.438511 93.675496-140.756791 93.675496-226.222301 0-85.464487-33.238009-165.783791-93.675496-226.220255-4.549619-4.551666-7.020904-10.487865-7.020904-16.915252 0-6.429433 2.471284-12.365632 7.020904-16.914228 4.550643-4.549619 10.486842-7.02295 16.915251-7.02295s12.364609 2.473331 16.913205 7.02295c35.114752 35.116799 62.317301 76.06849 80.814584 121.668037 17.904789 44.018539 26.90579 90.608647 26.90579 138.384768s-9.101285 94.26799-26.90579 138.384767c-18.59552 45.697785-45.698808 86.550215-80.814584 121.667013zM781.892405 618.929614v-0.002047c-31.358195 77.452-77.550237 146.990772-137.098471 206.539007-4.550643 4.549619-10.485819 7.02295-16.915252 7.02295-6.42841 0-12.363585-2.473331-16.914228-7.02295-9.29776-9.299807-9.29776-24.531719 0-33.82948 54.997592-54.998615 97.631598-119.195729 126.613676-190.71153 27.993564-69.044516 42.237987-142.045133 42.237987-216.924541s-14.244422-147.882072-42.237987-216.923518c-28.982078-71.517847-71.616084-135.616724-126.613676-190.711529-9.29776-9.298783-9.29776-24.531719 0-33.82948 4.551666-4.551666 10.485819-7.02295 16.914228-7.02295 6.429433 0 12.366655 2.471284 16.915252 7.02295 59.547211 59.547211 105.740276 129.085984 137.098471 206.53696 30.369681 74.78117 45.699832 153.817248 45.699831 234.928591 0 81.111343-15.331173 160.146397-45.699831 234.927567zM299.474141 427.621497c-11.670807 11.573593-27.103288 18.004049-43.522236 18.004049-16.419971 0-31.852452-6.429433-43.52326-18.004049-11.57257-11.57257-18.003026-27.104311-18.003026-43.522236 0-16.420995 6.42841-31.851429 18.003026-43.52326 11.574616-11.57257 27.103288-18.003026 43.52326-18.003025s31.852452 6.429433 43.522236 18.003025c11.573593 11.573593 18.003026 27.104311 18.003025 43.52326 0 16.419971-6.427386 31.852452-18.003025 43.522236z"  horiz-adv-x="1024" />
    <glyph glyph-name="upload-drag" unicode="&#59009;" d="M666.931 445.918l-124.245 99.362c-7.221 5.639-16.428 9.042-26.429 9.042-9.963 0-19.136-3.376-26.438-9.047l-124.215-99.391c-9.615-7.772-15.713-19.565-15.713-32.782 0-9.946 3.453-19.084 9.223-26.284 13.828-17.359 41.51-20.465 58.918-6.505l56.252 45.022v-261.12c0-23.177 18.842-41.984 41.95-41.984s41.95 18.842 41.95 41.984v261.12l56.286-45.056c17.545-13.892 45.09-10.718 58.914 6.554 5.754 7.137 9.236 16.316 9.236 26.308 0 13.211-6.086 24.999-15.609 32.716zM235.827 142.95000000000005c-85.026 0-152.542 31.71-188.655 89.839-36.113 58.095-34.406 134.724 4.335 195.174 37.342 58.334 102.366 92.023 178.995 94.549-19.866 130.492 42.667 202.377 84.753 235.008 90.112 69.871 234.257 79.053 335.565 21.367 58.982-33.587 94.037-85.675 100.454-146.978 113.937 18.978 177.562-33.826 206.814-69.905 63.317-78.131 71.27-204.39 18.91-300.203-46.524-85.06-130.389-127.317-229.82-116.497-18.739 2.116-32.222 18.978-30.174 37.683s19.285 32.017 37.683 30.174c96.7-10.718 143.258 46.353 162.406 81.408 39.014 71.373 33.826 167.868-12.049 224.495-38.673 47.684-100.352 60.518-178.483 37.069-2.94-0.916-6.319-1.443-9.822-1.443-18.851 0-34.133 15.282-34.133 34.133 0 1.495 0.096 2.969 0.283 4.414 8.549 68.506-31.114 106.53-65.93 126.362-77.346 44.066-191.522 37.035-259.925-15.974-58.266-45.193-75.947-117.18-51.132-208.179 0.761-2.688 1.198-5.775 1.198-8.963 0-18.851-15.282-34.133-34.133-34.133-1.481 0-2.94 0.094-4.371 0.277-70.759 8.822-128.991-13.535-159.677-61.424-24.61-38.434-26.146-86.46-3.823-122.368 27.716-44.578 86.05-64.375 164.147-55.637 1.132 0.133 2.443 0.209 3.772 0.209 18.853 0 34.138-15.284 34.138-34.138 0-17.525-13.205-31.965-30.208-33.914-14.153-1.653-27.874-2.404-41.118-2.404z"  horiz-adv-x="1024" />
    <glyph glyph-name="login-qq" unicode="&#58998;" d="M512 896C229.227789 896 0 666.772211 0 384c0-282.745263 229.227789-512 512-512s512 229.254737 512 512C1024 666.772211 794.772211 896 512 896L512 896zM738.856421 258.93726300000003c0 0-16.208842-44.220632-45.945263-83.941053 0 0 53.126737-18.054737 48.64-64.983579 0 0 1.778526-52.345263-113.461895-48.734316 0 0-81.071158 6.319158-105.377684 40.609684l-21.423158 0c-24.306526-34.304-105.350737-40.609684-105.350737-40.609684-115.280842-3.610947-113.475368 48.734316-113.475368 48.734316-4.500211 46.928842 48.626526 64.983579 48.626526 64.983579-29.709474 39.720421-45.918316 83.941053-45.918316 83.941053-72.057263-116.439579-64.848842 16.249263-64.848842 16.249263 13.527579 78.524632 70.238316 129.967158 70.238316 129.967158-8.111158 71.316211 21.611789 83.941053 21.611789 83.941053C318.410105 709.712842 508.025263 705.859368 512 705.751579c3.988211 0.107789 193.576421 3.961263 199.828211-216.643368 0 0 29.709474-12.638316 21.611789-83.941053 0 0 56.737684-51.442526 70.238316-129.967158l0 0C803.678316 275.18652599999996 810.873263 142.49768400000005 738.856421 258.93726300000003L738.856421 258.93726300000003zM738.856421 258.93726300000003"  horiz-adv-x="1024" />
    <glyph glyph-name="snowflake" unicode="&#59057;" d="M480.695-64h63.725V59.291000000000054l68.854-68.242 44.945 44.546-113.798 112.79v180.02l177.271-102.44 41.67-155.652 60.725 16.284-25.398 94.872 85.259-49.266 31.87 55.246-84.726 48.961 94.497 25.343-16.495 61.622-156.068-41.855-176.934 102.245 177.667 102.667 155.513-41.709 16.274 60.793-94.78 25.418 85.255 49.264-31.869 55.247-84.733-48.965 25.326 94.594-61.557 16.51-41.817-156.206-176.948-102.251V644.461l113.849 113.951-44.459 44.496-69.392-69.454V832h-63.725v-97.935l-69.188 69.249-45.068-45.107 114.256-114.355V438.89l-156.557 90.469L283.45 684.39l-60.188-16.458 24.84-94.632-107.544 62.145-31.868-55.247 106.667-61.639-93.463-25.557 16.074-61.237 154.482 42.243 156.169-90.243-156.138-90.226-154.485 42.243-15.855-60.409 94.289-25.784-107.534-62.14 31.868-55.247 106.672 61.642-24.621-93.801 61.012-16.685 40.69 155.028 156.179 90.25v-180.455l-113.801-112.79 44.338-43.944 69.463 68.845V-64z"  horiz-adv-x="1024" />
    <glyph glyph-name="heart" unicode="&#59020;" d="M512 4.100000000000023c-108.9 0-447.3 277.5-447.3 522.2 0 131 106.6 237.6 237.6 237.6 94.9 0 174.8-50.2 209.7-76.1 34.9 25.9 114.8 76.1 209.7 76.1 131 0 237.6-106.6 237.6-237.6 0-244.7-338.4-522.2-447.3-522.2zM302.3 708c-100.2 0-181.7-81.5-181.7-181.7 0-221 326.8-466.3 391.4-466.3s391.4 245.3 391.4 466.3c0 100.2-81.5 181.7-181.7 181.7-103.9 0-190.2-76-191.1-76.8-10.6-9.5-26.7-9.5-37.3 0-0.8 0.8-87.7 76.8-191 76.8z"  horiz-adv-x="1024" />
    <glyph glyph-name="logout" unicode="&#59010;" d="M512 832a32 32 0 0 1-32-32v-416a32 32 0 0 1 64 0V800a32 32 0 0 1-32 32zM683.34 798.06a32 32 0 0 1-24.48-59.15C798.07 681.24 896 544.06 896 384c0-212.08-171.92-384-384-384S128 171.91999999999996 128 384c0 160.06 97.93 297.24 237.14 354.91a32 32 0 0 1-24.48 59.15C178.25 730.78 64 570.74 64 384c0-247.42 200.58-448 448-448s448 200.58 448 448c0 186.74-114.25 346.78-276.66 414.06z"  horiz-adv-x="1024" />
    <glyph glyph-name="file-b" unicode="&#58965;" d="M790.08 177.91999999999996l-138.112-119.232V177.91999999999996h138.112zM198.848 763.008h627.328v-516.16H617.088a34.56 34.56 0 0 1-34.816-34.432v-206.528H198.848V763.008z m662.208 68.8H164.032a34.56 34.56 0 0 1-34.816-34.432v-825.92a34.56 34.56 0 0 1 34.816-34.432h453.056l278.784 240.896V797.376a34.56 34.56 0 0 1-34.816 34.432z"  horiz-adv-x="1024" />
    <glyph glyph-name="template" unicode="&#58979;" d="M734 172.89999999999998v82.8h-59.9v-37l-35.7-9.7 15.7-57.8zM674.1 419.3H734v-81.8h-59.9zM734 600.2l-95.6-26 15.7-57.8 20 5.4v-20.7H734zM866.1 131.29999999999995v-37l-35.7-9.7 7.9-28.9 7.8-28.9 79.9 21.7v82.8h-29.9zM740.9 60.299999999999955L651.4 36l7.9-28.9 7.8-29 89.5 24.4-7.8 28.9zM740.9 781.7l-89.5-24.3 7.9-28.9 7.8-28.9 89.5 24.3-7.8 28.9zM830.4 806l7.9-28.9 7.8-28.9 20 5.5v-20.8H926V832zM866.1 612.6v-120.3H926V612.6h-29.9zM866.1 371.9v-120.3H926V371.9h-29.9zM541.9 665.6l35.7 9.7-7.8 28.9-7.8 28.9-50-13.6L98 832v-783.5l384.1-104.3L512-64l29.9 8.1 35.7 9.7-7.8 28.9-7.8 28.9-20-5.4V120.79999999999995l35.7 9.7-15.7 57.8-20-5.4V486l35.7 9.7-15.7 57.8-20-5.4V665.6z m-59.8-659.4l-324.2 88.1V753.7l324.2-88.1V548l-192 52.2v-427.3l192-52.2v-114.5z m0 360.9V182.79999999999995l-132.2 35.9V521.8l132.2-35.9v-118.8z"  horiz-adv-x="1024" />
    <glyph glyph-name="transfer" unicode="&#59025;" d="M320 768H128c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h192c35.2 0 64 28.8 64 64V704c0 35.2-28.8 64-64 64z m0-672c0-16-16-32-32-32H160c-16 0-32 16-32 32V672c0 16 16 32 32 32h128c16 0 32-16 32-32v-576z m256 544h-64c-19.2 0-32-12.8-32-32s16-32 32-32h64c19.2 0 32 12.8 32 32s-16 32-32 32z m-64-448h-64c-19.2 0-32-12.8-32-32s16-32 32-32h64c19.2 0 32 12.8 32 32s-16 32-32 32z m384 576H704c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h192c35.2 0 64 28.8 64 64V704c0 35.2-28.8 64-64 64z m0-672c0-16-16-32-32-32H736c-16 0-32 16-32 32V672c0 16 16 32 32 32h128c16 0 32-16 32-32v-576z"  horiz-adv-x="1024" />
    <glyph glyph-name="auz" unicode="&#58994;" d="M324.266667 435.2c-17.066667 17.066667-39.822222 17.066667-51.2 0-17.066667-17.066667-17.066667-39.822222 0-51.2l153.6-159.288889c5.688889-5.688889 17.066667-11.377778 28.444444-11.377778s17.066667 5.688889 28.444445 11.377778l295.822222 290.133333c17.066667 17.066667 17.066667 39.822222 0 51.2-17.066667 17.066667-39.822222 17.066667-51.2 0L455.111111 304.355556 324.266667 435.2zM927.288889 753.777778L523.377778 896h-22.755556L96.711111 753.777778c-17.066667-5.688889-28.444444-17.066667-28.444444-34.133334v-432.355555c11.377778-250.311111 409.6-409.6 426.666666-415.288889h22.755556c17.066667 5.688889 415.288889 159.288889 426.666667 415.288889V719.644444c11.377778 17.066667 0 28.444444-17.066667 34.133334z m-45.511111-460.8c-5.688889-182.044444-301.511111-312.888889-369.777778-341.333334-113.777778 45.511111-358.4 182.044444-369.777778 341.333334v398.222222L512 822.044444l369.777778-125.155555v-403.911111z"  horiz-adv-x="1024" />
    <glyph glyph-name="console" unicode="&#58981;" d="M30.552 104.72699999999998c4.654-16.29 23.272-23.272 37.236-18.618 16.291 4.655 23.273 23.273 18.618 37.236C16.588 314.182 84.08 521.31 237.68 640c11.636 9.31 23.273 16.29 37.236 25.6 25.6 16.29 53.528 30.255 83.782 39.564 58.182 20.945 118.691 30.254 176.873 27.927h25.6c6.982 0 11.636 0 18.618-2.327 30.255-4.655 58.182-11.637 88.436-23.273 235.055-86.11 356.073-346.764 269.964-581.818-4.654-16.291 2.327-32.582 18.618-37.237 16.291-4.654 32.582 2.328 37.237 18.619 41.89 116.363 39.563 239.709 0 349.09h2.327C921.897 656.2909999999999 738.043 784.2909999999999 537.897 793.6h-48.873c-200.145-9.31-384-137.31-458.472-337.455-39.564-109.381-41.891-232.727 0-351.418z m707.49 386.328a29.498 29.498 0 0 1-41.89 0L521.606 316.509c-4.654 2.327-9.309 2.327-13.963 2.327-32.582 0-58.182-25.6-58.182-58.181s25.6-58.182 58.182-58.182 58.181 25.6 58.181 58.182c0 4.654 0 9.309-2.327 16.29l174.546 174.546c11.636 11.636 11.636 30.254 0 39.564z m228.073-458.473H58.48c-16.29 0-30.255-13.964-30.255-30.255 0-16.29 13.964-30.254 30.255-30.254h907.636c16.291 0 30.255 13.963 30.255 30.254 0 16.291-13.964 30.255-30.255 30.255z"  horiz-adv-x="1024" />
    <glyph glyph-name="app" unicode="&#58963;" d="M432.022 818.946h-376.324c-6.627 0-12.078-5.45-12.078-12.078v-376.324c0-6.627 5.45-12.078 12.078-12.078h376.324c6.627 0 12.078 5.45 12.078 12.078v376.473c0 6.627-5.45 11.93-12.078 11.93zM391.517 471.196h-295.169v295.169h295.021v-295.169zM976.847 635.717l-211.95 211.95c-8.837 8.837-23.124 8.837-31.963 0l-211.95-211.95c-8.837-8.837-8.837-23.124 0-31.963l211.95-212.098c8.837-8.837 23.124-8.837 31.963 0l211.95 211.95c8.837 8.987 8.837 23.271 0 32.109zM432.022 313.45000000000005h-376.324c-6.627 0-12.078-5.45-12.078-12.078v-376.324c0-6.627 5.45-12.078 12.078-12.078h376.324c6.627 0 12.078 5.45 12.078 12.078v376.473c0 6.627-5.45 11.93-12.078 11.93zM391.517-34.15499999999997h-295.169v295.021h295.021v-295.021zM932.511 313.45000000000005h-376.324c-6.627 0-12.078-5.45-12.078-12.078v-376.324c0-6.627 5.45-12.078 12.078-12.078h376.324c6.627 0 12.078 5.45 12.078 12.078v376.473c0 6.627-5.45 11.93-12.078 11.93zM891.859-34.15499999999997h-295.021v295.021h295.021v-295.021z"  horiz-adv-x="1024" />
    <glyph glyph-name="prev" unicode="&#58970;" d="M62.573 384.103l423.401 423.662c18.985 18.985 49.757 18.985 68.727 0 18.982-18.972 18.985-49.746 0-68.729l-355.058-355.067 356.796-356.796c18.977-18.971 18.976-49.746 0-68.727-18.982-18.976-49.751-18.976-68.727 0l-39.753 39.753 0.269 0.246-385.655 385.661zM451.365 384.103l423.407 423.662c18.985 18.985 49.757 18.985 68.727 0 18.982-18.972 18.985-49.746 0-68.729l-355.058-355.067 356.796-356.796c18.977-18.971 18.976-49.746 0-68.727-18.982-18.976-49.757-18.977-68.727 0l-39.762 39.754 0.273 0.249-385.662 385.661zM451.365 384.103z"  horiz-adv-x="1024" />
    <glyph glyph-name="website" unicode="&#59310;" d="M777.073418 147.443038c-30.460759 21.387342-40.83038 40.182278-76.47595 53.792405 25.275949 60.273418 40.182278 83.605063 42.126583 154.896203H887.898734c-3.888608-99.159494-45.367089-143.878481-110.825316-208.688608zM136.101266 356.13164600000005h167.210126c1.944304-71.291139 16.850633-94.622785 42.126583-154.896203-34.997468-13.610127-68.050633-31.756962-98.511393-53.792405C181.468354 212.25316499999997 139.989873 256.97215200000005 136.101266 356.13164600000005z m103.048101 259.888607c29.164557-23.979747 61.56962-42.774684 96.567089-57.681012-19.443038-53.792405-30.460759-90.734177-31.756962-152.951899H136.101266c3.240506 90.734177 46.663291 147.767089 103.048101 210.632911z m309.144304-209.98481V523.989873c47.311392 1.296203 71.291139 10.36962 114.065823 25.27595 18.146835-51.2 28.516456-84.901266 30.460759-143.23038H548.293671z m104.344304-195.078481c-40.182278 12.962025-60.273418 20.091139-104.344304 21.387342V356.13164600000005h144.526582c-1.944304-68.050633-16.202532-88.141772-40.182278-145.174684z m36.941772-57.681013c31.756962-12.313924 39.534177-28.516456 66.75443-47.311392-51.848101-44.718987-114.713924-73.883544-182.116455-84.901266 36.941772 37.589873 90.734177 82.308861 115.362025 132.212658z m-163.321519-137.397468l22.035443 165.913924c40.182278-1.296203 56.38481-7.777215 92.678481-18.794937-27.220253-56.38481-66.106329-106.288608-113.417722-147.118987h-1.296202z m-75.827848 5.18481c-67.402532 11.017722-130.268354 40.83038-182.764557 84.901266 27.868354 19.443038 57.681013 34.997468 88.789873 47.311392 23.331646-48.607595 55.088608-93.326582 93.974684-132.212658z m47.311392 335.068355v-123.787342c-44.070886-1.296203-64.162025-8.425316-104.344304-21.387342-23.979747 57.681013-38.237975 77.124051-40.182278 145.174684h144.526582zM383.675949 549.265823c42.774684-14.906329 66.75443-23.331646 114.065823-25.27595v-117.95443H353.21519c1.944304 58.329114 12.313924 92.03038 30.460759 143.23038z m-37.589873 57.032911c-31.756962 12.962025-60.921519 30.460759-88.141772 51.848101 53.792405 51.848101 115.362025 91.382278 192.486076 104.344304-44.718987-44.718987-80.364557-97.863291-104.344304-156.192405z m151.655696 161.377215v-193.782278c-44.070886 1.296203-64.162025 9.073418-103.696202 22.683544 29.164557 68.698734 49.903797 127.027848 102.4 171.098734h1.296202z m75.827848-4.536708c77.772152-13.610127 149.711392-49.903797 206.744304-104.344304-29.164557-22.035443-46.01519-37.589873-80.364557-51.848102-25.275949 59.625316-82.956962 112.76962-126.379747 156.192406z m-46.01519 4.536708c54.440506-46.01519 97.21519-104.992405 124.435443-171.098734-39.534177-13.610127-59.625316-21.387342-103.696202-22.683544l-22.035443 193.782278h1.296202z m-31.10886-751.149367c-46.663291 38.886076-62.865823 88.789873-91.382279 147.118988 36.293671 11.665823 53.144304 17.498734 93.326582 18.794936v-165.913924h-1.944303zM887.898734 406.035443h-145.174683c-1.296203 61.56962-12.313924 98.511392-31.756962 152.303798 37.589873 15.55443 57.032911 33.053165 88.789873 57.681012 56.38481-62.865823 84.901266-119.898734 88.141772-209.98481z m-375.898734 427.746835c-244.334177 0-442.005063-197.670886-442.005063-442.005063S267.665823-50.227847999999994 512-50.227847999999994s442.005063 197.670886 442.005063 442.005063S756.334177 833.782278 512 833.782278z"  horiz-adv-x="1024" />
    <glyph glyph-name="next" unicode="&#58971;" d="M948.066926 382.958838l-411.990051-412.24426c-18.47333-18.47333-48.417689-18.47333-66.875207 0-18.47333 18.461167-18.47333 48.405526 0 66.875207L814.691135 383.088983 467.512212 730.269123c-18.466032 18.458735-18.466032 48.405526 0 66.873991 18.468465 18.464816 48.410391 18.464816 66.872774 0l38.682336-38.682336-0.261507-0.239614 375.259894-375.265975v0.003649m-378.312834 0L157.756743-29.28542200000004c-18.47333-18.47333-48.415256-18.47333-66.872775 0-18.47333 18.461167-18.47333 48.405526 0 66.875207L436.369787 383.088983 89.19208 730.269123c-18.4636 18.458735-18.4636 48.405526 0 66.873991 18.470898 18.464816 48.415256 18.464816 66.872774 0l38.692067-38.682336-0.266372-0.239614 375.267191-375.265975-0.004865 0.003649m0 0z"  horiz-adv-x="1024" />
    <glyph glyph-name="component" unicode="&#59479;" d="M917.376 652.544L500.8 891.2a34.304 34.304 0 0 1-34.176 0L50.112 652.48a33.92 33.92 0 0 1-17.088-29.376v-477.44c0-12.16 6.528-23.296 17.088-29.44l416.512-238.72a35.136 35.136 0 0 1 34.176 0l416.576 238.72a33.92 33.92 0 0 1 17.088 29.44v477.44a33.92 33.92 0 0 1-17.088 29.44z m-51.264-487.36l-382.4-219.136-382.336 219.136V603.52l382.336 219.136 382.4-219.136v-438.272zM198.784 535.488a33.792 33.792 0 0 1 12.544-46.4l237.824-136.32V83.20000000000005c0-18.816 15.232-33.92 34.176-33.92a33.92 33.92 0 0 1 34.176 33.92V352.384l238.656 136.832a33.856 33.856 0 0 1 12.544 46.4 34.368 34.368 0 0 1-46.72 12.416L483.712 411.52 245.504 548.0319999999999a34.432 34.432 0 0 1-46.72-12.544z"  horiz-adv-x="1024" />
    <glyph glyph-name="android" unicode="&#59012;" d="M391.405714 619.995429a22.308571 22.308571 0 0 1 0 44.544c-11.995429 0-21.723429-10.276571-21.723428-22.272s9.728-22.272 21.723428-22.272z m241.152 0c11.995429 0 21.723429 10.276571 21.723429 22.272s-9.728 22.272-21.723429 22.272a22.308571 22.308571 0 0 1 0-44.544zM168.539429 514.852571a58.514286 58.514286 0 0 0 58.294857-58.294857v-245.723428c0-32.585143-25.709714-58.843429-58.294857-58.843429S109.696 178.285714 109.696 210.834286v245.723428c0 32 26.294857 58.294857 58.843429 58.294857z m605.732571-10.861714v-380.562286c0-34.852571-28.013714-62.866286-62.281143-62.866285h-42.861714v-129.718857c0-32.585143-26.294857-58.843429-58.843429-58.843429s-58.843429 26.294857-58.843428 58.843429v129.718857H472.594286v-129.718857c0-32.585143-26.294857-58.843429-58.843429-58.843429a58.660571 58.660571 0 0 0-58.294857 58.843429l-0.585143 129.718857H312.594286a62.683429 62.683429 0 0 0-62.866286 62.866285V503.990857h524.580571z m-132.571429 231.424c80.018286-41.142857 134.290286-119.990857 134.290286-210.870857H247.424c0 90.843429 54.272 169.728 134.838857 210.870857L341.705143 810.276571a8.338286 8.338286 0 0 0 2.852571 11.446858c3.986286 1.718857 9.142857 0.585143 11.446857-3.437715L397.147429 742.838857c34.852571 15.433143 73.728 23.990857 114.870857 23.990857s80.018286-8.557714 114.870857-23.990857l41.142857 75.446857c2.304 3.986286 7.424 5.156571 11.446857 3.437715a8.338286 8.338286 0 0 0 2.852572-11.446858zM914.267429 456.557714v-245.723428c0-32.585143-26.294857-58.843429-58.843429-58.843429a58.660571 58.660571 0 0 0-58.294857 58.843429v245.723428a58.148571 58.148571 0 0 0 58.294857 58.294857c32.585143 0 58.843429-25.709714 58.843429-58.294857z"  horiz-adv-x="1024" />
    <glyph glyph-name="more" unicode="&#58975;" d="M224 288c-52.928 0-96 43.072-96 96s43.072 96 96 96 96-43.072 96-96-43.072-96-96-96z m288 0c-52.928 0-96 43.072-96 96s43.072 96 96 96 96-43.072 96-96-43.072-96-96-96z m288 0c-52.928 0-96 43.072-96 96s43.072 96 96 96 96-43.072 96-96-43.072-96-96-96z"  horiz-adv-x="1024" />
    <glyph glyph-name="login-wechat" unicode="&#58999;" d="M516.464646 896C233.714646 896 4.464646 666.75 4.464646 384S233.714646-128 516.464646-128s512 229.25 512 512S799.214646 896 516.464646 896z m-74-523.375c-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.5-1.875-0.25-0.75-0.5-1.125-0.5-1.875-0.25-0.75-0.5-1.125-0.5-1.875-0.25-0.75-0.25-1.125-0.5-1.875s-0.5-1.125-0.5-1.875c-0.25-0.75-0.25-1.125-0.5-1.875s-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875c0-0.75-0.25-1.125-0.25-1.875s-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875 0-1.125-0.25-1.875c0-0.75-0.25-1.125-0.25-1.875s0-1.125-0.25-1.875c0-0.75 0-1.125-0.25-1.875 0-0.75 0-1.125-0.25-1.875v-22.5c0-0.75 0-1.125 0.25-1.875 0-0.75 0-1.125 0.25-1.875 0-0.75 0-1.125 0.25-1.875 0-0.75 0-1.125 0.25-1.875 0-0.75 0.25-1.125 0.25-1.875s0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875l0.25-0.875c-4.25-0.25-8.625-0.75-12.75-0.75-3.75-0.25-7.25-0.25-11-0.25-3.5 0-7 0-10.5 0.25-7.25 0.25-14 0.875-20.75 1.875-4.25 0.5-8.125 1.125-12.375 1.875-3.5 0.5-6.75 1.125-10.25 1.875-3 0.5-6.25 1.125-9.25 1.875-3 0.75-5.875 1.125-8.875 1.875-2.75 0.75-5.875 1.125-8.875 1.875-2.75 0.5-5.625 1.125-8.375 1.625l-3.25-1.625-3.75-1.875-4 1.375-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-2.75-1.375-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-2.5-1.375 0.5 1.375 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.5 1.125c-0.5 0.25-0.75 0.5-1.125 0.75-0.875 0.75-1.625 1.125-2.5 1.875s-1.625 1.125-2.5 1.875-1.625 1.125-2.5 1.875c-0.75 0.75-1.625 1.125-2.375 1.875-0.75 0.75-1.625 1.125-2.375 1.875-0.75 0.75-1.625 1.125-2.375 1.875-0.75 0.75-1.625 1.125-2.375 1.875-0.75 0.75-1.375 1.125-2.375 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-1.875 1.875-0.75 0.75-1.375 1.125-1.875 1.875l-1.875 1.875-1.875 1.875-1.875 1.875-1.875 1.875c-0.75 0.75-1.125 1.125-1.625 1.875s-1.125 1.125-1.625 1.875-1.125 1.125-1.625 1.875-1.125 1.125-1.625 1.875-1.125 1.125-1.625 1.875-1.125 1.125-1.625 1.875-0.875 1.125-1.625 1.875c-0.5 0.75-0.875 1.125-1.625 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.125 1.875-0.5 0.75-0.875 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.5 1.125-0.875 1.875-0.25 0.75-0.5 1.125-0.875 1.875-0.25 0.75-0.5 1.125-0.875 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.5 1.875-0.25 0.75-0.5 1.125-0.5 1.875-0.25 0.75-0.5 1.125-0.5 1.875-0.25 0.75-0.25 1.125-0.5 1.875s-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875 0 1.125-0.25 1.875c0 0.75 0 1.125-0.25 1.875 0 0.75 0 1.125-0.25 1.875 0 0.75 0 1.125-0.25 1.875V457.25v1.875 1.875 1.875 1.875 1.875 0.875 0.875 1.875 1.875 1.875 1.875 1.875 1.875c0 0.75 0 1.125 0.25 1.875 0 0.75 0 1.125 0.25 1.875 0 0.75 0 1.125 0.25 1.875 0 0.75 0.25 1.125 0.25 1.875s0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.5 1.875c0 0.75 0.25 1.125 0.5 1.875s0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.5 1.125 0.5 1.875c0.25 0.75 0.5 1.125 0.5 1.875 0.25 0.75 0.5 1.125 0.5 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.875 1.875 0.25 0.75 0.5 1.125 0.875 1.875 0.25 0.75 0.5 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.875 1.125 1.125 1.875 0.5 0.75 0.875 1.125 1.125 1.875 0.5 0.75 0.875 1.125 1.125 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.625 1.875 0.5 0.75 0.875 1.125 1.625 1.875 0.5 0.75 1.125 1.125 1.625 1.875s1.125 1.125 1.625 1.875 1.125 1.125 1.625 1.875 1.125 1.125 1.625 1.875 1.125 1.125 1.625 1.875l1.875 1.875 1.875 1.875 1.875 1.875 1.875 1.875c0.75 0.75 1.375 1.125 1.875 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.375 1.875 0.75 0.75 1.625 1.125 2.375 1.875 0.75 0.75 1.625 1.125 2.375 1.875 0.75 0.75 1.625 1.125 2.375 1.875 0.875 0.75 1.625 1.125 2.5 1.875s1.625 1.125 2.5 1.875 1.875 1.125 2.5 1.875c0.875 0.75 1.875 1.125 2.75 1.875 0.875 0.75 1.875 1.125 2.75 1.875 0.875 0.75 1.875 1.125 2.75 1.875 0.875 0.75 1.875 1.125 3 1.875 0.875 0.75 2.125 1.125 3 1.875s2.125 1.125 3 1.875c1.125 0.75 2.125 1.125 3.25 1.875 1.125 0.75 2.375 1.125 3.25 1.875 1.125 0.75 2.375 1.125 3.5 1.875 1.125 0.75 2.375 1.125 3.75 1.875 1.125 0.75 2.5 1.125 3.75 1.875 1.375 0.75 2.5 1.125 4 1.875 1.375 0.75 2.75 1.125 4.25 1.875 1.375 0.75 2.75 1.125 4.25 1.875 1.375 0.75 3 1.125 4.375 1.875 1.625 0.75 3 1.125 4.625 1.875 1.625 0.75 3.25 1.125 4.875 1.875 1.875 0.75 3.5 1.125 5.375 1.875s3.75 1.125 5.625 1.875c2.125 0.75 4.25 1.125 6 1.875 2.375 0.75 4.375 1.125 6.75 1.875 2.5 0.75 4.875 1.125 7.5 1.875 2.75 0.75 5.625 1.125 8.625 1.875 3.5 0.75 6.75 1.125 10.25 1.875 4.375 0.75 8.875 1.375 13.25 1.875 11 1.125 22.125 1.875 33.25 1.875h2.5c11.125 0 22.375-0.75 33.5-1.875 4.375-0.5 8.875-1.125 13.25-1.875 3.5-0.5 7-1.125 10.25-1.875 2.75-0.5 5.875-1.125 8.625-1.875 2.5-0.5 5.125-1.125 7.625-1.875 2.375-0.5 4.625-1.125 6.75-1.875 2.125-0.5 4.25-1.125 6.25-1.875 1.875-0.75 4-1.125 5.875-1.875s3.75-1.125 5.375-1.875c1.625-0.75 3.5-1.125 5.125-1.875 1.625-0.75 3.25-1.125 4.875-1.875 1.625-0.75 3-1.125 4.625-1.875 1.375-0.75 3-1.125 4.375-1.875s2.75-1.125 4.25-1.875c1.375-0.75 2.75-1.125 4-1.875 1.375-0.75 2.5-1.125 3.75-1.875 1.125-0.75 2.5-1.125 3.75-1.875 1.125-0.75 2.375-1.125 3.5-1.875 1.125-0.75 2.375-1.125 3.5-1.875 1.125-0.75 2.375-1.125 3.25-1.875 1.125-0.75 2.125-1.125 3.25-1.875 1.125-0.75 2.125-1.125 3-1.875s2.125-1.125 3-1.875 1.875-1.125 3-1.875c0.875-0.75 1.875-1.125 2.75-1.875 0.875-0.75 1.875-1.125 2.75-1.875 0.875-0.75 1.875-1.125 2.75-1.875 0.875-0.75 1.875-1.125 2.5-1.875 0.875-0.75 1.625-1.125 2.5-1.875s1.625-1.125 2.5-1.875 1.625-1.125 2.375-1.875c0.75-0.75 1.625-1.125 2.375-1.875 0.75-0.75 1.625-1.125 2.375-1.875 0.75-0.75 1.375-1.125 2.375-1.875 0.75-0.75 1.375-1.125 2.375-1.875 0.75-0.75 1.375-1.125 2.125-1.875 0.75-0.75 1.375-1.125 2.125-1.875 0.75-0.75 1.375-1.125 2.125-1.875 0.75-0.75 1.375-1.125 2.125-1.875 0.75-0.75 1.375-1.125 1.875-1.875 0.75-0.75 1.375-1.125 1.875-1.875l1.875-1.875 1.875-1.875 1.875-1.875 1.875-1.875c0.75-0.75 1.125-1.125 1.625-1.875s1.125-1.125 1.625-1.875 1.125-1.125 1.625-1.875 1.125-1.125 1.625-1.875 1.125-1.125 1.625-1.875 0.875-1.125 1.625-1.875c0.5-0.75 0.875-1.125 1.625-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.125-1.875 0.5-0.75 0.875-1.125 1.125-1.875 0.5-0.75 0.875-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.5-1.125 0.875-1.875 0.25-0.75 0.5-1.125 0.875-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.5-1.875 0.25-0.75 0.5-1.125 0.5-1.875 0.25-0.75 0.25-1.125 0.5-1.875s0.5-1.125 0.5-1.875c0.25-0.75 0.25-1.125 0.5-1.875s0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875c0-0.5 0.25-0.75 0.25-1.125-4.625 0.5-9.25 0.875-14 1.125-3.5 0.25-7 0.25-10.75 0.25-4 0-8.125 0-12.125-0.25-6.75-0.25-13.25-0.875-19.5-1.875-3.75-0.5-7.625-1.125-11.375-1.875-3-0.5-5.875-1.125-8.875-1.875-2.5-0.5-5.125-1.125-7.5-1.875-2.125-0.5-4.375-1.125-6.5-1.875-1.875-0.5-4-1.125-5.875-1.875-1.875-0.5-3.5-1.125-5.375-1.875-1.625-0.75-3.25-1.125-4.875-1.875-1.625-0.75-3-1.125-4.625-1.875-1.375-0.75-3-1.125-4.375-1.875s-2.75-1.125-4.25-1.875c-1.375-0.75-2.5-1.125-4-1.875-1.125-0.75-2.5-1.125-3.75-1.875-1.125-0.75-2.375-1.125-3.5-1.875-1.125-0.75-2.375-1.125-3.5-1.875-1.125-0.75-2.125-1.125-3.25-1.875-0.875-0.75-2.125-1.125-3-1.875s-2.125-1.125-3-1.875-1.875-1.125-3-1.875c-0.875-0.75-1.875-1.125-2.75-1.875-0.875-0.75-1.875-1.125-2.75-1.875-0.875-0.75-1.875-1.125-2.5-1.875-0.875-0.75-1.625-1.125-2.5-1.875s-1.625-1.125-2.5-1.875c-0.75-0.75-1.625-1.125-2.375-1.875-0.75-0.75-1.625-1.125-2.375-1.875-0.75-0.75-1.625-1.125-2.375-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-1.875-1.875l-1.875-1.875-1.875-1.875-1.875-1.875c-0.75-0.75-1.125-1.125-1.625-1.875s-1.125-1.125-1.625-1.875-1.125-1.125-1.625-1.875-1.125-1.125-1.625-1.875-1.125-1.125-1.625-1.875-0.875-1.125-1.625-1.875c-0.5-0.75-0.875-1.125-1.625-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.125-1.875-0.5-0.75-0.875-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.5-1.125-0.875-1.875-0.25-0.75-0.5-1.125-0.875-1.875-0.25-0.75-0.5-1.125-0.875-1.875-0.25-0.75-0.5-1.125-0.75-1.875-3.125-4.625-3.375-5.125-3.625-5.75z m433.625-71.25v-11.375c0-0.5 0-0.875-0.25-1.625 0-0.5 0-0.875-0.25-1.625 0-0.5 0-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.5-0.875-0.5-1.625-0.25-0.5-0.5-0.875-0.5-1.625-0.25-0.5-0.5-0.875-0.5-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.875-1.625-0.25-0.5-0.5-0.875-0.875-1.625-0.25-0.5-0.5-0.875-0.875-1.625-0.25-0.5-0.5-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.875-0.875-1.125-1.625-0.5-0.5-0.875-0.875-1.125-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625l-1.625-1.625-1.625-1.625c-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.375-0.875-1.875-1.625-0.75-0.5-1.375-0.875-1.875-1.625-0.75-0.5-1.375-0.875-2.125-1.625-0.75-0.5-1.375-0.875-2.125-1.625l-0.75-0.5 0.25-0.875 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.25-1.125-2.125 1.125-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-0.5 0.25-0.875-0.25c-2.125-0.5-4.25-0.875-6-1.625-2.125-0.5-4.25-0.875-6.25-1.625-2.125-0.5-4.25-0.875-6.5-1.625-2.375-0.5-4.375-0.875-6.75-1.625-2.375-0.5-4.875-1.125-7.25-1.625-2.75-0.5-5.375-1.125-8.125-1.625-3.25-0.5-6.5-1.125-9.75-1.625-5.375-0.75-10.75-1.125-15.875-1.625-2.75-0.25-5.875-0.25-8.625-0.25-3.75 0-7.5 0-11.125 0.25-6.5 0.25-12.75 0.75-19.125 1.625-3.75 0.5-7.5 0.875-11 1.625-2.75 0.5-5.875 0.875-8.625 1.625-2.375 0.5-4.875 0.875-7.25 1.625-2.125 0.5-4.25 0.875-6.25 1.625-1.875 0.5-3.75 0.875-5.625 1.625-1.875 0.5-3.5 0.875-5.125 1.625-1.625 0.5-3.25 0.875-4.875 1.625-1.375 0.5-3 0.875-4.375 1.625-1.375 0.5-2.75 0.875-4.25 1.625-1.375 0.5-2.5 0.875-4 1.625-1.125 0.5-2.5 0.875-3.75 1.625-1.125 0.5-2.375 0.875-3.75 1.625-1.125 0.5-2.375 0.875-3.5 1.625-1.125 0.5-2.125 0.875-3.25 1.625-1.125 0.5-2.125 0.875-3.25 1.625-0.875 0.5-2.125 0.875-3 1.625-0.875 0.5-1.875 0.875-3 1.625-0.875 0.5-1.875 0.875-2.75 1.625-0.875 0.5-1.875 0.875-2.75 1.625-0.875 0.5-1.875 0.875-2.5 1.625-0.875 0.5-1.625 0.875-2.5 1.625-0.875 0.5-1.625 0.875-2.5 1.625-0.75 0.5-1.625 0.875-2.375 1.625-0.75 0.5-1.625 0.875-2.375 1.625-0.75 0.5-1.625 0.875-2.375 1.625-0.75 0.5-1.375 0.875-2.375 1.625-0.75 0.5-1.375 0.875-2.125 1.625-0.75 0.5-1.375 0.875-2.125 1.625-0.75 0.5-1.375 0.875-2.125 1.625-0.75 0.5-1.375 0.875-2.125 1.625-0.75 0.5-1.375 0.875-1.875 1.625-0.75 0.5-1.375 0.875-1.875 1.625-0.75 0.5-1.125 0.875-1.875 1.625-0.75 0.5-1.125 0.875-1.875 1.625-0.75 0.5-1.125 0.875-1.875 1.625-0.75 0.5-1.125 0.875-1.875 1.625-0.5 0.5-1.125 0.875-1.625 1.625-0.5 0.5-1.125 0.875-1.625 1.625-0.5 0.5-1.125 0.875-1.625 1.625-0.5 0.5-1.125 0.875-1.625 1.625l-1.625 1.625-1.625 1.625c-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.125 1.625-0.5 0.5-0.875 0.875-1.125 1.625-0.5 0.5-0.875 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.5 0.875-0.875 1.625-0.25 0.5-0.5 0.875-0.875 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5 0 0.875-0.25 1.625 0 0.5 0 0.875-0.25 1.625 0 0.5 0 0.875-0.25 1.625v1.625 1.625 1.625 3.25 1.625 3.25 1.375 1.625 1.625 1.625 1.625 1.625 1.625 1.625 1.625 1.625c0 0.5 0 0.875 0.25 1.625 0 0.5 0 0.875 0.25 1.625 0 0.5 0 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.875 1.625 0.25 0.5 0.5 0.875 0.875 1.625 0.25 0.5 0.5 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.875 0.875 1.125 1.625 0.5 0.5 0.875 0.875 1.125 1.625 0.5 0.5 0.875 0.875 1.125 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625l1.625 1.625 1.625 1.625c0.5 0.5 1.125 0.875 1.625 1.625 0.5 0.5 1.125 0.875 1.625 1.625 0.5 0.5 1.125 0.875 1.625 1.625 0.5 0.5 1.125 0.875 1.625 1.625 0.5 0.5 1.125 0.875 1.875 1.625 0.75 0.5 1.125 0.875 1.875 1.625 0.75 0.5 1.125 0.875 1.875 1.625 0.75 0.5 1.125 0.875 1.875 1.625 0.75 0.5 1.375 0.875 1.875 1.625 0.75 0.5 1.375 0.875 1.875 1.625 0.75 0.5 1.375 0.875 2.125 1.625 0.75 0.5 1.375 0.875 2.125 1.625 0.75 0.5 1.375 0.875 2.125 1.625 0.75 0.5 1.375 0.875 2.125 1.625 0.75 0.5 1.375 0.875 2.375 1.625 0.75 0.5 1.625 0.875 2.375 1.625 0.75 0.5 1.625 0.875 2.375 1.625 0.75 0.5 1.625 0.875 2.375 1.625 0.875 0.5 1.625 0.875 2.5 1.625 0.875 0.5 1.625 0.875 2.5 1.625 0.875 0.5 1.875 0.875 2.5 1.625 0.875 0.5 1.875 0.875 2.75 1.625 0.875 0.5 1.875 0.875 2.75 1.625 0.875 0.5 1.875 0.875 3 1.625 0.875 0.5 2.125 0.875 3 1.625 1.125 0.5 2.125 0.875 3.25 1.625 1.125 0.5 2.125 0.875 3.25 1.625 1.125 0.5 2.375 0.875 3.5 1.625 1.125 0.5 2.375 0.875 3.75 1.625 1.125 0.5 2.5 0.875 3.75 1.625 1.375 0.5 2.5 0.875 4 1.625 1.375 0.5 2.75 0.875 4.25 1.625 1.375 0.5 3 0.875 4.375 1.625 1.625 0.5 3.25 0.875 4.875 1.625 1.625 0.5 3.5 0.875 5.125 1.625 1.875 0.5 3.75 0.875 5.875 1.625 2.125 0.5 4.25 1.125 6.25 1.625 2.375 0.5 4.875 1.125 7.25 1.625 2.75 0.5 5.875 1.125 8.625 1.625 3.75 0.75 7.5 1.125 11.125 1.625 9.25 1.125 19.125 1.625 28.875 1.625h1.375c9.25 0 18.375-0.75 27.5-1.625 3.75-0.5 7.25-0.875 10.75-1.625 2.75-0.5 5.625-0.875 8.375-1.625 2.375-0.5 4.625-0.875 7-1.625 2.125-0.5 4.25-0.875 6.25-1.625 1.875-0.5 3.75-0.875 5.625-1.625 1.625-0.5 3.5-0.875 5.125-1.625 1.625-0.5 3.25-0.875 4.625-1.625 1.375-0.5 3-0.875 4.375-1.625 1.375-0.5 2.75-0.875 4.25-1.625 1.375-0.5 2.5-0.875 4-1.625 1.125-0.5 2.5-0.875 3.75-1.625 1.125-0.5 2.375-0.875 3.5-1.625 1.125-0.5 2.375-0.875 3.5-1.625 1.125-0.5 2.125-0.875 3.25-1.625 1.125-0.5 2.125-0.875 3.25-1.625 0.875-0.5 2.125-0.875 3-1.625 0.875-0.5 1.875-0.875 3-1.625 0.875-0.5 1.875-0.875 2.75-1.625 0.875-0.5 1.875-0.875 2.75-1.625 0.875-0.5 1.875-0.875 2.5-1.625 0.875-0.5 1.625-0.875 2.5-1.625 0.875-0.5 1.625-0.875 2.5-1.625 0.875-0.5 1.625-0.875 2.5-1.625 0.75-0.5 1.625-0.875 2.375-1.625 0.75-0.5 1.625-0.875 2.375-1.625 0.75-0.5 1.375-0.875 2.375-1.625 0.75-0.5 1.375-0.875 2.125-1.625 0.75-0.5 1.375-0.875 2.125-1.625 0.75-0.5 1.375-0.875 2.125-1.625 0.75-0.5 1.375-0.875 2.125-1.625 0.75-0.5 1.375-0.875 1.875-1.625 0.75-0.5 1.375-0.875 1.875-1.625 0.75-0.5 1.125-0.875 1.875-1.625 0.75-0.5 1.125-0.875 1.875-1.625 0.75-0.5 1.125-0.875 1.875-1.625 0.75-0.5 1.125-0.875 1.875-1.625 0.5-0.5 1.125-0.875 1.625-1.625 0.5-0.5 1.125-0.875 1.625-1.625 0.5-0.5 1.125-0.875 1.625-1.625 0.5-0.5 1.125-0.875 1.625-1.625 0.5-0.5 1.125-0.875 1.625-1.625l1.625-1.625 1.625-1.625c0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.875-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.5-1.625 0.25-0.5 0.5-0.875 0.5-1.625 0.25-0.5 0.5-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625v-11.375h-3.125zM589.714646 384c-12.625 0-25.375-12.75-25.375-25.375 0-12.75 12.75-25.375 25.375-25.375 19.375 0 31.875 12.625 31.875 25.375-0.125 12.625-12.75 25.375-31.875 25.375zM729.589646 384c-12.625 0-25.375-12.75-25.375-25.375 0-12.75 12.75-25.375 25.375-25.375 19.125 0 31.875 12.625 31.875 25.375 0 12.625-12.75 25.375-31.875 25.375zM328.714646 568.75c-19.125 0-38.375-12.625-38.375-31.625 0-19.125 19.375-31.875 38.375-31.875s31.875 12.75 31.875 31.875-12.875 31.625-31.875 31.625zM506.964646 568.75c-19.125 0-38.125-12.625-38.125-31.625 0-19.125 19.125-31.875 38.125-31.875 19.125 0 31.875 12.75 31.875 31.875s-12.875 31.625-31.875 31.625z"  horiz-adv-x="1059" />
    <glyph glyph-name="shrink-right" unicode="&#58984;" d="M52.294-28.71900000000005h899.793c16.546 0 29.999 13.405 29.999 29.999v59.974c-0.013 16.562-13.436 29.985-29.998 29.999h-899.795c-16.57 0-29.999-13.429-29.999-29.999v-59.974c0-16.617 13.429-29.999 29.999-29.999zM952.087 451.165h-479.884c-16.57 0-29.999-13.405-29.999-29.999v-59.974c0 0 0 0 0 0 0-16.572 13.428-30.01 29.997-30.022h479.885c16.571 0.013 29.999 13.448 29.999 30.022 0 0 0 0 0 0v59.974c0 16.593-13.429 29.999-29.999 29.999zM52.294 691.0840000000001h899.793c16.554 0.013 29.972 13.423 29.999 29.974v59.999c0 16.57-13.429 29.999-29.999 29.999h-899.793c-16.57 0-29.999-13.429-29.999-29.999v-59.997c0-16.546 13.429-29.975 29.999-29.975zM45.183 383.53499999999997l239.919-150.598v301.196l-239.919-150.598z"  horiz-adv-x="1024" />
    <glyph glyph-name="spread-left" unicode="&#58987;" d="M942.974 770.924h-843.556c-15.513 0-28.124-12.567-28.124-28.124v-56.226c0.012-15.527 12.596-28.111 28.123-28.124h843.559c15.534 0 28.124 12.59 28.124 28.124v56.226c0 15.578-12.59 28.124-28.124 28.124zM99.418 321.033h449.891c15.534 0 28.124 12.567 28.124 28.124v56.226c0 0 0 0 0 0 0 15.537-12.589 28.134-28.122 28.146h-449.892c-15.534-0.012-28.124-12.608-28.124-28.146 0 0 0 0 0 0v-56.226c0-15.556 12.59-28.124 28.124-28.124zM942.974 96.10900000000004h-843.556c-15.519-0.012-28.099-12.584-28.124-28.101v-56.249c0-15.534 12.59-28.124 28.124-28.124h843.556c15.534 0 28.124 12.59 28.124 28.124v56.248c0 15.513-12.59 28.103-28.124 28.102zM949.641 384.436l-224.924 141.186v-282.37l224.924 141.186z"  horiz-adv-x="1024" />
    <glyph glyph-name="camera" unicode="&#58976;" d="M884.3 648.6H704.2L679.5 698l-0.2 0.4c-1.9 3.6-3.6 6.9-5.1 9.9-12 23.4-21.5 41.9-54.1 41.9H416.7c-32.9 0-43.7-21.3-55.1-43.8-1.3-2.6-2.7-5.3-4.2-8.1l-24.8-49.7H152.4c-34 0-61.7-27.7-61.7-61.7v-488c0-34 27.7-61.7 61.7-61.7h731.9c34 0 61.7 27.7 61.7 61.7v488c0 34-27.7 61.7-61.7 61.7zM904 98.89999999999998c0-10.8-8.8-19.7-19.7-19.7H152.4c-10.8 0-19.7 8.8-19.7 19.7v488c0 10.8 8.8 19.7 19.7 19.7h206.1l36.2 72.5c1.5 2.9 2.9 5.7 4.3 8.3 10.6 20.8 11.1 20.8 17.7 20.8H620c4.6 0 5.8-0.6 5.8-0.6 2-1.2 7.2-11.2 10.9-18.5 1.6-3.1 3.3-6.5 5.3-10.1l36.2-72.4h206.1c10.8 0 19.7-8.8 19.7-19.7v-488zM525.5 565.5c-123.5 0-223.6-100.1-223.6-223.6S402 118.20000000000005 525.5 118.20000000000005s223.7 100.1 223.7 223.7c0 123.5-100.2 223.6-223.7 223.6z m0-402.5c-98.8 0-178.9 80.1-178.9 178.9 0 98.8 80.1 178.9 178.9 178.9 98.8 0 178.9-80.1 178.9-178.9 0-98.8-80.1-178.9-178.9-178.9z m246 402.5v-44.7H861v44.7h-89.5z"  horiz-adv-x="1024" />
    <glyph glyph-name="note" unicode="&#58990;" d="M987.2 384.36L512.43 859.13a84.75 84.75 0 0 1-65 24.71L111.55 864.09a84.83 84.83 0 0 1-79.65-79.65L12.15 448.57a84.57 84.57 0 0 1 24.69-65l474.8-474.8a84.91 84.91 0 0 1 119.93 0L987.2 264.41999999999996a84.9 84.9 0 0 1 0 119.94z m-39.28-80.66L592.29-51.91999999999996a29.31 29.31 0 0 0-41.37 0L76.1 422.9a29.22 29.22 0 0 0-8.49 22.38l19.74 335.88a29.29 29.29 0 0 0 27.48 27.48l335.9 19.75a29.32 29.32 0 0 0 22.38-8.52l474.8-474.8a29.31 29.31 0 0 0 0.01-41.37zM236.86 659.14c-50.92-50.95-50.92-133.8 0-184.72a130.61 130.61 0 1 1 184.71 184.72c-50.89 50.86-133.77 50.86-184.71 0zM382.29 513.7c-28.38-28.38-77.78-28.38-106.15 0a75.08 75.08 0 1 0 106.15 0z"  horiz-adv-x="1024" />
    <glyph glyph-name="refresh" unicode="&#58985;" d="M928 810.666667c-18.133333 0-32-13.866667-32-32v-164.266667C816 747.733333 669.866667 832 512 832 264.533333 832 64 631.4666669999999 64 384s200.533333-448 448-448c230.4 0 422.4 172.8 445.866667 402.133333 2.133333 17.066667-10.666667 33.066667-28.8 35.2-17.066667 2.133333-33.066667-10.666667-35.2-28.8C873.6 148.26666699999998 709.333333 0 512 0c-212.266667 0-384 171.733333-384 384s171.733333 384 384 384c137.6 0 264.533333-74.666667 332.8-192H693.333333c-18.133333 0-32-13.866667-32-32s13.866667-32 32-32h266.666667V778.666667c0 18.133333-14.933333 32-32 32z"  horiz-adv-x="1024" />
    <glyph glyph-name="female" unicode="&#58977;" d="M774.4 800c-48 35.2-108.8 51.2-172.8 51.2-105.6 0-208-51.2-268.8-150.4-89.6-134.4-57.6-313.6 60.8-416l-32-51.2-188.8 121.6S128 384 108.8 352c-22.4-35.2 22.4-64 22.4-64l188.8-121.6-105.6-163.2s-19.2-32 16-51.2c38.4-22.4 57.6 12.8 57.6 12.8l102.4 160 185.6-121.6s48-28.8 70.4 6.4c19.2 28.8-25.6 57.6-25.6 57.6L432 192l32 48c44.8-22.4 92.8-32 137.6-32 105.6 0 208 51.2 268.8 150.4 96 147.2 51.2 345.6-96 441.6z m35.2-400c-44.8-67.2-118.4-108.8-201.6-108.8-44.8 0-92.8 12.8-131.2 38.4-112 73.6-147.2 220.8-73.6 332.8 44.8 64 121.6 105.6 201.6 108.8 44.8 0 92.8-12.8 131.2-38.4 112-73.6 147.2-220.8 73.6-332.8z"  horiz-adv-x="1024" />
    <glyph glyph-name="male" unicode="&#58978;" d="M889.6 800h-240s-35.2 0-38.4-41.6c0-19.2 16-38.4 38.4-38.4h140.8l-179.2-179.2C556.8 582.4 489.6 608 416 608 240 608 96 464 96 288s144-320 320-320 320 144 320 320c0 73.6-25.6 140.8-67.2 195.2l179.2 179.2v-140.8c0-22.4 19.2-38.4 38.4-38.4 22.4 0 38.4 19.2 38.4 41.6V764.8h3.2C924.8 800 889.6 800 889.6 800zM416 48c-131.2 0-236.8 105.6-236.8 236.8 0 131.2 105.6 236.8 236.8 236.8s236.8-105.6 236.8-236.8c0-131.2-105.6-236.8-236.8-236.8z"  horiz-adv-x="1024" />
    <glyph glyph-name="screen-restore" unicode="&#59224;" d="M582.6 454.6v320h50V540l274 274 35.4-35.4-274-274h234.6v-50h-320zM117.4-46l274 274v-234.6h50v320h-320v-50H356l-274-274 35.4-35.4zM132 764h302V814H82v-352h50V764z m760-760H590v-50h352V306h-50v-302z"  horiz-adv-x="1024" />
    <glyph glyph-name="password" unicode="&#58995;" d="M519.2 343.29999999999995c-41.1 0-74.4-33.3-74.4-74.4 0-29.7 17.5-55 42.5-67.1v-81.9c0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9v81.9c25.1 12 42.5 37.4 42.5 66.9 0 41.3-33.2 74.6-74.4 74.6zM827.6-62.10000000000002H189.4c-35.9 0-65.1 29.2-65.1 65.1V428.4c0 35.9 29.2 65.1 65.1 65.1h638.2c17.3 0 33.7-6.7 46-19.1 12.3-12.3 19.1-28.7 19.1-46V3c0-35.9-29.2-65.1-65.1-65.1zM231.9 427.2c-34.8 0-41.3-6.6-41.3-41.3v-340.4c0-34.8 6.6-41.3 41.3-41.3h553.2c34.8 0 41.3 6.6 41.3 41.3V385.9c0 34.8-6.6 41.3-41.3 41.3H231.9zM519.2 86.70000000000005c-18.3 0-33.2 14.8-33.2 33.2V201c-26.3 12.8-42.6 38.8-42.6 67.8 0 41.8 33.9 75.7 75.7 75.7s75.7-33.9 75.7-75.7c0-29-16.3-55-42.5-67.8v-81.1c0.1-18.2-14.9-33.2-33.1-33.2zM519.2 342c-40.4 0-73.2-32.9-73.2-73.2 0-28.3 16.1-53.6 41.9-65.8l0.7-0.4V120c0-17 13.7-30.7 30.7-30.7S550 103.10000000000002 550 120v82.6l0.7 0.4c25.8 12.3 41.9 37.5 41.9 65.8-0.2 40.4-33.1 73.2-73.4 73.2zM207 523.1c-9.1 0-17.6 3.5-23.9 10-6.4 6.4-10 15-10 23.9v2h-0.2l0.2 1.4c0.1 0.5 0.1 0.9 0.2 1.4l0.2 1c0.1 0.6 0.2 1.4 0.4 2 15.3 75.7 57 144.2 117.2 193 29.9 24.2 63.4 43 99.8 56 37.5 13.3 77 20.2 117.5 20.2 61 0 120.8-16.3 173-47.2 50.6-29.9 93-72.8 122.5-123.8 4-5.6 6.1-12.2 6.1-19.2 0-18.3-15-33.3-33.3-33.3-13.2 0-25.1 7.7-30.4 19.8-49.2 84.6-140.4 137.4-238 137.4-128.1 0-238.2-87.1-267.6-211.8v-0.2c-0.7-18.4-15.4-32.6-33.7-32.6z"  horiz-adv-x="1024" />
    <glyph glyph-name="senior" unicode="&#58996;" d="M719.9 249.39999999999998L514.7 379.5V485.1C615.6 419 731.5 344 731.5 344s139.2-45.6 139.2 106.5c0 93-172.5 112.1-197.2 11.8l-69.6 47.3s24.2 101.5 162.4 106.5c138.2 4.9 192-94.6 190.9-199.6-1.2-104.7-136-198.3-237.3-167.1zM561 414c-4-19-23-33.7-47.6-33.7l-6.9 4.3-217.3 137.8S171 555.2 160.8 439c-10.2-116.1 147.4-129.5 186.8-23.8l81.7-47.6s-65.1-119.1-198.5-119.1C97.3 248.5 0.6 423.8 114 546.3c113.5 122.4 218.6 64.6 257 35.7 16.4-12.4 85.3-57.9 158.6-105.9l3.1-2.4c28.3-18.2 33.4-35.6 28.3-59.7zM434.1 149.70000000000005h212c16.7 0 30.3-13.6 30.3-30.3v-15.1c0-16.7-13.6-30.3-30.3-30.3h-212c-16.7 0-30.3 13.6-30.3 30.3v15.1c0 16.8 13.6 30.3 30.3 30.3z"  horiz-adv-x="1024" />
    <glyph glyph-name="theme" unicode="&#58986;" d="M512 800C229.696 800 0 570.304 0 288c0-90.368 30.304-174.496 85.344-236.896 55.264-62.624 129.152-97.12 208.128-97.12 81.568 0 161.536 36.832 231.264 106.592l2.272 2.496c65.792 81.472 132.896 121.056 205.088 121.056 46.72 0 89.216-15.872 126.688-29.92 30.336-11.328 56.576-21.12 81.216-21.12C1024 133.08799999999997 1024 241.664 1024 288c0 282.304-229.696 512-512 512z m428-602.912c-13.088 0-35.296 8.288-58.784 17.088-40.48 15.136-90.848 33.952-149.12 33.952-92.352 0-175.328-46.944-253.76-143.456-57.184-56.704-121.056-86.688-184.832-86.688-60.352 0-117.216 26.784-160.128 75.456C88.64 144.12800000000004 64 213.216 64 288 64 535.04 264.96 736 512 736s448-200.96 448-448c0-27.328-1.952-90.912-20-90.912zM800.704 379.93600000000004m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM457.024 582.624m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM672.704 555.9359999999999m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM291.392 443.936m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM278.4 197.24800000000005m-96 0a96 96 0 1 1 192 0 96 96 0 1 1-192 0Z"  horiz-adv-x="1024" />
    <glyph glyph-name="tread" unicode="&#59077;" d="M860.8 172.79999999999995l6.4-57.6-6.4 57.6c12.8 0 25.6 3.2 35.2 12.8 6.4 9.6 6.4 22.4 3.2 32l57.6 12.8-57.6-12.8L800 553.6c-6.4 28.8-25.6 51.2-48 64-9.6 6.4-22.4 9.6-32 9.6H182.4c-22.4 3.2-41.6-6.4-51.2-25.6-6.4-9.6-6.4-19.2-9.6-28.8v-342.4c0-19.2 9.6-38.4 28.8-48 6.4-3.2 12.8-6.4 19.2-6.4h192l19.2-25.6 147.2-188.8c6.4-9.6 19.2-12.8 28.8-9.6 16 3.2 25.6 19.2 22.4 35.2l-9.6 118.4-6.4 67.2h297.6z m-233.6-57.6l9.6-128c3.2-28.8-9.6-54.4-28.8-73.6-35.2-32-92.8-28.8-124.8 6.4l-156.8 195.2H179.2c-19.2 0-38.4 6.4-57.6 16-35.2 19.2-57.6 57.6-57.6 99.2V572.8c0 19.2 6.4 38.4 16 57.6 19.2 38.4 57.6 60.8 99.2 54.4h537.6c67.2-3.2 121.6-48 137.6-112l102.4-339.2c6.4-28.8 3.2-57.6-12.8-80-19.2-22.4-48-38.4-76.8-38.4h-240zM304 627.2v-451.2h57.6V627.2H304z"  horiz-adv-x="1024" />
    <glyph glyph-name="praise" unicode="&#59078;" d="M860.8 595.2h-297.6l6.4 67.2 9.6 118.4c3.2 16-6.4 32-22.4 35.2-9.6 3.2-22.4 0-28.8-9.6l-147.2-188.8-19.2-25.6h-192c-6.4 0-12.8-3.2-19.2-6.4-19.2-9.6-28.8-28.8-28.8-48v-342.4c0-9.6 3.2-22.4 9.6-28.8 9.6-19.2 28.8-28.8 48-25.6h537.6c12.8 0 22.4 3.2 32 9.6 25.6 12.8 44.8 35.2 48 64l102.4 336 57.6-12.8-57.6 12.8c3.2 9.6 0 22.4-3.2 32-9.6 6.4-22.4 12.8-35.2 12.8l6.4 57.6-6.4-57.6z m-233.6 57.6h240c28.8 0 57.6-12.8 76.8-38.4 16-22.4 19.2-54.4 12.8-80l-102.4-339.2c-16-64-70.4-108.8-137.6-112H179.2c-41.6-3.2-80 19.2-99.2 54.4-9.6 19.2-16 38.4-16 57.6V537.6c0 41.6 22.4 80 57.6 99.2 19.2 9.6 38.4 12.8 57.6 16h144L480 848c32 35.2 89.6 38.4 124.8 6.4 19.2-19.2 32-44.8 28.8-73.6l-6.4-128z m-323.2-512h57.6V592H304v-451.2z"  horiz-adv-x="1024" />
    <glyph glyph-name="star-fill" unicode="&#58968;" d="M752-43.200000000000045c-9.6 0-20.8 3.2-30.4 8l-208 104-209.6-104c-20.8-11.2-48-9.6-67.2 4.8-19.2 14.4-30.4 40-25.6 64l43.2 224L89.6 411.2C72 428.8 65.6 456 72 478.4c8 24 27.2 41.6 52.8 44.8l228.8 41.6 102.4 208c11.2 22.4 33.6 36.8 57.6 36.8s48-14.4 57.6-36.8l102.4-208 228.8-40c24-3.2 44.8-20.8 51.2-44.8 8-24 1.6-49.6-16-67.2L772.8 257.6l41.6-224c4.8-25.6-6.4-49.6-25.6-64-9.6-8-22.4-12.8-36.8-12.8z"  horiz-adv-x="1024" />
    <glyph glyph-name="rate" unicode="&#59003;" d="M959.008 489.984l-308 47.008L512 832 372.992 536.992l-308-47.008 223.008-228-52.992-324L512 90.976l276.992-152.992-52.992 324zM512 156L304 39.00800000000004l40 235.008-179.008 182.016 242.016 32 104.992 224 104-224 240.992-34.016L680 273.024l36.992-235.008z"  horiz-adv-x="1024" />
    <glyph glyph-name="template-1" unicode="&#58966;" d="M512 384zM43.52 601.6l409.6-176.64c58.88-30.72 110.08 0 110.08 0l414.72 174.08 2.56 2.56c10.24 5.12 15.36 15.36 15.36 28.16 0 15.36-10.24 28.16-23.04 30.72L563.2 837.12c-56.32 23.04-97.28 0-97.28 0L46.08 660.48c-12.8-5.12-20.48-17.92-20.48-30.72s7.68-23.04 17.92-28.16z m0 0M512 222.72000000000003c-2.56 0-7.68 0-10.24 2.56l-486.4 215.04c-12.8 5.12-17.92 20.48-12.8 33.28 5.12 12.8 20.48 17.92 33.28 12.8L512 276.48 988.16 486.4c12.8 5.12 28.16 0 33.28-12.8 5.12-12.8 0-28.16-12.8-33.28l-486.4-215.04c-2.56-2.56-7.68-2.56-10.24-2.56zM512 71.67999999999995c-2.56 0-7.68 0-10.24 2.56l-486.4 215.04c-12.8 5.12-17.92 20.48-12.8 33.28 5.12 10.24 20.48 17.92 33.28 10.24L512 125.44000000000005 988.16 332.79999999999995c12.8 5.12 28.16 0 33.28-12.8 5.12-12.8 0-28.16-12.8-33.28l-486.4-215.04H512zM512-79.36000000000001c-2.56 0-7.68 0-10.24 2.56l-486.4 215.04c-12.8 5.12-17.92 20.48-12.8 33.28 5.12 12.8 20.48 17.92 33.28 12.8L512-25.600000000000023l476.16 209.92c12.8 5.12 28.16 0 33.28-12.8 5.12-12.8 0-28.16-12.8-33.28l-486.4-215.04c-2.56-2.56-7.68-2.56-10.24-2.56z"  horiz-adv-x="1024" />
    <glyph glyph-name="vercode" unicode="&#59001;" d="M513.807059-128C351.171765-128 58.428235 126.19294100000002 54.211765 376.16941199999997V662.287059a93.364706 93.364706 0 0 0 81.317647 88.545882 570.428235 570.428235 0 0 1 163.237647 40.357647A393.336471 393.336471 0 0 1 446.945882 872.508235a101.797647 101.797647 0 0 0 120.470589 5.421177A629.458824 629.458824 0 0 1 716.8 792.395294a1255.303529 1255.303529 0 0 1 169.863529-38.550588 98.785882 98.785882 0 0 0 79.510589-90.955294 2911.171765 2911.171765 0 0 0-3.011765-291.538824C924.611765 49.09176500000001 672.828235-128 513.807059-128z m0 963.764706a39.152941 39.152941 0 0 1-24.696471-7.830588A438.512941 438.512941 0 0 0 319.247059 734.569412a608.376471 608.376471 0 0 0-180.705883-43.369412 33.731765 33.731765 0 0 1-24.094117-30.117647v-283.708235C118.663529 155.10588199999995 389.722353-67.76470600000005 513.807059-67.76470600000005s354.183529 148.178824 391.529412 444.536471c9.035294 175.887059 0 281.901176 0 283.105882a38.550588 38.550588 0 0 1-29.515295 33.731765 1287.830588 1287.830588 0 0 0-180.705882 41.562353A676.442353 676.442353 0 0 0 536.094118 829.741176a37.345882 37.345882 0 0 1-24.094118 6.02353zM784.865882 479.171765L487.905882 198.47529399999996a40.357647 40.357647 0 0 0-49.392941-4.818823l-7.830588 6.625882-161.430588 171.068235a40.357647 40.357647 0 1 0 60.235294 55.416471l133.722353-141.552941 267.444706 252.988235a40.357647 40.357647 0 1 0 55.41647-60.235294"  horiz-adv-x="1024" />
    <glyph glyph-name="service" unicode="&#58918;" d="M849.00812012 487.71642715A27.54528398 27.54528398 0 0 1 849.00812012 496.71080566 337.28919434 337.28919434 0 0 1 174.42973145 496.71080566a27.54528398 27.54528398 0 0 1-1e-8-8.99437852 147.28294776 147.28294776 0 0 1-112.42973144-140.53716386V328.06620849a148.40724551 148.40724551 0 0 1 123.67270459-143.34790781A308.6196126 308.6196126 0 0 1 414.4672083-9.222985839999978h5.05933769a84.32229815 84.32229815 0 1 1 0 56.21486573 252.40474688 252.40474688 0 0 0-172.01748955 137.16427235h31.48032481A35.41536562 35.41536562 0 0 1 314.96689531 215.63647705000005V458.48469697a35.41536562 35.41536562 0 0 1-35.97751406 34.29106787H230.64459717A26.42098711 26.42098711 0 0 1 230.64459717 496.71080566a281.07432862 281.07432862 0 0 0 562.14865723 0 26.42098711 26.42098711 0 0 1 0-3.3728915h-48.34478497a35.41536562 35.41536562 0 0 1-35.97751406-34.29106875V215.63647705000005a35.41536562 35.41536562 0 0 1 35.97751406-34.29106787h63.52279893A150.0936917 150.0936917 0 0 1 961.43785156 328.06620849v19.11305479a147.28294776 147.28294776 0 0 1-112.42973144 140.53716386zM498.22735801 46.991879880000056a28.10743242 28.10743242 0 1 0-28.1074333-28.10743242 28.10743242 28.10743242 0 0 0 28.10743329 28.10743242zM258.75202959 240.37101797000003h-43.28544639A93.87882598 93.87882598 0 0 0 118.21486572 328.06620849v19.11305479a93.87882598 93.87882598 0 0 0 97.25171748 89.94378516h43.28544639zM905.22298584 328.06620849a93.87882598 93.87882598 0 0 0-97.25171748-89.94378515h-43.28544727V437.12304844h43.28544727A93.87882598 93.87882598 0 0 0 905.22298584 347.17926328zM633.70518418 705.83010615l-20.7995001 7.30793232a28.10743242 28.10743242 0 0 1-17.42660859-56.21486571l16.30231084-6.18363458a28.10743242 28.10743242 0 1 1 21.92379785 51.71767646zM330.14490928 639.49656503A28.10743242 28.10743242 0 0 1 376.80324805 609.14053711 177.63897568 177.63897568 0 0 0 511.71892578 676.59837597a28.10743242 28.10743242 0 0 1 0 56.21486573 231.60524678 231.60524678 0 0 1-181.57401651-93.31667667z"  horiz-adv-x="1024" />
    <glyph glyph-name="cellphone" unicode="&#59000;" d="M785.066667 896H238.933333a102.4 102.4 0 0 1-102.4-102.4v-819.2a102.4 102.4 0 0 1 102.4-102.4h546.133334a102.4 102.4 0 0 1 102.4 102.4V793.6a102.4 102.4 0 0 1-102.4 102.4zM238.933333 827.733333h546.133334a34.133333 34.133333 0 0 0 34.133333-34.133333v-648.533333H204.8V793.6a34.133333 34.133333 0 0 0 34.133333 34.133333z m546.133334-887.466666H238.933333a34.133333 34.133333 0 0 0-34.133333 34.133333v102.4h614.4v-102.4a34.133333 34.133333 0 0 0-34.133333-34.133333zM512 8.53333299999997m-34.133333 0a34.133333 34.133333 0 1 1 68.266666 0 34.133333 34.133333 0 1 1-68.266666 0ZM426.666667 725.333333h170.666666a17.066667 17.066667 0 0 1 0 34.133334h-170.666666a17.066667 17.066667 0 0 1 0-34.133334z"  horiz-adv-x="1024" />
    <glyph glyph-name="print" unicode="&#58989;" d="M843.946667 603.733333h-47.36V725.333333a90.026667 90.026667 0 0 1-94.72 85.333334H312.32a81.493333 81.493333 0 0 1-85.333333-85.333334v-121.6H170.666667a81.493333 81.493333 0 0 1-85.333334-85.333333v-325.12a89.173333 89.173333 0 0 1 85.333334-93.866667h56.746666v-52.48a89.6 89.6 0 0 1 89.6-89.6h389.973334a89.6 89.6 0 0 1 89.6 89.6v52.48h47.36a97.706667 97.706667 0 0 1 94.72 93.866667V518.4a90.026667 90.026667 0 0 1-94.72 85.333333zM279.466667 725.333333a30.72 30.72 0 0 0 32.853333 33.706667h389.546667c18.773333 0 42.666667-11.52 42.666666-33.706667v-121.6H279.466667z m465.066666-678.4a37.546667 37.546667 0 0 0-37.546666-37.973333H317.013333a37.546667 37.546667 0 0 0-37.546666 37.973333v170.666667a37.546667 37.546667 0 0 0 37.546666 38.4h389.973334a37.546667 37.546667 0 0 0 37.546666-37.973333z m142.506667 146.346667a45.653333 45.653333 0 0 0-42.666667-42.666667h-47.786666v66.133334a89.6 89.6 0 0 1-89.6 89.6H317.013333a89.6 89.6 0 0 1-89.6-89.6v-65.28H170.666667a37.546667 37.546667 0 0 0-33.28 42.666666v324.266667A31.146667 31.146667 0 0 0 170.666667 552.106667h673.28c19.2 0 42.666667-11.52 42.666666-33.706667z m-640 281.173333h-37.546667a13.226667 13.226667 0 0 0 0 26.026667h38.826667a13.226667 13.226667 0 1 0 0-26.026667z m94.293333 0H298.666667a13.226667 13.226667 0 1 0 0 26.026667h42.666666a13.226667 13.226667 0 0 0 0-26.026667z m426.666667-116.48H248.32a13.226667 13.226667 0 0 0 0 26.026667H768a13.226667 13.226667 0 0 0 0-26.026667z"  horiz-adv-x="1024" />
    <glyph glyph-name="cols" unicode="&#58896;" d="M128 448h384V832H128z m64 320h256v-256H192zM576 832v-384h384V832z m320-320H640V768h256zM192 384h64v-384H192zM384 384h64v-384H384zM640 384h64v-384H640zM832 384h64v-384h-64z"  horiz-adv-x="1024" />
    <glyph glyph-name="wifi" unicode="&#59360;" d="M723 275.5C666.8 324.4 593.4 354 513 354s-153.8-29.6-210.1-78.6c-3.2-2.8-3.6-7.8-0.8-11.2l36-42.9c2.9-3.4 8-3.8 11.4-0.9C393.1 258.8 450.3 282 513 282s119.9-23.2 163.5-61.5c3.4-2.9 8.5-2.5 11.4 0.9l36 42.9c2.8 3.3 2.4 8.3-0.9 11.2zM840.4 415.6C751.7 489.5 637.6 534 513 534s-238.7-44.5-327.5-118.4c-3.4-2.8-3.8-7.9-1-11.3l36-42.9c2.8-3.4 7.9-3.8 11.2-1C308 423.8 406.1 462 513 462s205-38.2 281.2-101.6c3.4-2.8 8.4-2.4 11.2 1l36 42.9c2.8 3.4 2.4 8.5-1 11.3zM957.1 554.6C835.7 654.2 680.3 714 511 714c-168.2 0-322.6-59-443.7-157.4-3.5-2.8-4-7.9-1.1-11.4l36-42.9c2.8-3.3 7.8-3.8 11.1-1.1C222 589.3 360.3 642 511 642c151.8 0 291-53.5 400-142.7 3.4-2.8 8.4-2.3 11.2 1.1l36 42.9c2.9 3.4 2.4 8.5-1.1 11.3zM512 118m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0Z"  horiz-adv-x="1024" />
    <glyph glyph-name="export" unicode="&#59005;" d="M896.4374528 479.830016c0 26.673152-21.6236032 48.2967552-48.2967552 48.2967552H630.8069376c-26.673152 0-48.2967552-21.6236032-48.2967552-48.2967552v-83.04831147H384.69522773l-2.71428266 5.36849067c-41.336832 87.44686933-35.95195733 204.128256 150.601728 199.94487467v-108.91537067l172.19037866 164.757504L532.58267307 822.7110912v-106.57245867c-228.64418133 5.70709333-263.651328-183.517184-157.433856-314.01028266l4.6891008-5.34664534h-88.46595414c-26.673152 0-48.2967552-21.6236032-48.2967552-48.2967552v-66.78882986h-98.43616426c-26.673152 0-40.4258816-21.6236032-30.71781547-48.2967552l79.10304427-217.33485227c9.70806613-26.673152 39.20145067-48.2967552 65.87460266-48.2967552h603.70670934c23.75898453 0 37.2506624 17.16169387 33.05745066 39.76178347 0.4980736 2.77108053 0.77441707 5.619712 0.77441707 8.53497173v463.765504z m-60.37067093-306.4528896l-21.8464256 60.02223787c-9.70806613 26.673152-39.20145067 48.2967552-65.87460267 48.2967552H303.44697173v30.56708266c0 13.336576 10.81125547 24.14783147 24.14783147 24.14783147h315.28605013v107.1972352c0 13.336576 10.81125547 24.14783147 24.14783147 24.14783147h144.88917333c13.336576 0 24.14783147-10.81125547 24.14783147-24.14783147v-270.2311424z"  horiz-adv-x="1024" />
    <glyph glyph-name="rss" unicode="&#59400;" d="M810.666667 42.624C810.666667 395.562667 523.562667 682.666667 170.666667 682.666667v-85.333334c305.834667 0 554.666667-248.832 554.666666-554.709333h85.333334zM512 42.624h85.333333C597.333333 277.930667 405.930667 469.333333 170.666667 469.333333v-85.333333c188.202667 0 341.333333-153.130667 341.333333-341.376zM256 128m-85.333333 0a85.333333 85.333333 0 1 1 170.666666 0 85.333333 85.333333 0 1 1-170.666666 0Z"  horiz-adv-x="1024" />
    <glyph glyph-name="slider" unicode="&#59156;" d="M228.7 683.9v-66.7H112v66.7h116.7z m333.2-266.6v-66.7H112v66.7h449.9zM295.4 150.60000000000002V84H112v66.7h183.4v-0.1z m116.6 600c9 0 16.8-3.3 23.5-9.9 6.5-6.5 9.9-14.5 9.9-23.5v-133.3c0-9-3.3-16.8-9.9-23.5-6.5-6.5-14.5-9.9-23.5-9.9H278.8c-9 0-16.8 3.3-23.5 9.9-6.5 6.5-9.9 14.3-9.9 23.5V717.1c0 9 3.3 16.8 9.9 23.5 6.5 6.5 14.3 9.9 23.5 9.9h133.3v0.1h-0.1z m66.7-533.3c9 0 16.8-3.3 23.5-9.9 6.5-6.5 9.9-14.5 9.9-23.5v-133.3c0-9-3.3-16.8-9.9-23.5-6.5-6.5-14.5-9.9-23.5-9.9H345.3c-9 0-16.8 3.3-23.5 9.9-6.5 6.5-9.9 14.5-9.9 23.5V183.89999999999998c0 9 3.3 16.8 9.9 23.5 6.5 6.5 14.3 9.9 23.5 9.9h133.4v0.1zM912 683.9v-66.7H462.1v66.7H912z m0-533.3V84H528.6v66.7h383.3v-0.1h0.1zM745.2 483.9c9 0 16.8-3.3 23.5-9.9 6.5-6.5 9.9-14.5 9.9-23.5v-133.3c0-9-3.3-16.8-9.9-23.5-6.5-6.5-14.5-9.9-23.5-9.9H612c-9 0-16.8 3.3-23.5 9.9-6.5 6.5-9.9 14.3-9.9 23.5V450.6c0 9 3.3 16.8 9.9 23.5 6.5 6.5 14.5 9.9 23.5 9.9l133.2-0.1zM912 417.3v-66.7H795.3v66.7H912z"  horiz-adv-x="1024" />
    <glyph glyph-name="email" unicode="&#58904;" d="M834.446 682.553H194.105c-50.176 0-91.022-40.846-91.022-91.022v-423.026c0-50.176 40.846-91.022 91.022-91.022h640.341c50.176 0 91.022 40.846 91.022 91.022V591.531c0 50.176-40.846 91.022-91.022 91.022z m36.409-514.048c0-20.025-16.384-36.409-36.409-36.409H194.105c-20.025 0-36.409 16.384-36.409 36.409V591.531c0 20.025 16.384 36.409 36.409 36.409h640.341c20.025 0 36.409-16.384 36.409-36.409v-423.026zM786.773 537.941L514.275 366.023 241.777 537.941c-12.743 8.078-29.582 4.21-37.661-8.533-8.078-12.743-4.21-29.582 8.533-37.661l286.72-180.907c4.551-2.845 9.557-4.21 14.563-4.21h0.91c5.006 0 10.013 1.365 14.563 4.21l286.72 180.907c12.743 8.078 16.611 24.917 8.533 37.661-8.306 12.857-25.145 16.611-37.888 8.533z"  horiz-adv-x="1024" />
    <glyph glyph-name="subtraction" unicode="&#59006;" d="M785 348H239c-19.8 0-36 16.2-36 36s16.2 36 36 36h546c19.8 0 36-16.2 36-36s-16.2-36-36-36z"  horiz-adv-x="1024" />
    <glyph glyph-name="mike" unicode="&#59100;" d="M512 256c115.2 0 208 92.8 208 208V624c0 115.2-92.8 208-208 208s-208-92.8-208-208v-160c0-115.2 92.8-208 208-208zM368 624c0 80 64 144 144 144s144-64 144-144v-160c0-80-64-144-144-144s-144 64-144 144V624zM844.8 416c0 17.6-14.4 32-32 32-16 0-30.4-12.8-32-28.8C758.4 289.6 646.4 192 512 192s-246.4 97.6-268.8 227.2c-1.6 16-16 28.8-32 28.8-17.6 0-32-14.4-32-32v-4.8C204.8 260.79999999999995 328 144 480 129.60000000000002V-32c0-17.6 14.4-32 32-32s32 14.4 32 32V129.60000000000002c152 14.4 275.2 131.2 299.2 280 0 1.6 1.6 4.8 1.6 6.4z"  horiz-adv-x="1024" />
    <glyph glyph-name="light" unicode="&#59208;" d="M512 72c-172.313 0-312 139.687-312 312s139.687 312 312 312 312-139.687 312-312-139.687-312-312-312z m0 64c136.967 0 248 111.033 248 248 0 136.967-111.033 248-248 248-136.967 0-248-111.033-248-248 0-136.967 111.033-248 248-248z m0 696c17.673 0 32-14.327 32-32v-51c0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32V800c0 17.673 14.327 32 32 32z m0-785c17.673 0 32-14.327 32-32v-51c0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32v51c0 17.673 14.327 32 32 32z m325.945 11.055c-12.497-12.496-32.758-12.496-45.255 0l-36.063 36.063c-12.496 12.497-12.496 32.758 0 45.255 12.497 12.496 32.758 12.496 45.255 0l36.063-36.063c12.496-12.497 12.496-32.758 0-45.255z m-568 565c-12.497-12.496-32.758-12.496-45.255 0l-36.063 36.063c-12.496 12.497-12.496 32.758 0 45.255 12.497 12.496 32.758 12.496 45.255 0l36.063-36.063c12.496-12.497 12.496-32.758 0-45.255z m561 81.318c12.496-12.497 12.496-32.758 0-45.255l-36.063-36.063c-12.497-12.496-32.758-12.496-45.255 0-12.496 12.497-12.496 32.758 0 45.255l36.063 36.063c12.497 12.496 32.758 12.496 45.255 0z m-563.572-565c12.496-12.497 12.496-32.758 0-45.255l-36.063-36.063c-12.497-12.496-32.758-12.496-45.255 0-12.496 12.497-12.496 32.758 0 45.255l36.063 36.063c12.497 12.496 32.758 12.496 45.255 0zM960 384c0-17.673-14.327-32-32-32h-51c-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32h51c17.673 0 32-14.327 32-32z m-781 0c0-17.673-14.327-32-32-32H96c-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32h51c17.673 0 32-14.327 32-32z"  horiz-adv-x="1024" />
    <glyph glyph-name="gift" unicode="&#58919;" d="M796.3 600h-6.7c5.1 6.7 9.6 13.4 13.4 20.1 18.3 32.2 20.8 63.1 7 87.1-9.1 15.7-33 41.2-91.9 36-35.4-3.2-76.1-17.2-114.7-39.4-37.9-21.9-68.9-49.3-89-77.5-4.5 6.4-9.5 12.8-15.1 19.1-19.8 22.3-45.4 42.8-74.1 59.4-38.4 22.2-79.3 35.9-115.1 38.5-43.3 3.2-75.8-10-91.4-37-13.8-24-11.3-54.8 7-86.7 3.7-6.5 8.1-13 13.1-19.5H236c-21.3 0-41.6-7.2-57.4-20.2-17.8-14.9-27.6-35.4-27.6-58v-50.8c0-34.4 23-64.6 55-76.6v-283.9c0-23.3 10.9-47.1 30.1-65.3 18.3-17.4 41.4-27.3 63.4-27.3h434.3c22 0 44.9 10 63 27.6 18.7 18.1 29.3 41.8 29.3 65.1V395c11 4.3 19.6 10.9 27.2 19.5 13.3 15.1 20.8 35.2 20.8 56.6v50.8c-0.1 45.3-32.8 78.1-77.8 78.1z m17.7-78.1v-50.8c0-7.7-3.2-20.3-15-22-0.9 0.1-1.7 0.1-2.6 0.1-1.5 0-2.9-0.1-4.3-0.3H543v91h253.3c11.9 0.1 17.7-5.8 17.7-18zM633.4 651.8c30.7 17.7 63.5 29.2 90 31.6 21.5 1.9 32.6-2.8 34.6-6.3 4.2-7.3-6.3-41.2-52.9-77.2H569.8c14 17 35.3 35.6 63.6 51.9z m-362.8 24.4c2.2 3.7 13.3 8.7 35 7.1 26.6-1.9 59.2-13.1 89.5-30.6 27.7-16 49.4-35.1 63.9-52.8H323.5c-20.3 15.6-36.4 32.9-45.8 49.4-8.9 15.6-8.5 24.4-7.1 26.9zM211 521.9c0 11.2 12.9 18.1 24.9 18.1H483v-91H240.1c-1.4 0.2-2.8 0.3-4.3 0.3-0.9 0-1.8 0-2.7-0.1-11.5 1.5-22.1 11.6-22.1 22v50.7z m55-411.3V389h217v-311H299.4c-13.2 0-33.4 17.5-33.4 32.6zM733.7 78H543V389h223v-278.4c0-15.5-19.1-32.6-32.3-32.6z"  horiz-adv-x="1024" />
    <glyph glyph-name="mute" unicode="&#59013;" d="M739 294.4l180.2 180.2M735.391 297.9l180.24 180.24 7.07-7.07-180.239-180.24zM631.4-29.700000000000045c-5.1 0-10.1 1.3-14.5 3.7L277.1 162.20000000000005H116.8c-16 0-28.9 13-28.9 28.9v384c0 16 13 28.9 28.9 28.9h160.3l339.7 189.9c4.5 2.5 9.5 3.8 14.6 3.8 5.3 0 10.6-1.4 15.1-4.1 9.1-5.3 14.8-15.2 14.8-25.8v-767.6c0-10.5-5.6-20.4-14.7-25.8-4.6-2.7-9.9-4.1-15.2-4.1zM305.8 551.5v-336.7L601.4 51V716.8L305.8 551.5zM145.7 220.10000000000002h102.2v326H145.7v-326zM913.2 258.9c-9.3 0-18.1 3.6-24.7 10.3l-63.4 63.4-63.4-63.4c-6.6-6.6-15.4-10.3-24.7-10.3s-18.1 3.6-24.7 10.3c-13.6 13.6-13.6 35.9 0 49.5l63.4 63.4-67.4 67.4c-6.6 6.6-10.3 15.4-10.3 24.7 0 9.3 3.6 18.1 10.3 24.7 6.6 6.6 15.4 10.3 24.7 10.3s18.1-3.6 24.7-10.3l67.4-67.4 67.4 67.4c6.6 6.6 15.4 10.3 24.7 10.3s18.1-3.6 24.7-10.3c6.6-6.6 10.3-15.4 10.3-24.7 0-9.3-3.6-18.1-10.3-24.7L874.6 382l63.4-63.4c13.6-13.6 13.6-35.9 0-49.5-6.7-6.6-15.5-10.2-24.8-10.2z"  horiz-adv-x="1024" />
    <glyph glyph-name="reduce-circle" unicode="&#58902;" d="M512-65.5c-60.6 0-119.4 11.9-174.8 35.3-53.5 22.6-101.5 55-142.7 96.2-41.2 41.2-73.6 89.2-96.2 142.7C74.9 264.1 63 322.9 63 383.5s11.9 119.4 35.3 174.8c22.6 53.5 55 101.5 96.2 142.7 41.2 41.2 89.2 73.6 142.7 96.2C392.6 820.6 451.4 832.5 512 832.5s119.4-11.9 174.8-35.3c53.5-22.6 101.5-55 142.7-96.2 41.2-41.2 73.6-89.2 96.2-142.7 23.4-55.4 35.3-114.2 35.3-174.8s-11.9-119.4-35.3-174.8c-22.6-53.5-55-101.5-96.2-142.7s-89.2-73.6-142.7-96.2c-55.4-23.4-114.2-35.3-174.8-35.3z m0 848c-220 0-399-179-399-399s179-399 399-399 399 179 399 399-179 399-399 399zM772 359H252c-13.8 0-25 11.2-25 25s11.2 25 25 25h520c13.8 0 25-11.2 25-25s-11.2-25-25-25z"  horiz-adv-x="1024" />
    <glyph glyph-name="music" unicode="&#59024;" d="M575.4 832h-74.5v-633.5C385 251.20000000000005 249.3 180.70000000000005 226.8 76c-7.3-34.1 7.9-70.9 21.9-87.8 79.3-94.6 252.2-50.5 331.6 51.3 35.2 45.2 32.3 84.6 32.3 181.3V608.5c48.8-36.3 103.9-70.1 123.7-135 12.2-40.3-4.1-107.3-17-141.5-3.9-10.3-14.7-18.9-9.7-29.2 34.2-25.4 51.1 28.6 60.9 51.2 10.6 24.5 20.8 54.7 24.4 75.6C833.2 653.2 595.5 661.7 575.4 832z"  horiz-adv-x="1024" />
  </font>
</defs></svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.ttf
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.woff
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/font/iconfont.woff2
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/0.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/1.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/10.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/11.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/12.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/13.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/14.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/15.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/16.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/17.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/18.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/19.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/2.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/20.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/21.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/22.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/23.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/24.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/25.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/26.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/27.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/28.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/29.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/3.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/30.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/31.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/32.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/33.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/34.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/35.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/36.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/37.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/38.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/39.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/4.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/40.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/41.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/42.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/43.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/44.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/45.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/46.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/47.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/48.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/49.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/5.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/50.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/51.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/52.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/53.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/54.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/55.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/56.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/57.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/58.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/59.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/6.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/60.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/61.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/62.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/63.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/64.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/65.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/66.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/67.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/68.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/69.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/7.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/70.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/71.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/8.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/images/face/9.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/all-mobile.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
/**
 @Name:用于打包移动完整版
 @Author:贤心
 @License:LGPL
 */
layui.define(function(exports){
  exports('layui.mobile', layui.v);
});
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/all.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
/**
 @Name:用于打包PC完整版,即包含layui.js和所有模块的完整合并(该文件不会存在于构建后的目录)
 @Author:贤心
 @License:LGPL
 */
layui.define(function(exports){
  var cache = layui.cache;
  layui.config({
    dir: cache.dir.replace(/lay\/dest\/$/, '')
  });
  exports('layui.all', layui.v);
});
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/FilePreviewBase.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,436 @@
/**
 * Created by weidy on 2019/1/21.  æ–‡ä»¶é¢„览
 */
layui.define(['layer','table','element'],function(exports){
    var Home = function(){
        this.id = "vciFilePreview";
        this.previewFileKey = "";
        this.extraParams = {};
        this.viewtype = "pdf";
        this.viewtypeConstant = {
            /**
             * ä¸ŽåŽå°çš„VciFileViewTypeConstant对应
             */
            PDF:'pdf',
            XPS:'xps',
            COMMON:'common',
            IMAGES:'images',
            AUDIO:'audio',
            VIDEO:'video',
            FLASH:'flash',
            TEXT:'text',
            HTML:'html',
            ACTIVE:'active'
        };
        this.backPath = configData.compatibility?path:configData.filePreviewPath;
        this.url={
            controller:'vciFilePreviewController/',
            ajaxPreview:'ajaxPreview',
            showXps:'showXps',
            showPdf:'showPdf',
            showCommon:'showCommonFile',
            getPdfUrlForIE:'getPdfUrlForIE',
            listLinkeFile:'vciFileQueryController/gridFiles'
        };
        this.config = {};
    };
    Home.prototype.getContent = function(id){
        var that = this;
        return '<div class="layui-index-home layui-fluid" style="overflow:auto;position:absolute;left:5px;top:5px;background-color: #999999;z-index:auto;" id="vciFilePreview_' + id + '"></div>' +
               '<div id="previewinfo_' + id + '" class="layui-layout-east" style="display:block;position:absolute;right:0;margin-top:5px;margin-right:5px;width:340px;height:98%;max-width:340px;min-width:150px;border:1px solid #e1e1e1">' +
                    '<div lay-filter="panelFileInfo_' + id + '" class="layui-tab layui-tab-card" lay-allowClose="false" style="margin-top:0px;">'+
                        '<ul class="layui-tab-title" lay-allowClose="false">' +
                        '</ul>' +
                        '<div class="layui-tab-content"></div>' +
                        '</div> '+
                    '</div> '+
               '</div>';
    };
    Home.prototype.init = function(id,options){
        var that = this;
        var parent ;
        var isInner = false;
        if(options.showType && options.showType == "inner"){
            parent = $("#vciFilePreview_" + id).parent();
            isInner =true;
        }else{
            parent = $(document);
        }
        var width = (options.width?options.width:(isInner?(parent.width()-380):(parent.width()-430)));
        var height =options.height?options.height: (parent.height()-120);
        if(options.hideRightPanel){
            width = $(document).width()-85;
            $("#previewinfo_" + id).hide();
        }
        options.contentStyle = 'max-width: ' + width + 'px;max-height:' + height +'px;width:' + width + "px;height:" + height + "px;";
        window.print = function(){
            return false;
        };
        that.config[id] = options;
        //需要先到后台生成文件
        $webUtil.get(that.url.controller + that.url.ajaxPreview,options,function(result){
            if(result.success){
                that.doShow(id,result.obj,true);
            }else{
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,err){
            $webUtil.showErrorMsg("下载预览相关的许可出错,可能是文件预览服务没有启动");
        },that.backPath);
    };
    Home.prototype.doShow = function(id,previewVO,first){
        var that = this;
        //不同的类型的显示方式
        var viewtype = previewVO.viewType;
        var previewFileKey = previewVO.previewKey;
        if(that.viewtypeConstant.XPS == viewtype){
            that.showXps(id,previewFileKey,first);
        }else if(that.viewtypeConstant.PDF == viewtype || that.viewtypeConstant.ACTIVE == viewtype){
            //pdf的预览,对于IE8,IE9需要adobe的控件,如果是其他浏览器,则直接显示
            that.showPdf(id,previewFileKey,first,viewtype);
        }else if(that.viewtypeConstant.IMAGES == viewtype){
            that.showImages(id,previewFileKey,first);
        }else if(that.viewtypeConstant.AUDIO == viewtype || that.viewtypeConstant.VIDEO == viewtype){
            that.showVedioAndAudio(id,previewFileKey,first);
        }else if(that.viewtypeConstant.TEXT == viewtype){
            that.showText(id,previewFileKey,first);
        }else if(that.viewtypeConstant.HTML == viewtype){
            that.showHtml(id,previewFileKey,first);
        }else{
            that.downloadFile(id,previewFileKey,first);
        }
    };
    Home.prototype.downloadFile = function(id,previewFileKey,first){
        //下载文件
        var that = this;
        $webUtil.get(that.url.controller + that.url.showCommon,{filePreviewKey:previewFileKey,viewType:that.viewtypeConstant.COMMON},function(result){
            if(result.success){
                that.replaceIframe(id, '<div style="text-align: center;font-size:20px;height:100px;">这个文件不支持预览,将自动为您下载</div>');
                $webUtil.fileDownload(that.backPath + result.obj);
                if(first){
                    that.initRightPanle(id);
                }
            }else{
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,error){
            $webUtil.showErrorMsg("下载预览相关的许可出错,可能是文件预览服务没有启动");
        },that.backPath);
    };
    Home.prototype.replaceIframe = function(id,html){
        //替换iframe部分的内容
        $("#vciFilePreview_" + id).find("[name='vciFilePreviewContent']").remove();
        $("#vciFilePreview_" + id).prepend(html);
    };
    Home.prototype.showHtml = function(id,previewFileKey,first){
        //显示html
        var that = this;
        $webUtil.get(that.url.controller + that.url.showCommon,{filePreviewKey:previewFileKey,viewType:that.viewtypeConstant.HTML},function(result){
            if(result.success){
                var iframeUrl = that.backPath+ result.obj ;
                that.replaceIframe(id, '<iframe src="' + iframeUrl +  '" style="' + that.config[id].contentStyle + '" name="vciFilePreviewContent" frameborder="false" scrolling="none" ></iframe>');
                if(first){
                    that.initRightPanle(id);
                }
            }else{
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,error){
            $webUtil.showErrorMsg("获取文件的路径出错,可能是文件预览服务没有启动");
        },that.backPath);
    };
    Home.prototype.showText = function(id,previewFileKey,first){
        //显示普通的文本
        var that = this;
        $webUtil.get(that.url.controller + that.url.showCommon,{filePreviewKey:previewFileKey,viewType:that.viewtypeConstant.TEXT},function(result){
            if(result.success){
                var width = ($(document).width()-400);
                var height = ($(document).height()-80);
                var contentStyle = 'max-width: ' + width + 'px;max-height:' + height +'px;width:' + width + "px;height:" + height + "px;";
                that.replaceIframe(id,'<pre class="layui-code" lay-skin="notepad" lay-encode="false" style="' + contentStyle + ';overflow: auto" name="vciFilePreviewContent">' + result.obj +'</pre>');
                if(first){
                    that.initRightPanle(id);
                }
            }else{
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,error){
            $webUtil.showErrorMsg("获取文件的内容出错,可能是文件预览服务没有启动");
        },that.backPath);
    };
    Home.prototype.showVedioAndAudio =function(id,previewFileKey,first){
        var that = this;
        //视频
        $webUtil.get(that.url.controller + that.url.showCommon,{filePreviewKey:previewFileKey,viewType:that.viewtypeConstant.AUDIO},function(result){
            if(result.success){
                var html = '<object id="player" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" name="vciFilePreviewContent" style="' + that.config[id].contentStyle + ';">'+
                    '<param name="AutoStart" VALUE="-1">'+
                    '<param name="enabled" value="1">'+
                    '<param name="EnableContextMenu" VALUE="-1">'+
                    '<param name="url" VALUE="' + that.backPath + result.obj + '">'+
                    '<param name="volume" value="50">'+
                    '</object>';
                that.replaceIframe(id,html);
                if(first){
                    that.initRightPanle(id);
                }
            }else{
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,error){
            $webUtil.showErrorMsg("获取文件的路径出错,可能是文件预览服务没有启动");
        },that.backPath);
    };
    Home.prototype.showImages = function (id,previewFileKey,first) {
        var that = this;
        //图片
        $webUtil.get(that.url.controller +that.url.showCommon,{filePreviewKey:previewFileKey,viewType:that.viewtypeConstant.IMAGES},function(result){
            if(result.success){
                that.replaceIframe(id,'<img src="' + that.backPath + result.obj + '" style="max-width:' + ($(document).width()-360) + 'px;height:auto;" name="vciFilePreviewContent" />');
                if(first){
                    that.initRightPanle(id);
                }
            }else{
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,error){
            $webUtil.showErrorMsg("获取文件的路径出错,可能是文件预览服务没有启动");
        },that.backPath);
    };
    Home.prototype.showXps = function(id,previewFileKey,first){
        var that = this;
        $webUtil.get(that.url.controller +that.url.showXps,{xpsPreviewKey:previewFileKey},function(result){
            if(result.success){
                var iframeUrl = that.backPath + result.obj ;
                that.replaceIframe(id, '<iframe src="' + iframeUrl +  '" style="' + that.config[id].contentStyle + '" name="vciFilePreviewContent" frameborder="false" scrolling="auto" ></iframe>');
                if(first){
                    that.initRightPanle(id);
                }
            }else{
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,error){
            $webUtil.showErrorMsg("获取文件的路径出错,可能是文件预览服务没有启动");
        },that.backPath);
    };
    Home.prototype.showPdf = function(id,previewFileKey,first,viewtype){
        var that = this;
        $webUtil.get(that.url.controller +that.url.showPdf,{pdfPreviewKey:previewFileKey},function(result){
            if(result.success){
               //有adobe å’Œactive的方式
                var iframeUrl = that.backPath + result.obj + "?AuthorizationToken=" + $webUtil.getToken() ;
                if(that.isIE()) {
                    if (that.viewtypeConstant.ACTIVE == viewtype) {
                        //要控制下载的时候,使用这个
                        that.replaceIframe(id, '<object id="csocx' + id + '" name="vciFilePreviewContent" style="' + that.config[id].contentStyle + '" classid="clsid:195CA93F-2C9A-4E46-A8B3-D28E8C790954">' +
                            '<param name="Url" value="' + iframeUrl + '"></param></object>');
                        document.getElementById("csocx" + id).Url = iframeUrl;
                    } else {
                        if (!that.checkAdobeReaderInstall()) {
                            that.replaceIframe(id, projectName + "jslib/layui-2.2.5-debug/lay/filepreview/help.html?viewtype=" + that.viewtype);
                        } else {
                            that.replaceIframe(id, '<div style="' + that.config[id].contentStyle + '" id="vciFilePreviewContent' + id + '" name="vciFilePreviewContent" ></div>');
                            var pdfObject = new PDFObject({
                                id: 'vciFilePreviewContent' + id,
                                url: iframeUrl,
                                pdfOpenParams: {
                                    scrollbars: '0',
                                    toolbar: '0',
                                    statusbar: '0'
                                }
                            }).embed('vciFilePreviewContent' + id);
                        }
                    }
                }else{
                    //可能是支持HTML5的浏览器,因此使用pdf.js进行展示
                    var url = projectName + 'jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.html?file=' +iframeUrl ;
                    that.replaceIframe(id,'<iframe src="' + url + '" style="' + that.config[id].contentStyle + '" name="vciFilePreviewContent" frameborder="false" scrolling="auto" ></iframe>');
                }
                if (first) {
                    that.initRightPanle(id);
                }
            }else{
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,error){
            $webUtil.showErrorMsg("获取文件的路径出错,可能是文件预览服务没有启动");
        },that.backPath);
    };
    Home.prototype.checkAdobeReaderInstall =function(){
        var activeRender = false;
        //检查pdf是否安装
        for (var i = 2; i < 12; i++) {
            try {
                var activeAdobe = eval("new ActiveXObject('PDF.pdfCtrl." + x + "');");
                if (activeAdobe) {
                    activeRender = true;
                    break;
                }
            } catch (e) {
            }
        }
        if (!activeRender) {
            //看看acro4
            try {
                var activeAdobe4 = new ActiveXObject("PDF.PdfCtrl.1");
                activeRender = true;
            } catch (e) {
            }
        }
        if (!activeRender) {
            try {
                var activeAdobe7 = new ActiveXObject("AcroPDF.PDF.1");
                activeRender = true;
            } catch (e) {
            }
        }
        return activeRender;
    };
    Home.prototype.initRightPanle = function (id) {
        //初始化右侧的列表和帮助信息
        var that = this;
        var options = that.config[id];
        if(!options.hideRightPanel) {
            layui.element.tabAdd('panelFileInfo_' + id, {
                title: '本业务数据的所有附件',
                id: "tab_allFile_" + id,
                content: '<div id="allfile_' + id + '">' +
                    '<div layui-filter="toolbar_' + id + '" class="layui-btn-container"></div>' +
                    '<table id="allfile_table_' + id + '" lay-filter="allfile_table_' + id + '" style="overflow-y:auto;"></table>' +
                    '</div>'
            });
            that.initFileTable(id);
            layui.element.tabAdd('panelFileInfo_' + id, {
                title: '使用帮助信息',
                id: "tab_preViewHelp_" + id,
                content:that.getHelpContent(options.viewtype)
            });
            layui.element.tabChange('panelFileInfo_' + id, "tab_allFile_" + id);
            $('a[name="vcifilepreviewforlinkfile"]').die().live('click', function () {
                var thisFileNameCell = $(this);
                var linkFileOid = thisFileNameCell.attr("fileoid");
                that.clickNamePREVIEW(id, linkFileOid);
            });
        }
    };
    Home.prototype.getHelpContent = function (viewtype){
        var sUserAgent = navigator.userAgent;
        var that = this;
        var isActive = false;
        if("active" == viewtype){
            isActive = true;
        }
        var downloadUrl = isActive?"/download/VCIPdfViewer.exe":"/download/AdbeRdr920_zh_CN.exe";
        var installHelp = "/download/安装说明.doc";
        var systemInfo = "您的系统是windows:";
        if((navigator.platform == "Win32") || (navigator.platform == "Windows")){
            if(sUserAgent.indexOf("Windows NT 5.1") > -1 ||
                sUserAgent.indexOf("Windows XP") > -1){
                if(isActive) {
                    downloadUrl = "/download/vciFilePreview.zip";
                    installHelp = "/download/安装说明xp.doc";
                }
                systemInfo = "您的操作系统是windows xp:";
            }
            var html = systemInfo + "</br>";
            if(isActive){
                html += "<a href='javascript:void(0);' docurl='" + projectName + installHelp + "' id='downloadDoc'>点击这里下载【安装说明】</a></br>";
            }else{
                html += "默认提供9.2版本的Adobe Reader,可以自行安装其他版本的Adobe的pdf软件</br>";
            }
            html += "<a href='javascript:void(0);' docurl='" + projectName + downloadUrl + "' id='downloadInstall'>点击这里下载安装文件</a>";
        }else{
            html = ("<br/>您的操作系统不是windows,不需要安装,请使用谷歌浏览器、火狐浏览器或者safari浏览器");
        }
        $("#downloadDoc").unbind("click").click(function(){
            that.doDownload($(this).attr("docurl"));
        });
        $("#downloadInstall").unbind("click").click(function(){
            that.doDownload($(this).attr("docurl"));
        });
        return ['<div style="display:block;text-align: left;padding:20px;">',
            '<p style="color:blue;">1. å»ºè®®æ‚¨ä½¿ç”¨è°·æ­Œæµè§ˆå™¨ï¼Œæˆ–者火狐等浏览器查看体验更佳</p>',
            '<hr className="layui-bg-red">',
            '<p style="color:blue;">2. æ˜¾ç¤ºçš„内容中某些表格等可能会出现显示的格式错误的情况,但是不影响阅读。这种情况下的原文格式是正常的,建议此时直接下载文件</p>',
            '<hr className="layui-bg-red">',
            '<p style="color:blue;">3. å³ä¾§åˆ—表中是当前预览文件所属的业务类型下的所有附件,可以直接单击名称就可以查看</p>',
            '<hr className="layui-bg-red">',
            '<p style="color:blue;">4. éœ€è¦å®‰è£…文件预览的程序后才能查看内容,请在下方下载安装程序根据要求安装</p>',
            '<hr className="layui-bg-red">',
            '<p id="downloadP" style="color:red">' ,html ,'</p>',
            '<hr className="layui-bg-red">',
        '</div>'].join('');
    };
    Home.prototype.doDownload = function (url){
        var downIframe = $("<iframe>");
        downIframe.attr("style","display:none;");
        $("body").append(downIframe);
        downIframe.attr("src",url);
        if (downIframe.attachEvent) {
            downIframe.attachEvent("onload",
                function() {
                    downIframe.remove();
                });
        } else {
            downIframe.onload = function() {
                downIframe.remove();
            };
        }
    };
    Home.prototype.isIE = function () {
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        //IE11不就算在里面,因为它本身支持H5的方式了
        return /msie/g.test(userAgent.toLowerCase());
    };
    Home.prototype.initFileTable = function(id) {
        var that = this;
        var table = layui.table;
        var columns = [{
            field:'name',
            title:'文件名称',
            width:300,
            templet:function (d) {
                var showName = $webUtil.isNull(d.id)?d.name:d.id;
                return '<a href="javascript:;" name="vcifilepreviewforlinkfile" style="color:#2080da;text-decoration:underline;" compId="' + id +'"  fileoid="'
                    + d.oid + '" >'
                    + showName + ($webUtil.isNull(d.fileExtension)?"":("." + d.fileExtension)) + '</a>';
            }
        }];
        var options = that.config[id];
        layui.table.render({
            elem:"#allfile_table_"+id,
            url:that.url.listLinkeFile,
            id:"allfile_table_"+id,
            backPath:configData.fileServicePath,
            where:{
                ownbizOid:options.ownbizOid,
                ownbizBtm:options.ownbizBtm
            },
            cols:[columns],
            height:450
        });
    };
    Home.prototype.clickNamePREVIEW = function(id,linkFileOid){
        var that = this;
        var extraParams={};
        extraParams['linkFileOid'] = linkFileOid;
        extraParams['viewType'] = that.config[id].viewType;
        $webUtil.showProgress("即将开始预览,请等待....");
        $webUtil.post(that.url.controller + that.url.ajaxPreview, extraParams, function (result) {
            $webUtil.closeProgress();
            if (result.success && result.obj) {
                that.doShow(id,result.obj,false);
            } else {
                $webUtil.showErrorMsg(result.msg);
            }
        },function(xhr,error){
            $webUtil.showErrorMsg("获取文件的许可出错,可能是文件预览服务未启动")
        });
    };
    var home = new Home();
    exports('FilePreviewBase',home);
});
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.compatibility.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,577 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
/* Copyright 2012 Mozilla Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* globals VBArray, PDFJS */
'use strict';
// Initializing PDFJS global object here, it case if we need to change/disable
// some PDF.js features, e.g. range requests
if (typeof PDFJS === 'undefined') {
  (typeof window !== 'undefined' ? window : this).PDFJS = {};
}
// Checking if the typed arrays are supported
// Support: iOS<6.0 (subarray), IE<10, Android<4.0
(function checkTypedArrayCompatibility() {
  if (typeof Uint8Array !== 'undefined') {
    // Support: iOS<6.0
    if (typeof Uint8Array.prototype.subarray === 'undefined') {
        Uint8Array.prototype.subarray = function subarray(start, end) {
          return new Uint8Array(this.slice(start, end));
        };
        Float32Array.prototype.subarray = function subarray(start, end) {
          return new Float32Array(this.slice(start, end));
        };
    }
    // Support: Android<4.1
    if (typeof Float64Array === 'undefined') {
      window.Float64Array = Float32Array;
    }
    return;
  }
  function subarray(start, end) {
    return new TypedArray(this.slice(start, end));
  }
  function setArrayOffset(array, offset) {
    if (arguments.length < 2) {
      offset = 0;
    }
    for (var i = 0, n = array.length; i < n; ++i, ++offset) {
      this[offset] = array[i] & 0xFF;
    }
  }
  function TypedArray(arg1) {
    var result, i, n;
    if (typeof arg1 === 'number') {
      result = [];
      for (i = 0; i < arg1; ++i) {
        result[i] = 0;
      }
    } else if ('slice' in arg1) {
      result = arg1.slice(0);
    } else {
      result = [];
      for (i = 0, n = arg1.length; i < n; ++i) {
        result[i] = arg1[i];
      }
    }
    result.subarray = subarray;
    result.buffer = result;
    result.byteLength = result.length;
    result.set = setArrayOffset;
    if (typeof arg1 === 'object' && arg1.buffer) {
      result.buffer = arg1.buffer;
    }
    return result;
  }
  window.Uint8Array = TypedArray;
  window.Int8Array = TypedArray;
  // we don't need support for set, byteLength for 32-bit array
  // so we can use the TypedArray as well
  window.Uint32Array = TypedArray;
  window.Int32Array = TypedArray;
  window.Uint16Array = TypedArray;
  window.Float32Array = TypedArray;
  window.Float64Array = TypedArray;
})();
// URL = URL || webkitURL
// Support: Safari<7, Android 4.2+
(function normalizeURLObject() {
  if (!window.URL) {
    window.URL = window.webkitURL;
  }
})();
// Object.defineProperty()?
// Support: Android<4.0, Safari<5.1
(function checkObjectDefinePropertyCompatibility() {
  if (typeof Object.defineProperty !== 'undefined') {
    var definePropertyPossible = true;
    try {
      // some browsers (e.g. safari) cannot use defineProperty() on DOM objects
      // and thus the native version is not sufficient
      Object.defineProperty(new Image(), 'id', { value: 'test' });
      // ... another test for android gb browser for non-DOM objects
      var Test = function Test() {};
      Test.prototype = { get id() { } };
      Object.defineProperty(new Test(), 'id',
        { value: '', configurable: true, enumerable: true, writable: false });
    } catch (e) {
      definePropertyPossible = false;
    }
    if (definePropertyPossible) {
      return;
    }
  }
  Object.defineProperty = function objectDefineProperty(obj, name, def) {
    delete obj[name];
    if ('get' in def) {
      obj.__defineGetter__(name, def['get']);
    }
    if ('set' in def) {
      obj.__defineSetter__(name, def['set']);
    }
    if ('value' in def) {
      obj.__defineSetter__(name, function objectDefinePropertySetter(value) {
        this.__defineGetter__(name, function objectDefinePropertyGetter() {
          return value;
        });
        return value;
      });
      obj[name] = def.value;
    }
  };
})();
// No XMLHttpRequest#response?
// Support: IE<11, Android <4.0
(function checkXMLHttpRequestResponseCompatibility() {
  var xhrPrototype = XMLHttpRequest.prototype;
  var xhr = new XMLHttpRequest();
  if (!('overrideMimeType' in xhr)) {
    // IE10 might have response, but not overrideMimeType
    // Support: IE10
    Object.defineProperty(xhrPrototype, 'overrideMimeType', {
      value: function xmlHttpRequestOverrideMimeType(mimeType) {}
    });
  }
  if ('responseType' in xhr) {
    return;
  }
  // The worker will be using XHR, so we can save time and disable worker.
  PDFJS.disableWorker = true;
  Object.defineProperty(xhrPrototype, 'responseType', {
    get: function xmlHttpRequestGetResponseType() {
      return this._responseType || 'text';
    },
    set: function xmlHttpRequestSetResponseType(value) {
      if (value === 'text' || value === 'arraybuffer') {
        this._responseType = value;
        if (value === 'arraybuffer' &&
            typeof this.overrideMimeType === 'function') {
          this.overrideMimeType('text/plain; charset=x-user-defined');
        }
      }
    }
  });
  // Support: IE9
  if (typeof VBArray !== 'undefined') {
    Object.defineProperty(xhrPrototype, 'response', {
      get: function xmlHttpRequestResponseGet() {
        if (this.responseType === 'arraybuffer') {
          return new Uint8Array(new VBArray(this.responseBody).toArray());
        } else {
          return this.responseText;
        }
      }
    });
    return;
  }
  Object.defineProperty(xhrPrototype, 'response', {
    get: function xmlHttpRequestResponseGet() {
      if (this.responseType !== 'arraybuffer') {
        return this.responseText;
      }
      var text = this.responseText;
      var i, n = text.length;
      var result = new Uint8Array(n);
      for (i = 0; i < n; ++i) {
        result[i] = text.charCodeAt(i) & 0xFF;
      }
      return result.buffer;
    }
  });
})();
// window.btoa (base64 encode function) ?
// Support: IE<10
(function checkWindowBtoaCompatibility() {
  if ('btoa' in window) {
    return;
  }
  var digits =
    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  window.btoa = function windowBtoa(chars) {
    var buffer = '';
    var i, n;
    for (i = 0, n = chars.length; i < n; i += 3) {
      var b1 = chars.charCodeAt(i) & 0xFF;
      var b2 = chars.charCodeAt(i + 1) & 0xFF;
      var b3 = chars.charCodeAt(i + 2) & 0xFF;
      var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
      var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
      var d4 = i + 2 < n ? (b3 & 0x3F) : 64;
      buffer += (digits.charAt(d1) + digits.charAt(d2) +
                 digits.charAt(d3) + digits.charAt(d4));
    }
    return buffer;
  };
})();
// window.atob (base64 encode function)?
// Support: IE<10
(function checkWindowAtobCompatibility() {
  if ('atob' in window) {
    return;
  }
  // https://github.com/davidchambers/Base64.js
  var digits =
    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  window.atob = function (input) {
    input = input.replace(/=+$/, '');
    if (input.length % 4 === 1) {
      throw new Error('bad atob input');
    }
    for (
      // initialize result and counters
      var bc = 0, bs, buffer, idx = 0, output = '';
      // get next character
      buffer = input.charAt(idx++);
      // character found in table?
      // initialize bit storage and add its ascii value
      ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
        // and if not first of each 4 characters,
        // convert the first 8 bits to one ascii character
        bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
    ) {
      // try to find character in table (0-63, not found => -1)
      buffer = digits.indexOf(buffer);
    }
    return output;
  };
})();
// Function.prototype.bind?
// Support: Android<4.0, iOS<6.0
(function checkFunctionPrototypeBindCompatibility() {
  if (typeof Function.prototype.bind !== 'undefined') {
    return;
  }
  Function.prototype.bind = function functionPrototypeBind(obj) {
    var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);
    var bound = function functionPrototypeBindBound() {
      var args = headArgs.concat(Array.prototype.slice.call(arguments));
      return fn.apply(obj, args);
    };
    return bound;
  };
})();
// HTMLElement dataset property
// Support: IE<11, Safari<5.1, Android<4.0
(function checkDatasetProperty() {
  var div = document.createElement('div');
  if ('dataset' in div) {
    return; // dataset property exists
  }
  Object.defineProperty(HTMLElement.prototype, 'dataset', {
    get: function() {
      if (this._dataset) {
        return this._dataset;
      }
      var dataset = {};
      for (var j = 0, jj = this.attributes.length; j < jj; j++) {
        var attribute = this.attributes[j];
        if (attribute.name.substring(0, 5) !== 'data-') {
          continue;
        }
        var key = attribute.name.substring(5).replace(/\-([a-z])/g,
          function(all, ch) {
            return ch.toUpperCase();
          });
        dataset[key] = attribute.value;
      }
      Object.defineProperty(this, '_dataset', {
        value: dataset,
        writable: false,
        enumerable: false
      });
      return dataset;
    },
    enumerable: true
  });
})();
// HTMLElement classList property
// Support: IE<10, Android<4.0, iOS<5.0
(function checkClassListProperty() {
  var div = document.createElement('div');
  if ('classList' in div) {
    return; // classList property exists
  }
  function changeList(element, itemName, add, remove) {
    var s = element.className || '';
    var list = s.split(/\s+/g);
    if (list[0] === '') {
      list.shift();
    }
    var index = list.indexOf(itemName);
    if (index < 0 && add) {
      list.push(itemName);
    }
    if (index >= 0 && remove) {
      list.splice(index, 1);
    }
    element.className = list.join(' ');
    return (index >= 0);
  }
  var classListPrototype = {
    add: function(name) {
      changeList(this.element, name, true, false);
    },
    contains: function(name) {
      return changeList(this.element, name, false, false);
    },
    remove: function(name) {
      changeList(this.element, name, false, true);
    },
    toggle: function(name) {
      changeList(this.element, name, true, true);
    }
  };
  Object.defineProperty(HTMLElement.prototype, 'classList', {
    get: function() {
      if (this._classList) {
        return this._classList;
      }
      var classList = Object.create(classListPrototype, {
        element: {
          value: this,
          writable: false,
          enumerable: true
        }
      });
      Object.defineProperty(this, '_classList', {
        value: classList,
        writable: false,
        enumerable: false
      });
      return classList;
    },
    enumerable: true
  });
})();
// Check console compatibility
// In older IE versions the console object is not available
// unless console is open.
// Support: IE<10
(function checkConsoleCompatibility() {
  if (!('console' in window)) {
    window.console = {
      log: function() {},
      error: function() {},
      warn: function() {}
    };
  } else if (!('bind' in console.log)) {
    // native functions in IE9 might not have bind
    console.log = (function(fn) {
      return function(msg) { return fn(msg); };
    })(console.log);
    console.error = (function(fn) {
      return function(msg) { return fn(msg); };
    })(console.error);
    console.warn = (function(fn) {
      return function(msg) { return fn(msg); };
    })(console.warn);
  }
})();
// Check onclick compatibility in Opera
// Support: Opera<15
(function checkOnClickCompatibility() {
  // workaround for reported Opera bug DSK-354448:
  // onclick fires on disabled buttons with opaque content
  function ignoreIfTargetDisabled(event) {
    if (isDisabled(event.target)) {
      event.stopPropagation();
    }
  }
  function isDisabled(node) {
    return node.disabled || (node.parentNode && isDisabled(node.parentNode));
  }
  if (navigator.userAgent.indexOf('Opera') !== -1) {
    // use browser detection since we cannot feature-check this bug
    document.addEventListener('click', ignoreIfTargetDisabled, true);
  }
})();
// Checks if possible to use URL.createObjectURL()
// Support: IE
(function checkOnBlobSupport() {
  // sometimes IE loosing the data created with createObjectURL(), see #3977
  if (navigator.userAgent.indexOf('Trident') >= 0) {
    PDFJS.disableCreateObjectURL = true;
  }
})();
// Checks if navigator.language is supported
(function checkNavigatorLanguage() {
  if ('language' in navigator) {
    return;
  }
  PDFJS.locale = navigator.userLanguage || 'en-US';
})();
(function checkRangeRequests() {
  // Safari has issues with cached range requests see:
  // https://github.com/mozilla/pdf.js/issues/3260
  // Last tested with version 6.0.4.
  // Support: Safari 6.0+
  var isSafari = Object.prototype.toString.call(
                  window.HTMLElement).indexOf('Constructor') > 0;
  // Older versions of Android (pre 3.0) has issues with range requests, see:
  // https://github.com/mozilla/pdf.js/issues/3381.
  // Make sure that we only match webkit-based Android browsers,
  // since Firefox/Fennec works as expected.
  // Support: Android<3.0
  var regex = /Android\s[0-2][^\d]/;
  var isOldAndroid = regex.test(navigator.userAgent);
  // Range requests are broken in Chrome 39 and 40, https://crbug.com/442318
  var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(navigator.userAgent);
  if (isSafari || isOldAndroid || isChromeWithRangeBug) {
    PDFJS.disableRange = true;
    PDFJS.disableStream = true;
  }
})();
// Check if the browser supports manipulation of the history.
// Support: IE<10, Android<4.2
(function checkHistoryManipulation() {
  // Android 2.x has so buggy pushState support that it was removed in
  // Android 3.0 and restored as late as in Android 4.2.
  // Support: Android 2.x
  if (!history.pushState || navigator.userAgent.indexOf('Android 2.') >= 0) {
    PDFJS.disableHistory = true;
  }
})();
// Support: IE<11, Chrome<21, Android<4.4, Safari<6
(function checkSetPresenceInImageData() {
  // IE < 11 will use window.CanvasPixelArray which lacks set function.
  if (window.CanvasPixelArray) {
    if (typeof window.CanvasPixelArray.prototype.set !== 'function') {
      window.CanvasPixelArray.prototype.set = function(arr) {
        for (var i = 0, ii = this.length; i < ii; i++) {
          this[i] = arr[i];
        }
      };
    }
  } else {
    // Old Chrome and Android use an inaccessible CanvasPixelArray prototype.
    // Because we cannot feature detect it, we rely on user agent parsing.
    var polyfill = false, versionMatch;
    if (navigator.userAgent.indexOf('Chrom') >= 0) {
      versionMatch = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
      // Chrome < 21 lacks the set function.
      polyfill = versionMatch && parseInt(versionMatch[2]) < 21;
    } else if (navigator.userAgent.indexOf('Android') >= 0) {
      // Android < 4.4 lacks the set function.
      // Android >= 4.4 will contain Chrome in the user agent,
      // thus pass the Chrome check above and not reach this block.
      polyfill = /Android\s[0-4][^\d]/g.test(navigator.userAgent);
    } else if (navigator.userAgent.indexOf('Safari') >= 0) {
      versionMatch = navigator.userAgent.
        match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//);
      // Safari < 6 lacks the set function.
      polyfill = versionMatch && parseInt(versionMatch[1]) < 6;
    }
    if (polyfill) {
      var contextPrototype = window.CanvasRenderingContext2D.prototype;
      contextPrototype._createImageData = contextPrototype.createImageData;
      contextPrototype.createImageData = function(w, h) {
        var imageData = this._createImageData(w, h);
        imageData.data.set = function(arr) {
          for (var i = 0, ii = this.length; i < ii; i++) {
            this[i] = arr[i];
          }
        };
        return imageData;
      };
    }
  }
})();
// Support: IE<10, Android<4.0, iOS
(function checkRequestAnimationFrame() {
  function fakeRequestAnimationFrame(callback) {
    window.setTimeout(callback, 20);
  }
  var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
  if (isIOS) {
    // requestAnimationFrame on iOS is broken, replacing with fake one.
    window.requestAnimationFrame = fakeRequestAnimationFrame;
    return;
  }
  if ('requestAnimationFrame' in window) {
    return;
  }
  window.requestAnimationFrame =
    window.mozRequestAnimationFrame ||
    window.webkitRequestAnimationFrame ||
    fakeRequestAnimationFrame;
})();
(function checkCanvasSizeLimitation() {
  var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
  var isAndroid = /Android/g.test(navigator.userAgent);
  if (isIOS || isAndroid) {
    // 5MP
    PDFJS.maxCanvasPixels = 5242880;
  }
})();
// Disable fullscreen support for certain problematic configurations.
// Support: IE11+ (when embedded).
(function checkFullscreenSupport() {
  var isEmbeddedIE = (navigator.userAgent.indexOf('Trident') >= 0 &&
                      window.parent !== window);
  if (isEmbeddedIE) {
    PDFJS.disableFullscreen = true;
  }
})();
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.js
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.js.map
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
{"version":3,"sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/global_scope.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/string/includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.string.includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_export.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_global.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_core.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_hide.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-dp.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_an-object.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-object.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_ie8-dom-define.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_descriptors.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_fails.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_dom-create.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-primitive.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_property-desc.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_redefine.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_has.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_uid.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_ctx.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_a-function.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_string-context.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-regexp.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_cof.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_wks.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_shared.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_library.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_defined.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_fails-is-regexp.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/array/includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.array.includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_array-includes.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-iobject.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iobject.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-length.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-integer.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-absolute-index.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_add-to-unscopables.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/object/assign.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.object.assign.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-assign.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-keys.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-keys-internal.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_shared-key.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_enum-bug-keys.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gops.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-pie.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_to-object.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/math/log2.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.math.log2.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/number/is-nan.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.number.is-nan.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/number/is-integer.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.number.is-integer.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-integer.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/promise.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.object.to-string.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_classof.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.string.iterator.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_string-at.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-define.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iterators.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-create.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-create.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-dps.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_html.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-to-string-tag.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gpo.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/web.dom.iterable.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.array.iterator.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-step.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.promise.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_an-instance.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_for-of.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-call.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-array-iter.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/core.get-iterator-method.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_species-constructor.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_task.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_invoke.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_microtask.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_new-promise-capability.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_perform.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_user-agent.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_promise-resolve.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_redefine-all.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-species.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_iter-detect.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.promise.finally.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.promise.try.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/weak-map.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.weak-map.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_array-methods.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_array-species-create.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_array-species-constructor.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_is-array.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_meta.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_collection-weak.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_validate-collection.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_collection.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_inherit-if-required.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-proto.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gopd.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.weak-map.of.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-collection-of.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.weak-map.from.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_set-collection-from.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/string/code-point-at.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.string.code-point-at.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/string/from-code-point.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.string.from-code-point.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/es6/symbol.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es6.symbol.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_wks-ext.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_wks-define.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_enum-keys.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gopn-ext.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-gopn.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/fn/object/values.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/es7.object.values.js","webpack://pdfjs-dist/build/pdf/node_modules/core-js/modules/_object-to-array.js","webpack://pdfjs-dist/build/pdf/src/shared/streams_polyfill.js","webpack://pdfjs-dist/build/pdf/external/streams/streams-lib.js","webpack://pdfjs-dist/build/pdf/src/shared/url_polyfill.js","webpack://pdfjs-dist/build/pdf/external/url/url-lib.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/dom_utils.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/api_compatibility.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/node_modules/babel-runtime/regenerator/index.js","webpack://pdfjs-dist/build/pdf/node_modules/regenerator-runtime/runtime-module.js","webpack://pdfjs-dist/build/pdf/node_modules/regenerator-runtime/runtime.js","webpack://pdfjs-dist/build/pdf/node_modules/webpack/buildin/module.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/xml_parser.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/webgl.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network.js"],"names":["pdfjsVersion","pdfjsBuild","pdfjsSharedUtil","require","pdfjsDisplayAPI","pdfjsDisplayTextLayer","pdfjsDisplayAnnotationLayer","pdfjsDisplayDOMUtils","pdfjsDisplaySVG","pdfjsDisplayWorkerOptions","pdfjsDisplayAPICompatibility","isNodeJS","PDFNodeStream","Response","PDFFetchStream","PDFNetworkStream","exports","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","NativeImageDecoding","NONE","DECODE","DISPLAY","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RL","FontType","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","smask","shadingPattern","font","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","Number","console","unreachable","base","other","url","absoluteUrl","baseUrl","_isValidProtocol","Object","enumerable","configurable","writable","lookup","initializer","PasswordException","UnknownErrorException","InvalidPDFException","MissingPDFException","UnexpectedResponseException","MissingDataException","XRefParseException","FormatError","AbortException","NullCharactersRegExp","warn","str","assert","bytes","length","MAX_ARGUMENT_COUNT","String","strBuf","i","chunkEnd","Math","chunk","arr","resultLength","ii","item","itemLength","arrayByteLength","pos","data","stringToBytes","value","x","offset","buffer8","view32","getArray","stopWhenFound","LOOP_LIMIT","loopCount","dict","values","Util","rgbBuf","m1","m2","xt","p","m","yt","d","p1","p2","r","p3","p4","v","transpose","a","b","c","first","second","sx","sy","rect","orderedX","rect1","rect2","orderedY","result","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","PDFStringTranslateTable","n","code","decodeURIComponent","escape","unescape","encodeURIComponent","ch","capability","createObjectURL","digits","forceDataSchema","URL","blob","type","buffer","b1","b2","b3","d1","d2","d3","d4","globalScope","hasDOM","Buffer","get","scripts","document","Element","div","originalDOMTokenListToggle","DOMTokenList","arguments","force","Array","module","window","global","self","process","$export","context","INCLUDES","includes","core","hide","redefine","ctx","PROTOTYPE","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","target","expProto","source","own","out","exp","Function","__g","version","__e","dP","createDesc","object","anObject","IE8_DOM_DEFINE","toPrimitive","P","TypeError","O","Attributes","isObject","it","is","S","val","fn","has","SRC","TO_STRING","$toString","TPL","isFunction","hasOwnProperty","id","px","key","aFunction","that","isRegExp","defined","cof","MATCH","toString","store","uid","Symbol","USE_SYMBOL","$exports","SHARED","mode","copyright","re","$includes","toIObject","toLength","toAbsoluteIndex","index","IS_INCLUDES","el","IObject","toInteger","min","ceil","floor","isNaN","max","UNSCOPABLES","ArrayProto","assign","getKeys","gOPS","pIE","toObject","$assign","A","B","K","T","aLen","getSymbols","isEnum","keys","j","$keys","enumBugKeys","arrayIndexOf","IE_PROTO","names","shared","log2","isInteger","isFinite","classof","test","TAG","ARG","tryGet","$at","done","point","s","l","LIBRARY","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","getMethod","kind","proto","NAME","DEF_VALUES","DEFAULT","VALUES_BUG","Base","$native","$default","$entries","$anyNative","IteratorPrototype","methods","IS_SET","entries","create","descriptor","Constructor","next","dPs","Empty","createDict","iframe","lt","gt","iframeDocument","Properties","def","stat","ObjectProto","$iterators","wks","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","addToUnscopables","step","anInstance","forOf","speciesConstructor","task","microtask","newPromiseCapabilityModule","perform","userAgent","promiseResolve","PROMISE","versions","v8","$Promise","isNode","empty","newPromiseCapability","newGenericPromiseCapability","USE_NATIVE","promise","FakePromise","exec","isThenable","notify","chain","ok","run","handler","reaction","resolve","reject","domain","onHandleUnhandled","exited","then","isReject","onUnhandled","unhandled","isUnhandled","reason","$reject","$resolve","wrapper","_w","_d","Internal","executor","OwnPromiseCapability","C","Promise","Wrapper","$$reject","all","remaining","$index","alreadyCalled","race","forbiddenField","name","call","isArrayIter","getIterFn","BREAK","RETURN","iterFn","f","iterable","iterator","ret","SPECIES","invoke","html","cel","setTask","clearTask","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","listener","event","args","defer","channel","port","setTimeout","set","clear","un","macrotask","Observer","flush","parent","head","last","toggle","node","characterData","e","navigator","promiseCapability","src","DESCRIPTORS","SAFE_CLOSING","riter","safe","iter","each","meta","weak","fails","validate","WEAK_MAP","getWeak","isExtensible","uncaughtFrozenStore","tmp","$WeakMap","InternalMap","method","asc","IS_MAP","TYPE","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$create","res","isArray","original","META","setDesc","FREEZE","setMeta","w","fastKey","onFreeze","KEY","NEED","redefineAll","createArrayMethod","$has","arrayFind","arrayFindIndex","UncaughtFrozenStore","findUncaughtFrozen","entry","getConstructor","ufstore","$iterDetect","inheritIfRequired","ADDER","fixMethod","IS_WEAK","common","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setPrototypeOf","check","buggy","gOPD","of","from","mapFn","mapping","cb","codePointAt","fromCharCode","$fromCodePoint","fromCodePoint","RangeError","$fails","wksExt","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","gOPN","$Symbol","$JSON","_stringify","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperty","D","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","tag","$set","es6Symbols","wellKnownSymbols","k","keyFor","useSetter","useSimple","defineProperty","defineProperties","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","stringify","$replacer","replacer","symbols","windowNames","getWindowNames","hiddenKeys","$values","isReadableStreamSupported","start","controller","installedModules","modules","__w_pdfjs_require__","getter","_typeof","obj","_require","elements","IsPropertyKey","Call","F","highWaterMark","size","message","AssertionError","Error","rethrowAssertionErrorRejection","_createClass","props","InvokeOrNoop","PromiseInvokeOrNoop","ValidateAndNormalizeQueuingStrategy","typeIsObject","_require2","_require3","DequeueValue","EnqueueValueWithSize","PeekQueueValue","ResetQueue","WritableStream","underlyingSink","_ref","_ref$highWaterMark","_classCallCheck","IsWritableStream","streamBrandCheckException","IsWritableStreamLocked","WritableStreamAbort","AcquireWritableStreamDefaultWriter","WritableStreamDefaultControllerError","WritableStreamDefaultWriterCloseWithErrorPropagation","WritableStreamDefaultWriterRelease","WritableStreamDefaultWriterWrite","WritableStreamCloseQueuedOrInFlight","stream","state","error","wasAlreadyErroring","_resolve","_reject","_reason","_wasAlreadyErroring","WritableStreamStartErroring","writeRequest","WritableStreamFinishErroring","writer","WritableStreamDefaultWriterEnsureReadyPromiseRejected","WritableStreamHasOperationMarkedInFlight","storedError","WritableStreamRejectCloseAndClosedPromiseIfNeeded","abortRequest","WritableStreamDealWithRejection","defaultWriterClosedPromiseResolve","defaultWriterClosedPromiseReject","backpressure","defaultWriterReadyPromiseReset","defaultWriterReadyPromiseResolve","WritableStreamDefaultWriter","defaultWriterReadyPromiseInitialize","defaultWriterReadyPromiseInitializeAsResolved","defaultWriterClosedPromiseInitialize","defaultWriterReadyPromiseInitializeAsRejected","defaultWriterClosedPromiseInitializeAsResolved","defaultWriterClosedPromiseInitializeAsRejected","IsWritableStreamDefaultWriter","defaultWriterBrandCheckException","defaultWriterLockException","WritableStreamDefaultWriterAbort","WritableStreamDefaultWriterClose","WritableStreamDefaultWriterGetDesiredSize","closeRequest","WritableStreamDefaultControllerClose","defaultWriterClosedPromiseResetToRejected","defaultWriterReadyPromiseReject","defaultWriterReadyPromiseResetToRejected","WritableStreamDefaultControllerGetDesiredSize","releasedError","WritableStreamDefaultWriterEnsureClosedPromiseRejected","chunkSize","WritableStreamDefaultControllerGetChunkSize","WritableStreamAddWriteRequest","WritableStreamDefaultControllerWrite","WritableStreamDefaultController","normalizedStrategy","WritableStreamDefaultControllerGetBackpressure","WritableStreamUpdateBackpressure","IsWritableStreamDefaultController","_this","startResult","WritableStreamDefaultControllerAdvanceQueueIfNeeded","strategySize","WritableStreamDefaultControllerErrorIfNeeded","writeRecord","WritableStreamDefaultControllerProcessClose","WritableStreamDefaultControllerProcessWrite","WritableStreamMarkCloseRequestInFlight","sinkClosePromise","WritableStreamFinishInFlightClose","WritableStreamFinishInFlightCloseWithError","WritableStreamMarkFirstWriteRequestInFlight","sinkWritePromise","WritableStreamFinishInFlightWrite","WritableStreamFinishInFlightWriteWithError","desiredSize","IsFiniteNonNegativeNumber","container","pair","ArrayBufferCopy","CreateIterResultObject","TransferArrayBuffer","ValidateAndNormalizeHighWaterMark","createArrayFromList","createDataProperty","_require4","_require5","ReadableStream","underlyingSource","typeString","IsReadableStream","IsReadableStreamLocked","ReadableStreamCancel","_ref2","AcquireReadableStreamDefaultReader","AcquireReadableStreamBYOBReader","_ref3","readable","ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue","_ref4","preventClose","preventAbort","preventCancel","Boolean","reader","shuttingDown","currentWrite","_ref5","isOrBecomesErrored","shutdownWithAction","shutdown","isOrBecomesClosed","dest","destClosed","pipeLoop","oldCurrentWrite","action","waitForWritesToFinish","finalize","ReadableStreamReaderGenericRelease","branches","ReadableStreamTee","IsReadableStreamDisturbed","ReadableStreamDefaultControllerClose","ReadableStreamDefaultControllerEnqueue","ReadableStreamDefaultControllerError","ReadableStreamDefaultControllerGetDesiredSize","teeState","closedOrErrored","canceled1","canceled2","reason1","reason2","pull","cancel1","cancel2","underlyingSource1","branch1Stream","underlyingSource2","branch2Stream","branch1","branch2","value1","value2","compositeReason","cancelResult","IsReadableStreamBYOBReader","readIntoRequest","IsReadableStreamDefaultReader","readRequest","ReadableStreamClose","sourceCancelPromise","defaultReaderClosedPromiseResolve","_i","defaultReaderClosedPromiseReject","ReadableStreamDefaultReader","ReadableStreamReaderGenericInitialize","defaultReaderBrandCheckException","readerLockException","ReadableStreamReaderGenericCancel","ReadableStreamDefaultReaderRead","ReadableStreamBYOBReader","IsReadableByteStreamController","byobReaderBrandCheckException","ArrayBuffer","view","ReadableStreamBYOBReaderRead","defaultReaderClosedPromiseInitialize","defaultReaderClosedPromiseInitializeAsResolved","defaultReaderClosedPromiseInitializeAsRejected","defaultReaderClosedPromiseResetToRejected","ReadableByteStreamControllerPullInto","ReadableStreamDefaultController","ReadableStreamDefaultControllerCallPullIfNeeded","ReadableStreamDefaultControllerErrorIfNeeded","IsReadableStreamDefaultController","defaultControllerBrandCheckException","pendingPromise","ReadableStreamAddReadRequest","shouldPull","ReadableStreamDefaultControllerShouldCallPull","pullPromise","ReadableStreamGetNumReadRequests","ReadableStreamFulfillReadRequest","ReadableStreamError","ReadableStreamBYOBRequest","IsReadableStreamBYOBRequest","byobRequestBrandCheckException","ReadableByteStreamControllerRespond","ReadableByteStreamControllerRespondWithNewView","ReadableByteStreamController","ReadableByteStreamControllerClearPendingPullIntos","autoAllocateChunkSize","underlyingByteSource","ReadableByteStreamControllerCallPullIfNeeded","ReadableByteStreamControllerError","byteStreamControllerBrandCheckException","ReadableByteStreamControllerClose","ReadableByteStreamControllerEnqueue","firstDescriptor","ReadableStreamHasDefaultReader","ReadableByteStreamControllerHandleQueueDrain","pullIntoDescriptor","byteOffset","byteLength","bytesFilled","elementSize","ctor","readerType","ReadableByteStreamControllerGetDesiredSize","ReadableByteStreamControllerShouldCallPull","ReadableByteStreamControllerInvalidateBYOBRequest","filledView","ReadableByteStreamControllerConvertPullIntoDescriptor","ReadableStreamFulfillReadIntoRequest","currentAlignedBytes","maxBytesToCopy","maxBytesFilled","maxAlignedBytes","totalBytesToCopyRemaining","ready","headOfQueue","bytesToCopy","destStart","ReadableByteStreamControllerFillHeadPullIntoDescriptor","ReadableByteStreamControllerFillPullIntoDescriptorFromQueue","ReadableByteStreamControllerShiftPendingPullInto","ReadableByteStreamControllerCommitPullIntoDescriptor","ReadableStreamAddReadIntoRequest","emptyView","ReadableStreamHasBYOBReader","ReadableStreamGetNumReadIntoRequests","remainderSize","end","remainder","ReadableByteStreamControllerEnqueueChunkToQueue","ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue","bytesWritten","ReadableByteStreamControllerRespondInClosedState","ReadableByteStreamControllerRespondInReadableState","firstPendingPullInto","transferredBuffer","transferredView","ReadableByteStreamControllerRespondInternal","transformStream","readableStream","writableStream","PromiseInvokeOrPerformFallback","TransformStreamCloseReadableInternal","TransformStreamErrorIfNeeded","maybeBackpressure","TransformStreamSetBackpressure","TransformStreamErrorInternal","resolution","transformStreamController","TransformStreamEnqueueToReadable","transformer","transformPromise","TransformStreamReadableReadyPromise","TransformStreamSink","TransformStreamTransform","flushPromise","TransformStreamSource","TransformStreamDefaultController","IsTransformStream","IsTransformStreamDefaultController","TransformStreamCloseReadable","TransformStreamError","readableController","TransformStream","readableStrategy","writableStrategy","startPromise_resolve","startPromise","sink","isURLSupported","u","PolyfillURL","OriginalURL","relative","relativePathDotMapping","h","invalid","unicode","ALPHA","ALPHANUMERIC","errors","stateOverride","cursor","seenAt","seenBracket","input","err","isRelativeScheme","percentEscape","nextC","nextNextC","cp","tempC","IDNAToASCII","temp","parseInt","percentEscapeQuery","parse","JURL","authority","host","DEFAULT_RANGE_CHUNK_SIZE","isWorkerDisabled","fakeWorkerFilesLoader","useRequireEnsure","__non_webpack_require__","requirejs","fallbackWorkerSrc","dynamicLoaderSupported","worker","pdfjsFilePath","createPDFNetworkStream","isArrayBuffer","range","params","rangeTransport","pdfBytes","NativeImageDecoderValues","apiCompatibilityParams","setVerbosityLevel","workerParams","postMessageTransfers","workerPort","GlobalWorkerOptions","PDFWorker","docId","networkStream","initialData","disableRange","disableStream","httpHeaders","withCredentials","rangeChunkSize","messageHandler","transport","pdfDataRangeTransport","apiVersion","password","disableAutoFetch","maxImageSize","disableFontFace","disableCreateObjectURL","docBaseUrl","nativeImageDecoderSupport","ignoreErrors","isEvalSupported","PDFDocumentLoadingTask","nextDocumentId","destroy","transportDestroyed","constructor","addRangeListener","addProgressListener","addProgressiveReadListener","onDataRange","onDataProgress","onDataProgressiveRead","requestDataRange","getPage","getPageIndex","getDestination","PDFPageProxy","pdfBug","getViewport","rotate","dontFlip","viewBox","rotation","getAnnotations","intent","render","stats","renderingIntent","canvasFactory","webGLContext","enable","intentState","fnArray","argsArray","lastChunk","pageIndex","renderInteractiveForms","complete","internalRenderTask","renderTask","getOperatorList","opListTask","streamTextContent","TEXT_CONTENT_CHUNK_SIZE","normalizeWhitespace","combineTextItems","textContent","getTextContent","items","styles","_destroy","waitOn","renderCompleted","cleanup","resetStats","_tryCleanup","_startRenderPage","_renderPageChunk","operatorListChunk","postMessage","cloned","transferable","transfers","desc","cloneValue","addEventListener","removeEventListener","nextFakeWorkerId","fakeWorkerFilesLoadedCapability","mainWorkerMessageHandler","loader","pdfWorkerPorts","_initializeFromPort","_initialize","workerSrc","isSameOrigin","createCDNWrapper","terminateEarly","onWorkerError","sendTest","testObj","info","_setupFakeWorker","setupFakeWorkerGlobal","workerHandler","WorkerMessageHandler","loadingTask","isCompressed","page","terminated","loaded","evt","total","headersCapability","fullReader","isStreamingSupported","isRangeSupported","contentLength","rangeReader","pdfInfo","updatePassword","exception","exportedError","exportedData","fontRegistry","registerFont","onUnsupportedFeature","fontReady","pageProxy","img","MAX_IMAGE_SIZE_TO_STORE","imageData","components","width","height","rgbaLength","buf","tmpCanvas","tmpCtx","_onUnsupportedFeature","pageNumber","results","metadata","contentDispositionFilename","PDFObjects","ensureObj","resolved","isResolved","objs","hasData","getData","RenderTask","cancel","InternalRenderTask","canvasInRendering","initializeGraphics","viewport","background","operatorListChanged","_continue","_scheduleNext","_next","build","DEFAULT_LINK_REL","SVG_NS","canvas","reset","canvasAndContext","fetch","request","XMLHttpRequest","cMapData","compressionType","svg","createElement","offsetX","offsetY","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","clone","scale","convertToViewportPoint","convertToViewportRectangle","tl","br","convertToPdfPoint","RenderingCancelledException","LinkTarget","SELF","BLANK","PARENT","TOP","LinkTargetStringMap","link","removeNullCharacters","LinkTargetValues","targetIndex","anchor","query","time","Date","timeEnd","times","longest","span","duration","script","requests","nextRequestId","addNativeFontFace","insertRule","styleElement","styleSheet","bind","rules","fontsToLoad","fontLoadPromises","getNativeFontPromise","nativeFontFace","rule","_queueLoadingCallback","otherRequest","_prepareFontLoadEvent","FontLoader","chunk1","chunk2","called","isFontReady","loadTestFontId","COMMENT_OFFSET","spliceString","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","int32","string32","btoa","fonts","supported","shadow","getLoadTestFont","atob","IsEvalSupportedCached","translatedData","bytesToString","getPathGenerator","cmds","featureId","js","current","compatibilityParams","isIE","isIOSChrome","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","MIN_WIDTH_FACTOR","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","IsLittleEndianCached","ad_bc","bc_ad","old","prev","cosValue","sinValue","CachedCanvases","getCanvas","canvasEntry","addContextCurrentTransform","POINT_TO_PROCESS_LIMIT","imgData","width1","points","POINT_TYPES","lineSize","data0","mask","elem","count","j0","sum","steps","outlines","coords","p0","pp","drawOutline","o","jj","CanvasExtraState","setCurrentPoint","CanvasGraphics","EXECUTION_TIME","EXECUTION_STEPS","partialChunkHeight","fullChunks","totalChunks","chunkImgData","srcPos","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","thisChunkHeight","destPos","srcDiff","kEnd","kEndUnrolled","srcByte","elemsInThisChunk","properties","property","sourceCtx","destCtx","alpha","alpha_","r0","g0","b0","maskData","transferMap","layerData","y","hasBackdrop","backdrop","subtype","composeFn","PIXELS_TO_PROCESS","row","chunkHeight","maskCtx","layerCtx","composeSMaskBackdrop","composed","layer","genericComposeSMask","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","beginDrawing","transparentCanvas","resetCtxToDefault","executeOperatorList","operatorList","executionStartIdx","argsArrayLen","chunkOperations","endTime","commonObjs","stepper","fnId","deps","nn","depObjId","objsPool","endDrawing","states","beginSMaskGroup","activeSMask","drawnWidth","drawnHeight","cacheId","scratchCanvas","currentCtx","currentTransform","groupCtx","copyCtxState","suspendSMaskGroup","composeSMask","deltaTransform","resumeSMaskGroup","endSMaskGroup","ops","xw","yh","consumePath","strokeColor","fillColor","isPatternFill","needRestore","paths","path","fontObj","bold","italic","typeface","browserFontSize","paintChar","textRenderingMode","fontSize","fillStrokeMode","isAddToPathSet","patternFill","addToPath","enabled","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","glyphs","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","patternTransform","lineWidth","glyph","isNum","restoreNeeded","spacing","character","accent","vmetric","vx","vy","scaledX","scaledY","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","showType3Text","fontMatrix","isTextInvisible","spacingLength","transformed","urx","ury","getColorN_Pattern","IR","color","baseTransform","canvasGraphicsFactory","createCanvasGraphics","getShadingPatternFromIR","inv","bl","ul","ur","x0","y0","x1","y1","matrix","bbox","group","bounds","canvasBounds","scaleX","scaleY","startTransformInverse","domImage","position","left","top","maskCanvas","putBinaryImageMask","positions","images","image","map","widthScale","heightScale","imgToPaint","putBinaryImageData","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","getSinglePixelWidth","inverse","getCanvasPosition","ShadingIRs","fromIR","raw","colorStops","r1","getPattern","grad","createMeshCanvas","colors","rowSize","c1","c2","c3","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","ps","figure","cs","verticesPerRow","rows","cols","q","drawTriangle","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","combinesScale","paddedWidth","paddedHeight","cachedCanvases","backgroundColor","figures","drawFigure","owner","matrixScale","temporaryPatternCanvas","shadingIR","TilingPattern","PaintType","COLORED","UNCOLORED","createPatternCanvas","xstep","ystep","paintType","tilingType","topLeft","botRight","curMatrixScale","combinedScale","graphics","tmpTranslate","setScale","transformToScale","tmpScale","scaleToContext","clipBbox","bboxWidth","bboxHeight","setFillAndStrokeStyleToContext","cssColor","thisArg","callbacksCapabilities","ah","callbackId","callback","wrapReason","sourceName","targetName","comObj","isReply","makeReasonSerializable","MessageHandler","on","send","sendWithPromise","sendWithStream","streamId","startCapability","startCall","isClosed","pullCapability","cancelCapability","_createStreamSink","sendStreamRequest","streamSink","enqueue","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","resolveCall","success","_processStreamMessage","sendStreamResponse","deleteStreamController","resolveOrReject","g","hadRuntime","oldRuntime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","inModule","runtime","protoGenerator","outerFn","generator","tryLocsList","makeInvokeMethod","arg","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","prototype","genFun","__await","record","tryCatch","previousPromise","defineIteratorMethods","AsyncIterator","delegate","delegateResult","maybeInvokeDelegate","tryLoc","locs","iteratorMethod","Context","stop","rootEntry","rootRecord","dispatchException","handle","hasCatch","hasFinally","abrupt","finallyEntry","finish","resetTryEntry","thrown","delegateYield","resultName","nextLoc","parser","xmlDocument","_repair","chars","_parse","rdf","nodeName","children","XMLParserErrorCode","NoError","EndOfDocument","UnterminatedCdat","UnterminatedXmlDeclaration","UnterminatedDoctypeDeclaration","UnterminatedComment","MalformedElement","OutOfMemory","UnterminatedAttributeValue","UnterminatedElement","ElementNeverBegun","isWhitespace","_resolveEntities","entity","_parseContent","attributes","attrName","attrValue","attrEndChar","attrEndIndex","parsed","_parseProcessingInstruction","attrStart","parseXml","ch2","pi","q2","complexDoctype","doctypeContent","content","text","onResolveEntity","onPi","onComment","onCdata","onDoctype","onText","onBeginElement","onEndElement","onError","child","parseFromString","isWhitespaceString","lastElement","PDFDataTransportStream","_onReceiveData","found","_onProgress","firstReader","_removeRangeReader","getFullReader","queuedChunks","getRangeReader","cancelAllRequests","readers","PDFDataTransportStreamReader","_enqueue","requestCapability","PDFDataTransportStreamRangeReader","requestsCapability","WebGLUtils","drawFigures","shader","gl","compiled","errorMsg","loadShader","program","shaders","linked","texture","currentCanvas","currentGL","premultipliedalpha","smaskVertexShaderCode","smaskFragmentShaderCode","smaskCache","vertexShader","createVertexShader","fragmentShader","createFragmentShader","cache","texCoordLocation","texLayerLocation","texMaskLocation","texCoordBuffer","createTexture","maskTexture","figuresVertexShaderCode","figuresFragmentShaderCode","figuresCache","coordsMap","colorsMap","pIndex","cIndex","col","coordsBuffer","colorsBuffer","tryInitGL","renderTextLayer","MAX_TEXT_DIVS_TO_RENDER","NonWhitespaceRegexp","styleBuf","textDiv","textDivProperties","style","angle","canvasWidth","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","isAllWhitespace","geom","tx","fontHeight","fontAscent","angleCos","angleSin","divWidth","divHeight","right","bottom","textDivs","textDivsLength","expanded","expandBounds","divProperties","ts","t","findPositiveMin","boxScale","box","x1New","x2New","expandBoundsLTR","boxes","fakeBoundary","horizon","boundary","maxXNew","horizonPart","affectedBoundary","xNew","changedHorizon","lastBoundary","useBoundary","used","textContentItemsStr","TextLayerRenderTask","clearTimeout","_processItems","len","appendText","_layoutText","textLayerFrag","fontFamily","_render","styleCache","textItems","textStyles","pump","expandTextDivs","expand","padding","renderParameters","textContentStream","enhanceTextSelection","parameters","fieldType","isRenderable","ignoreBorder","_createContainer","horizontalRadius","verticalRadius","radius","_createPopup","trigger","popupElement","title","contents","hideWrapper","popup","addLinkAttributes","linkService","rel","_bindLink","_bindNamedAction","JSON","TEXT_ALIGNMENT","element","fieldWidth","combWidth","_setTextStyle","fallbackName","selectElement","option","optionElement","IGNORE_TYPES","selector","parentElement","parentLeft","parseFloat","parentWidth","BACKGROUND_ENLIGHT","_formatContents","lines","line","pin","_show","unpin","_hide","borderWidth","square","circle","vertices","polyline","inkLists","inkList","getFilenameFromUrl","stringToPDFString","downloadManager","imageResourcesPath","svgFactory","SVGGraphics","SVG_DEFAULTS","fontStyle","fontWeight","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc","body","crc32","deflateSyncUncompressed","output","level","literals","maxBlockLength","deflateBlocks","idat","adler","adler32","colorType","bitDepth","offsetLiterals","offsetBytes","ihdr","deflateSync","pngLength","writePngChunk","encode","SVGExtraState","opTree","opListLen","opList","pf","XML_NS","XLINK_NS","clipCount","maskCount","loadDependencies","fnArrayLen","transformMatrix","getSVG","svgElement","convertOpList","REVOPS","opListToTree","executeOpTree","opTreeLen","textMatrix","pm","addFontStyle","details","setStrokeAlpha","setFillAlpha","opLength","clipId","clipPath","clipElement","_setStrokeAttributes","imgObj","imgEl","imgSrc","cliprect","definitions","rootGroup","_ensureClipGroup","clipGroup","_ensureTransformGroup","fs","http","https","fileUriRegex","parsedUrl","parseUrl","_error","_setReadableStream","protocol","auth","handleResponse","response","getResponseHeader","isHttp","suggestedLength","extractFilenameFromHeader","createRequestOptions","returnValues","allowRangeRequests","contentEncoding","contentDisposition","filename","getFilenameFromContentDispositionHeader","status","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","decoder","fatal","textdecode","matches","parts","part","quotindex","encodingend","extvalue","encoding","langvalue","signal","abortController","credentials","redirect","createFetchOptions","validateResponseStatus","createResponseStatusError","rangeStr","begin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","array","supportsMozChunked","NetworkManager","requestRange","listeners","requestFull","xhrId","pendingRequest","useMozChunkedLoading","onProgress","getArrayBuffer","onStateChange","xhrStatus","ok_response_on_range_request","rangeHeader","hasPendingRequests","getRequestXhr","isStreamingRequest","isPendingRequest","isLoadedRequest","abortAllRequests","_onRangeRequestReaderClosed","onHeadersReceived","onProgressiveData","onDone","manager","PDFNetworkStreamFullRequestReader","_onHeadersReceived","fullRequestXhrId","fullRequestXhr","networkManager","_onProgressiveData","_onDone","_onError","PDFNetworkStreamRangeRequestReader","_close"],"mappings":"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","file":"pdf.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__w_pdfjs_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__w_pdfjs_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__w_pdfjs_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unused-vars, no-restricted-globals */\n\n'use strict';\n\nvar pdfjsVersion =\n  typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_VERSION') : void 0;\nvar pdfjsBuild =\n  typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_BUILD') : void 0;\n\nvar pdfjsSharedUtil = require('./shared/util.js');\nvar pdfjsDisplayAPI = require('./display/api.js');\nvar pdfjsDisplayTextLayer = require('./display/text_layer.js');\nvar pdfjsDisplayAnnotationLayer = require('./display/annotation_layer.js');\nvar pdfjsDisplayDOMUtils = require('./display/dom_utils.js');\nvar pdfjsDisplaySVG = require('./display/svg.js');\nlet pdfjsDisplayWorkerOptions = require('./display/worker_options.js');\nlet pdfjsDisplayAPICompatibility = require('./display/api_compatibility.js');\n\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n  const isNodeJS = require('./shared/is_node.js');\n  if (isNodeJS()) {\n    let PDFNodeStream = require('./display/node_stream.js').PDFNodeStream;\n    pdfjsDisplayAPI.setPDFNetworkStreamFactory((params) => {\n      return new PDFNodeStream(params);\n    });\n  } else if (typeof Response !== 'undefined' && 'body' in Response.prototype &&\n             typeof ReadableStream !== 'undefined') {\n    let PDFFetchStream = require('./display/fetch_stream.js').PDFFetchStream;\n    pdfjsDisplayAPI.setPDFNetworkStreamFactory((params) => {\n      return new PDFFetchStream(params);\n    });\n  } else {\n    let PDFNetworkStream = require('./display/network.js').PDFNetworkStream;\n    pdfjsDisplayAPI.setPDFNetworkStreamFactory((params) => {\n      return new PDFNetworkStream(params);\n    });\n  }\n} else if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {\n  let PDFNetworkStream = require('./display/network.js').PDFNetworkStream;\n  let PDFFetchStream;\n  let isChromeWithFetchCredentials = function() {\n    // fetch does not include credentials until Chrome 61.0.3138.0 and later.\n    // https://chromium.googlesource.com/chromium/src/+/2e231cf052ca5e68e22baf0008ac9e5e29121707\n    try {\n      // Indexed properties on window are read-only in Chrome 61.0.3151.0+\n      // https://chromium.googlesource.com/chromium/src.git/+/58ab4a971b06dec13e4edf9de8382ca6847f6190\n      window[999] = 123; // should throw. Note: JS strict mode MUST be enabled.\n      delete window[999];\n      return false;\n    } catch (e) {\n      return true;\n    }\n  };\n  if (typeof Response !== 'undefined' && 'body' in Response.prototype &&\n      typeof ReadableStream !== 'undefined' && isChromeWithFetchCredentials()) {\n    PDFFetchStream = require('./display/fetch_stream.js').PDFFetchStream;\n  }\n  pdfjsDisplayAPI.setPDFNetworkStreamFactory((params) => {\n    if (PDFFetchStream && /^https?:/i.test(params.url)) {\n      // \"fetch\" is only supported for http(s), not file/ftp.\n      return new PDFFetchStream(params);\n    }\n    return new PDFNetworkStream(params);\n  });\n}\n\nexports.build = pdfjsDisplayAPI.build;\nexports.version = pdfjsDisplayAPI.version;\nexports.getDocument = pdfjsDisplayAPI.getDocument;\nexports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;\nexports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;\nexports.PDFWorker = pdfjsDisplayAPI.PDFWorker;\nexports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;\nexports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;\nexports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;\nexports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;\nexports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;\nexports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;\nexports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;\nexports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;\nexports.CMapCompressionType = pdfjsSharedUtil.CMapCompressionType;\nexports.PermissionFlag = pdfjsSharedUtil.PermissionFlag;\nexports.UnexpectedResponseException =\n  pdfjsSharedUtil.UnexpectedResponseException;\nexports.OPS = pdfjsSharedUtil.OPS;\nexports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;\nexports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;\nexports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;\nexports.createObjectURL = pdfjsSharedUtil.createObjectURL;\nexports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;\nexports.shadow = pdfjsSharedUtil.shadow;\nexports.Util = pdfjsSharedUtil.Util;\nexports.ReadableStream = pdfjsSharedUtil.ReadableStream;\nexports.URL = pdfjsSharedUtil.URL;\nexports.RenderingCancelledException =\n  pdfjsDisplayDOMUtils.RenderingCancelledException;\nexports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;\nexports.LinkTarget = pdfjsDisplayDOMUtils.LinkTarget;\nexports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;\nexports.loadScript = pdfjsDisplayDOMUtils.loadScript;\nexports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;\nexports.apiCompatibilityParams =\n  pdfjsDisplayAPICompatibility.apiCompatibilityParams;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport './compatibility';\nimport { ReadableStream } from './streams_polyfill';\nimport { URL } from './url_polyfill';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n  NONE: 'none',\n  DECODE: 'decode',\n  DISPLAY: 'display',\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst StreamType = {\n  UNKNOWN: 0,\n  FLATE: 1,\n  LZW: 2,\n  DCT: 3,\n  JPX: 4,\n  JBIG: 5,\n  A85: 6,\n  AHX: 7,\n  CCF: 8,\n  RL: 9,\n};\n\nconst FontType = {\n  UNKNOWN: 0,\n  TYPE1: 1,\n  TYPE1C: 2,\n  CIDFONTTYPE0: 3,\n  CIDFONTTYPE0C: 4,\n  TRUETYPE: 5,\n  CIDFONTTYPE2: 6,\n  TYPE3: 7,\n  OPENTYPE: 8,\n  TYPE0: 9,\n  MMTYPE1: 10,\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n  unknown: 'unknown',\n  forms: 'forms',\n  javaScript: 'javaScript',\n  smask: 'smask',\n  shadingPattern: 'shadingPattern',\n  font: 'font',\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log('Info: ' + msg);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log('Warning: ' + msg);\n  }\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n  console.log('Deprecated API usage: ' + details);\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n  try {\n    var base = new URL(baseUrl);\n    if (!base.origin || base.origin === 'null') {\n      return false; // non-HTTP url\n    }\n  } catch (e) {\n    return false;\n  }\n\n  var other = new URL(otherUrl, base);\n  return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case 'http:':\n    case 'https:':\n    case 'ftp:':\n    case 'mailto:':\n    case 'tel:':\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n  if (!url) {\n    return null;\n  }\n  try {\n    var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) { /* `new URL()` will throw on incorrect data. */ }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, { value,\n                                     enumerable: true,\n                                     configurable: true,\n                                     writable: false, });\n  return value;\n}\n\nfunction getLookupTableFactory(initializer) {\n  var lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nvar PasswordException = (function PasswordExceptionClosure() {\n  function PasswordException(msg, code) {\n    this.name = 'PasswordException';\n    this.message = msg;\n    this.code = code;\n  }\n\n  PasswordException.prototype = new Error();\n  PasswordException.constructor = PasswordException;\n\n  return PasswordException;\n})();\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n  function UnknownErrorException(msg, details) {\n    this.name = 'UnknownErrorException';\n    this.message = msg;\n    this.details = details;\n  }\n\n  UnknownErrorException.prototype = new Error();\n  UnknownErrorException.constructor = UnknownErrorException;\n\n  return UnknownErrorException;\n})();\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n  function InvalidPDFException(msg) {\n    this.name = 'InvalidPDFException';\n    this.message = msg;\n  }\n\n  InvalidPDFException.prototype = new Error();\n  InvalidPDFException.constructor = InvalidPDFException;\n\n  return InvalidPDFException;\n})();\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n  function MissingPDFException(msg) {\n    this.name = 'MissingPDFException';\n    this.message = msg;\n  }\n\n  MissingPDFException.prototype = new Error();\n  MissingPDFException.constructor = MissingPDFException;\n\n  return MissingPDFException;\n})();\n\nvar UnexpectedResponseException =\n    (function UnexpectedResponseExceptionClosure() {\n  function UnexpectedResponseException(msg, status) {\n    this.name = 'UnexpectedResponseException';\n    this.message = msg;\n    this.status = status;\n  }\n\n  UnexpectedResponseException.prototype = new Error();\n  UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n  return UnexpectedResponseException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n  function MissingDataException(begin, end) {\n    this.begin = begin;\n    this.end = end;\n    this.message = 'Missing data [' + begin + ', ' + end + ')';\n  }\n\n  MissingDataException.prototype = new Error();\n  MissingDataException.prototype.name = 'MissingDataException';\n  MissingDataException.constructor = MissingDataException;\n\n  return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n  function XRefParseException(msg) {\n    this.message = msg;\n  }\n\n  XRefParseException.prototype = new Error();\n  XRefParseException.prototype.name = 'XRefParseException';\n  XRefParseException.constructor = XRefParseException;\n\n  return XRefParseException;\n})();\n\n/**\n * Error caused during parsing PDF data.\n */\nlet FormatError = (function FormatErrorClosure() {\n  function FormatError(msg) {\n    this.message = msg;\n  }\n\n  FormatError.prototype = new Error();\n  FormatError.prototype.name = 'FormatError';\n  FormatError.constructor = FormatError;\n\n  return FormatError;\n})();\n\n/**\n * Error used to indicate task cancellation.\n */\nlet AbortException = (function AbortExceptionClosure() {\n  function AbortException(msg) {\n    this.name = 'AbortException';\n    this.message = msg;\n  }\n\n  AbortException.prototype = new Error();\n  AbortException.constructor = AbortException;\n\n  return AbortException;\n})();\n\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n  if (typeof str !== 'string') {\n    warn('The argument for removeNullCharacters must be a string.');\n    return str;\n  }\n  return str.replace(NullCharactersRegExp, '');\n}\n\nfunction bytesToString(bytes) {\n  assert(bytes !== null && typeof bytes === 'object' &&\n         bytes.length !== undefined, 'Invalid argument for bytesToString');\n  var length = bytes.length;\n  var MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  var strBuf = [];\n  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    var chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join('');\n}\n\nfunction stringToBytes(str) {\n  assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n  var length = str.length;\n  var bytes = new Uint8Array(length);\n  for (var i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xFF;\n  }\n  return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined);\n  return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (arr.length === 1 && (arr[0] instanceof Uint8Array)) {\n    return arr[0];\n  }\n  var resultLength = 0;\n  var i, ii = arr.length;\n  var item, itemLength;\n  for (i = 0; i < ii; i++) {\n    item = arr[i];\n    itemLength = arrayByteLength(item);\n    resultLength += itemLength;\n  }\n  var pos = 0;\n  var data = new Uint8Array(resultLength);\n  for (i = 0; i < ii; i++) {\n    item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === 'string') {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n                             (value >> 8) & 0xff, value & 0xff);\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, start) {\n  return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return ((data[offset] << 24) | (data[offset + 1] << 16) |\n         (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n  var buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return (view32[0] === 1);\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(''); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned. To avoid infinite loops, the traversal is stopped when\n * the loop limit is reached.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({ dict, key, getArray = false,\n                                  stopWhenFound = true, }) {\n  const LOOP_LIMIT = 100;\n  let loopCount = 0;\n  let values;\n\n  while (dict) {\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    if (++loopCount > LOOP_LIMIT) {\n      warn(`getInheritableProperty: maximum loop count exceeded for \"${key}\"`);\n      break;\n    }\n    dict = dict.get('Parent');\n  }\n  return values;\n}\n\nvar Util = (function UtilClosure() {\n  function Util() {}\n\n  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n  // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n  // creating many intermediate strings.\n  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n    rgbBuf[1] = r;\n    rgbBuf[3] = g;\n    rgbBuf[5] = b;\n    return rgbBuf.join('');\n  };\n\n  // Concatenates two transformation matrices together and returns the result.\n  Util.transform = function Util_transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n    ];\n  };\n\n  // For 2d affine transforms\n  Util.applyTransform = function Util_applyTransform(p, m) {\n    var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  };\n\n  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n    var d = m[0] * m[3] - m[1] * m[2];\n    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  };\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  Util.getAxialAlignedBoundingBox =\n    function Util_getAxialAlignedBoundingBox(r, m) {\n\n    var p1 = Util.applyTransform(r, m);\n    var p2 = Util.applyTransform(r.slice(2, 4), m);\n    var p3 = Util.applyTransform([r[0], r[3]], m);\n    var p4 = Util.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1])\n    ];\n  };\n\n  Util.inverseTransform = function Util_inverseTransform(m) {\n    var d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  };\n\n  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2]\n    ];\n  };\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  Util.singularValueDecompose2dScale =\n    function Util_singularValueDecompose2dScale(m) {\n\n    var transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    var a = m[0] * transpose[0] + m[1] * transpose[2];\n    var b = m[0] * transpose[1] + m[1] * transpose[3];\n    var c = m[2] * transpose[0] + m[3] * transpose[2];\n    var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    var first = (a + d) / 2;\n    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n    var sx = first + second || 1;\n    var sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  };\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  Util.normalizeRect = function Util_normalizeRect(rect) {\n    var r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  };\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'false'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  Util.intersect = function Util_intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    // Order points along the axes\n    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n        result = [];\n\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    // X: first and second points belong to different rectangles?\n    if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n        (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n      // Intersection must be between second and third points\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return false;\n    }\n\n    // Y: first and second points belong to different rectangles?\n    if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n        (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n      // Intersection must be between second and third points\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return false;\n    }\n\n    return result;\n  };\n\n  return Util;\n})();\n\nconst ROMAN_NUMBER_MAP = [\n  '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',\n  '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',\n  '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {integer} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @return {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(Number.isInteger(number) && number > 0,\n         'The number should be a positive integer.');\n  let pos, romanBuf = [];\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push('M');\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n  const romanStr = romanBuf.join('');\n  return (lowerCase ? romanStr.toLowerCase() : romanStr);\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n  var i, n = str.length, strBuf = [];\n  if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n    // UTF16BE BOM\n    for (i = 2; i < n; i += 2) {\n      strBuf.push(String.fromCharCode(\n        (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n    }\n  } else {\n    for (i = 0; i < n; ++i) {\n      var code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n  for (var key in obj) {\n    return false;\n  }\n  return true;\n}\n\nfunction isBool(v) {\n  return typeof v === 'boolean';\n}\n\nfunction isNum(v) {\n  return typeof v === 'number';\n}\n\nfunction isString(v) {\n  return typeof v === 'string';\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isSpace(ch) {\n  return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A);\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\n * @property {function} resolve - Fulfills the promise.\n * @property {function} reject - Rejects the promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n  var capability = {};\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = resolve;\n    capability.reject = reject;\n  });\n  return capability;\n}\n\nvar createObjectURL = (function createObjectURLClosure() {\n  // Blob/createObjectURL is not available, falling back to data schema.\n  var digits =\n    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n  return function createObjectURL(data, contentType, forceDataSchema = false) {\n    if (!forceDataSchema && URL.createObjectURL) {\n      const blob = new Blob([data], { type: contentType, });\n      return URL.createObjectURL(blob);\n    }\n\n    var buffer = 'data:' + contentType + ';base64,';\n    for (var i = 0, ii = data.length; i < ii; i += 3) {\n      var b1 = data[i] & 0xFF;\n      var b2 = data[i + 1] & 0xFF;\n      var b3 = data[i + 2] & 0xFF;\n      var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n      var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n      var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n})();\n\nexport {\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  OPS,\n  VerbosityLevel,\n  UNSUPPORTED_FEATURES,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationType,\n  FontType,\n  ImageKind,\n  CMapCompressionType,\n  AbortException,\n  InvalidPDFException,\n  MissingDataException,\n  MissingPDFException,\n  NativeImageDecoding,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  StreamType,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  Util,\n  toRomanNumerals,\n  XRefParseException,\n  FormatError,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createObjectURL,\n  deprecated,\n  getInheritableProperty,\n  getLookupTableFactory,\n  getVerbosityLevel,\n  info,\n  isArrayBuffer,\n  isBool,\n  isEmptyObj,\n  isNum,\n  isString,\n  isSpace,\n  isSameOrigin,\n  createValidAbsoluteUrl,\n  isLittleEndian,\n  isEvalSupported,\n  log2,\n  readInt8,\n  readUint16,\n  readUint32,\n  removeNullCharacters,\n  ReadableStream,\n  URL,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  utf8StringToString,\n  warn,\n  unreachable,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst globalScope = require('./global_scope');\n\n// Skip compatibility checks for the extensions and if we already ran\n// this module.\nif ((typeof PDFJSDev === 'undefined' ||\n     !PDFJSDev.test('FIREFOX || MOZCENTRAL')) &&\n    !globalScope._pdfjsCompatibilityChecked) {\n\nglobalScope._pdfjsCompatibilityChecked = true;\n\n// In the Chrome extension, most of the polyfills are unnecessary.\n// We support down to Chrome 49, because it's still commonly used by Windows XP\n// users - https://github.com/mozilla/pdf.js/issues/9397\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('CHROME')) {\n\nconst isNodeJS = require('./is_node');\n\nconst hasDOM = typeof window === 'object' && typeof document === 'object';\n\n// Support: Node.js\n(function checkNodeBtoa() {\n  if (globalScope.btoa || !isNodeJS()) {\n    return;\n  }\n  globalScope.btoa = function(chars) {\n    // eslint-disable-next-line no-undef\n    return Buffer.from(chars, 'binary').toString('base64');\n  };\n})();\n\n// Support: Node.js\n(function checkNodeAtob() {\n  if (globalScope.atob || !isNodeJS()) {\n    return;\n  }\n  globalScope.atob = function(input) {\n    // eslint-disable-next-line no-undef\n    return Buffer.from(input, 'base64').toString('binary');\n  };\n})();\n\n// Provides document.currentScript support\n// Support: IE, Chrome<29.\n(function checkCurrentScript() {\n  if (!hasDOM) {\n    return;\n  }\n  if ('currentScript' in document) {\n    return;\n  }\n  Object.defineProperty(document, 'currentScript', {\n    get() {\n      var scripts = document.getElementsByTagName('script');\n      return scripts[scripts.length - 1];\n    },\n    enumerable: true,\n    configurable: true,\n  });\n})();\n\n// Provides support for ChildNode.remove in legacy browsers.\n// Support: IE.\n(function checkChildNodeRemove() {\n  if (!hasDOM) {\n    return;\n  }\n  if (typeof Element.prototype.remove !== 'undefined') {\n    return;\n  }\n  Element.prototype.remove = function () {\n    if (this.parentNode) {\n      // eslint-disable-next-line mozilla/avoid-removeChild\n      this.parentNode.removeChild(this);\n    }\n  };\n})();\n\n// Provides support for DOMTokenList.prototype.toggle, with the optional\n// \"force\" parameter, in legacy browsers.\n// Support: IE\n(function checkDOMTokenListToggle() {\n  if (!hasDOM || isNodeJS()) {\n    return;\n  }\n  const div = document.createElement('div');\n  if (div.classList.toggle('test', 0) === false) {\n    return;\n  }\n  const originalDOMTokenListToggle = DOMTokenList.prototype.toggle;\n\n  DOMTokenList.prototype.toggle = function(token) {\n    if (arguments.length > 1) {\n      const force = !!arguments[1];\n      return (this[force ? 'add' : 'remove'](token), force);\n    }\n    return originalDOMTokenListToggle(token);\n  };\n})();\n\n// Provides support for String.prototype.includes in legacy browsers.\n// Support: IE, Chrome<41\n(function checkStringIncludes() {\n  if (String.prototype.includes) {\n    return;\n  }\n  require('core-js/fn/string/includes');\n})();\n\n// Provides support for Array.prototype.includes in legacy browsers.\n// Support: IE, Chrome<47\n(function checkArrayIncludes() {\n  if (Array.prototype.includes) {\n    return;\n  }\n  require('core-js/fn/array/includes');\n})();\n\n// Provides support for Object.assign in legacy browsers.\n// Support: IE\n(function checkObjectAssign() {\n  if (Object.assign) {\n    return;\n  }\n  require('core-js/fn/object/assign');\n})();\n\n// Provides support for Math.log2 in legacy browsers.\n// Support: IE, Chrome<38\n(function checkMathLog2() {\n  if (Math.log2) {\n    return;\n  }\n  Math.log2 = require('core-js/fn/math/log2');\n})();\n\n// Provides support for Number.isNaN in legacy browsers.\n// Support: IE.\n(function checkNumberIsNaN() {\n  if (Number.isNaN) {\n    return;\n  }\n  Number.isNaN = require('core-js/fn/number/is-nan');\n})();\n\n// Provides support for Number.isInteger in legacy browsers.\n// Support: IE, Chrome<34\n(function checkNumberIsInteger() {\n  if (Number.isInteger) {\n    return;\n  }\n  Number.isInteger = require('core-js/fn/number/is-integer');\n})();\n\n// Support: IE, Safari<8, Chrome<32\n(function checkPromise() {\n  if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n    // The current image decoders are synchronous, hence `Promise` shouldn't\n    // need to be polyfilled for the IMAGE_DECODERS build target.\n    return;\n  }\n  if (globalScope.Promise) {\n    return;\n  }\n  globalScope.Promise = require('core-js/fn/promise');\n})();\n\n// Support: IE<11, Safari<8, Chrome<36\n(function checkWeakMap() {\n  if (globalScope.WeakMap) {\n    return;\n  }\n  globalScope.WeakMap = require('core-js/fn/weak-map');\n})();\n\n// Provides support for String.codePointAt in legacy browsers.\n// Support: IE11.\n(function checkStringCodePointAt() {\n  if (String.codePointAt) {\n    return;\n  }\n  String.codePointAt = require('core-js/fn/string/code-point-at');\n})();\n\n// Provides support for String.fromCodePoint in legacy browsers.\n// Support: IE11.\n(function checkStringFromCodePoint() {\n  if (String.fromCodePoint) {\n    return;\n  }\n  String.fromCodePoint = require('core-js/fn/string/from-code-point');\n})();\n\n// Support: IE\n(function checkSymbol() {\n  if (globalScope.Symbol) {\n    return;\n  }\n  require('core-js/es6/symbol');\n})();\n\n} // End of !PDFJSDev.test('CHROME')\n\n// Provides support for Object.values in legacy browsers.\n// Support: IE, Chrome<54\n(function checkObjectValues() {\n  if (Object.values) {\n    return;\n  }\n  Object.values = require('core-js/fn/object/values');\n})();\n\n}\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module */\n\nmodule.exports =\n  (typeof window !== 'undefined' && window.Math === Math) ? window :\n  // eslint-disable-next-line no-undef\n  (typeof global !== 'undefined' && global.Math === Math) ? global :\n  (typeof self !== 'undefined' && self.Math === Math) ? self : {};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module, process */\n\nmodule.exports = function isNodeJS() {\n  return typeof process === 'object' && process + '' === '[object process]';\n};\n","require('../../modules/es6.string.includes');\nmodule.exports = require('../../modules/_core').String.includes;\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = false;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","exports.f = {}.propertyIsEnumerable;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","require('../../modules/es6.math.log2');\nmodule.exports = require('../../modules/_core').Math.log2;\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n  log2: function log2(x) {\n    return Math.log(x) / Math.LN2;\n  }\n});\n","require('../../modules/es6.number.is-nan');\nmodule.exports = require('../../modules/_core').Number.isNaN;\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare\n    return number != number;\n  }\n});\n","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  require('./_redefine')(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","module.exports = {};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\n      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n      // we can't detect it synchronously, so just check versions\n      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n","module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) redefine(target, key, src[key], safe);\n  return target;\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.Promise);\n  var isFunction = typeof onFinally == 'function';\n  return this.then(\n    isFunction ? function (x) {\n      return promiseResolve(C, onFinally()).then(function () { return x; });\n    } : onFinally,\n    isFunction ? function (e) {\n      return promiseResolve(C, onFinally()).then(function () { throw e; });\n    } : onFinally\n  );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n  var promiseCapability = newPromiseCapability.f(this);\n  var result = perform(callbackfn);\n  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n  return promiseCapability.promise;\n} });\n","require('../modules/es6.object.to-string');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es7.weak-map.of');\nrequire('../modules/es7.weak-map.from');\nmodule.exports = require('../modules/_core').WeakMap;\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n  return function WeakMap() {\n    return get(this, arguments.length > 0 ? arguments[0] : undefined);\n  };\n};\n\nvar methods = {\n  // 23.3.3.3 WeakMap.prototype.get(key)\n  get: function get(key) {\n    if (isObject(key)) {\n      var data = getWeak(key);\n      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n      return data ? data[this._i] : undefined;\n    }\n  },\n  // 23.3.3.5 WeakMap.prototype.set(key, value)\n  set: function set(key, value) {\n    return weak.def(validate(this, WEAK_MAP), key, value);\n  }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n  assign(InternalMap.prototype, methods);\n  meta.NEED = true;\n  each(['delete', 'has', 'get', 'set'], function (key) {\n    var proto = $WeakMap.prototype;\n    var method = proto[key];\n    redefine(proto, key, function (a, b) {\n      // store frozen objects on internal weakmap shim\n      if (isObject(a) && !isExtensible(a)) {\n        if (!this._f) this._f = new InternalMap();\n        var result = this._f[key](a, b);\n        return key == 'set' ? this : result;\n      // store all the rest on native weakmap\n      } return method.call(this, a, b);\n    });\n  });\n}\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n  return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n  this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n  return arrayFind(store.a, function (it) {\n    return it[0] === key;\n  });\n};\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.a.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = arrayFindIndex(this.a, function (it) {\n      return it[0] === key;\n    });\n    if (~index) this.a.splice(index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;      // collection type\n      that._i = id++;      // collection id\n      that._l = undefined; // leak store for uncaught frozen objects\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.3.3.2 WeakMap.prototype.delete(key)\n      // 23.4.3.3 WeakSet.prototype.delete(value)\n      'delete': function (key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n        return data && $has(data, this._i) && delete data[this._i];\n      },\n      // 23.3.3.4 WeakMap.prototype.has(key)\n      // 23.4.3.4 WeakSet.prototype.has(value)\n      has: function has(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n        return data && $has(data, this._i);\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var data = getWeak(anObject(key), true);\n    if (data === true) uncaughtFrozenStore(that).set(key, value);\n    else data[that._i] = value;\n    return that;\n  },\n  ufstore: uncaughtFrozenStore\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  var fixMethod = function (KEY) {\n    var fn = proto[KEY];\n    redefine(proto, KEY,\n      KEY == 'delete' ? function (a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'has' ? function has(a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'get' ? function get(a) {\n        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n    );\n  };\n  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    // create collection constructor\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    var instance = new C();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new C();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n    if (!ACCEPT_ITERABLES) {\n      C = wrapper(function (target, iterable) {\n        anInstance(target, C, NAME);\n        var that = inheritIfRequired(new Base(), target, C);\n        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n        return that;\n      });\n      C.prototype = proto;\n      proto.constructor = C;\n    }\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n    // weak collections should not contains .clear method\n    if (IS_WEAK && proto.clear) delete proto.clear;\n  }\n\n  setToStringTag(C, NAME);\n\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F * (C != Base), O);\n\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n  return C;\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { of: function of() {\n    var length = arguments.length;\n    var A = new Array(length);\n    while (length--) A[length] = arguments[length];\n    return new this(A);\n  } });\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n    var mapFn = arguments[1];\n    var mapping, A, n, cb;\n    aFunction(this);\n    mapping = mapFn !== undefined;\n    if (mapping) aFunction(mapFn);\n    if (source == undefined) return new this();\n    A = [];\n    if (mapping) {\n      n = 0;\n      cb = ctx(mapFn, arguments[2], 2);\n      forOf(source, false, function (nextItem) {\n        A.push(cb(nextItem, n++));\n      });\n    } else {\n      forOf(source, false, A.push, A);\n    }\n    return new this(A);\n  } });\n};\n","require('../../modules/es6.string.code-point-at');\nmodule.exports = require('../../modules/_core').String.codePointAt;\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n  // 21.1.3.3 String.prototype.codePointAt(pos)\n  codePointAt: function codePointAt(pos) {\n    return $at(this, pos);\n  }\n});\n","require('../../modules/es6.string.from-code-point');\nmodule.exports = require('../../modules/_core').String.fromCodePoint;\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n  // 21.1.2.2 String.fromCodePoint(...codePoints)\n  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n    var res = [];\n    var aLen = arguments.length;\n    var i = 0;\n    var code;\n    while (aLen > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n      res.push(code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n      );\n    } return res.join('');\n  }\n});\n","require('../modules/es6.symbol');\nrequire('../modules/es6.object.to-string');\nmodule.exports = require('../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  require('./_object-gops').f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) if (isEnum.call(O, key = keys[i++])) {\n      result.push(isEntries ? [key, O[key]] : O[key]);\n    } return result;\n  };\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-globals */\n\nlet isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n  // MS Edge may say it has ReadableStream but they are not up to spec yet.\n  try {\n    // eslint-disable-next-line no-new\n    new ReadableStream({\n      start(controller) {\n        controller.close();\n      },\n    });\n    isReadableStreamSupported = true;\n  } catch (e) {\n    // The ReadableStream constructor cannot be used.\n  }\n}\nif (isReadableStreamSupported) {\n  exports.ReadableStream = ReadableStream;\n} else {\n  if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n    class DummyReadableStream {\n      constructor() {\n        throw new Error('The current image decoders are synchronous, ' +\n                        'hence `ReadableStream` shouldn\\'t need to be ' +\n                        'polyfilled for the IMAGE_DECODERS build target.');\n      }\n    }\n    exports.ReadableStream = DummyReadableStream;\n  } else {\n    exports.ReadableStream =\n      require('../../external/streams/streams-lib').ReadableStream;\n  }\n}\n","/*\n * To the extent possible under law, the authors have dedicated all copyright\n * and related and neighboring rights to this software to the public\n * domain worldwide. This software is distributed without any warranty.\n *\n * You should have received a copy of the CC0 Public Domain Dedication along\n * with this software. If not, see https://creativecommons.org/publicdomain/zero/1.0/.\n */\n\n(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap\n/******/  // The module cache\n/******/  var installedModules = {};\n/******/\n/******/  // The require function\n/******/  function __w_pdfjs_require__(moduleId) {\n/******/\n/******/    // Check if module is in cache\n/******/    if(installedModules[moduleId])\n/******/      return installedModules[moduleId].exports;\n/******/\n/******/    // Create a new module (and put it into the cache)\n/******/    var module = installedModules[moduleId] = {\n/******/      i: moduleId,\n/******/      l: false,\n/******/      exports: {}\n/******/    };\n/******/\n/******/    // Execute the module function\n/******/    modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/    // Flag the module as loaded\n/******/    module.l = true;\n/******/\n/******/    // Return the exports of the module\n/******/    return module.exports;\n/******/  }\n/******/\n/******/\n/******/  // expose the modules object (__webpack_modules__)\n/******/  __w_pdfjs_require__.m = modules;\n/******/\n/******/  // expose the module cache\n/******/  __w_pdfjs_require__.c = installedModules;\n/******/\n/******/  // identity function for calling harmony imports with the correct context\n/******/  __w_pdfjs_require__.i = function(value) { return value; };\n/******/\n/******/  // define getter function for harmony exports\n/******/  __w_pdfjs_require__.d = function(exports, name, getter) {\n/******/    if(!__w_pdfjs_require__.o(exports, name)) {\n/******/      Object.defineProperty(exports, name, {\n/******/        configurable: false,\n/******/        enumerable: true,\n/******/        get: getter\n/******/      });\n/******/    }\n/******/  };\n/******/\n/******/  // getDefaultExport function for compatibility with non-harmony modules\n/******/  __w_pdfjs_require__.n = function(module) {\n/******/    var getter = module && module.__esModule ?\n/******/      function getDefault() { return module['default']; } :\n/******/      function getModuleExports() { return module; };\n/******/    __w_pdfjs_require__.d(getter, 'a', getter);\n/******/    return getter;\n/******/  };\n/******/\n/******/  // Object.prototype.hasOwnProperty.call\n/******/  __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/  // __webpack_public_path__\n/******/  __w_pdfjs_require__.p = \"\";\n/******/\n/******/  // Load entry module and return exports\n/******/  return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = __w_pdfjs_require__(1),\n    assert = _require.assert;\n\nfunction IsPropertyKey(argument) {\n  return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n}\n\nexports.typeIsObject = function (x) {\n  return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n};\n\nexports.createDataProperty = function (o, p, v) {\n  assert(exports.typeIsObject(o));\n  Object.defineProperty(o, p, { value: v, writable: true, enumerable: true, configurable: true });\n};\n\nexports.createArrayFromList = function (elements) {\n  // We use arrays to represent lists, so this is basically a no-op.\n  // Do a slice though just in case we happen to depend on the unique-ness.\n  return elements.slice();\n};\n\nexports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n  new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n};\n\nexports.CreateIterResultObject = function (value, done) {\n  assert(typeof done === 'boolean');\n  var obj = {};\n  Object.defineProperty(obj, 'value', { value: value, enumerable: true, writable: true, configurable: true });\n  Object.defineProperty(obj, 'done', { value: done, enumerable: true, writable: true, configurable: true });\n  return obj;\n};\n\nexports.IsFiniteNonNegativeNumber = function (v) {\n  if (Number.isNaN(v)) {\n    return false;\n  }\n  if (v === Infinity) {\n    return false;\n  }\n  if (v < 0) {\n    return false;\n  }\n\n  return true;\n};\n\nfunction Call(F, V, args) {\n  if (typeof F !== 'function') {\n    throw new TypeError('Argument is not a function');\n  }\n\n  return Function.prototype.apply.call(F, V, args);\n}\n\nexports.InvokeOrNoop = function (O, P, args) {\n  assert(O !== undefined);\n  assert(IsPropertyKey(P));\n  assert(Array.isArray(args));\n\n  var method = O[P];\n  if (method === undefined) {\n    return undefined;\n  }\n\n  return Call(method, O, args);\n};\n\nexports.PromiseInvokeOrNoop = function (O, P, args) {\n  assert(O !== undefined);\n  assert(IsPropertyKey(P));\n  assert(Array.isArray(args));\n  try {\n    return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n  } catch (returnValueE) {\n    return Promise.reject(returnValueE);\n  }\n};\n\nexports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n  assert(O !== undefined);\n  assert(IsPropertyKey(P));\n  assert(Array.isArray(args));\n  assert(Array.isArray(argsF));\n\n  var method = void 0;\n  try {\n    method = O[P];\n  } catch (methodE) {\n    return Promise.reject(methodE);\n  }\n\n  if (method === undefined) {\n    return F.apply(null, argsF);\n  }\n\n  try {\n    return Promise.resolve(Call(method, O, args));\n  } catch (e) {\n    return Promise.reject(e);\n  }\n};\n\n// Not implemented correctly\nexports.TransferArrayBuffer = function (O) {\n  return O.slice();\n};\n\nexports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n  highWaterMark = Number(highWaterMark);\n  if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n    throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n  }\n\n  return highWaterMark;\n};\n\nexports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n  if (size !== undefined && typeof size !== 'function') {\n    throw new TypeError('size property of a queuing strategy must be a function');\n  }\n\n  highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n  return { size: size, highWaterMark: highWaterMark };\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nfunction rethrowAssertionErrorRejection(e) {\n  // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n  // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n  // expect any errors, but assertion errors are always problematic.\n  if (e && e.constructor === AssertionError) {\n    setTimeout(function () {\n      throw e;\n    }, 0);\n  }\n};\n\nfunction AssertionError(message) {\n  this.name = 'AssertionError';\n  this.message = message || '';\n  this.stack = new Error().stack;\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.constructor = AssertionError;\n\nfunction assert(value, message) {\n  if (!value) {\n    throw new AssertionError(message);\n  }\n}\n\nmodule.exports = {\n  rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n  AssertionError: AssertionError,\n  assert: assert\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n    InvokeOrNoop = _require.InvokeOrNoop,\n    PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n    ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n    typeIsObject = _require.typeIsObject;\n\nvar _require2 = __w_pdfjs_require__(1),\n    assert = _require2.assert,\n    rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n\nvar _require3 = __w_pdfjs_require__(3),\n    DequeueValue = _require3.DequeueValue,\n    EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n    PeekQueueValue = _require3.PeekQueueValue,\n    ResetQueue = _require3.ResetQueue;\n\nvar WritableStream = function () {\n  function WritableStream() {\n    var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        size = _ref.size,\n        _ref$highWaterMark = _ref.highWaterMark,\n        highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n\n    _classCallCheck(this, WritableStream);\n\n    this._state = 'writable';\n\n    // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n    // 'erroring' or 'errored'. May be set to an undefined value.\n    this._storedError = undefined;\n\n    this._writer = undefined;\n\n    // Initialize to undefined first because the constructor of the controller checks this\n    // variable to validate the caller.\n    this._writableStreamController = undefined;\n\n    // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n    // producer without waiting for the queued writes to finish.\n    this._writeRequests = [];\n\n    // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n    // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n    this._inFlightWriteRequest = undefined;\n\n    // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n    // has been detached.\n    this._closeRequest = undefined;\n\n    // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n    // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n    this._inFlightCloseRequest = undefined;\n\n    // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n    this._pendingAbortRequest = undefined;\n\n    // The backpressure signal set by the controller.\n    this._backpressure = false;\n\n    var type = underlyingSink.type;\n\n    if (type !== undefined) {\n      throw new RangeError('Invalid type is specified');\n    }\n\n    this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n    this._writableStreamController.__startSteps();\n  }\n\n  _createClass(WritableStream, [{\n    key: 'abort',\n    value: function abort(reason) {\n      if (IsWritableStream(this) === false) {\n        return Promise.reject(streamBrandCheckException('abort'));\n      }\n\n      if (IsWritableStreamLocked(this) === true) {\n        return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n      }\n\n      return WritableStreamAbort(this, reason);\n    }\n  }, {\n    key: 'getWriter',\n    value: function getWriter() {\n      if (IsWritableStream(this) === false) {\n        throw streamBrandCheckException('getWriter');\n      }\n\n      return AcquireWritableStreamDefaultWriter(this);\n    }\n  }, {\n    key: 'locked',\n    get: function get() {\n      if (IsWritableStream(this) === false) {\n        throw streamBrandCheckException('locked');\n      }\n\n      return IsWritableStreamLocked(this);\n    }\n  }]);\n\n  return WritableStream;\n}();\n\nmodule.exports = {\n  AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n  IsWritableStream: IsWritableStream,\n  IsWritableStreamLocked: IsWritableStreamLocked,\n  WritableStream: WritableStream,\n  WritableStreamAbort: WritableStreamAbort,\n  WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n  WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n  WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n  WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n  WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter(stream) {\n  return new WritableStreamDefaultWriter(stream);\n}\n\nfunction IsWritableStream(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsWritableStreamLocked(stream) {\n  assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n\n  if (stream._writer === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamAbort(stream, reason) {\n  var state = stream._state;\n  if (state === 'closed') {\n    return Promise.resolve(undefined);\n  }\n  if (state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n  var error = new TypeError('Requested to abort');\n  if (stream._pendingAbortRequest !== undefined) {\n    return Promise.reject(error);\n  }\n\n  assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n\n  var wasAlreadyErroring = false;\n  if (state === 'erroring') {\n    wasAlreadyErroring = true;\n    // reason will not be used, so don't keep a reference to it.\n    reason = undefined;\n  }\n\n  var promise = new Promise(function (resolve, reject) {\n    stream._pendingAbortRequest = {\n      _resolve: resolve,\n      _reject: reject,\n      _reason: reason,\n      _wasAlreadyErroring: wasAlreadyErroring\n    };\n  });\n\n  if (wasAlreadyErroring === false) {\n    WritableStreamStartErroring(stream, error);\n  }\n\n  return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream) {\n  assert(IsWritableStreamLocked(stream) === true);\n  assert(stream._state === 'writable');\n\n  var promise = new Promise(function (resolve, reject) {\n    var writeRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._writeRequests.push(writeRequest);\n  });\n\n  return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream, error) {\n  var state = stream._state;\n\n  if (state === 'writable') {\n    WritableStreamStartErroring(stream, error);\n    return;\n  }\n\n  assert(state === 'erroring');\n  WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream, reason) {\n  assert(stream._storedError === undefined, 'stream._storedError === undefined');\n  assert(stream._state === 'writable', 'state must be writable');\n\n  var controller = stream._writableStreamController;\n  assert(controller !== undefined, 'controller must not be undefined');\n\n  stream._state = 'erroring';\n  stream._storedError = reason;\n  var writer = stream._writer;\n  if (writer !== undefined) {\n    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n  }\n\n  if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n    WritableStreamFinishErroring(stream);\n  }\n}\n\nfunction WritableStreamFinishErroring(stream) {\n  assert(stream._state === 'erroring', 'stream._state === erroring');\n  assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n  stream._state = 'errored';\n  stream._writableStreamController.__errorSteps();\n\n  var storedError = stream._storedError;\n  for (var i = 0; i < stream._writeRequests.length; i++) {\n    var writeRequest = stream._writeRequests[i];\n    writeRequest._reject(storedError);\n  }\n  stream._writeRequests = [];\n\n  if (stream._pendingAbortRequest === undefined) {\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    return;\n  }\n\n  var abortRequest = stream._pendingAbortRequest;\n  stream._pendingAbortRequest = undefined;\n\n  if (abortRequest._wasAlreadyErroring === true) {\n    abortRequest._reject(storedError);\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    return;\n  }\n\n  var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n  promise.then(function () {\n    abortRequest._resolve();\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n  }, function (reason) {\n    abortRequest._reject(reason);\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n  });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream) {\n  assert(stream._inFlightWriteRequest !== undefined);\n  stream._inFlightWriteRequest._resolve(undefined);\n  stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream, error) {\n  assert(stream._inFlightWriteRequest !== undefined);\n  stream._inFlightWriteRequest._reject(error);\n  stream._inFlightWriteRequest = undefined;\n\n  assert(stream._state === 'writable' || stream._state === 'erroring');\n\n  WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream) {\n  assert(stream._inFlightCloseRequest !== undefined);\n  stream._inFlightCloseRequest._resolve(undefined);\n  stream._inFlightCloseRequest = undefined;\n\n  var state = stream._state;\n\n  assert(state === 'writable' || state === 'erroring');\n\n  if (state === 'erroring') {\n    // The error was too late to do anything, so it is ignored.\n    stream._storedError = undefined;\n    if (stream._pendingAbortRequest !== undefined) {\n      stream._pendingAbortRequest._resolve();\n      stream._pendingAbortRequest = undefined;\n    }\n  }\n\n  stream._state = 'closed';\n\n  var writer = stream._writer;\n  if (writer !== undefined) {\n    defaultWriterClosedPromiseResolve(writer);\n  }\n\n  assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n  assert(stream._storedError === undefined, 'stream._storedError === undefined');\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream, error) {\n  assert(stream._inFlightCloseRequest !== undefined);\n  stream._inFlightCloseRequest._reject(error);\n  stream._inFlightCloseRequest = undefined;\n\n  assert(stream._state === 'writable' || stream._state === 'erroring');\n\n  // Never execute sink abort() after sink close().\n  if (stream._pendingAbortRequest !== undefined) {\n    stream._pendingAbortRequest._reject(error);\n    stream._pendingAbortRequest = undefined;\n  }\n  WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream) {\n  if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream) {\n  if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream) {\n  assert(stream._inFlightCloseRequest === undefined);\n  assert(stream._closeRequest !== undefined);\n  stream._inFlightCloseRequest = stream._closeRequest;\n  stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream) {\n  assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n  assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n  stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n  assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n  if (stream._closeRequest !== undefined) {\n    assert(stream._inFlightCloseRequest === undefined);\n\n    stream._closeRequest._reject(stream._storedError);\n    stream._closeRequest = undefined;\n  }\n  var writer = stream._writer;\n  if (writer !== undefined) {\n    defaultWriterClosedPromiseReject(writer, stream._storedError);\n    writer._closedPromise.catch(function () {});\n  }\n}\n\nfunction WritableStreamUpdateBackpressure(stream, backpressure) {\n  assert(stream._state === 'writable');\n  assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n  var writer = stream._writer;\n  if (writer !== undefined && backpressure !== stream._backpressure) {\n    if (backpressure === true) {\n      defaultWriterReadyPromiseReset(writer);\n    } else {\n      assert(backpressure === false);\n\n      defaultWriterReadyPromiseResolve(writer);\n    }\n  }\n\n  stream._backpressure = backpressure;\n}\n\nvar WritableStreamDefaultWriter = function () {\n  function WritableStreamDefaultWriter(stream) {\n    _classCallCheck(this, WritableStreamDefaultWriter);\n\n    if (IsWritableStream(stream) === false) {\n      throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n    }\n    if (IsWritableStreamLocked(stream) === true) {\n      throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n    }\n\n    this._ownerWritableStream = stream;\n    stream._writer = this;\n\n    var state = stream._state;\n\n    if (state === 'writable') {\n      if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n        defaultWriterReadyPromiseInitialize(this);\n      } else {\n        defaultWriterReadyPromiseInitializeAsResolved(this);\n      }\n\n      defaultWriterClosedPromiseInitialize(this);\n    } else if (state === 'erroring') {\n      defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n      this._readyPromise.catch(function () {});\n      defaultWriterClosedPromiseInitialize(this);\n    } else if (state === 'closed') {\n      defaultWriterReadyPromiseInitializeAsResolved(this);\n      defaultWriterClosedPromiseInitializeAsResolved(this);\n    } else {\n      assert(state === 'errored', 'state must be errored');\n\n      var storedError = stream._storedError;\n      defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n      this._readyPromise.catch(function () {});\n      defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n      this._closedPromise.catch(function () {});\n    }\n  }\n\n  _createClass(WritableStreamDefaultWriter, [{\n    key: 'abort',\n    value: function abort(reason) {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('abort'));\n      }\n\n      if (this._ownerWritableStream === undefined) {\n        return Promise.reject(defaultWriterLockException('abort'));\n      }\n\n      return WritableStreamDefaultWriterAbort(this, reason);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('close'));\n      }\n\n      var stream = this._ownerWritableStream;\n\n      if (stream === undefined) {\n        return Promise.reject(defaultWriterLockException('close'));\n      }\n\n      if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n        return Promise.reject(new TypeError('cannot close an already-closing stream'));\n      }\n\n      return WritableStreamDefaultWriterClose(this);\n    }\n  }, {\n    key: 'releaseLock',\n    value: function releaseLock() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        throw defaultWriterBrandCheckException('releaseLock');\n      }\n\n      var stream = this._ownerWritableStream;\n\n      if (stream === undefined) {\n        return;\n      }\n\n      assert(stream._writer !== undefined);\n\n      WritableStreamDefaultWriterRelease(this);\n    }\n  }, {\n    key: 'write',\n    value: function write(chunk) {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('write'));\n      }\n\n      if (this._ownerWritableStream === undefined) {\n        return Promise.reject(defaultWriterLockException('write to'));\n      }\n\n      return WritableStreamDefaultWriterWrite(this, chunk);\n    }\n  }, {\n    key: 'closed',\n    get: function get() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('closed'));\n      }\n\n      return this._closedPromise;\n    }\n  }, {\n    key: 'desiredSize',\n    get: function get() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        throw defaultWriterBrandCheckException('desiredSize');\n      }\n\n      if (this._ownerWritableStream === undefined) {\n        throw defaultWriterLockException('desiredSize');\n      }\n\n      return WritableStreamDefaultWriterGetDesiredSize(this);\n    }\n  }, {\n    key: 'ready',\n    get: function get() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('ready'));\n      }\n\n      return this._readyPromise;\n    }\n  }]);\n\n  return WritableStreamDefaultWriter;\n}();\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n    return false;\n  }\n\n  return true;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer, reason) {\n  var stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer) {\n  var stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  var state = stream._state;\n  if (state === 'closed' || state === 'errored') {\n    return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n  assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n  var promise = new Promise(function (resolve, reject) {\n    var closeRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._closeRequest = closeRequest;\n  });\n\n  if (stream._backpressure === true && state === 'writable') {\n    defaultWriterReadyPromiseResolve(writer);\n  }\n\n  WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n  return promise;\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n  var stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  var state = stream._state;\n  if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n    return Promise.resolve();\n  }\n\n  if (state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n\n  return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n  if (writer._closedPromiseState === 'pending') {\n    defaultWriterClosedPromiseReject(writer, error);\n  } else {\n    defaultWriterClosedPromiseResetToRejected(writer, error);\n  }\n  writer._closedPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n  if (writer._readyPromiseState === 'pending') {\n    defaultWriterReadyPromiseReject(writer, error);\n  } else {\n    defaultWriterReadyPromiseResetToRejected(writer, error);\n  }\n  writer._readyPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer) {\n  var stream = writer._ownerWritableStream;\n  var state = stream._state;\n\n  if (state === 'errored' || state === 'erroring') {\n    return null;\n  }\n\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer) {\n  var stream = writer._ownerWritableStream;\n  assert(stream !== undefined);\n  assert(stream._writer === writer);\n\n  var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n\n  WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n  // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n  // rejected until afterwards. This means that simply testing state will not work.\n  WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n  stream._writer = undefined;\n  writer._ownerWritableStream = undefined;\n}\n\nfunction WritableStreamDefaultWriterWrite(writer, chunk) {\n  var stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  var controller = stream._writableStreamController;\n\n  var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n  if (stream !== writer._ownerWritableStream) {\n    return Promise.reject(defaultWriterLockException('write to'));\n  }\n\n  var state = stream._state;\n  if (state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n  if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n    return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n  }\n  if (state === 'erroring') {\n    return Promise.reject(stream._storedError);\n  }\n\n  assert(state === 'writable');\n\n  var promise = WritableStreamAddWriteRequest(stream);\n\n  WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n  return promise;\n}\n\nvar WritableStreamDefaultController = function () {\n  function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n    _classCallCheck(this, WritableStreamDefaultController);\n\n    if (IsWritableStream(stream) === false) {\n      throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n    }\n\n    if (stream._writableStreamController !== undefined) {\n      throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n    }\n\n    this._controlledWritableStream = stream;\n\n    this._underlyingSink = underlyingSink;\n\n    // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n    this._queue = undefined;\n    this._queueTotalSize = undefined;\n    ResetQueue(this);\n\n    this._started = false;\n\n    var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n    this._strategySize = normalizedStrategy.size;\n    this._strategyHWM = normalizedStrategy.highWaterMark;\n\n    var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n    WritableStreamUpdateBackpressure(stream, backpressure);\n  }\n\n  _createClass(WritableStreamDefaultController, [{\n    key: 'error',\n    value: function error(e) {\n      if (IsWritableStreamDefaultController(this) === false) {\n        throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n      }\n      var state = this._controlledWritableStream._state;\n      if (state !== 'writable') {\n        // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n        // just treat it as a no-op.\n        return;\n      }\n\n      WritableStreamDefaultControllerError(this, e);\n    }\n  }, {\n    key: '__abortSteps',\n    value: function __abortSteps(reason) {\n      return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n    }\n  }, {\n    key: '__errorSteps',\n    value: function __errorSteps() {\n      ResetQueue(this);\n    }\n  }, {\n    key: '__startSteps',\n    value: function __startSteps() {\n      var _this = this;\n\n      var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n      var stream = this._controlledWritableStream;\n\n      Promise.resolve(startResult).then(function () {\n        assert(stream._state === 'writable' || stream._state === 'erroring');\n        _this._started = true;\n        WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n      }, function (r) {\n        assert(stream._state === 'writable' || stream._state === 'erroring');\n        _this._started = true;\n        WritableStreamDealWithRejection(stream, r);\n      }).catch(rethrowAssertionErrorRejection);\n    }\n  }]);\n\n  return WritableStreamDefaultController;\n}();\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction WritableStreamDefaultControllerClose(controller) {\n  EnqueueValueWithSize(controller, 'close', 0);\n  WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n  var strategySize = controller._strategySize;\n\n  if (strategySize === undefined) {\n    return 1;\n  }\n\n  try {\n    return strategySize(chunk);\n  } catch (chunkSizeE) {\n    WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n    return 1;\n  }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller) {\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n  var writeRecord = { chunk: chunk };\n\n  try {\n    EnqueueValueWithSize(controller, writeRecord, chunkSize);\n  } catch (enqueueE) {\n    WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n    return;\n  }\n\n  var stream = controller._controlledWritableStream;\n  if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n    var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n    WritableStreamUpdateBackpressure(stream, backpressure);\n  }\n\n  WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction IsWritableStreamDefaultController(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n  var stream = controller._controlledWritableStream;\n\n  if (controller._started === false) {\n    return;\n  }\n\n  if (stream._inFlightWriteRequest !== undefined) {\n    return;\n  }\n\n  var state = stream._state;\n  if (state === 'closed' || state === 'errored') {\n    return;\n  }\n  if (state === 'erroring') {\n    WritableStreamFinishErroring(stream);\n    return;\n  }\n\n  if (controller._queue.length === 0) {\n    return;\n  }\n\n  var writeRecord = PeekQueueValue(controller);\n  if (writeRecord === 'close') {\n    WritableStreamDefaultControllerProcessClose(controller);\n  } else {\n    WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n  }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n  if (controller._controlledWritableStream._state === 'writable') {\n    WritableStreamDefaultControllerError(controller, error);\n  }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller) {\n  var stream = controller._controlledWritableStream;\n\n  WritableStreamMarkCloseRequestInFlight(stream);\n\n  DequeueValue(controller);\n  assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n\n  var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n  sinkClosePromise.then(function () {\n    WritableStreamFinishInFlightClose(stream);\n  }, function (reason) {\n    WritableStreamFinishInFlightCloseWithError(stream, reason);\n  }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n  var stream = controller._controlledWritableStream;\n\n  WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n  var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n  sinkWritePromise.then(function () {\n    WritableStreamFinishInFlightWrite(stream);\n\n    var state = stream._state;\n    assert(state === 'writable' || state === 'erroring');\n\n    DequeueValue(controller);\n\n    if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n      var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n      WritableStreamUpdateBackpressure(stream, backpressure);\n    }\n\n    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n  }, function (reason) {\n    WritableStreamFinishInFlightWriteWithError(stream, reason);\n  }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller) {\n  var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n  return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller, error) {\n  var stream = controller._controlledWritableStream;\n\n  assert(stream._state === 'writable');\n\n  WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name) {\n  return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n}\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name) {\n  return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n}\n\nfunction defaultWriterLockException(name) {\n  return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer) {\n  writer._closedPromise = new Promise(function (resolve, reject) {\n    writer._closedPromise_resolve = resolve;\n    writer._closedPromise_reject = reject;\n    writer._closedPromiseState = 'pending';\n  });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n  writer._closedPromise = Promise.reject(reason);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer) {\n  writer._closedPromise = Promise.resolve(undefined);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterClosedPromiseReject(writer, reason) {\n  assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n  assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n  assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n  writer._closedPromise_reject(reason);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer, reason) {\n  assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n  assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n  assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n\n  writer._closedPromise = Promise.reject(reason);\n  writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResolve(writer) {\n  assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n  assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n  assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n  writer._closedPromise_resolve(undefined);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer) {\n  writer._readyPromise = new Promise(function (resolve, reject) {\n    writer._readyPromise_resolve = resolve;\n    writer._readyPromise_reject = reject;\n  });\n  writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n  writer._readyPromise = Promise.reject(reason);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer) {\n  writer._readyPromise = Promise.resolve(undefined);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'fulfilled';\n}\n\nfunction defaultWriterReadyPromiseReject(writer, reason) {\n  assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n  assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n  writer._readyPromise_reject(reason);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer) {\n  assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n  assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n  writer._readyPromise = new Promise(function (resolve, reject) {\n    writer._readyPromise_resolve = resolve;\n    writer._readyPromise_reject = reject;\n  });\n  writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer, reason) {\n  assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n  assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n  writer._readyPromise = Promise.reject(reason);\n  writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseResolve(writer) {\n  assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n  assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n  writer._readyPromise_resolve(undefined);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'fulfilled';\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _require = __w_pdfjs_require__(0),\n    IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n\nvar _require2 = __w_pdfjs_require__(1),\n    assert = _require2.assert;\n\nexports.DequeueValue = function (container) {\n  assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n  assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n\n  var pair = container._queue.shift();\n  container._queueTotalSize -= pair.size;\n  if (container._queueTotalSize < 0) {\n    container._queueTotalSize = 0;\n  }\n\n  return pair.value;\n};\n\nexports.EnqueueValueWithSize = function (container, value, size) {\n  assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n\n  size = Number(size);\n  if (!IsFiniteNonNegativeNumber(size)) {\n    throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n  }\n\n  container._queue.push({ value: value, size: size });\n  container._queueTotalSize += size;\n};\n\nexports.PeekQueueValue = function (container) {\n  assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n  assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n\n  var pair = container._queue[0];\n  return pair.value;\n};\n\nexports.ResetQueue = function (container) {\n  assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n\n  container._queue = [];\n  container._queueTotalSize = 0;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n    ArrayBufferCopy = _require.ArrayBufferCopy,\n    CreateIterResultObject = _require.CreateIterResultObject,\n    IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n    InvokeOrNoop = _require.InvokeOrNoop,\n    PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n    TransferArrayBuffer = _require.TransferArrayBuffer,\n    ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n    ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n\nvar _require2 = __w_pdfjs_require__(0),\n    createArrayFromList = _require2.createArrayFromList,\n    createDataProperty = _require2.createDataProperty,\n    typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(1),\n    assert = _require3.assert,\n    rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n\nvar _require4 = __w_pdfjs_require__(3),\n    DequeueValue = _require4.DequeueValue,\n    EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n    ResetQueue = _require4.ResetQueue;\n\nvar _require5 = __w_pdfjs_require__(2),\n    AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n    IsWritableStream = _require5.IsWritableStream,\n    IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n    WritableStreamAbort = _require5.WritableStreamAbort,\n    WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n    WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n    WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n    WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n\nvar ReadableStream = function () {\n  function ReadableStream() {\n    var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        size = _ref.size,\n        highWaterMark = _ref.highWaterMark;\n\n    _classCallCheck(this, ReadableStream);\n\n    // Exposed to controllers.\n    this._state = 'readable';\n\n    this._reader = undefined;\n    this._storedError = undefined;\n\n    this._disturbed = false;\n\n    // Initialize to undefined first because the constructor of the controller checks this\n    // variable to validate the caller.\n    this._readableStreamController = undefined;\n    var type = underlyingSource.type;\n    var typeString = String(type);\n    if (typeString === 'bytes') {\n      if (highWaterMark === undefined) {\n        highWaterMark = 0;\n      }\n      this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n    } else if (type === undefined) {\n      if (highWaterMark === undefined) {\n        highWaterMark = 1;\n      }\n      this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n    } else {\n      throw new RangeError('Invalid type is specified');\n    }\n  }\n\n  _createClass(ReadableStream, [{\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (IsReadableStream(this) === false) {\n        return Promise.reject(streamBrandCheckException('cancel'));\n      }\n\n      if (IsReadableStreamLocked(this) === true) {\n        return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n      }\n\n      return ReadableStreamCancel(this, reason);\n    }\n  }, {\n    key: 'getReader',\n    value: function getReader() {\n      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          mode = _ref2.mode;\n\n      if (IsReadableStream(this) === false) {\n        throw streamBrandCheckException('getReader');\n      }\n\n      if (mode === undefined) {\n        return AcquireReadableStreamDefaultReader(this);\n      }\n\n      mode = String(mode);\n\n      if (mode === 'byob') {\n        return AcquireReadableStreamBYOBReader(this);\n      }\n\n      throw new RangeError('Invalid mode is specified');\n    }\n  }, {\n    key: 'pipeThrough',\n    value: function pipeThrough(_ref3, options) {\n      var writable = _ref3.writable,\n          readable = _ref3.readable;\n\n      var promise = this.pipeTo(writable, options);\n\n      ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n\n      return readable;\n    }\n  }, {\n    key: 'pipeTo',\n    value: function pipeTo(dest) {\n      var _this = this;\n\n      var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          preventClose = _ref4.preventClose,\n          preventAbort = _ref4.preventAbort,\n          preventCancel = _ref4.preventCancel;\n\n      if (IsReadableStream(this) === false) {\n        return Promise.reject(streamBrandCheckException('pipeTo'));\n      }\n      if (IsWritableStream(dest) === false) {\n        return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n      }\n\n      preventClose = Boolean(preventClose);\n      preventAbort = Boolean(preventAbort);\n      preventCancel = Boolean(preventCancel);\n\n      if (IsReadableStreamLocked(this) === true) {\n        return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n      }\n      if (IsWritableStreamLocked(dest) === true) {\n        return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n      }\n\n      var reader = AcquireReadableStreamDefaultReader(this);\n      var writer = AcquireWritableStreamDefaultWriter(dest);\n\n      var shuttingDown = false;\n\n      // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n      var currentWrite = Promise.resolve();\n\n      return new Promise(function (resolve, reject) {\n        // Using reader and writer, read all chunks from this and write them to dest\n        // - Backpressure must be enforced\n        // - Shutdown must stop all activity\n        function pipeLoop() {\n          currentWrite = Promise.resolve();\n\n          if (shuttingDown === true) {\n            return Promise.resolve();\n          }\n\n          return writer._readyPromise.then(function () {\n            return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n              var value = _ref5.value,\n                  done = _ref5.done;\n\n              if (done === true) {\n                return;\n              }\n\n              currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n            });\n          }).then(pipeLoop);\n        }\n\n        // Errors must be propagated forward\n        isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n          if (preventAbort === false) {\n            shutdownWithAction(function () {\n              return WritableStreamAbort(dest, storedError);\n            }, true, storedError);\n          } else {\n            shutdown(true, storedError);\n          }\n        });\n\n        // Errors must be propagated backward\n        isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n          if (preventCancel === false) {\n            shutdownWithAction(function () {\n              return ReadableStreamCancel(_this, storedError);\n            }, true, storedError);\n          } else {\n            shutdown(true, storedError);\n          }\n        });\n\n        // Closing must be propagated forward\n        isOrBecomesClosed(_this, reader._closedPromise, function () {\n          if (preventClose === false) {\n            shutdownWithAction(function () {\n              return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n            });\n          } else {\n            shutdown();\n          }\n        });\n\n        // Closing must be propagated backward\n        if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n          var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n          if (preventCancel === false) {\n            shutdownWithAction(function () {\n              return ReadableStreamCancel(_this, destClosed);\n            }, true, destClosed);\n          } else {\n            shutdown(true, destClosed);\n          }\n        }\n\n        pipeLoop().catch(function (err) {\n          currentWrite = Promise.resolve();\n          rethrowAssertionErrorRejection(err);\n        });\n\n        function waitForWritesToFinish() {\n          // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n          // for that too.\n          var oldCurrentWrite = currentWrite;\n          return currentWrite.then(function () {\n            return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n          });\n        }\n\n        function isOrBecomesErrored(stream, promise, action) {\n          if (stream._state === 'errored') {\n            action(stream._storedError);\n          } else {\n            promise.catch(action).catch(rethrowAssertionErrorRejection);\n          }\n        }\n\n        function isOrBecomesClosed(stream, promise, action) {\n          if (stream._state === 'closed') {\n            action();\n          } else {\n            promise.then(action).catch(rethrowAssertionErrorRejection);\n          }\n        }\n\n        function shutdownWithAction(action, originalIsError, originalError) {\n          if (shuttingDown === true) {\n            return;\n          }\n          shuttingDown = true;\n\n          if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n            waitForWritesToFinish().then(doTheRest);\n          } else {\n            doTheRest();\n          }\n\n          function doTheRest() {\n            action().then(function () {\n              return finalize(originalIsError, originalError);\n            }, function (newError) {\n              return finalize(true, newError);\n            }).catch(rethrowAssertionErrorRejection);\n          }\n        }\n\n        function shutdown(isError, error) {\n          if (shuttingDown === true) {\n            return;\n          }\n          shuttingDown = true;\n\n          if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n            waitForWritesToFinish().then(function () {\n              return finalize(isError, error);\n            }).catch(rethrowAssertionErrorRejection);\n          } else {\n            finalize(isError, error);\n          }\n        }\n\n        function finalize(isError, error) {\n          WritableStreamDefaultWriterRelease(writer);\n          ReadableStreamReaderGenericRelease(reader);\n\n          if (isError) {\n            reject(error);\n          } else {\n            resolve(undefined);\n          }\n        }\n      });\n    }\n  }, {\n    key: 'tee',\n    value: function tee() {\n      if (IsReadableStream(this) === false) {\n        throw streamBrandCheckException('tee');\n      }\n\n      var branches = ReadableStreamTee(this, false);\n      return createArrayFromList(branches);\n    }\n  }, {\n    key: 'locked',\n    get: function get() {\n      if (IsReadableStream(this) === false) {\n        throw streamBrandCheckException('locked');\n      }\n\n      return IsReadableStreamLocked(this);\n    }\n  }]);\n\n  return ReadableStream;\n}();\n\nmodule.exports = {\n  ReadableStream: ReadableStream,\n  IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n  ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n  ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n  ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n  ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n};\n\n// Abstract operations for the ReadableStream.\n\nfunction AcquireReadableStreamBYOBReader(stream) {\n  return new ReadableStreamBYOBReader(stream);\n}\n\nfunction AcquireReadableStreamDefaultReader(stream) {\n  return new ReadableStreamDefaultReader(stream);\n}\n\nfunction IsReadableStream(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsReadableStreamDisturbed(stream) {\n  assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n\n  return stream._disturbed;\n}\n\nfunction IsReadableStreamLocked(stream) {\n  assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n\n  if (stream._reader === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableStreamTee(stream, cloneForBranch2) {\n  assert(IsReadableStream(stream) === true);\n  assert(typeof cloneForBranch2 === 'boolean');\n\n  var reader = AcquireReadableStreamDefaultReader(stream);\n\n  var teeState = {\n    closedOrErrored: false,\n    canceled1: false,\n    canceled2: false,\n    reason1: undefined,\n    reason2: undefined\n  };\n  teeState.promise = new Promise(function (resolve) {\n    teeState._resolve = resolve;\n  });\n\n  var pull = create_ReadableStreamTeePullFunction();\n  pull._reader = reader;\n  pull._teeState = teeState;\n  pull._cloneForBranch2 = cloneForBranch2;\n\n  var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n  cancel1._stream = stream;\n  cancel1._teeState = teeState;\n\n  var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n  cancel2._stream = stream;\n  cancel2._teeState = teeState;\n\n  var underlyingSource1 = Object.create(Object.prototype);\n  createDataProperty(underlyingSource1, 'pull', pull);\n  createDataProperty(underlyingSource1, 'cancel', cancel1);\n  var branch1Stream = new ReadableStream(underlyingSource1);\n\n  var underlyingSource2 = Object.create(Object.prototype);\n  createDataProperty(underlyingSource2, 'pull', pull);\n  createDataProperty(underlyingSource2, 'cancel', cancel2);\n  var branch2Stream = new ReadableStream(underlyingSource2);\n\n  pull._branch1 = branch1Stream._readableStreamController;\n  pull._branch2 = branch2Stream._readableStreamController;\n\n  reader._closedPromise.catch(function (r) {\n    if (teeState.closedOrErrored === true) {\n      return;\n    }\n\n    ReadableStreamDefaultControllerError(pull._branch1, r);\n    ReadableStreamDefaultControllerError(pull._branch2, r);\n    teeState.closedOrErrored = true;\n  });\n\n  return [branch1Stream, branch2Stream];\n}\n\nfunction create_ReadableStreamTeePullFunction() {\n  function f() {\n    var reader = f._reader,\n        branch1 = f._branch1,\n        branch2 = f._branch2,\n        teeState = f._teeState;\n\n\n    return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n      assert(typeIsObject(result));\n      var value = result.value;\n      var done = result.done;\n      assert(typeof done === 'boolean');\n\n      if (done === true && teeState.closedOrErrored === false) {\n        if (teeState.canceled1 === false) {\n          ReadableStreamDefaultControllerClose(branch1);\n        }\n        if (teeState.canceled2 === false) {\n          ReadableStreamDefaultControllerClose(branch2);\n        }\n        teeState.closedOrErrored = true;\n      }\n\n      if (teeState.closedOrErrored === true) {\n        return;\n      }\n\n      var value1 = value;\n      var value2 = value;\n\n      // There is no way to access the cloning code right now in the reference implementation.\n      // If we add one then we'll need an implementation for serializable objects.\n      // if (teeState.canceled2 === false && cloneForBranch2 === true) {\n      //   value2 = StructuredDeserialize(StructuredSerialize(value2));\n      // }\n\n      if (teeState.canceled1 === false) {\n        ReadableStreamDefaultControllerEnqueue(branch1, value1);\n      }\n\n      if (teeState.canceled2 === false) {\n        ReadableStreamDefaultControllerEnqueue(branch2, value2);\n      }\n    });\n  }\n  return f;\n}\n\nfunction create_ReadableStreamTeeBranch1CancelFunction() {\n  function f(reason) {\n    var stream = f._stream,\n        teeState = f._teeState;\n\n\n    teeState.canceled1 = true;\n    teeState.reason1 = reason;\n    if (teeState.canceled2 === true) {\n      var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n      var cancelResult = ReadableStreamCancel(stream, compositeReason);\n      teeState._resolve(cancelResult);\n    }\n    return teeState.promise;\n  }\n  return f;\n}\n\nfunction create_ReadableStreamTeeBranch2CancelFunction() {\n  function f(reason) {\n    var stream = f._stream,\n        teeState = f._teeState;\n\n\n    teeState.canceled2 = true;\n    teeState.reason2 = reason;\n    if (teeState.canceled1 === true) {\n      var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n      var cancelResult = ReadableStreamCancel(stream, compositeReason);\n      teeState._resolve(cancelResult);\n    }\n    return teeState.promise;\n  }\n  return f;\n}\n\n// ReadableStream API exposed for controllers.\n\nfunction ReadableStreamAddReadIntoRequest(stream) {\n  assert(IsReadableStreamBYOBReader(stream._reader) === true);\n  assert(stream._state === 'readable' || stream._state === 'closed');\n\n  var promise = new Promise(function (resolve, reject) {\n    var readIntoRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._reader._readIntoRequests.push(readIntoRequest);\n  });\n\n  return promise;\n}\n\nfunction ReadableStreamAddReadRequest(stream) {\n  assert(IsReadableStreamDefaultReader(stream._reader) === true);\n  assert(stream._state === 'readable');\n\n  var promise = new Promise(function (resolve, reject) {\n    var readRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._reader._readRequests.push(readRequest);\n  });\n\n  return promise;\n}\n\nfunction ReadableStreamCancel(stream, reason) {\n  stream._disturbed = true;\n\n  if (stream._state === 'closed') {\n    return Promise.resolve(undefined);\n  }\n  if (stream._state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n\n  ReadableStreamClose(stream);\n\n  var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n  return sourceCancelPromise.then(function () {\n    return undefined;\n  });\n}\n\nfunction ReadableStreamClose(stream) {\n  assert(stream._state === 'readable');\n\n  stream._state = 'closed';\n\n  var reader = stream._reader;\n\n  if (reader === undefined) {\n    return undefined;\n  }\n\n  if (IsReadableStreamDefaultReader(reader) === true) {\n    for (var i = 0; i < reader._readRequests.length; i++) {\n      var _resolve = reader._readRequests[i]._resolve;\n\n      _resolve(CreateIterResultObject(undefined, true));\n    }\n    reader._readRequests = [];\n  }\n\n  defaultReaderClosedPromiseResolve(reader);\n\n  return undefined;\n}\n\nfunction ReadableStreamError(stream, e) {\n  assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n  assert(stream._state === 'readable', 'state must be readable');\n\n  stream._state = 'errored';\n  stream._storedError = e;\n\n  var reader = stream._reader;\n\n  if (reader === undefined) {\n    return undefined;\n  }\n\n  if (IsReadableStreamDefaultReader(reader) === true) {\n    for (var i = 0; i < reader._readRequests.length; i++) {\n      var readRequest = reader._readRequests[i];\n      readRequest._reject(e);\n    }\n\n    reader._readRequests = [];\n  } else {\n    assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n\n    for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n      var readIntoRequest = reader._readIntoRequests[_i];\n      readIntoRequest._reject(e);\n    }\n\n    reader._readIntoRequests = [];\n  }\n\n  defaultReaderClosedPromiseReject(reader, e);\n  reader._closedPromise.catch(function () {});\n}\n\nfunction ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n  var reader = stream._reader;\n\n  assert(reader._readIntoRequests.length > 0);\n\n  var readIntoRequest = reader._readIntoRequests.shift();\n  readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamFulfillReadRequest(stream, chunk, done) {\n  var reader = stream._reader;\n\n  assert(reader._readRequests.length > 0);\n\n  var readRequest = reader._readRequests.shift();\n  readRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamGetNumReadIntoRequests(stream) {\n  return stream._reader._readIntoRequests.length;\n}\n\nfunction ReadableStreamGetNumReadRequests(stream) {\n  return stream._reader._readRequests.length;\n}\n\nfunction ReadableStreamHasBYOBReader(stream) {\n  var reader = stream._reader;\n\n  if (reader === undefined) {\n    return false;\n  }\n\n  if (IsReadableStreamBYOBReader(reader) === false) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableStreamHasDefaultReader(stream) {\n  var reader = stream._reader;\n\n  if (reader === undefined) {\n    return false;\n  }\n\n  if (IsReadableStreamDefaultReader(reader) === false) {\n    return false;\n  }\n\n  return true;\n}\n\n// Readers\n\nvar ReadableStreamDefaultReader = function () {\n  function ReadableStreamDefaultReader(stream) {\n    _classCallCheck(this, ReadableStreamDefaultReader);\n\n    if (IsReadableStream(stream) === false) {\n      throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n    }\n    if (IsReadableStreamLocked(stream) === true) {\n      throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n    }\n\n    ReadableStreamReaderGenericInitialize(this, stream);\n\n    this._readRequests = [];\n  }\n\n  _createClass(ReadableStreamDefaultReader, [{\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (IsReadableStreamDefaultReader(this) === false) {\n        return Promise.reject(defaultReaderBrandCheckException('cancel'));\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return Promise.reject(readerLockException('cancel'));\n      }\n\n      return ReadableStreamReaderGenericCancel(this, reason);\n    }\n  }, {\n    key: 'read',\n    value: function read() {\n      if (IsReadableStreamDefaultReader(this) === false) {\n        return Promise.reject(defaultReaderBrandCheckException('read'));\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return Promise.reject(readerLockException('read from'));\n      }\n\n      return ReadableStreamDefaultReaderRead(this);\n    }\n  }, {\n    key: 'releaseLock',\n    value: function releaseLock() {\n      if (IsReadableStreamDefaultReader(this) === false) {\n        throw defaultReaderBrandCheckException('releaseLock');\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return;\n      }\n\n      if (this._readRequests.length > 0) {\n        throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n      }\n\n      ReadableStreamReaderGenericRelease(this);\n    }\n  }, {\n    key: 'closed',\n    get: function get() {\n      if (IsReadableStreamDefaultReader(this) === false) {\n        return Promise.reject(defaultReaderBrandCheckException('closed'));\n      }\n\n      return this._closedPromise;\n    }\n  }]);\n\n  return ReadableStreamDefaultReader;\n}();\n\nvar ReadableStreamBYOBReader = function () {\n  function ReadableStreamBYOBReader(stream) {\n    _classCallCheck(this, ReadableStreamBYOBReader);\n\n    if (!IsReadableStream(stream)) {\n      throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n    }\n    if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n      throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n    }\n    if (IsReadableStreamLocked(stream)) {\n      throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n    }\n\n    ReadableStreamReaderGenericInitialize(this, stream);\n\n    this._readIntoRequests = [];\n  }\n\n  _createClass(ReadableStreamBYOBReader, [{\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (!IsReadableStreamBYOBReader(this)) {\n        return Promise.reject(byobReaderBrandCheckException('cancel'));\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return Promise.reject(readerLockException('cancel'));\n      }\n\n      return ReadableStreamReaderGenericCancel(this, reason);\n    }\n  }, {\n    key: 'read',\n    value: function read(view) {\n      if (!IsReadableStreamBYOBReader(this)) {\n        return Promise.reject(byobReaderBrandCheckException('read'));\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return Promise.reject(readerLockException('read from'));\n      }\n\n      if (!ArrayBuffer.isView(view)) {\n        return Promise.reject(new TypeError('view must be an array buffer view'));\n      }\n\n      if (view.byteLength === 0) {\n        return Promise.reject(new TypeError('view must have non-zero byteLength'));\n      }\n\n      return ReadableStreamBYOBReaderRead(this, view);\n    }\n  }, {\n    key: 'releaseLock',\n    value: function releaseLock() {\n      if (!IsReadableStreamBYOBReader(this)) {\n        throw byobReaderBrandCheckException('releaseLock');\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return;\n      }\n\n      if (this._readIntoRequests.length > 0) {\n        throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n      }\n\n      ReadableStreamReaderGenericRelease(this);\n    }\n  }, {\n    key: 'closed',\n    get: function get() {\n      if (!IsReadableStreamBYOBReader(this)) {\n        return Promise.reject(byobReaderBrandCheckException('closed'));\n      }\n\n      return this._closedPromise;\n    }\n  }]);\n\n  return ReadableStreamBYOBReader;\n}();\n\n// Abstract operations for the readers.\n\nfunction IsReadableStreamBYOBReader(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsReadableStreamDefaultReader(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableStreamReaderGenericInitialize(reader, stream) {\n  reader._ownerReadableStream = stream;\n  stream._reader = reader;\n\n  if (stream._state === 'readable') {\n    defaultReaderClosedPromiseInitialize(reader);\n  } else if (stream._state === 'closed') {\n    defaultReaderClosedPromiseInitializeAsResolved(reader);\n  } else {\n    assert(stream._state === 'errored', 'state must be errored');\n\n    defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n    reader._closedPromise.catch(function () {});\n  }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nfunction ReadableStreamReaderGenericCancel(reader, reason) {\n  var stream = reader._ownerReadableStream;\n  assert(stream !== undefined);\n  return ReadableStreamCancel(stream, reason);\n}\n\nfunction ReadableStreamReaderGenericRelease(reader) {\n  assert(reader._ownerReadableStream !== undefined);\n  assert(reader._ownerReadableStream._reader === reader);\n\n  if (reader._ownerReadableStream._state === 'readable') {\n    defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n  } else {\n    defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n  }\n  reader._closedPromise.catch(function () {});\n\n  reader._ownerReadableStream._reader = undefined;\n  reader._ownerReadableStream = undefined;\n}\n\nfunction ReadableStreamBYOBReaderRead(reader, view) {\n  var stream = reader._ownerReadableStream;\n\n  assert(stream !== undefined);\n\n  stream._disturbed = true;\n\n  if (stream._state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n\n  // Controllers must implement this.\n  return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n}\n\nfunction ReadableStreamDefaultReaderRead(reader) {\n  var stream = reader._ownerReadableStream;\n\n  assert(stream !== undefined);\n\n  stream._disturbed = true;\n\n  if (stream._state === 'closed') {\n    return Promise.resolve(CreateIterResultObject(undefined, true));\n  }\n\n  if (stream._state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n\n  assert(stream._state === 'readable');\n\n  return stream._readableStreamController.__pullSteps();\n}\n\n// Controllers\n\nvar ReadableStreamDefaultController = function () {\n  function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n    _classCallCheck(this, ReadableStreamDefaultController);\n\n    if (IsReadableStream(stream) === false) {\n      throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n    }\n\n    if (stream._readableStreamController !== undefined) {\n      throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n    }\n\n    this._controlledReadableStream = stream;\n\n    this._underlyingSource = underlyingSource;\n\n    // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n    this._queue = undefined;\n    this._queueTotalSize = undefined;\n    ResetQueue(this);\n\n    this._started = false;\n    this._closeRequested = false;\n    this._pullAgain = false;\n    this._pulling = false;\n\n    var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n    this._strategySize = normalizedStrategy.size;\n    this._strategyHWM = normalizedStrategy.highWaterMark;\n\n    var controller = this;\n\n    var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n    Promise.resolve(startResult).then(function () {\n      controller._started = true;\n\n      assert(controller._pulling === false);\n      assert(controller._pullAgain === false);\n\n      ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n    }, function (r) {\n      ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n    }).catch(rethrowAssertionErrorRejection);\n  }\n\n  _createClass(ReadableStreamDefaultController, [{\n    key: 'close',\n    value: function close() {\n      if (IsReadableStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('close');\n      }\n\n      if (this._closeRequested === true) {\n        throw new TypeError('The stream has already been closed; do not close it again!');\n      }\n\n      var state = this._controlledReadableStream._state;\n      if (state !== 'readable') {\n        throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n      }\n\n      ReadableStreamDefaultControllerClose(this);\n    }\n  }, {\n    key: 'enqueue',\n    value: function enqueue(chunk) {\n      if (IsReadableStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('enqueue');\n      }\n\n      if (this._closeRequested === true) {\n        throw new TypeError('stream is closed or draining');\n      }\n\n      var state = this._controlledReadableStream._state;\n      if (state !== 'readable') {\n        throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n      }\n\n      return ReadableStreamDefaultControllerEnqueue(this, chunk);\n    }\n  }, {\n    key: 'error',\n    value: function error(e) {\n      if (IsReadableStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('error');\n      }\n\n      var stream = this._controlledReadableStream;\n      if (stream._state !== 'readable') {\n        throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n      }\n\n      ReadableStreamDefaultControllerError(this, e);\n    }\n  }, {\n    key: '__cancelSteps',\n    value: function __cancelSteps(reason) {\n      ResetQueue(this);\n      return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n    }\n  }, {\n    key: '__pullSteps',\n    value: function __pullSteps() {\n      var stream = this._controlledReadableStream;\n\n      if (this._queue.length > 0) {\n        var chunk = DequeueValue(this);\n\n        if (this._closeRequested === true && this._queue.length === 0) {\n          ReadableStreamClose(stream);\n        } else {\n          ReadableStreamDefaultControllerCallPullIfNeeded(this);\n        }\n\n        return Promise.resolve(CreateIterResultObject(chunk, false));\n      }\n\n      var pendingPromise = ReadableStreamAddReadRequest(stream);\n      ReadableStreamDefaultControllerCallPullIfNeeded(this);\n      return pendingPromise;\n    }\n  }, {\n    key: 'desiredSize',\n    get: function get() {\n      if (IsReadableStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('desiredSize');\n      }\n\n      return ReadableStreamDefaultControllerGetDesiredSize(this);\n    }\n  }]);\n\n  return ReadableStreamDefaultController;\n}();\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n  var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n  if (shouldPull === false) {\n    return undefined;\n  }\n\n  if (controller._pulling === true) {\n    controller._pullAgain = true;\n    return undefined;\n  }\n\n  assert(controller._pullAgain === false);\n\n  controller._pulling = true;\n\n  var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n  pullPromise.then(function () {\n    controller._pulling = false;\n\n    if (controller._pullAgain === true) {\n      controller._pullAgain = false;\n      return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n    }\n    return undefined;\n  }, function (e) {\n    ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n  }).catch(rethrowAssertionErrorRejection);\n\n  return undefined;\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller) {\n  var stream = controller._controlledReadableStream;\n\n  if (stream._state === 'closed' || stream._state === 'errored') {\n    return false;\n  }\n\n  if (controller._closeRequested === true) {\n    return false;\n  }\n\n  if (controller._started === false) {\n    return false;\n  }\n\n  if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n    return true;\n  }\n\n  var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n  if (desiredSize > 0) {\n    return true;\n  }\n\n  return false;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction ReadableStreamDefaultControllerClose(controller) {\n  var stream = controller._controlledReadableStream;\n\n  assert(controller._closeRequested === false);\n  assert(stream._state === 'readable');\n\n  controller._closeRequested = true;\n\n  if (controller._queue.length === 0) {\n    ReadableStreamClose(stream);\n  }\n}\n\nfunction ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n  var stream = controller._controlledReadableStream;\n\n  assert(controller._closeRequested === false);\n  assert(stream._state === 'readable');\n\n  if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n    ReadableStreamFulfillReadRequest(stream, chunk, false);\n  } else {\n    var chunkSize = 1;\n\n    if (controller._strategySize !== undefined) {\n      var strategySize = controller._strategySize;\n      try {\n        chunkSize = strategySize(chunk);\n      } catch (chunkSizeE) {\n        ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n        throw chunkSizeE;\n      }\n    }\n\n    try {\n      EnqueueValueWithSize(controller, chunk, chunkSize);\n    } catch (enqueueE) {\n      ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n      throw enqueueE;\n    }\n  }\n\n  ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n\n  return undefined;\n}\n\nfunction ReadableStreamDefaultControllerError(controller, e) {\n  var stream = controller._controlledReadableStream;\n\n  assert(stream._state === 'readable');\n\n  ResetQueue(controller);\n\n  ReadableStreamError(stream, e);\n}\n\nfunction ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n  if (controller._controlledReadableStream._state === 'readable') {\n    ReadableStreamDefaultControllerError(controller, e);\n  }\n}\n\nfunction ReadableStreamDefaultControllerGetDesiredSize(controller) {\n  var stream = controller._controlledReadableStream;\n  var state = stream._state;\n\n  if (state === 'errored') {\n    return null;\n  }\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nvar ReadableStreamBYOBRequest = function () {\n  function ReadableStreamBYOBRequest(controller, view) {\n    _classCallCheck(this, ReadableStreamBYOBRequest);\n\n    this._associatedReadableByteStreamController = controller;\n    this._view = view;\n  }\n\n  _createClass(ReadableStreamBYOBRequest, [{\n    key: 'respond',\n    value: function respond(bytesWritten) {\n      if (IsReadableStreamBYOBRequest(this) === false) {\n        throw byobRequestBrandCheckException('respond');\n      }\n\n      if (this._associatedReadableByteStreamController === undefined) {\n        throw new TypeError('This BYOB request has been invalidated');\n      }\n\n      ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n    }\n  }, {\n    key: 'respondWithNewView',\n    value: function respondWithNewView(view) {\n      if (IsReadableStreamBYOBRequest(this) === false) {\n        throw byobRequestBrandCheckException('respond');\n      }\n\n      if (this._associatedReadableByteStreamController === undefined) {\n        throw new TypeError('This BYOB request has been invalidated');\n      }\n\n      if (!ArrayBuffer.isView(view)) {\n        throw new TypeError('You can only respond with array buffer views');\n      }\n\n      ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n    }\n  }, {\n    key: 'view',\n    get: function get() {\n      return this._view;\n    }\n  }]);\n\n  return ReadableStreamBYOBRequest;\n}();\n\nvar ReadableByteStreamController = function () {\n  function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n    _classCallCheck(this, ReadableByteStreamController);\n\n    if (IsReadableStream(stream) === false) {\n      throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n    }\n\n    if (stream._readableStreamController !== undefined) {\n      throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n    }\n\n    this._controlledReadableStream = stream;\n\n    this._underlyingByteSource = underlyingByteSource;\n\n    this._pullAgain = false;\n    this._pulling = false;\n\n    ReadableByteStreamControllerClearPendingPullIntos(this);\n\n    // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n    this._queue = this._queueTotalSize = undefined;\n    ResetQueue(this);\n\n    this._closeRequested = false;\n    this._started = false;\n\n    this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n    var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n    if (autoAllocateChunkSize !== undefined) {\n      if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n        throw new RangeError('autoAllocateChunkSize must be a positive integer');\n      }\n    }\n    this._autoAllocateChunkSize = autoAllocateChunkSize;\n\n    this._pendingPullIntos = [];\n\n    var controller = this;\n\n    var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n    Promise.resolve(startResult).then(function () {\n      controller._started = true;\n\n      assert(controller._pulling === false);\n      assert(controller._pullAgain === false);\n\n      ReadableByteStreamControllerCallPullIfNeeded(controller);\n    }, function (r) {\n      if (stream._state === 'readable') {\n        ReadableByteStreamControllerError(controller, r);\n      }\n    }).catch(rethrowAssertionErrorRejection);\n  }\n\n  _createClass(ReadableByteStreamController, [{\n    key: 'close',\n    value: function close() {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('close');\n      }\n\n      if (this._closeRequested === true) {\n        throw new TypeError('The stream has already been closed; do not close it again!');\n      }\n\n      var state = this._controlledReadableStream._state;\n      if (state !== 'readable') {\n        throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n      }\n\n      ReadableByteStreamControllerClose(this);\n    }\n  }, {\n    key: 'enqueue',\n    value: function enqueue(chunk) {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('enqueue');\n      }\n\n      if (this._closeRequested === true) {\n        throw new TypeError('stream is closed or draining');\n      }\n\n      var state = this._controlledReadableStream._state;\n      if (state !== 'readable') {\n        throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n      }\n\n      if (!ArrayBuffer.isView(chunk)) {\n        throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n      }\n\n      ReadableByteStreamControllerEnqueue(this, chunk);\n    }\n  }, {\n    key: 'error',\n    value: function error(e) {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('error');\n      }\n\n      var stream = this._controlledReadableStream;\n      if (stream._state !== 'readable') {\n        throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n      }\n\n      ReadableByteStreamControllerError(this, e);\n    }\n  }, {\n    key: '__cancelSteps',\n    value: function __cancelSteps(reason) {\n      if (this._pendingPullIntos.length > 0) {\n        var firstDescriptor = this._pendingPullIntos[0];\n        firstDescriptor.bytesFilled = 0;\n      }\n\n      ResetQueue(this);\n\n      return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n    }\n  }, {\n    key: '__pullSteps',\n    value: function __pullSteps() {\n      var stream = this._controlledReadableStream;\n      assert(ReadableStreamHasDefaultReader(stream) === true);\n\n      if (this._queueTotalSize > 0) {\n        assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n        var entry = this._queue.shift();\n        this._queueTotalSize -= entry.byteLength;\n\n        ReadableByteStreamControllerHandleQueueDrain(this);\n\n        var view = void 0;\n        try {\n          view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n        } catch (viewE) {\n          return Promise.reject(viewE);\n        }\n\n        return Promise.resolve(CreateIterResultObject(view, false));\n      }\n\n      var autoAllocateChunkSize = this._autoAllocateChunkSize;\n      if (autoAllocateChunkSize !== undefined) {\n        var buffer = void 0;\n        try {\n          buffer = new ArrayBuffer(autoAllocateChunkSize);\n        } catch (bufferE) {\n          return Promise.reject(bufferE);\n        }\n\n        var pullIntoDescriptor = {\n          buffer: buffer,\n          byteOffset: 0,\n          byteLength: autoAllocateChunkSize,\n          bytesFilled: 0,\n          elementSize: 1,\n          ctor: Uint8Array,\n          readerType: 'default'\n        };\n\n        this._pendingPullIntos.push(pullIntoDescriptor);\n      }\n\n      var promise = ReadableStreamAddReadRequest(stream);\n\n      ReadableByteStreamControllerCallPullIfNeeded(this);\n\n      return promise;\n    }\n  }, {\n    key: 'byobRequest',\n    get: function get() {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('byobRequest');\n      }\n\n      if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n        var firstDescriptor = this._pendingPullIntos[0];\n        var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n        this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n      }\n\n      return this._byobRequest;\n    }\n  }, {\n    key: 'desiredSize',\n    get: function get() {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('desiredSize');\n      }\n\n      return ReadableByteStreamControllerGetDesiredSize(this);\n    }\n  }]);\n\n  return ReadableByteStreamController;\n}();\n\n// Abstract operations for the ReadableByteStreamController.\n\nfunction IsReadableByteStreamController(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsReadableStreamBYOBRequest(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller) {\n  var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n  if (shouldPull === false) {\n    return undefined;\n  }\n\n  if (controller._pulling === true) {\n    controller._pullAgain = true;\n    return undefined;\n  }\n\n  assert(controller._pullAgain === false);\n\n  controller._pulling = true;\n\n  // TODO: Test controller argument\n  var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n  pullPromise.then(function () {\n    controller._pulling = false;\n\n    if (controller._pullAgain === true) {\n      controller._pullAgain = false;\n      ReadableByteStreamControllerCallPullIfNeeded(controller);\n    }\n  }, function (e) {\n    if (controller._controlledReadableStream._state === 'readable') {\n      ReadableByteStreamControllerError(controller, e);\n    }\n  }).catch(rethrowAssertionErrorRejection);\n\n  return undefined;\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller) {\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n  controller._pendingPullIntos = [];\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n  assert(stream._state !== 'errored', 'state must not be errored');\n\n  var done = false;\n  if (stream._state === 'closed') {\n    assert(pullIntoDescriptor.bytesFilled === 0);\n    done = true;\n  }\n\n  var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n  if (pullIntoDescriptor.readerType === 'default') {\n    ReadableStreamFulfillReadRequest(stream, filledView, done);\n  } else {\n    assert(pullIntoDescriptor.readerType === 'byob');\n    ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n  }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n  var bytesFilled = pullIntoDescriptor.bytesFilled;\n  var elementSize = pullIntoDescriptor.elementSize;\n\n  assert(bytesFilled <= pullIntoDescriptor.byteLength);\n  assert(bytesFilled % elementSize === 0);\n\n  return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n  controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n  controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n  var elementSize = pullIntoDescriptor.elementSize;\n\n  var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n\n  var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n  var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n  var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n\n  var totalBytesToCopyRemaining = maxBytesToCopy;\n  var ready = false;\n  if (maxAlignedBytes > currentAlignedBytes) {\n    totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n    ready = true;\n  }\n\n  var queue = controller._queue;\n\n  while (totalBytesToCopyRemaining > 0) {\n    var headOfQueue = queue[0];\n\n    var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n    var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n    ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n    if (headOfQueue.byteLength === bytesToCopy) {\n      queue.shift();\n    } else {\n      headOfQueue.byteOffset += bytesToCopy;\n      headOfQueue.byteLength -= bytesToCopy;\n    }\n    controller._queueTotalSize -= bytesToCopy;\n\n    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n    totalBytesToCopyRemaining -= bytesToCopy;\n  }\n\n  if (ready === false) {\n    assert(controller._queueTotalSize === 0, 'queue must be empty');\n    assert(pullIntoDescriptor.bytesFilled > 0);\n    assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n  }\n\n  return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n  assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n  pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller) {\n  assert(controller._controlledReadableStream._state === 'readable');\n\n  if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n    ReadableStreamClose(controller._controlledReadableStream);\n  } else {\n    ReadableByteStreamControllerCallPullIfNeeded(controller);\n  }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n  if (controller._byobRequest === undefined) {\n    return;\n  }\n\n  controller._byobRequest._associatedReadableByteStreamController = undefined;\n  controller._byobRequest._view = undefined;\n  controller._byobRequest = undefined;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n  assert(controller._closeRequested === false);\n\n  while (controller._pendingPullIntos.length > 0) {\n    if (controller._queueTotalSize === 0) {\n      return;\n    }\n\n    var pullIntoDescriptor = controller._pendingPullIntos[0];\n\n    if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n      ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n      ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n    }\n  }\n}\n\nfunction ReadableByteStreamControllerPullInto(controller, view) {\n  var stream = controller._controlledReadableStream;\n\n  var elementSize = 1;\n  if (view.constructor !== DataView) {\n    elementSize = view.constructor.BYTES_PER_ELEMENT;\n  }\n\n  var ctor = view.constructor;\n\n  var pullIntoDescriptor = {\n    buffer: view.buffer,\n    byteOffset: view.byteOffset,\n    byteLength: view.byteLength,\n    bytesFilled: 0,\n    elementSize: elementSize,\n    ctor: ctor,\n    readerType: 'byob'\n  };\n\n  if (controller._pendingPullIntos.length > 0) {\n    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n    controller._pendingPullIntos.push(pullIntoDescriptor);\n\n    // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n    // - No change happens on desiredSize\n    // - The source has already been notified of that there's at least 1 pending read(view)\n\n    return ReadableStreamAddReadIntoRequest(stream);\n  }\n\n  if (stream._state === 'closed') {\n    var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n    return Promise.resolve(CreateIterResultObject(emptyView, true));\n  }\n\n  if (controller._queueTotalSize > 0) {\n    if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n      var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n\n      ReadableByteStreamControllerHandleQueueDrain(controller);\n\n      return Promise.resolve(CreateIterResultObject(filledView, false));\n    }\n\n    if (controller._closeRequested === true) {\n      var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n      ReadableByteStreamControllerError(controller, e);\n\n      return Promise.reject(e);\n    }\n  }\n\n  pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n  controller._pendingPullIntos.push(pullIntoDescriptor);\n\n  var promise = ReadableStreamAddReadIntoRequest(stream);\n\n  ReadableByteStreamControllerCallPullIfNeeded(controller);\n\n  return promise;\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n  firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n  assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n\n  var stream = controller._controlledReadableStream;\n  if (ReadableStreamHasBYOBReader(stream) === true) {\n    while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n      var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n      ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n    }\n  }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n  if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n    throw new RangeError('bytesWritten out of range');\n  }\n\n  ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n  if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n    // TODO: Figure out whether we should detach the buffer or not here.\n    return;\n  }\n\n  ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n  var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n  if (remainderSize > 0) {\n    var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n    var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n  }\n\n  pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n  pullIntoDescriptor.bytesFilled -= remainderSize;\n  ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n\n  ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n  var firstDescriptor = controller._pendingPullIntos[0];\n\n  var stream = controller._controlledReadableStream;\n\n  if (stream._state === 'closed') {\n    if (bytesWritten !== 0) {\n      throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n    }\n\n    ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n  } else {\n    assert(stream._state === 'readable');\n\n    ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n  }\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(controller) {\n  var descriptor = controller._pendingPullIntos.shift();\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n  return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller) {\n  var stream = controller._controlledReadableStream;\n\n  if (stream._state !== 'readable') {\n    return false;\n  }\n\n  if (controller._closeRequested === true) {\n    return false;\n  }\n\n  if (controller._started === false) {\n    return false;\n  }\n\n  if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n    return true;\n  }\n\n  if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n    return true;\n  }\n\n  if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n    return true;\n  }\n\n  return false;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nfunction ReadableByteStreamControllerClose(controller) {\n  var stream = controller._controlledReadableStream;\n\n  assert(controller._closeRequested === false);\n  assert(stream._state === 'readable');\n\n  if (controller._queueTotalSize > 0) {\n    controller._closeRequested = true;\n\n    return;\n  }\n\n  if (controller._pendingPullIntos.length > 0) {\n    var firstPendingPullInto = controller._pendingPullIntos[0];\n    if (firstPendingPullInto.bytesFilled > 0) {\n      var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n      ReadableByteStreamControllerError(controller, e);\n\n      throw e;\n    }\n  }\n\n  ReadableStreamClose(stream);\n}\n\nfunction ReadableByteStreamControllerEnqueue(controller, chunk) {\n  var stream = controller._controlledReadableStream;\n\n  assert(controller._closeRequested === false);\n  assert(stream._state === 'readable');\n\n  var buffer = chunk.buffer;\n  var byteOffset = chunk.byteOffset;\n  var byteLength = chunk.byteLength;\n  var transferredBuffer = TransferArrayBuffer(buffer);\n\n  if (ReadableStreamHasDefaultReader(stream) === true) {\n    if (ReadableStreamGetNumReadRequests(stream) === 0) {\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    } else {\n      assert(controller._queue.length === 0);\n\n      var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n      ReadableStreamFulfillReadRequest(stream, transferredView, false);\n    }\n  } else if (ReadableStreamHasBYOBReader(stream) === true) {\n    // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n  } else {\n    assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n  }\n}\n\nfunction ReadableByteStreamControllerError(controller, e) {\n  var stream = controller._controlledReadableStream;\n\n  assert(stream._state === 'readable');\n\n  ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n  ResetQueue(controller);\n  ReadableStreamError(stream, e);\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller) {\n  var stream = controller._controlledReadableStream;\n  var state = stream._state;\n\n  if (state === 'errored') {\n    return null;\n  }\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction ReadableByteStreamControllerRespond(controller, bytesWritten) {\n  bytesWritten = Number(bytesWritten);\n  if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n    throw new RangeError('bytesWritten must be a finite');\n  }\n\n  assert(controller._pendingPullIntos.length > 0);\n\n  ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nfunction ReadableByteStreamControllerRespondWithNewView(controller, view) {\n  assert(controller._pendingPullIntos.length > 0);\n\n  var firstDescriptor = controller._pendingPullIntos[0];\n\n  if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n    throw new RangeError('The region specified by view does not match byobRequest');\n  }\n  if (firstDescriptor.byteLength !== view.byteLength) {\n    throw new RangeError('The buffer of view has different capacity than byobRequest');\n  }\n\n  firstDescriptor.buffer = view.buffer;\n\n  ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name) {\n  return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n}\n\n// Helper functions for the readers.\n\nfunction readerLockException(name) {\n  return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name) {\n  return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n}\n\nfunction defaultReaderClosedPromiseInitialize(reader) {\n  reader._closedPromise = new Promise(function (resolve, reject) {\n    reader._closedPromise_resolve = resolve;\n    reader._closedPromise_reject = reject;\n  });\n}\n\nfunction defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n  reader._closedPromise = Promise.reject(reason);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseInitializeAsResolved(reader) {\n  reader._closedPromise = Promise.resolve(undefined);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseReject(reader, reason) {\n  assert(reader._closedPromise_resolve !== undefined);\n  assert(reader._closedPromise_reject !== undefined);\n\n  reader._closedPromise_reject(reason);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseResetToRejected(reader, reason) {\n  assert(reader._closedPromise_resolve === undefined);\n  assert(reader._closedPromise_reject === undefined);\n\n  reader._closedPromise = Promise.reject(reason);\n}\n\nfunction defaultReaderClosedPromiseResolve(reader) {\n  assert(reader._closedPromise_resolve !== undefined);\n  assert(reader._closedPromise_reject !== undefined);\n\n  reader._closedPromise_resolve(undefined);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction byobReaderBrandCheckException(name) {\n  return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n  return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name) {\n  return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name) {\n  return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n}\n\n// Helper function for ReadableStream pipeThrough\n\nfunction ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n  try {\n    // This relies on the brand-check that is enforced by Promise.prototype.then(). As with the rest of the reference\n    // implementation, it doesn't attempt to do the right thing if someone has modified the global environment.\n    Promise.prototype.then.call(promise, undefined, function () {});\n  } catch (e) {\n    // The brand check failed, therefore the internal slot is not present and there's nothing further to do.\n  }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar transformStream = __w_pdfjs_require__(6);\nvar readableStream = __w_pdfjs_require__(4);\nvar writableStream = __w_pdfjs_require__(2);\n\nexports.TransformStream = transformStream.TransformStream;\nexports.ReadableStream = readableStream.ReadableStream;\nexports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\nexports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\nexports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\nexports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\nexports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\nexports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\nexports.IsWritableStream = writableStream.IsWritableStream;\nexports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\nexports.WritableStream = writableStream.WritableStream;\nexports.WritableStreamAbort = writableStream.WritableStreamAbort;\nexports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\nexports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\nexports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\nexports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(1),\n    assert = _require.assert;\n\nvar _require2 = __w_pdfjs_require__(0),\n    InvokeOrNoop = _require2.InvokeOrNoop,\n    PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n    PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n    typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(4),\n    ReadableStream = _require3.ReadableStream,\n    ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n    ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n    ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n    ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n\nvar _require4 = __w_pdfjs_require__(2),\n    WritableStream = _require4.WritableStream,\n    WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n\n// Methods on the transform stream controller object\n\nfunction TransformStreamCloseReadable(transformStream) {\n  // console.log('TransformStreamCloseReadable()');\n\n  if (transformStream._errored === true) {\n    throw new TypeError('TransformStream is already errored');\n  }\n\n  if (transformStream._readableClosed === true) {\n    throw new TypeError('Readable side is already closed');\n  }\n\n  TransformStreamCloseReadableInternal(transformStream);\n}\n\nfunction TransformStreamEnqueueToReadable(transformStream, chunk) {\n  // console.log('TransformStreamEnqueueToReadable()');\n\n  if (transformStream._errored === true) {\n    throw new TypeError('TransformStream is already errored');\n  }\n\n  if (transformStream._readableClosed === true) {\n    throw new TypeError('Readable side is already closed');\n  }\n\n  // We throttle transformer.transform invocation based on the backpressure of the ReadableStream, but we still\n  // accept TransformStreamEnqueueToReadable() calls.\n\n  var controller = transformStream._readableController;\n\n  try {\n    ReadableStreamDefaultControllerEnqueue(controller, chunk);\n  } catch (e) {\n    // This happens when readableStrategy.size() throws.\n    // The ReadableStream has already errored itself.\n    transformStream._readableClosed = true;\n    TransformStreamErrorIfNeeded(transformStream, e);\n\n    throw transformStream._storedError;\n  }\n\n  var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n  var maybeBackpressure = desiredSize <= 0;\n\n  if (maybeBackpressure === true && transformStream._backpressure === false) {\n    // This allows pull() again. When desiredSize is 0, it's possible that a pull() will happen immediately (but\n    // asynchronously) after this because of pending read()s and set _backpressure back to false.\n    //\n    // If pull() could be called from inside enqueue(), then this logic would be wrong. This cannot happen\n    // because there is always a promise pending from start() or pull() when _backpressure is false.\n    TransformStreamSetBackpressure(transformStream, true);\n  }\n}\n\nfunction TransformStreamError(transformStream, e) {\n  if (transformStream._errored === true) {\n    throw new TypeError('TransformStream is already errored');\n  }\n\n  TransformStreamErrorInternal(transformStream, e);\n}\n\n// Abstract operations.\n\nfunction TransformStreamCloseReadableInternal(transformStream) {\n  assert(transformStream._errored === false);\n  assert(transformStream._readableClosed === false);\n\n  try {\n    ReadableStreamDefaultControllerClose(transformStream._readableController);\n  } catch (e) {\n    assert(false);\n  }\n\n  transformStream._readableClosed = true;\n}\n\nfunction TransformStreamErrorIfNeeded(transformStream, e) {\n  if (transformStream._errored === false) {\n    TransformStreamErrorInternal(transformStream, e);\n  }\n}\n\nfunction TransformStreamErrorInternal(transformStream, e) {\n  // console.log('TransformStreamErrorInternal()');\n\n  assert(transformStream._errored === false);\n\n  transformStream._errored = true;\n  transformStream._storedError = e;\n\n  if (transformStream._writableDone === false) {\n    WritableStreamDefaultControllerError(transformStream._writableController, e);\n  }\n  if (transformStream._readableClosed === false) {\n    ReadableStreamDefaultControllerError(transformStream._readableController, e);\n  }\n}\n\n// Used for preventing the next write() call on TransformStreamSink until there\n// is no longer backpressure.\nfunction TransformStreamReadableReadyPromise(transformStream) {\n  assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n  if (transformStream._backpressure === false) {\n    return Promise.resolve();\n  }\n\n  assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n\n  return transformStream._backpressureChangePromise;\n}\n\nfunction TransformStreamSetBackpressure(transformStream, backpressure) {\n  // console.log(`TransformStreamSetBackpressure(${backpressure})`);\n\n  // Passes also when called during construction.\n  assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n\n  if (transformStream._backpressureChangePromise !== undefined) {\n    // The fulfillment value is just for a sanity check.\n    transformStream._backpressureChangePromise_resolve(backpressure);\n  }\n\n  transformStream._backpressureChangePromise = new Promise(function (resolve) {\n    transformStream._backpressureChangePromise_resolve = resolve;\n  });\n\n  transformStream._backpressureChangePromise.then(function (resolution) {\n    assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n  });\n\n  transformStream._backpressure = backpressure;\n}\n\nfunction TransformStreamDefaultTransform(chunk, transformStreamController) {\n  var transformStream = transformStreamController._controlledTransformStream;\n  TransformStreamEnqueueToReadable(transformStream, chunk);\n  return Promise.resolve();\n}\n\nfunction TransformStreamTransform(transformStream, chunk) {\n  // console.log('TransformStreamTransform()');\n\n  assert(transformStream._errored === false);\n  assert(transformStream._transforming === false);\n  assert(transformStream._backpressure === false);\n\n  transformStream._transforming = true;\n\n  var transformer = transformStream._transformer;\n  var controller = transformStream._transformStreamController;\n\n  var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n\n  return transformPromise.then(function () {\n    transformStream._transforming = false;\n\n    return TransformStreamReadableReadyPromise(transformStream);\n  }, function (e) {\n    TransformStreamErrorIfNeeded(transformStream, e);\n    return Promise.reject(e);\n  });\n}\n\nfunction IsTransformStreamDefaultController(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsTransformStream(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n    return false;\n  }\n\n  return true;\n}\n\nvar TransformStreamSink = function () {\n  function TransformStreamSink(transformStream, startPromise) {\n    _classCallCheck(this, TransformStreamSink);\n\n    this._transformStream = transformStream;\n    this._startPromise = startPromise;\n  }\n\n  _createClass(TransformStreamSink, [{\n    key: 'start',\n    value: function start(c) {\n      var transformStream = this._transformStream;\n\n      transformStream._writableController = c;\n\n      return this._startPromise.then(function () {\n        return TransformStreamReadableReadyPromise(transformStream);\n      });\n    }\n  }, {\n    key: 'write',\n    value: function write(chunk) {\n      // console.log('TransformStreamSink.write()');\n\n      var transformStream = this._transformStream;\n\n      return TransformStreamTransform(transformStream, chunk);\n    }\n  }, {\n    key: 'abort',\n    value: function abort() {\n      var transformStream = this._transformStream;\n      transformStream._writableDone = true;\n      TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      // console.log('TransformStreamSink.close()');\n\n      var transformStream = this._transformStream;\n\n      assert(transformStream._transforming === false);\n\n      transformStream._writableDone = true;\n\n      var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n      // Return a promise that is fulfilled with undefined on success.\n      return flushPromise.then(function () {\n        if (transformStream._errored === true) {\n          return Promise.reject(transformStream._storedError);\n        }\n        if (transformStream._readableClosed === false) {\n          TransformStreamCloseReadableInternal(transformStream);\n        }\n        return Promise.resolve();\n      }).catch(function (r) {\n        TransformStreamErrorIfNeeded(transformStream, r);\n        return Promise.reject(transformStream._storedError);\n      });\n    }\n  }]);\n\n  return TransformStreamSink;\n}();\n\nvar TransformStreamSource = function () {\n  function TransformStreamSource(transformStream, startPromise) {\n    _classCallCheck(this, TransformStreamSource);\n\n    this._transformStream = transformStream;\n    this._startPromise = startPromise;\n  }\n\n  _createClass(TransformStreamSource, [{\n    key: 'start',\n    value: function start(c) {\n      var transformStream = this._transformStream;\n\n      transformStream._readableController = c;\n\n      return this._startPromise.then(function () {\n        // Prevent the first pull() call until there is backpressure.\n\n        assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n        if (transformStream._backpressure === true) {\n          return Promise.resolve();\n        }\n\n        assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n\n        return transformStream._backpressureChangePromise;\n      });\n    }\n  }, {\n    key: 'pull',\n    value: function pull() {\n      // console.log('TransformStreamSource.pull()');\n\n      var transformStream = this._transformStream;\n\n      // Invariant. Enforced by the promises returned by start() and pull().\n      assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n\n      assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n      TransformStreamSetBackpressure(transformStream, false);\n\n      // Prevent the next pull() call until there is backpressure.\n      return transformStream._backpressureChangePromise;\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      var transformStream = this._transformStream;\n      transformStream._readableClosed = true;\n      TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n    }\n  }]);\n\n  return TransformStreamSource;\n}();\n\nvar TransformStreamDefaultController = function () {\n  function TransformStreamDefaultController(transformStream) {\n    _classCallCheck(this, TransformStreamDefaultController);\n\n    if (IsTransformStream(transformStream) === false) {\n      throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n    }\n\n    if (transformStream._transformStreamController !== undefined) {\n      throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n    }\n\n    this._controlledTransformStream = transformStream;\n  }\n\n  _createClass(TransformStreamDefaultController, [{\n    key: 'enqueue',\n    value: function enqueue(chunk) {\n      if (IsTransformStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('enqueue');\n      }\n\n      TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      if (IsTransformStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('close');\n      }\n\n      TransformStreamCloseReadable(this._controlledTransformStream);\n    }\n  }, {\n    key: 'error',\n    value: function error(reason) {\n      if (IsTransformStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('error');\n      }\n\n      TransformStreamError(this._controlledTransformStream, reason);\n    }\n  }, {\n    key: 'desiredSize',\n    get: function get() {\n      if (IsTransformStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('desiredSize');\n      }\n\n      var transformStream = this._controlledTransformStream;\n      var readableController = transformStream._readableController;\n\n      return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n    }\n  }]);\n\n  return TransformStreamDefaultController;\n}();\n\nvar TransformStream = function () {\n  function TransformStream() {\n    var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, TransformStream);\n\n    this._transformer = transformer;\n    var readableStrategy = transformer.readableStrategy,\n        writableStrategy = transformer.writableStrategy;\n\n\n    this._transforming = false;\n    this._errored = false;\n    this._storedError = undefined;\n\n    this._writableController = undefined;\n    this._readableController = undefined;\n    this._transformStreamController = undefined;\n\n    this._writableDone = false;\n    this._readableClosed = false;\n\n    this._backpressure = undefined;\n    this._backpressureChangePromise = undefined;\n    this._backpressureChangePromise_resolve = undefined;\n\n    this._transformStreamController = new TransformStreamDefaultController(this);\n\n    var startPromise_resolve = void 0;\n    var startPromise = new Promise(function (resolve) {\n      startPromise_resolve = resolve;\n    });\n\n    var source = new TransformStreamSource(this, startPromise);\n\n    this._readable = new ReadableStream(source, readableStrategy);\n\n    var sink = new TransformStreamSink(this, startPromise);\n\n    this._writable = new WritableStream(sink, writableStrategy);\n\n    assert(this._writableController !== undefined);\n    assert(this._readableController !== undefined);\n\n    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n    // Set _backpressure based on desiredSize. As there is no read() at this point, we can just interpret\n    // desiredSize being non-positive as backpressure.\n    TransformStreamSetBackpressure(this, desiredSize <= 0);\n\n    var transformStream = this;\n    var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n    startPromise_resolve(startResult);\n    startPromise.catch(function (e) {\n      // The underlyingSink and underlyingSource will error the readable and writable ends on their own.\n      if (transformStream._errored === false) {\n        transformStream._errored = true;\n        transformStream._storedError = e;\n      }\n    });\n  }\n\n  _createClass(TransformStream, [{\n    key: 'readable',\n    get: function get() {\n      if (IsTransformStream(this) === false) {\n        throw streamBrandCheckException('readable');\n      }\n\n      return this._readable;\n    }\n  }, {\n    key: 'writable',\n    get: function get() {\n      if (IsTransformStream(this) === false) {\n        throw streamBrandCheckException('writable');\n      }\n\n      return this._writable;\n    }\n  }]);\n\n  return TransformStream;\n}();\n\nmodule.exports = { TransformStream: TransformStream };\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n  return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name) {\n  return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nmodule.exports = __w_pdfjs_require__(5);\n\n\n/***/ })\n/******/ ])));","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-globals */\n\nif (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('GENERIC')) {\n  // The `URL` constructor is assumed to be available in the extension builds.\n  exports.URL = URL;\n} else {\n  let isURLSupported = false;\n  try {\n    if (typeof URL === 'function' && typeof URL.prototype === 'object' &&\n        ('origin' in URL.prototype)) {\n      const u = new URL('b', 'http://a');\n      u.pathname = 'c%20d';\n      isURLSupported = (u.href === 'http://a/c%20d');\n    }\n  } catch (ex) {\n    // The `URL` constructor cannot be used.\n  }\n\n  if (isURLSupported) {\n    exports.URL = URL;\n  } else {\n    if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n      class DummyURL {\n        constructor() {\n          throw new Error('The current image decoders doesn\\'t utilize the ' +\n                          '`URL` constructor, hence it shouldn\\'t need to be ' +\n                          'polyfilled for the IMAGE_DECODERS build target.');\n        }\n      }\n      exports.URL = DummyURL;\n    } else {\n      const PolyfillURL = require('../../external/url/url-lib').URL;\n\n      // Attempt to copy over the static methods.\n      const OriginalURL = require('./global_scope').URL;\n      if (OriginalURL) {\n        PolyfillURL.createObjectURL = function(blob) {\n          // IE extension allows a second optional options argument, see\n          // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx\n          return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n        };\n        PolyfillURL.revokeObjectURL = function(url) {\n          OriginalURL.revokeObjectURL(url);\n        };\n      }\n      exports.URL = PolyfillURL;\n    }\n  }\n}\n","/* Any copyright is dedicated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/\n */\n\n// Polyfill obtained from: https://github.com/Polymer/URL\n\n(function URLConstructorClosure() {\n  'use strict';\n\n  var relative = Object.create(null);\n  relative['ftp'] = 21;\n  relative['file'] = 0;\n  relative['gopher'] = 70;\n  relative['http'] = 80;\n  relative['https'] = 443;\n  relative['ws'] = 80;\n  relative['wss'] = 443;\n\n  var relativePathDotMapping = Object.create(null);\n  relativePathDotMapping['%2e'] = '.';\n  relativePathDotMapping['.%2e'] = '..';\n  relativePathDotMapping['%2e.'] = '..';\n  relativePathDotMapping['%2e%2e'] = '..';\n\n  function isRelativeScheme(scheme) {\n    return relative[scheme] !== undefined;\n  }\n\n  function invalid() {\n    clear.call(this);\n    this._isInvalid = true;\n  }\n\n  function IDNAToASCII(h) {\n    if (h === '') {\n      invalid.call(this);\n    }\n    // XXX\n    return h.toLowerCase();\n  }\n\n  function percentEscape(c) {\n    var unicode = c.charCodeAt(0);\n    if (unicode > 0x20 &&\n       unicode < 0x7F &&\n       // \" # < > ? `\n       [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1\n      ) {\n      return c;\n    }\n    return encodeURIComponent(c);\n  }\n\n  function percentEscapeQuery(c) {\n    // XXX This actually needs to encode c using encoding and then\n    // convert the bytes one-by-one.\n\n    var unicode = c.charCodeAt(0);\n    if (unicode > 0x20 &&\n       unicode < 0x7F &&\n       // \" # < > ` (do not escape '?')\n       [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1\n      ) {\n      return c;\n    }\n    return encodeURIComponent(c);\n  }\n\n  var EOF, ALPHA = /[a-zA-Z]/,\n      ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\n  function parse(input, stateOverride, base) {\n    function err(message) {\n      errors.push(message);\n    }\n\n    var state = stateOverride || 'scheme start',\n        cursor = 0,\n        buffer = '',\n        seenAt = false,\n        seenBracket = false,\n        errors = [];\n\n    loop: while ((input[cursor - 1] !== EOF || cursor === 0) &&\n                 !this._isInvalid) {\n      var c = input[cursor];\n      switch (state) {\n        case 'scheme start':\n          if (c && ALPHA.test(c)) {\n            buffer += c.toLowerCase(); // ASCII-safe\n            state = 'scheme';\n          } else if (!stateOverride) {\n            buffer = '';\n            state = 'no scheme';\n            continue;\n          } else {\n            err('Invalid scheme.');\n            break loop;\n          }\n          break;\n\n        case 'scheme':\n          if (c && ALPHANUMERIC.test(c)) {\n            buffer += c.toLowerCase(); // ASCII-safe\n          } else if (c === ':') {\n            this._scheme = buffer;\n            buffer = '';\n            if (stateOverride) {\n              break loop;\n            }\n            if (isRelativeScheme(this._scheme)) {\n              this._isRelative = true;\n            }\n            if (this._scheme === 'file') {\n              state = 'relative';\n            } else if (this._isRelative && base &&\n                       base._scheme === this._scheme) {\n              state = 'relative or authority';\n            } else if (this._isRelative) {\n              state = 'authority first slash';\n            } else {\n              state = 'scheme data';\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            cursor = 0;\n            state = 'no scheme';\n            continue;\n          } else if (c === EOF) {\n            break loop;\n          } else {\n            err('Code point not allowed in scheme: ' + c);\n            break loop;\n          }\n          break;\n\n        case 'scheme data':\n          if (c === '?') {\n            this._query = '?';\n            state = 'query';\n          } else if (c === '#') {\n            this._fragment = '#';\n            state = 'fragment';\n          } else {\n            // XXX error handling\n            if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n              this._schemeData += percentEscape(c);\n            }\n          }\n          break;\n\n        case 'no scheme':\n          if (!base || !(isRelativeScheme(base._scheme))) {\n            err('Missing scheme.');\n            invalid.call(this);\n          } else {\n            state = 'relative';\n            continue;\n          }\n          break;\n\n        case 'relative or authority':\n          if (c === '/' && input[cursor + 1] === '/') {\n            state = 'authority ignore slashes';\n          } else {\n            err('Expected /, got: ' + c);\n            state = 'relative';\n            continue;\n          }\n          break;\n\n        case 'relative':\n          this._isRelative = true;\n          if (this._scheme !== 'file') {\n            this._scheme = base._scheme;\n          }\n          if (c === EOF) {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = base._query;\n            this._username = base._username;\n            this._password = base._password;\n            break loop;\n          } else if (c === '/' || c === '\\\\') {\n            if (c === '\\\\') {\n              err('\\\\ is an invalid code point.');\n            }\n            state = 'relative slash';\n          } else if (c === '?') {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = '?';\n            this._username = base._username;\n            this._password = base._password;\n            state = 'query';\n          } else if (c === '#') {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = base._query;\n            this._fragment = '#';\n            this._username = base._username;\n            this._password = base._password;\n            state = 'fragment';\n          } else {\n            var nextC = input[cursor + 1];\n            var nextNextC = input[cursor + 2];\n            if (this._scheme !== 'file' || !ALPHA.test(c) ||\n                (nextC !== ':' && nextC !== '|') ||\n                (nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' &&\n                 nextNextC !== '?' && nextNextC !== '#')) {\n              this._host = base._host;\n              this._port = base._port;\n              this._username = base._username;\n              this._password = base._password;\n              this._path = base._path.slice();\n              this._path.pop();\n            }\n            state = 'relative path';\n            continue;\n          }\n          break;\n\n        case 'relative slash':\n          if (c === '/' || c === '\\\\') {\n            if (c === '\\\\') {\n              err('\\\\ is an invalid code point.');\n            }\n            if (this._scheme === 'file') {\n              state = 'file host';\n            } else {\n              state = 'authority ignore slashes';\n            }\n          } else {\n            if (this._scheme !== 'file') {\n              this._host = base._host;\n              this._port = base._port;\n              this._username = base._username;\n              this._password = base._password;\n            }\n            state = 'relative path';\n            continue;\n          }\n          break;\n\n        case 'authority first slash':\n          if (c === '/') {\n            state = 'authority second slash';\n          } else {\n            err('Expected \\'/\\', got: ' + c);\n            state = 'authority ignore slashes';\n            continue;\n          }\n          break;\n\n        case 'authority second slash':\n          state = 'authority ignore slashes';\n          if (c !== '/') {\n            err('Expected \\'/\\', got: ' + c);\n            continue;\n          }\n          break;\n\n        case 'authority ignore slashes':\n          if (c !== '/' && c !== '\\\\') {\n            state = 'authority';\n            continue;\n          } else {\n            err('Expected authority, got: ' + c);\n          }\n          break;\n\n        case 'authority':\n          if (c === '@') {\n            if (seenAt) {\n              err('@ already seen.');\n              buffer += '%40';\n            }\n            seenAt = true;\n            for (var i = 0; i < buffer.length; i++) {\n              var cp = buffer[i];\n              if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n                err('Invalid whitespace in authority.');\n                continue;\n              }\n              // XXX check URL code points\n              if (cp === ':' && this._password === null) {\n                this._password = '';\n                continue;\n              }\n              var tempC = percentEscape(cp);\n              if (this._password !== null) {\n                this._password += tempC;\n              } else {\n                this._username += tempC;\n              }\n            }\n            buffer = '';\n          } else if (c === EOF || c === '/' || c === '\\\\' ||\n                     c === '?' || c === '#') {\n            cursor -= buffer.length;\n            buffer = '';\n            state = 'host';\n            continue;\n          } else {\n            buffer += c;\n          }\n          break;\n\n        case 'file host':\n          if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n            if (buffer.length === 2 && ALPHA.test(buffer[0]) &&\n                (buffer[1] === ':' || buffer[1] === '|')) {\n              state = 'relative path';\n            } else if (buffer.length === 0) {\n              state = 'relative path start';\n            } else {\n              this._host = IDNAToASCII.call(this, buffer);\n              buffer = '';\n              state = 'relative path start';\n            }\n            continue;\n          } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n            err('Invalid whitespace in file host.');\n          } else {\n            buffer += c;\n          }\n          break;\n\n        case 'host':\n        case 'hostname':\n          if (c === ':' && !seenBracket) {\n            // XXX host parsing\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'port';\n            if (stateOverride === 'hostname') {\n              break loop;\n            }\n          } else if (c === EOF || c === '/' ||\n                     c === '\\\\' || c === '?' || c === '#') {\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'relative path start';\n            if (stateOverride) {\n              break loop;\n            }\n            continue;\n          } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            if (c === '[') {\n              seenBracket = true;\n            } else if (c === ']') {\n              seenBracket = false;\n            }\n            buffer += c;\n          } else {\n            err('Invalid code point in host/hostname: ' + c);\n          }\n          break;\n\n        case 'port':\n          if (/[0-9]/.test(c)) {\n            buffer += c;\n          } else if (c === EOF || c === '/' || c === '\\\\' ||\n                     c === '?' || c === '#' || stateOverride) {\n            if (buffer !== '') {\n              var temp = parseInt(buffer, 10);\n              if (temp !== relative[this._scheme]) {\n                this._port = temp + '';\n              }\n              buffer = '';\n            }\n            if (stateOverride) {\n              break loop;\n            }\n            state = 'relative path start';\n            continue;\n          } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n            err('Invalid code point in port: ' + c);\n          } else {\n            invalid.call(this);\n          }\n          break;\n\n        case 'relative path start':\n          if (c === '\\\\') {\n            err('\\'\\\\\\' not allowed in path.');\n          }\n          state = 'relative path';\n          if (c !== '/' && c !== '\\\\') {\n            continue;\n          }\n          break;\n\n        case 'relative path':\n          if (c === EOF || c === '/' || c === '\\\\' ||\n              (!stateOverride && (c === '?' || c === '#'))) {\n            if (c === '\\\\') {\n              err('\\\\ not allowed in relative path.');\n            }\n            var tmp;\n            if ((tmp = relativePathDotMapping[buffer.toLowerCase()])) {\n              buffer = tmp;\n            }\n            if (buffer === '..') {\n              this._path.pop();\n              if (c !== '/' && c !== '\\\\') {\n                this._path.push('');\n              }\n            } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n              this._path.push('');\n            } else if (buffer !== '.') {\n              if (this._scheme === 'file' && this._path.length === 0 &&\n                  buffer.length === 2 && ALPHA.test(buffer[0]) &&\n                  buffer[1] === '|') {\n                buffer = buffer[0] + ':';\n              }\n              this._path.push(buffer);\n            }\n            buffer = '';\n            if (c === '?') {\n              this._query = '?';\n              state = 'query';\n            } else if (c === '#') {\n              this._fragment = '#';\n              state = 'fragment';\n            }\n          } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            buffer += percentEscape(c);\n          }\n          break;\n\n        case 'query':\n          if (!stateOverride && c === '#') {\n            this._fragment = '#';\n            state = 'fragment';\n          } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            this._query += percentEscapeQuery(c);\n          }\n          break;\n\n        case 'fragment':\n          if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            this._fragment += c;\n          }\n          break;\n      }\n\n      cursor++;\n    }\n  }\n\n  function clear() {\n    this._scheme = '';\n    this._schemeData = '';\n    this._username = '';\n    this._password = null;\n    this._host = '';\n    this._port = '';\n    this._path = [];\n    this._query = '';\n    this._fragment = '';\n    this._isInvalid = false;\n    this._isRelative = false;\n  }\n\n  // Does not process domain names or IP addresses.\n  // Does not handle encoding for the query parameter.\n  function JURL(url, base /* , encoding */) {\n    if (base !== undefined && !(base instanceof JURL)) {\n      base = new JURL(String(base));\n    }\n\n    this._url = url;\n    clear.call(this);\n\n    var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n    // encoding = encoding || 'utf-8'\n\n    parse.call(this, input, null, base);\n  }\n\n  JURL.prototype = {\n    toString() {\n      return this.href;\n    },\n    get href() {\n      if (this._isInvalid) {\n        return this._url;\n      }\n      var authority = '';\n      if (this._username !== '' || this._password !== null) {\n        authority = this._username +\n          (this._password !== null ? ':' + this._password : '') + '@';\n      }\n\n      return this.protocol +\n          (this._isRelative ? '//' + authority + this.host : '') +\n          this.pathname + this._query + this._fragment;\n    },\n    // The named parameter should be different from the setter's function name.\n    // Otherwise Safari 5 will throw an error (see issue 8541)\n    set href(value) {\n      clear.call(this);\n      parse.call(this, value);\n    },\n\n    get protocol() {\n      return this._scheme + ':';\n    },\n    set protocol(value) {\n      if (this._isInvalid) {\n        return;\n      }\n      parse.call(this, value + ':', 'scheme start');\n    },\n\n    get host() {\n      return this._isInvalid ? '' : this._port ?\n          this._host + ':' + this._port : this._host;\n    },\n    set host(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'host');\n    },\n\n    get hostname() {\n      return this._host;\n    },\n    set hostname(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'hostname');\n    },\n\n    get port() {\n      return this._port;\n    },\n    set port(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'port');\n    },\n\n    get pathname() {\n      return this._isInvalid ? '' : this._isRelative ?\n          '/' + this._path.join('/') : this._schemeData;\n    },\n    set pathname(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      this._path = [];\n      parse.call(this, value, 'relative path start');\n    },\n\n    get search() {\n      return this._isInvalid || !this._query || this._query === '?' ?\n          '' : this._query;\n    },\n    set search(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      this._query = '?';\n      if (value[0] === '?') {\n        value = value.slice(1);\n      }\n      parse.call(this, value, 'query');\n    },\n\n    get hash() {\n      return this._isInvalid || !this._fragment || this._fragment === '#' ?\n          '' : this._fragment;\n    },\n    set hash(value) {\n      if (this._isInvalid) {\n        return;\n      }\n      this._fragment = '#';\n      if (value[0] === '#') {\n        value = value.slice(1);\n      }\n      parse.call(this, value, 'fragment');\n    },\n\n    get origin() {\n      var host;\n      if (this._isInvalid || !this._scheme) {\n        return '';\n      }\n      // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n      // Gecko throws error for \"data://\"\n      // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n      // Gecko returns String(\"\") for file: mailto:\n      // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n      switch (this._scheme) {\n        case 'data':\n        case 'file':\n        case 'javascript':\n        case 'mailto':\n          return 'null';\n        case 'blob':\n          // Special case of blob: -- returns valid origin of _schemeData.\n          try {\n            return new JURL(this._schemeData).origin || 'null';\n          } catch (_) {\n            // Invalid _schemeData origin -- ignoring errors.\n          }\n          return 'null';\n      }\n      host = this.host;\n      if (!host) {\n        return '';\n      }\n      return this._scheme + '://' + host;\n    },\n  };\n\n  exports.URL = JURL;\n})();\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals requirejs, __non_webpack_require__ */\n\nimport {\n  assert, createPromiseCapability, getVerbosityLevel, info, InvalidPDFException,\n  isArrayBuffer, isSameOrigin, MissingPDFException, NativeImageDecoding,\n  PasswordException, setVerbosityLevel, shadow, stringToBytes,\n  UnexpectedResponseException, UnknownErrorException, unreachable, URL, warn\n} from '../shared/util';\nimport {\n  DOMCanvasFactory, DOMCMapReaderFactory, DummyStatTimer, loadScript,\n  PageViewport, RenderingCancelledException, StatTimer\n} from './dom_utils';\nimport { FontFaceObject, FontLoader } from './font_loader';\nimport { apiCompatibilityParams } from './api_compatibility';\nimport { CanvasGraphics } from './canvas';\nimport globalScope from '../shared/global_scope';\nimport { GlobalWorkerOptions } from './worker_options';\nimport { MessageHandler } from '../shared/message_handler';\nimport { Metadata } from './metadata';\nimport { PDFDataTransportStream } from './transport_stream';\nimport { WebGLContext } from './webgl';\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\n\nlet isWorkerDisabled = false;\nlet fallbackWorkerSrc;\n\nlet fakeWorkerFilesLoader = null;\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC')) {\n  let useRequireEnsure = false;\n  // For GENERIC build we need to add support for different fake file loaders\n  // for different frameworks.\n  if (typeof window === 'undefined') {\n    // node.js - disable worker and set require.ensure.\n    isWorkerDisabled = true;\n    if (typeof __non_webpack_require__.ensure === 'undefined') {\n      __non_webpack_require__.ensure = __non_webpack_require__('node-ensure');\n    }\n    useRequireEnsure = true;\n  } else if (typeof __non_webpack_require__ !== 'undefined' &&\n             typeof __non_webpack_require__.ensure === 'function') {\n    useRequireEnsure = true;\n  }\n  if (typeof requirejs !== 'undefined' && requirejs.toUrl) {\n    fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');\n  }\n  const dynamicLoaderSupported =\n    typeof requirejs !== 'undefined' && requirejs.load;\n  fakeWorkerFilesLoader = useRequireEnsure ? (function() {\n    return new Promise(function(resolve, reject) {\n      __non_webpack_require__.ensure([], function() {\n        try {\n          let worker;\n          if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('LIB')) {\n            worker = __non_webpack_require__('../pdf.worker.js');\n          } else {\n            worker = __non_webpack_require__('./pdf.worker.js');\n          }\n          resolve(worker.WorkerMessageHandler);\n        } catch (ex) {\n          reject(ex);\n        }\n      }, reject, 'pdfjsWorker');\n    });\n  }) : dynamicLoaderSupported ? (function() {\n    return new Promise(function(resolve, reject) {\n      requirejs(['pdfjs-dist/build/pdf.worker'], function(worker) {\n        try {\n          resolve(worker.WorkerMessageHandler);\n        } catch (ex) {\n          reject(ex);\n        }\n      }, reject);\n    });\n  }) : null;\n\n  if (!fallbackWorkerSrc && typeof document !== 'undefined') {\n    const pdfjsFilePath = document.currentScript && document.currentScript.src;\n    if (pdfjsFilePath) {\n      fallbackWorkerSrc =\n        pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, '.worker$1$2');\n    }\n  }\n}\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params The document initialization\n * parameters. The \"url\" key is always present.\n * @return {IPDFStream}\n */\n\n/** @type IPDFStreamFactory */\nvar createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates a IPDFStream as an alternative PDF data\n * transport.\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - the factory function\n * that takes document initialization parameters (including a \"url\") and returns\n * an instance of IPDFStream.\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n  createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string}     url   - The URL of the PDF.\n * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays\n *   (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded,\n *   use atob() to convert it to a binary string first.\n * @property {Object}     httpHeaders - Basic authentication headers.\n * @property {boolean}    withCredentials - Indicates whether or not cross-site\n *   Access-Control requests should be made using credentials such as cookies\n *   or authorization headers. The default is false.\n * @property {string}     password - For decrypting password-protected PDFs.\n * @property {TypedArray} initialData - A typed array with the first portion or\n *   all of the pdf data. Used by the extension since some data is already\n *   loaded before the switch to range requests.\n * @property {number}     length - The PDF file length. It's used for progress\n *   reports and range requests operations.\n * @property {PDFDataRangeTransport} range\n * @property {number}     rangeChunkSize - Optional parameter to specify\n *   maximum number of bytes fetched per range request. The default value is\n *   2^16 = 65536.\n * @property {PDFWorker}  worker - (optional) The worker that will be used for\n *   the loading and parsing of the PDF data.\n * @property {boolean} postMessageTransfers - (optional) Enables transfer usage\n *   in postMessage for ArrayBuffers. The default value is `true`.\n * @property {number} verbosity - (optional) Controls the logging level; the\n *   constants from {VerbosityLevel} should be used.\n * @property {string} docBaseUrl - (optional) The base URL of the document,\n *   used when attempting to recover valid absolute URLs for annotations, and\n *   outline items, that (incorrectly) only specify relative URLs.\n * @property {string} nativeImageDecoderSupport - (optional) Strategy for\n *   decoding certain (simple) JPEG images in the browser. This is useful for\n *   environments without DOM image and canvas support, such as e.g. Node.js.\n *   Valid values are 'decode', 'display' or 'none'; where 'decode' is intended\n *   for browsers with full image/canvas support, 'display' for environments\n *   with limited image support through stubs (useful for SVG conversion),\n *   and 'none' where JPEG images will be decoded entirely by PDF.js.\n *   The default value is 'decode'.\n * @property {string} cMapUrl - (optional) The URL where the predefined\n *   Adobe CMaps are located. Include trailing slash.\n * @property {boolean} cMapPacked - (optional) Specifies if the Adobe CMaps are\n *   binary packed.\n * @property {Object} CMapReaderFactory - (optional) The factory that will be\n *   used when reading built-in CMap files. Providing a custom factory is useful\n *   for environments without `XMLHttpRequest` support, such as e.g. Node.js.\n *   The default value is {DOMCMapReaderFactory}.\n * @property {boolean} stopAtErrors - (optional) Reject certain promises, e.g.\n *   `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n *   PDF data cannot be successfully parsed, instead of attempting to recover\n *   whatever possible of the data. The default value is `false`.\n * @property {number} maxImageSize - (optional) The maximum allowed image size\n *   in total pixels, i.e. width * height. Images above this value will not be\n *   rendered. Use -1 for no limit, which is also the default value.\n * @property {boolean} isEvalSupported - (optional) Determines if we can eval\n *   strings as JS. Primarily used to improve performance of font rendering,\n *   and when parsing PDF functions. The default value is `true`.\n * @property {boolean} disableFontFace - (optional) By default fonts are\n *   converted to OpenType fonts and loaded via font face rules. If disabled,\n *   fonts will be rendered using a built-in font renderer that constructs the\n *   glyphs with primitive path commands. The default value is `false`.\n * @property {boolean} disableRange - (optional) Disable range request loading\n *   of PDF files. When enabled, and if the server supports partial content\n *   requests, then the PDF will be fetched in chunks.\n *   The default value is `false`.\n * @property {boolean} disableStream - (optional) Disable streaming of PDF file\n *   data. By default PDF.js attempts to load PDFs in chunks.\n *   The default value is `false`.\n * @property {boolean} disableAutoFetch - (optional) Disable pre-fetching of PDF\n *   file data. When range requests are enabled PDF.js will automatically keep\n *   fetching more data even if it isn't needed to display the current page.\n *   The default value is `false`.\n *   NOTE: It is also necessary to disable streaming, see above,\n *         in order for disabling of pre-fetching to work correctly.\n * @property {boolean} disableCreateObjectURL - (optional) Disable the use of\n *   `URL.createObjectURL`, for compatibility with older browsers.\n *   The default value is `false`.\n * @property {boolean} pdfBug - (optional) Enables special hooks for debugging\n *   PDF.js (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * @typedef {Object} PDFDocumentStats\n * @property {Array} streamTypes - Used stream types in the document (an item\n *   is set to true if specific stream ID was used in the document).\n * @property {Array} fontTypes - Used font type in the document (an item is set\n *   to true if specific font ID was used in the document).\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)\n * is used, which means it must follow the same origin rules that any XHR does\n * e.g. No cross domain requests without CORS.\n *\n * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src\n * Can be a url to where a PDF is located, a typed array (Uint8Array)\n * already populated with data or parameter object.\n *\n * @return {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n  var task = new PDFDocumentLoadingTask();\n\n  var source;\n  if (typeof src === 'string') {\n    source = { url: src, };\n  } else if (isArrayBuffer(src)) {\n    source = { data: src, };\n  } else if (src instanceof PDFDataRangeTransport) {\n    source = { range: src, };\n  } else {\n    if (typeof src !== 'object') {\n      throw new Error('Invalid parameter in getDocument, ' +\n                      'need either Uint8Array, string or a parameter object');\n    }\n    if (!src.url && !src.data && !src.range) {\n      throw new Error(\n        'Invalid parameter object: need either .data, .range or .url');\n    }\n\n    source = src;\n  }\n\n  let params = Object.create(null);\n  var rangeTransport = null;\n  let worker = null;\n\n  for (var key in source) {\n    if (key === 'url' && typeof window !== 'undefined') {\n      // The full path is required in the 'url' field.\n      params[key] = new URL(source[key], window.location).href;\n      continue;\n    } else if (key === 'range') {\n      rangeTransport = source[key];\n      continue;\n    } else if (key === 'worker') {\n      worker = source[key];\n      continue;\n    } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {\n      // Converting string or array-like data to Uint8Array.\n      var pdfBytes = source[key];\n      if (typeof pdfBytes === 'string') {\n        params[key] = stringToBytes(pdfBytes);\n      } else if (typeof pdfBytes === 'object' && pdfBytes !== null &&\n                 !isNaN(pdfBytes.length)) {\n        params[key] = new Uint8Array(pdfBytes);\n      } else if (isArrayBuffer(pdfBytes)) {\n        params[key] = new Uint8Array(pdfBytes);\n      } else {\n        throw new Error('Invalid PDF binary data: either typed array, ' +\n                        'string or array-like object is expected in the ' +\n                        'data property.');\n      }\n      continue;\n    }\n    params[key] = source[key];\n  }\n\n  params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n  params.CMapReaderFactory = params.CMapReaderFactory || DOMCMapReaderFactory;\n  params.ignoreErrors = params.stopAtErrors !== true;\n  params.pdfBug = params.pdfBug === true;\n\n  const NativeImageDecoderValues = Object.values(NativeImageDecoding);\n  if (params.nativeImageDecoderSupport === undefined ||\n      !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {\n    params.nativeImageDecoderSupport =\n      (apiCompatibilityParams.nativeImageDecoderSupport ||\n       NativeImageDecoding.DECODE);\n  }\n  if (!Number.isInteger(params.maxImageSize)) {\n    params.maxImageSize = -1;\n  }\n  if (typeof params.isEvalSupported !== 'boolean') {\n    params.isEvalSupported = true;\n  }\n  if (typeof params.disableFontFace !== 'boolean') {\n    params.disableFontFace = apiCompatibilityParams.disableFontFace || false;\n  }\n\n  if (typeof params.disableRange !== 'boolean') {\n    params.disableRange = false;\n  }\n  if (typeof params.disableStream !== 'boolean') {\n    params.disableStream = false;\n  }\n  if (typeof params.disableAutoFetch !== 'boolean') {\n    params.disableAutoFetch = false;\n  }\n  if (typeof params.disableCreateObjectURL !== 'boolean') {\n    params.disableCreateObjectURL =\n      apiCompatibilityParams.disableCreateObjectURL || false;\n  }\n\n  // Set the main-thread verbosity level.\n  setVerbosityLevel(params.verbosity);\n\n  if (!worker) {\n    const workerParams = {\n      postMessageTransfers: params.postMessageTransfers,\n      verbosity: params.verbosity,\n    };\n    // Worker was not provided -- creating and owning our own. If message port\n    // is specified in global worker options, using it.\n    let workerPort = GlobalWorkerOptions.workerPort;\n    if (workerPort) {\n      workerParams.port = workerPort;\n      worker = PDFWorker.fromPort(workerParams);\n    } else {\n      worker = new PDFWorker(workerParams);\n    }\n    task._worker = worker;\n  }\n  var docId = task.docId;\n  worker.promise.then(function () {\n    if (task.destroyed) {\n      throw new Error('Loading aborted');\n    }\n    return _fetchDocument(worker, params, rangeTransport, docId).then(\n        function (workerId) {\n      if (task.destroyed) {\n        throw new Error('Loading aborted');\n      }\n\n      let networkStream;\n      if (rangeTransport) {\n        networkStream = new PDFDataTransportStream({\n          length: params.length,\n          initialData: params.initialData,\n          disableRange: params.disableRange,\n          disableStream: params.disableStream,\n        }, rangeTransport);\n      } else if (!params.data) {\n        networkStream = createPDFNetworkStream({\n          url: params.url,\n          length: params.length,\n          httpHeaders: params.httpHeaders,\n          withCredentials: params.withCredentials,\n          rangeChunkSize: params.rangeChunkSize,\n          disableRange: params.disableRange,\n          disableStream: params.disableStream,\n        });\n      }\n\n      var messageHandler = new MessageHandler(docId, workerId, worker.port);\n      messageHandler.postMessageTransfers = worker.postMessageTransfers;\n      var transport = new WorkerTransport(messageHandler, task, networkStream,\n                                          params);\n      task._transport = transport;\n      messageHandler.send('Ready', null);\n    });\n  }).catch(task._capability.reject);\n\n  return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId Unique document id, used as MessageHandler id.\n * @returns {Promise} The promise, which is resolved when worker id of\n *                    MessageHandler is known.\n * @private\n */\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n  if (worker.destroyed) {\n    return Promise.reject(new Error('Worker was destroyed'));\n  }\n\n  if (pdfDataRangeTransport) {\n    source.length = pdfDataRangeTransport.length;\n    source.initialData = pdfDataRangeTransport.initialData;\n  }\n  return worker.messageHandler.sendWithPromise('GetDocRequest', {\n    docId,\n    apiVersion: (typeof PDFJSDev !== 'undefined' ?\n                 PDFJSDev.eval('BUNDLE_VERSION') : null),\n    source: { // Only send the required properties, and *not* the entire object.\n      data: source.data,\n      url: source.url,\n      password: source.password,\n      disableAutoFetch: source.disableAutoFetch,\n      rangeChunkSize: source.rangeChunkSize,\n      length: source.length,\n    },\n    maxImageSize: source.maxImageSize,\n    disableFontFace: source.disableFontFace,\n    disableCreateObjectURL: source.disableCreateObjectURL,\n    postMessageTransfers: worker.postMessageTransfers,\n    docBaseUrl: source.docBaseUrl,\n    nativeImageDecoderSupport: source.nativeImageDecoderSupport,\n    ignoreErrors: source.ignoreErrors,\n    isEvalSupported: source.isEvalSupported,\n  }).then(function (workerId) {\n    if (worker.destroyed) {\n      throw new Error('Worker was destroyed');\n    }\n    return workerId;\n  });\n}\n\n/**\n * PDF document loading operation.\n * @class\n * @alias PDFDocumentLoadingTask\n */\nvar PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {\n  var nextDocumentId = 0;\n\n  /** @constructs PDFDocumentLoadingTask */\n  function PDFDocumentLoadingTask() {\n    this._capability = createPromiseCapability();\n    this._transport = null;\n    this._worker = null;\n\n    /**\n     * Unique document loading task id -- used in MessageHandlers.\n     * @type {string}\n     */\n    this.docId = 'd' + (nextDocumentId++);\n\n    /**\n     * Shows if loading task is destroyed.\n     * @type {boolean}\n     */\n    this.destroyed = false;\n\n    /**\n     * Callback to request a password if wrong or no password was provided.\n     * The callback receives two parameters: function that needs to be called\n     * with new password and reason (see {PasswordResponses}).\n     */\n    this.onPassword = null;\n\n    /**\n     * Callback to be able to monitor the loading progress of the PDF file\n     * (necessary to implement e.g. a loading bar). The callback receives\n     * an {Object} with the properties: {number} loaded and {number} total.\n     */\n    this.onProgress = null;\n\n    /**\n     * Callback to when unsupported feature is used. The callback receives\n     * an {UNSUPPORTED_FEATURES} argument.\n     */\n    this.onUnsupportedFeature = null;\n  }\n\n  PDFDocumentLoadingTask.prototype =\n      /** @lends PDFDocumentLoadingTask.prototype */ {\n    /**\n     * @return {Promise}\n     */\n    get promise() {\n      return this._capability.promise;\n    },\n\n    /**\n     * Aborts all network requests and destroys worker.\n     * @return {Promise} A promise that is resolved after destruction activity\n     *                   is completed.\n     */\n    destroy() {\n      this.destroyed = true;\n\n      var transportDestroyed = !this._transport ? Promise.resolve() :\n        this._transport.destroy();\n      return transportDestroyed.then(() => {\n        this._transport = null;\n        if (this._worker) {\n          this._worker.destroy();\n          this._worker = null;\n        }\n      });\n    },\n\n    /**\n     * Registers callbacks to indicate the document loading completion.\n     *\n     * @param {function} onFulfilled The callback for the loading completion.\n     * @param {function} onRejected The callback for the loading failure.\n     * @return {Promise} A promise that is resolved after the onFulfilled or\n     *                   onRejected callback.\n     */\n    then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {\n      return this.promise.then.apply(this.promise, arguments);\n    },\n  };\n\n  return PDFDocumentLoadingTask;\n})();\n\n/**\n * Abstract class to support range requests file loading.\n * @param {number} length\n * @param {Uint8Array} initialData\n */\nclass PDFDataRangeTransport {\n  constructor(length, initialData) {\n    this.length = length;\n    this.initialData = initialData;\n\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._readyCapability = createPromiseCapability();\n  }\n\n  addRangeListener(listener) {\n    this._rangeListeners.push(listener);\n  }\n\n  addProgressListener(listener) {\n    this._progressListeners.push(listener);\n  }\n\n  addProgressiveReadListener(listener) {\n    this._progressiveReadListeners.push(listener);\n  }\n\n  onDataRange(begin, chunk) {\n    for (const listener of this._rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n\n  onDataProgress(loaded) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressListeners) {\n        listener(loaded);\n      }\n    });\n  }\n\n  onDataProgressiveRead(chunk) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n\n  transportReady() {\n    this._readyCapability.resolve();\n  }\n\n  requestDataRange(begin, end) {\n    unreachable('Abstract method PDFDataRangeTransport.requestDataRange');\n  }\n\n  abort() {}\n}\n\n/**\n * Proxy to a PDFDocument in the worker thread. Also, contains commonly used\n * properties that can be read synchronously.\n */\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport, loadingTask) {\n    this.loadingTask = loadingTask;\n\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n  }\n\n  /**\n   * @return {number} Total number of pages the PDF contains.\n   */\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n\n  /**\n   * @return {string} A (not guaranteed to be) unique ID to identify a PDF.\n   */\n  get fingerprint() {\n    return this._pdfInfo.fingerprint;\n  }\n\n  /**\n   * @param {number} pageNumber - The page number to get. The first page is 1.\n   * @return {Promise} A promise that is resolved with a {@link PDFPageProxy}\n   *   object.\n   */\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n\n  /**\n   * @param {{num: number, gen: number}} ref - The page reference. Must have\n   *   the `num` and `gen` properties.\n   * @return {Promise} A promise that is resolved with the page index that is\n   *   associated with the reference.\n   */\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with a lookup table for\n   *   mapping named destinations to reference numbers.\n   *\n   * This can be slow for large documents. Use `getDestination` instead.\n   */\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n\n  /**\n   * @param {string} id - The named destination to get.\n   * @return {Promise} A promise that is resolved with all information\n   *   of the given named destination.\n   */\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with an {Array} containing\n   *   the page labels that correspond to the page indexes, or `null` when\n   *   no page labels are present in the PDF file.\n   */\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with a {string} containing\n   *   the page mode name.\n   */\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with a lookup table for\n   *   mapping named attachments to their content.\n   */\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with an {Array} of all the\n   *   JavaScript strings in the name tree, or `null` if no JavaScript exists.\n   */\n  getJavaScript() {\n    return this._transport.getJavaScript();\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with an {Array} that is a\n   * tree outline (if it has one) of the PDF. The tree is in the format of:\n   * [\n   *   {\n   *     title: string,\n   *     bold: boolean,\n   *     italic: boolean,\n   *     color: rgb Uint8ClampedArray,\n   *     dest: dest obj,\n   *     url: string,\n   *     items: array of more items like this\n   *   },\n   *   ...\n   * ]\n   */\n  getOutline() {\n    return this._transport.getOutline();\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with an {Array} that contains\n   *   the permission flags for the PDF document, or `null` when\n   *   no permissions are present in the PDF file.\n   */\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with an {Object} that has\n   *   `info` and `metadata` properties. `info` is an {Object} filled with\n   *   anything available in the information dictionary and similarly\n   *   `metadata` is a {Metadata} object with information from the metadata\n   *   section of the PDF.\n   */\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved with a {TypedArray} that has\n   * the raw data from the PDF.\n   */\n  getData() {\n    return this._transport.getData();\n  }\n\n  /**\n   * @return {Promise} A promise that is resolved when the document's data\n   *   is loaded. It is resolved with an {Object} that contains the `length`\n   *   property that indicates size of the PDF data in bytes.\n   */\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n\n  /**\n   * @return {Promise} A promise this is resolved with current statistics about\n   *   document structures (see {@link PDFDocumentStats}).\n   */\n  getStats() {\n    return this._transport.getStats();\n  }\n\n  /**\n   * Cleans up resources allocated by the document, e.g. created `@font-face`.\n   */\n  cleanup() {\n    this._transport.startCleanup();\n  }\n\n  /**\n   * Destroys the current document instance and terminates the worker.\n   */\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n\n  /**\n   * @return {Object} A subset of the current {DocumentInitParameters},\n   *   which are either needed in the viewer and/or whose default values\n   *   may be affected by the `apiCompatibilityParams`.\n   */\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n}\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - replaces all occurrences of\n *   whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - do not attempt to combine\n *   same line {@link TextItem}'s. The default value is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {array} items - array of {@link TextItem}\n * @property {Object} styles - {@link TextStyles} objects, indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - text content.\n * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {array} transform - transformation matrix.\n * @property {number} width - width in device space.\n * @property {number} height - height in device space.\n * @property {string} fontName - font name used by pdf.js for converted font.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - font ascent.\n * @property {number} descent - font descent.\n * @property {boolean} vertical - text is in vertical mode.\n * @property {string} fontFamily - possible font family\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} intent - Determines the annotations that will be fetched,\n *                    can be either 'display' (viewable annotations) or 'print'\n *                    (printable annotations).\n *                    If the parameter is omitted, all annotations are fetched.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by\n *                                calling of PDFPage.getViewport method.\n * @property {string} intent - Rendering intent, can be 'display' or 'print'\n *                    (default value is 'display').\n * @property {boolean} enableWebGL - (optional) Enables WebGL accelerated\n *   rendering for some operations. The default value is `false`.\n * @property {boolean} renderInteractiveForms - (optional) Whether or not\n *                     interactive form elements are rendered in the display\n *                     layer. If so, we do not render them on canvas as well.\n * @property {Array}  transform - (optional) Additional transform, applied\n *                    just before viewport transform.\n * @property {Object} imageLayer - (optional) An object that has beginLayout,\n *                    endLayout and appendImage functions.\n * @property {Object} canvasFactory - (optional) The factory that will be used\n *                    when creating canvases. The default value is\n *                    {DOMCanvasFactory}.\n * @property {Object} background - (optional) Background to use for the canvas.\n *                    Can use any valid canvas.fillStyle: A DOMString parsed as\n *                    CSS <color> value, a CanvasGradient object (a linear or\n *                    radial gradient) or a CanvasPattern object (a repetitive\n *                    image). The default value is 'rgb(255,255,255)'.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n *                               functions.\n */\n\n/**\n * Proxy to a PDFPage in the worker thread.\n * @class\n * @alias PDFPageProxy\n */\nvar PDFPageProxy = (function PDFPageProxyClosure() {\n  function PDFPageProxy(pageIndex, pageInfo, transport, pdfBug = false) {\n    this.pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this.transport = transport;\n    this._stats = (pdfBug ? new StatTimer() : DummyStatTimer);\n    this._pdfBug = pdfBug;\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n    this.cleanupAfterRender = false;\n    this.pendingCleanup = false;\n    this.intentStates = Object.create(null);\n    this.destroyed = false;\n  }\n  PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ {\n    /**\n     * @return {number} Page number of the page. First page is 1.\n     */\n    get pageNumber() {\n      return this.pageIndex + 1;\n    },\n    /**\n     * @return {number} The number of degrees the page is rotated clockwise.\n     */\n    get rotate() {\n      return this._pageInfo.rotate;\n    },\n    /**\n     * @return {Object} The reference that points to this page. It has 'num' and\n     * 'gen' properties.\n     */\n    get ref() {\n      return this._pageInfo.ref;\n    },\n    /**\n     * @return {number} The default size of units in 1/72nds of an inch.\n     */\n    get userUnit() {\n      return this._pageInfo.userUnit;\n    },\n    /**\n     * @return {Array} An array of the visible portion of the PDF page in the\n     * user space units - [x1, y1, x2, y2].\n     */\n    get view() {\n      return this._pageInfo.view;\n    },\n\n    /**\n     * @param {number} scale The desired scale of the viewport.\n     * @param {number} rotate Degrees to rotate the viewport. If omitted this\n     * defaults to the page rotation.\n     * @param {boolean} dontFlip (optional) If true, axis Y will not be flipped.\n     * @return {PageViewport} Contains 'width' and 'height' properties\n     * along with transforms required for rendering.\n     */\n    getViewport(scale, rotate = this.rotate, dontFlip = false) {\n      return new PageViewport({\n        viewBox: this.view,\n        scale,\n        rotation: rotate,\n        dontFlip,\n      });\n    },\n    /**\n     * @param {GetAnnotationsParameters} params - Annotation parameters.\n     * @return {Promise} A promise that is resolved with an {Array} of the\n     * annotation objects.\n     */\n    getAnnotations: function PDFPageProxy_getAnnotations(params) {\n      var intent = (params && params.intent) || null;\n\n      if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n        this.annotationsPromise = this.transport.getAnnotations(this.pageIndex,\n                                                                intent);\n        this.annotationsIntent = intent;\n      }\n      return this.annotationsPromise;\n    },\n    /**\n     * Begins the process of rendering a page to the desired context.\n     * @param {RenderParameters} params Page render parameters.\n     * @return {RenderTask} An object that contains the promise, which\n     *                      is resolved when the page finishes rendering.\n     */\n    render: function PDFPageProxy_render(params) {\n      let stats = this._stats;\n      stats.time('Overall');\n\n      // If there was a pending destroy cancel it so no cleanup happens during\n      // this call to render.\n      this.pendingCleanup = false;\n\n      var renderingIntent = (params.intent === 'print' ? 'print' : 'display');\n      var canvasFactory = params.canvasFactory || new DOMCanvasFactory();\n      let webGLContext = new WebGLContext({\n        enable: params.enableWebGL,\n      });\n\n      if (!this.intentStates[renderingIntent]) {\n        this.intentStates[renderingIntent] = Object.create(null);\n      }\n      var intentState = this.intentStates[renderingIntent];\n\n      // If there's no displayReadyCapability yet, then the operatorList\n      // was never requested before. Make the request and create the promise.\n      if (!intentState.displayReadyCapability) {\n        intentState.receivingOperatorList = true;\n        intentState.displayReadyCapability = createPromiseCapability();\n        intentState.operatorList = {\n          fnArray: [],\n          argsArray: [],\n          lastChunk: false,\n        };\n\n        stats.time('Page Request');\n        this.transport.messageHandler.send('RenderPageRequest', {\n          pageIndex: this.pageNumber - 1,\n          intent: renderingIntent,\n          renderInteractiveForms: (params.renderInteractiveForms === true),\n        });\n      }\n\n      var complete = (error) => {\n        var i = intentState.renderTasks.indexOf(internalRenderTask);\n        if (i >= 0) {\n          intentState.renderTasks.splice(i, 1);\n        }\n\n        if (this.cleanupAfterRender) {\n          this.pendingCleanup = true;\n        }\n        this._tryCleanup();\n\n        if (error) {\n          internalRenderTask.capability.reject(error);\n        } else {\n          internalRenderTask.capability.resolve();\n        }\n        stats.timeEnd('Rendering');\n        stats.timeEnd('Overall');\n      };\n\n      var internalRenderTask = new InternalRenderTask(complete, params,\n                                                      this.objs,\n                                                      this.commonObjs,\n                                                      intentState.operatorList,\n                                                      this.pageNumber,\n                                                      canvasFactory,\n                                                      webGLContext,\n                                                      this._pdfBug);\n      internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';\n      if (!intentState.renderTasks) {\n        intentState.renderTasks = [];\n      }\n      intentState.renderTasks.push(internalRenderTask);\n      var renderTask = internalRenderTask.task;\n\n      intentState.displayReadyCapability.promise.then((transparency) => {\n        if (this.pendingCleanup) {\n          complete();\n          return;\n        }\n        stats.time('Rendering');\n        internalRenderTask.initializeGraphics(transparency);\n        internalRenderTask.operatorListChanged();\n      }).catch(complete);\n\n      return renderTask;\n    },\n\n    /**\n     * @return {Promise} A promise resolved with an {@link PDFOperatorList}\n     *   object that represents page's operator list.\n     */\n    getOperatorList: function PDFPageProxy_getOperatorList() {\n      function operatorListChanged() {\n        if (intentState.operatorList.lastChunk) {\n          intentState.opListReadCapability.resolve(intentState.operatorList);\n\n          var i = intentState.renderTasks.indexOf(opListTask);\n          if (i >= 0) {\n            intentState.renderTasks.splice(i, 1);\n          }\n        }\n      }\n\n      var renderingIntent = 'oplist';\n      if (!this.intentStates[renderingIntent]) {\n        this.intentStates[renderingIntent] = Object.create(null);\n      }\n      var intentState = this.intentStates[renderingIntent];\n      var opListTask;\n\n      if (!intentState.opListReadCapability) {\n        opListTask = {};\n        opListTask.operatorListChanged = operatorListChanged;\n        intentState.receivingOperatorList = true;\n        intentState.opListReadCapability = createPromiseCapability();\n        intentState.renderTasks = [];\n        intentState.renderTasks.push(opListTask);\n        intentState.operatorList = {\n          fnArray: [],\n          argsArray: [],\n          lastChunk: false,\n        };\n\n        this._stats.time('Page Request');\n        this.transport.messageHandler.send('RenderPageRequest', {\n          pageIndex: this.pageIndex,\n          intent: renderingIntent,\n        });\n      }\n      return intentState.opListReadCapability.promise;\n    },\n\n    /**\n     * @param {getTextContentParameters} params - getTextContent parameters.\n     * @return {ReadableStream} ReadableStream to read textContent chunks.\n     */\n    streamTextContent(params = {}) {\n      const TEXT_CONTENT_CHUNK_SIZE = 100;\n      return this.transport.messageHandler.sendWithStream('GetTextContent', {\n        pageIndex: this.pageNumber - 1,\n        normalizeWhitespace: (params.normalizeWhitespace === true),\n        combineTextItems: (params.disableCombineTextItems !== true),\n      }, {\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n        size(textContent) {\n          return textContent.items.length;\n        },\n      });\n    },\n\n    /**\n     * @param {getTextContentParameters} params - getTextContent parameters.\n     * @return {Promise} That is resolved a {@link TextContent}\n     * object that represent the page text content.\n     */\n    getTextContent: function PDFPageProxy_getTextContent(params) {\n      params = params || {};\n      let readableStream = this.streamTextContent(params);\n\n      return new Promise(function(resolve, reject) {\n        function pump() {\n          reader.read().then(function({ value, done, }) {\n            if (done) {\n              resolve(textContent);\n              return;\n            }\n            Object.assign(textContent.styles, value.styles);\n            textContent.items.push(...value.items);\n            pump();\n          }, reject);\n        }\n\n        let reader = readableStream.getReader();\n        let textContent = {\n          items: [],\n          styles: Object.create(null),\n        };\n\n        pump();\n      });\n    },\n\n    /**\n     * Destroys page object.\n     */\n    _destroy: function PDFPageProxy_destroy() {\n      this.destroyed = true;\n      this.transport.pageCache[this.pageIndex] = null;\n\n      var waitOn = [];\n      Object.keys(this.intentStates).forEach(function(intent) {\n        if (intent === 'oplist') {\n          // Avoid errors below, since the renderTasks are just stubs.\n          return;\n        }\n        var intentState = this.intentStates[intent];\n        intentState.renderTasks.forEach(function(renderTask) {\n          var renderCompleted = renderTask.capability.promise.\n            catch(function () {}); // ignoring failures\n          waitOn.push(renderCompleted);\n          renderTask.cancel();\n        });\n      }, this);\n      this.objs.clear();\n      this.annotationsPromise = null;\n      this.pendingCleanup = false;\n      return Promise.all(waitOn);\n    },\n\n    /**\n     * Cleans up resources allocated by the page.\n     * @param {boolean} resetStats - (optional) Reset page stats, if enabled.\n     *   The default value is `false`.\n     */\n    cleanup(resetStats = false) {\n      this.pendingCleanup = true;\n      this._tryCleanup(resetStats);\n    },\n    /**\n     * For internal use only. Attempts to clean up if rendering is in a state\n     * where that's possible.\n     * @ignore\n     */\n    _tryCleanup(resetStats = false) {\n      if (!this.pendingCleanup ||\n          Object.keys(this.intentStates).some(function(intent) {\n            var intentState = this.intentStates[intent];\n            return (intentState.renderTasks.length !== 0 ||\n                    intentState.receivingOperatorList);\n          }, this)) {\n        return;\n      }\n\n      Object.keys(this.intentStates).forEach(function(intent) {\n        delete this.intentStates[intent];\n      }, this);\n      this.objs.clear();\n      this.annotationsPromise = null;\n      if (resetStats && this._stats instanceof StatTimer) {\n        this._stats = new StatTimer();\n      }\n      this.pendingCleanup = false;\n    },\n    /**\n     * For internal use only.\n     * @ignore\n     */\n    _startRenderPage: function PDFPageProxy_startRenderPage(transparency,\n                                                            intent) {\n      var intentState = this.intentStates[intent];\n      // TODO Refactor RenderPageRequest to separate rendering\n      // and operator list logic\n      if (intentState.displayReadyCapability) {\n        intentState.displayReadyCapability.resolve(transparency);\n      }\n    },\n    /**\n     * For internal use only.\n     * @ignore\n     */\n    _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk,\n                                                            intent) {\n      var intentState = this.intentStates[intent];\n      var i, ii;\n      // Add the new chunk to the current operator list.\n      for (i = 0, ii = operatorListChunk.length; i < ii; i++) {\n        intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n        intentState.operatorList.argsArray.push(\n          operatorListChunk.argsArray[i]);\n      }\n      intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n      // Notify all the rendering tasks there are more operators to be consumed.\n      for (i = 0; i < intentState.renderTasks.length; i++) {\n        intentState.renderTasks[i].operatorListChanged();\n      }\n\n      if (operatorListChunk.lastChunk) {\n        intentState.receivingOperatorList = false;\n        this._tryCleanup();\n      }\n    },\n\n    /**\n     * @return {Object} Returns page stats, if enabled.\n     */\n    get stats() {\n      return (this._stats instanceof StatTimer ? this._stats : null);\n    },\n  };\n  return PDFPageProxy;\n})();\n\nclass LoopbackPort {\n  constructor(defer = true) {\n    this._listeners = [];\n    this._defer = defer;\n    this._deferred = Promise.resolve(undefined);\n  }\n\n  postMessage(obj, transfers) {\n    function cloneValue(value) {\n      // Trying to perform a structured clone close to the spec, including\n      // transfers.\n      if (typeof value !== 'object' || value === null) {\n        return value;\n      }\n      if (cloned.has(value)) { // already cloned the object\n        return cloned.get(value);\n      }\n      var result;\n      var buffer;\n      if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n        // We found object with ArrayBuffer (typed array).\n        var transferable = transfers && transfers.includes(buffer);\n        if (value === buffer) {\n          // Special case when we are faking typed arrays in compatibility.js.\n          result = value;\n        } else if (transferable) {\n          result = new value.constructor(buffer, value.byteOffset,\n                                         value.byteLength);\n        } else {\n          result = new value.constructor(value);\n        }\n        cloned.set(value, result);\n        return result;\n      }\n      result = Array.isArray(value) ? [] : {};\n      cloned.set(value, result); // adding to cache now for cyclic references\n      // Cloning all value and object properties, however ignoring properties\n      // defined via getter.\n      for (var i in value) {\n        var desc, p = value;\n        while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n          p = Object.getPrototypeOf(p);\n        }\n        if (typeof desc.value === 'undefined' ||\n            typeof desc.value === 'function') {\n          continue;\n        }\n        result[i] = cloneValue(desc.value);\n      }\n      return result;\n    }\n\n    if (!this._defer) {\n      this._listeners.forEach(function (listener) {\n        listener.call(this, { data: obj, });\n      }, this);\n      return;\n    }\n\n    var cloned = new WeakMap();\n    var e = { data: cloneValue(obj), };\n    this._deferred.then(() => {\n      this._listeners.forEach(function (listener) {\n        listener.call(this, e);\n      }, this);\n    });\n  }\n\n  addEventListener(name, listener) {\n    this._listeners.push(listener);\n  }\n\n  removeEventListener(name, listener) {\n    var i = this._listeners.indexOf(listener);\n    this._listeners.splice(i, 1);\n  }\n\n  terminate() {\n    this._listeners = [];\n  }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} name - (optional) The name of the worker.\n * @property {Object} port - (optional) The `workerPort`.\n * @property {boolean} postMessageTransfers - (optional) Enables transfer usage\n *   in postMessage for ArrayBuffers. The default value is `true`.\n * @property {number} verbosity - (optional) Controls the logging level; the\n *   constants from {VerbosityLevel} should be used.\n */\n\n/**\n * PDF.js web worker abstraction, it controls instantiation of PDF documents and\n * WorkerTransport for them. If creation of a web worker is not possible,\n * a \"fake\" worker will be used instead.\n * @class\n */\nvar PDFWorker = (function PDFWorkerClosure() {\n  let nextFakeWorkerId = 0;\n\n  function getWorkerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\n    }\n    if (typeof fallbackWorkerSrc !== 'undefined') {\n      return fallbackWorkerSrc;\n    }\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n\n  function getMainThreadWorkerMessageHandler() {\n    try {\n      if (typeof window !== 'undefined') {\n        return (window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler);\n      }\n    } catch (ex) { }\n    return null;\n  }\n\n  let fakeWorkerFilesLoadedCapability;\n\n  // Loads worker code into main thread.\n  function setupFakeWorkerGlobal() {\n    if (fakeWorkerFilesLoadedCapability) {\n      return fakeWorkerFilesLoadedCapability.promise;\n    }\n    fakeWorkerFilesLoadedCapability = createPromiseCapability();\n\n    let mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();\n    if (mainWorkerMessageHandler) {\n      // The worker was already loaded using a `<script>` tag.\n      fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);\n      return fakeWorkerFilesLoadedCapability.promise;\n    }\n    // In the developer build load worker_loader.js which in turn loads all the\n    // other files and resolves the promise. In production only the\n    // pdf.worker.js file is needed.\n    if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n      if (typeof SystemJS === 'object') {\n        SystemJS.import('pdfjs/core/worker').then((worker) => {\n          fakeWorkerFilesLoadedCapability.resolve(worker.WorkerMessageHandler);\n        }).catch(fakeWorkerFilesLoadedCapability.reject);\n      } else if (typeof require === 'function') {\n        try {\n          let worker = require('../core/worker.js');\n          fakeWorkerFilesLoadedCapability.resolve(worker.WorkerMessageHandler);\n        } catch (ex) {\n          fakeWorkerFilesLoadedCapability.reject(ex);\n        }\n      } else {\n        fakeWorkerFilesLoadedCapability.reject(new Error(\n          'SystemJS or CommonJS must be used to load fake worker.'));\n      }\n    } else {\n      const loader = fakeWorkerFilesLoader || function() {\n        return loadScript(getWorkerSrc()).then(function() {\n          return window.pdfjsWorker.WorkerMessageHandler;\n        });\n      };\n      loader().then(fakeWorkerFilesLoadedCapability.resolve,\n                    fakeWorkerFilesLoadedCapability.reject);\n    }\n    return fakeWorkerFilesLoadedCapability.promise;\n  }\n\n  function createCDNWrapper(url) {\n    // We will rely on blob URL's property to specify origin.\n    // We want this function to fail in case if createObjectURL or Blob do not\n    // exist or fail for some reason -- our Worker creation will fail anyway.\n    var wrapper = 'importScripts(\\'' + url + '\\');';\n    return URL.createObjectURL(new Blob([wrapper]));\n  }\n\n  let pdfWorkerPorts = new WeakMap();\n\n  /**\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\n   */\n  function PDFWorker({ name = null, port = null,\n                       postMessageTransfers = true,\n                       verbosity = getVerbosityLevel(), } = {}) {\n    if (port && pdfWorkerPorts.has(port)) {\n      throw new Error('Cannot use more than one PDFWorker per port');\n    }\n\n    this.name = name;\n    this.destroyed = false;\n    this.postMessageTransfers = postMessageTransfers !== false;\n    this.verbosity = verbosity;\n\n    this._readyCapability = createPromiseCapability();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n\n    if (port) {\n      pdfWorkerPorts.set(port, this);\n      this._initializeFromPort(port);\n      return;\n    }\n\n    this._initialize();\n  }\n\n  PDFWorker.prototype = /** @lends PDFWorker.prototype */ {\n    get promise() {\n      return this._readyCapability.promise;\n    },\n\n    get port() {\n      return this._port;\n    },\n\n    get messageHandler() {\n      return this._messageHandler;\n    },\n\n    _initializeFromPort: function PDFWorker_initializeFromPort(port) {\n      this._port = port;\n      this._messageHandler = new MessageHandler('main', 'worker', port);\n      this._messageHandler.on('ready', function () {\n        // Ignoring 'ready' event -- MessageHandler shall be already initialized\n        // and ready to accept the messages.\n      });\n      this._readyCapability.resolve();\n    },\n\n    _initialize: function PDFWorker_initialize() {\n      // If worker support isn't disabled explicit and the browser has worker\n      // support, create a new web worker and test if it/the browser fulfills\n      // all requirements to run parts of pdf.js in a web worker.\n      // Right now, the requirement is, that an Uint8Array is still an\n      // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n      if (typeof Worker !== 'undefined' && !isWorkerDisabled &&\n          !getMainThreadWorkerMessageHandler()) {\n        let workerSrc = getWorkerSrc();\n\n        try {\n          // Wraps workerSrc path into blob URL, if the former does not belong\n          // to the same origin.\n          if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC') &&\n              !isSameOrigin(window.location.href, workerSrc)) {\n            workerSrc = createCDNWrapper(\n              new URL(workerSrc, window.location).href);\n          }\n\n          // Some versions of FF can't create a worker on localhost, see:\n          // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n          var worker = new Worker(workerSrc);\n          var messageHandler = new MessageHandler('main', 'worker', worker);\n          var terminateEarly = () => {\n            worker.removeEventListener('error', onWorkerError);\n            messageHandler.destroy();\n            worker.terminate();\n            if (this.destroyed) {\n              this._readyCapability.reject(new Error('Worker was destroyed'));\n            } else {\n              // Fall back to fake worker if the termination is caused by an\n              // error (e.g. NetworkError / SecurityError).\n              this._setupFakeWorker();\n            }\n          };\n\n          var onWorkerError = () => {\n            if (!this._webWorker) {\n              // Worker failed to initialize due to an error. Clean up and fall\n              // back to the fake worker.\n              terminateEarly();\n            }\n          };\n          worker.addEventListener('error', onWorkerError);\n\n          messageHandler.on('test', (data) => {\n            worker.removeEventListener('error', onWorkerError);\n            if (this.destroyed) {\n              terminateEarly();\n              return; // worker was destroyed\n            }\n            if (data && data.supportTypedArray) {\n              this._messageHandler = messageHandler;\n              this._port = worker;\n              this._webWorker = worker;\n              if (!data.supportTransfers) {\n                this.postMessageTransfers = false;\n              }\n              this._readyCapability.resolve();\n              // Send global setting, e.g. verbosity level.\n              messageHandler.send('configure', {\n                verbosity: this.verbosity,\n              });\n            } else {\n              this._setupFakeWorker();\n              messageHandler.destroy();\n              worker.terminate();\n            }\n          });\n\n          messageHandler.on('ready', (data) => {\n            worker.removeEventListener('error', onWorkerError);\n            if (this.destroyed) {\n              terminateEarly();\n              return; // worker was destroyed\n            }\n            try {\n              sendTest();\n            } catch (e) {\n              // We need fallback to a faked worker.\n              this._setupFakeWorker();\n            }\n          });\n\n          const sendTest = () => {\n            let testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);\n            // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n            // typed array. Also, checking if we can use transfers.\n            try {\n              messageHandler.send('test', testObj, [testObj.buffer]);\n            } catch (ex) {\n              info('Cannot use postMessage transfers');\n              testObj[0] = 0;\n              messageHandler.send('test', testObj);\n            }\n          };\n\n          // It might take time for worker to initialize (especially when AMD\n          // loader is used). We will try to send test immediately, and then\n          // when 'ready' message will arrive. The worker shall process only\n          // first received 'test'.\n          sendTest();\n          return;\n        } catch (e) {\n          info('The worker has been disabled.');\n        }\n      }\n      // Either workers are disabled, not supported or have thrown an exception.\n      // Thus, we fallback to a faked worker.\n      this._setupFakeWorker();\n    },\n\n    _setupFakeWorker: function PDFWorker_setupFakeWorker() {\n      if (!isWorkerDisabled) {\n        warn('Setting up fake worker.');\n        isWorkerDisabled = true;\n      }\n\n      setupFakeWorkerGlobal().then((WorkerMessageHandler) => {\n        if (this.destroyed) {\n          this._readyCapability.reject(new Error('Worker was destroyed'));\n          return;\n        }\n        let port = new LoopbackPort();\n        this._port = port;\n\n        // All fake workers use the same port, making id unique.\n        var id = 'fake' + (nextFakeWorkerId++);\n\n        // If the main thread is our worker, setup the handling for the\n        // messages -- the main thread sends to it self.\n        var workerHandler = new MessageHandler(id + '_worker', id, port);\n        WorkerMessageHandler.setup(workerHandler, port);\n\n        var messageHandler = new MessageHandler(id, id + '_worker', port);\n        this._messageHandler = messageHandler;\n        this._readyCapability.resolve();\n      }).catch((reason) => {\n        this._readyCapability.reject(\n          new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n      });\n    },\n\n    /**\n     * Destroys the worker instance.\n     */\n    destroy: function PDFWorker_destroy() {\n      this.destroyed = true;\n      if (this._webWorker) {\n        // We need to terminate only web worker created resource.\n        this._webWorker.terminate();\n        this._webWorker = null;\n      }\n      pdfWorkerPorts.delete(this._port);\n      this._port = null;\n      if (this._messageHandler) {\n        this._messageHandler.destroy();\n        this._messageHandler = null;\n      }\n    },\n  };\n\n  /**\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\n   */\n  PDFWorker.fromPort = function(params) {\n    if (!params || !params.port) {\n      throw new Error('PDFWorker.fromPort - invalid method signature.');\n    }\n    if (pdfWorkerPorts.has(params.port)) {\n      return pdfWorkerPorts.get(params.port);\n    }\n    return new PDFWorker(params);\n  };\n\n  PDFWorker.getWorkerSrc = function() {\n    return getWorkerSrc();\n  };\n\n  return PDFWorker;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n  constructor(messageHandler, loadingTask, networkStream, params) {\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new FontLoader(loadingTask.docId);\n    this._params = params;\n    this.CMapReaderFactory = new params.CMapReaderFactory({\n      baseUrl: params.cMapUrl,\n      isCompressed: params.cMapPacked,\n    });\n\n    this.destroyed = false;\n    this.destroyCapability = null;\n    this._passwordCapability = null;\n\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n\n    this.pageCache = [];\n    this.pagePromises = [];\n    this.downloadInfoCapability = createPromiseCapability();\n\n    this.setupMessageHandler();\n  }\n\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n\n    this.destroyed = true;\n    this.destroyCapability = createPromiseCapability();\n\n    if (this._passwordCapability) {\n      this._passwordCapability.reject(\n        new Error('Worker was destroyed during onPassword callback'));\n    }\n\n    const waitOn = [];\n    // We need to wait for all renderings to be completed, e.g.\n    // timeout/rAF can take a long time.\n    this.pageCache.forEach(function(page) {\n      if (page) {\n        waitOn.push(page._destroy());\n      }\n    });\n    this.pageCache = [];\n    this.pagePromises = [];\n    // We also need to wait for the worker to finish its long running tasks.\n    const terminated = this.messageHandler.sendWithPromise('Terminate', null);\n    waitOn.push(terminated);\n    Promise.all(waitOn).then(() => {\n      this.fontLoader.clear();\n      if (this._networkStream) {\n        this._networkStream.cancelAllRequests();\n      }\n\n      if (this.messageHandler) {\n        this.messageHandler.destroy();\n        this.messageHandler = null;\n      }\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n\n  setupMessageHandler() {\n    const { messageHandler, loadingTask, } = this;\n\n    messageHandler.on('GetReader', function(data, sink) {\n      assert(this._networkStream);\n      this._fullReader = this._networkStream.getFullReader();\n      this._fullReader.onProgress = (evt) => {\n        this._lastProgress = {\n          loaded: evt.loaded,\n          total: evt.total,\n        };\n      };\n      sink.onPull = () => {\n        this._fullReader.read().then(function({ value, done, }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n          assert(isArrayBuffer(value));\n          // Enqueue data chunk into sink, and transfer it\n          // to other side as `Transferable` object.\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch((reason) => {\n          sink.error(reason);\n        });\n      };\n\n      sink.onCancel = (reason) => {\n        this._fullReader.cancel(reason);\n      };\n    }, this);\n\n    messageHandler.on('ReaderHeadersReady', function(data) {\n      const headersCapability = createPromiseCapability();\n      const fullReader = this._fullReader;\n      fullReader.headersReady.then(() => {\n        // If stream or range are disabled, it's our only way to report\n        // loading progress.\n        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n          if (this._lastProgress && loadingTask.onProgress) {\n            loadingTask.onProgress(this._lastProgress);\n          }\n          fullReader.onProgress = (evt) => {\n            if (loadingTask.onProgress) {\n              loadingTask.onProgress({\n                loaded: evt.loaded,\n                total: evt.total,\n              });\n            }\n          };\n        }\n\n        headersCapability.resolve({\n          isStreamingSupported: fullReader.isStreamingSupported,\n          isRangeSupported: fullReader.isRangeSupported,\n          contentLength: fullReader.contentLength,\n        });\n      }, headersCapability.reject);\n\n      return headersCapability.promise;\n    }, this);\n\n    messageHandler.on('GetRangeReader', function(data, sink) {\n      assert(this._networkStream);\n      const rangeReader =\n        this._networkStream.getRangeReader(data.begin, data.end);\n\n      sink.onPull = () => {\n        rangeReader.read().then(function({ value, done, }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n          assert(isArrayBuffer(value));\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch((reason) => {\n          sink.error(reason);\n        });\n      };\n\n      sink.onCancel = (reason) => {\n        rangeReader.cancel(reason);\n      };\n    }, this);\n\n    messageHandler.on('GetDoc', function({ pdfInfo, }) {\n      this.numPages = pdfInfo.numPages;\n      this.pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);\n      loadingTask._capability.resolve(this.pdfDocument);\n    }, this);\n\n    messageHandler.on('PasswordRequest', function(exception) {\n      this._passwordCapability = createPromiseCapability();\n\n      if (loadingTask.onPassword) {\n        const updatePassword = (password) => {\n          this._passwordCapability.resolve({\n            password,\n          });\n        };\n        try {\n          loadingTask.onPassword(updatePassword, exception.code);\n        } catch (ex) {\n          this._passwordCapability.reject(ex);\n        }\n      } else {\n        this._passwordCapability.reject(\n          new PasswordException(exception.message, exception.code));\n      }\n      return this._passwordCapability.promise;\n    }, this);\n\n    messageHandler.on('PasswordException', function(exception) {\n      loadingTask._capability.reject(\n        new PasswordException(exception.message, exception.code));\n    }, this);\n\n    messageHandler.on('InvalidPDF', function(exception) {\n      loadingTask._capability.reject(\n        new InvalidPDFException(exception.message));\n    }, this);\n\n    messageHandler.on('MissingPDF', function(exception) {\n      loadingTask._capability.reject(\n        new MissingPDFException(exception.message));\n    }, this);\n\n    messageHandler.on('UnexpectedResponse', function(exception) {\n      loadingTask._capability.reject(\n        new UnexpectedResponseException(exception.message, exception.status));\n    }, this);\n\n    messageHandler.on('UnknownError', function(exception) {\n      loadingTask._capability.reject(\n        new UnknownErrorException(exception.message, exception.details));\n    }, this);\n\n    messageHandler.on('DataLoaded', function(data) {\n      // For consistency: Ensure that progress is always reported when the\n      // entire PDF file has been loaded, regardless of how it was fetched.\n      if (loadingTask.onProgress) {\n        loadingTask.onProgress({\n          loaded: data.length,\n          total: data.length,\n        });\n      }\n      this.downloadInfoCapability.resolve(data);\n    }, this);\n\n    messageHandler.on('StartRenderPage', function(data) {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const page = this.pageCache[data.pageIndex];\n      page._stats.timeEnd('Page Request');\n      page._startRenderPage(data.transparency, data.intent);\n    }, this);\n\n    messageHandler.on('RenderPageChunk', function(data) {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const page = this.pageCache[data.pageIndex];\n      page._renderPageChunk(data.operatorList, data.intent);\n    }, this);\n\n    messageHandler.on('commonobj', function(data) {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const [id, type, exportedData] = data;\n      if (this.commonObjs.hasData(id)) {\n        return;\n      }\n\n      switch (type) {\n        case 'Font':\n          const params = this._params;\n\n          if ('error' in exportedData) {\n            const exportedError = exportedData.error;\n            warn(`Error during font loading: ${exportedError}`);\n            this.commonObjs.resolve(id, exportedError);\n            break;\n          }\n\n          let fontRegistry = null;\n          if (params.pdfBug && globalScope.FontInspector &&\n              globalScope.FontInspector.enabled) {\n            fontRegistry = {\n              registerFont(font, url) {\n                globalScope['FontInspector'].fontAdded(font, url);\n              },\n            };\n          }\n          const font = new FontFaceObject(exportedData, {\n            isEvalSupported: params.isEvalSupported,\n            disableFontFace: params.disableFontFace,\n            ignoreErrors: params.ignoreErrors,\n            onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n            fontRegistry,\n          });\n          const fontReady = (fontObjs) => {\n            this.commonObjs.resolve(id, font);\n          };\n\n          this.fontLoader.bind([font], fontReady);\n          break;\n        case 'FontPath':\n          this.commonObjs.resolve(id, exportedData);\n          break;\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n    }, this);\n\n    messageHandler.on('obj', function(data) {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const [id, pageIndex, type, imageData] = data;\n      const pageProxy = this.pageCache[pageIndex];\n      if (pageProxy.objs.hasData(id)) {\n        return;\n      }\n\n      switch (type) {\n        case 'JpegStream':\n          return new Promise((resolve, reject) => {\n            const img = new Image();\n            img.onload = function() {\n              resolve(img);\n            };\n            img.onerror = function() {\n              reject(new Error('Error during JPEG image loading'));\n              // Note that when the browser image loading/decoding fails,\n              // we'll fallback to the built-in PDF.js JPEG decoder; see\n              // `PartialEvaluator.buildPaintImageXObject` in the\n              // `src/core/evaluator.js` file.\n            };\n            img.src = imageData;\n          }).then((img) => {\n            pageProxy.objs.resolve(id, img);\n          });\n        case 'Image':\n          pageProxy.objs.resolve(id, imageData);\n\n          // Heuristic that will allow us not to store large data.\n          const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n          if (imageData && 'data' in imageData &&\n              imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n            pageProxy.cleanupAfterRender = true;\n          }\n          break;\n        default:\n          throw new Error(`Got unknown object type ${type}`);\n      }\n    }, this);\n\n    messageHandler.on('DocProgress', function(data) {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      if (loadingTask.onProgress) {\n        loadingTask.onProgress({\n          loaded: data.loaded,\n          total: data.total,\n        });\n      }\n    }, this);\n\n    messageHandler.on('PageError', function(data) {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const page = this.pageCache[data.pageNum - 1];\n      const intentState = page.intentStates[data.intent];\n\n      if (intentState.displayReadyCapability) {\n        intentState.displayReadyCapability.reject(data.error);\n      } else {\n        throw new Error(data.error);\n      }\n\n      if (intentState.operatorList) {\n        // Mark operator list as complete.\n        intentState.operatorList.lastChunk = true;\n        for (let i = 0; i < intentState.renderTasks.length; i++) {\n          intentState.renderTasks[i].operatorListChanged();\n        }\n      }\n    }, this);\n\n    messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);\n\n    messageHandler.on('JpegDecode', function(data) {\n      if (this.destroyed) {\n        return Promise.reject(new Error('Worker was destroyed'));\n      }\n\n      if (typeof document === 'undefined') {\n        // Make sure that this code is not executing in node.js, as\n        // it's using DOM image, and there is no library to support that.\n        return Promise.reject(new Error('\"document\" is not defined.'));\n      }\n\n      const [imageUrl, components] = data;\n      if (components !== 3 && components !== 1) {\n        return Promise.reject(\n          new Error('Only 3 components or 1 component can be returned'));\n      }\n\n      return new Promise(function (resolve, reject) {\n        const img = new Image();\n        img.onload = function () {\n          const width = img.width;\n          const height = img.height;\n          const size = width * height;\n          const rgbaLength = size * 4;\n          const buf = new Uint8ClampedArray(size * components);\n          const tmpCanvas = document.createElement('canvas');\n          tmpCanvas.width = width;\n          tmpCanvas.height = height;\n          const tmpCtx = tmpCanvas.getContext('2d');\n          tmpCtx.drawImage(img, 0, 0);\n          const data = tmpCtx.getImageData(0, 0, width, height).data;\n\n          if (components === 3) {\n            for (let i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {\n              buf[j] = data[i];\n              buf[j + 1] = data[i + 1];\n              buf[j + 2] = data[i + 2];\n            }\n          } else if (components === 1) {\n            for (let i = 0, j = 0; i < rgbaLength; i += 4, j++) {\n              buf[j] = data[i];\n            }\n          }\n          resolve({ data: buf, width, height, });\n        };\n        img.onerror = function () {\n          reject(new Error('JpegDecode failed to load image'));\n        };\n        img.src = imageUrl;\n      });\n    }, this);\n\n    messageHandler.on('FetchBuiltInCMap', function(data) {\n      if (this.destroyed) {\n        return Promise.reject(new Error('Worker was destroyed'));\n      }\n      return this.CMapReaderFactory.fetch({\n        name: data.name,\n      });\n    }, this);\n  }\n\n  _onUnsupportedFeature({ featureId, }) {\n    if (this.destroyed) {\n      return; // Ignore any pending requests if the worker was terminated.\n    }\n    if (this.loadingTask.onUnsupportedFeature) {\n      this.loadingTask.onUnsupportedFeature(featureId);\n    }\n  }\n\n  getData() {\n    return this.messageHandler.sendWithPromise('GetData', null);\n  }\n\n  getPage(pageNumber) {\n    if (!Number.isInteger(pageNumber) ||\n        pageNumber <= 0 || pageNumber > this.numPages) {\n      return Promise.reject(new Error('Invalid page request'));\n    }\n\n    const pageIndex = pageNumber - 1;\n    if (pageIndex in this.pagePromises) {\n      return this.pagePromises[pageIndex];\n    }\n    const promise = this.messageHandler.sendWithPromise('GetPage', {\n      pageIndex,\n    }).then((pageInfo) => {\n      if (this.destroyed) {\n        throw new Error('Transport destroyed');\n      }\n      const page = new PDFPageProxy(pageIndex, pageInfo, this,\n                                    this._params.pdfBug);\n      this.pageCache[pageIndex] = page;\n      return page;\n    });\n    this.pagePromises[pageIndex] = promise;\n    return promise;\n  }\n\n  getPageIndex(ref) {\n    return this.messageHandler.sendWithPromise('GetPageIndex', {\n      ref,\n    }).catch(function(reason) {\n      return Promise.reject(new Error(reason));\n    });\n  }\n\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise('GetAnnotations', {\n      pageIndex,\n      intent,\n    });\n  }\n\n  getDestinations() {\n    return this.messageHandler.sendWithPromise('GetDestinations', null);\n  }\n\n  getDestination(id) {\n    if (typeof id !== 'string') {\n      return Promise.reject(new Error('Invalid destination request.'));\n    }\n    return this.messageHandler.sendWithPromise('GetDestination', {\n      id,\n    });\n  }\n\n  getPageLabels() {\n    return this.messageHandler.sendWithPromise('GetPageLabels', null);\n  }\n\n  getPageMode() {\n    return this.messageHandler.sendWithPromise('GetPageMode', null);\n  }\n\n  getAttachments() {\n    return this.messageHandler.sendWithPromise('GetAttachments', null);\n  }\n\n  getJavaScript() {\n    return this.messageHandler.sendWithPromise('GetJavaScript', null);\n  }\n\n  getOutline() {\n    return this.messageHandler.sendWithPromise('GetOutline', null);\n  }\n\n  getPermissions() {\n    return this.messageHandler.sendWithPromise('GetPermissions', null);\n  }\n\n  getMetadata() {\n    return this.messageHandler.sendWithPromise('GetMetadata', null).\n        then((results) => {\n      return {\n        info: results[0],\n        metadata: (results[1] ? new Metadata(results[1]) : null),\n        contentDispositionFilename: (this._fullReader ?\n                                     this._fullReader.filename : null),\n      };\n    });\n  }\n\n  getStats() {\n    return this.messageHandler.sendWithPromise('GetStats', null);\n  }\n\n  startCleanup() {\n    this.messageHandler.sendWithPromise('Cleanup', null).then(() => {\n      for (let i = 0, ii = this.pageCache.length; i < ii; i++) {\n        const page = this.pageCache[i];\n        if (page) {\n          page.cleanup();\n        }\n      }\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n    });\n  }\n\n  get loadingParams() {\n    const params = this._params;\n    return shadow(this, 'loadingParams', {\n      disableAutoFetch: params.disableAutoFetch,\n      disableCreateObjectURL: params.disableCreateObjectURL,\n      disableFontFace: params.disableFontFace,\n      nativeImageDecoderSupport: params.nativeImageDecoderSupport,\n    });\n  }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects\n * for fonts, images, rendering code and such. These objects might get processed\n * inside of a worker. The `PDFObjects` implements some basic functions to\n * manage these objects.\n * @ignore\n */\nvar PDFObjects = (function PDFObjectsClosure() {\n  function PDFObjects() {\n    this.objs = Object.create(null);\n  }\n\n  PDFObjects.prototype = {\n    /**\n     * Internal function.\n     * Ensures there is an object defined for `objId`.\n     */\n    ensureObj: function PDFObjects_ensureObj(objId) {\n      if (this.objs[objId]) {\n        return this.objs[objId];\n      }\n\n      var obj = {\n        capability: createPromiseCapability(),\n        data: null,\n        resolved: false,\n      };\n      this.objs[objId] = obj;\n\n      return obj;\n    },\n\n    /**\n     * If called *without* callback, this returns the data of `objId` but the\n     * object needs to be resolved. If it isn't, this function throws.\n     *\n     * If called *with* a callback, the callback is called with the data of the\n     * object once the object is resolved. That means, if you call this\n     * function and the object is already resolved, the callback gets called\n     * right away.\n     */\n    get: function PDFObjects_get(objId, callback) {\n      // If there is a callback, then the get can be async and the object is\n      // not required to be resolved right now\n      if (callback) {\n        this.ensureObj(objId).capability.promise.then(callback);\n        return null;\n      }\n\n      // If there isn't a callback, the user expects to get the resolved data\n      // directly.\n      var obj = this.objs[objId];\n\n      // If there isn't an object yet or the object isn't resolved, then the\n      // data isn't ready yet!\n      if (!obj || !obj.resolved) {\n        throw new Error(`Requesting object that isn't resolved yet ${objId}`);\n      }\n\n      return obj.data;\n    },\n\n    /**\n     * Resolves the object `objId` with optional `data`.\n     */\n    resolve: function PDFObjects_resolve(objId, data) {\n      var obj = this.ensureObj(objId);\n\n      obj.resolved = true;\n      obj.data = data;\n      obj.capability.resolve(data);\n    },\n\n    isResolved: function PDFObjects_isResolved(objId) {\n      var objs = this.objs;\n\n      if (!objs[objId]) {\n        return false;\n      }\n      return objs[objId].resolved;\n    },\n\n    hasData: function PDFObjects_hasData(objId) {\n      return this.isResolved(objId);\n    },\n\n    /**\n     * Returns the data of `objId` if object exists, null otherwise.\n     */\n    getData: function PDFObjects_getData(objId) {\n      var objs = this.objs;\n      if (!objs[objId] || !objs[objId].resolved) {\n        return null;\n      }\n      return objs[objId].data;\n    },\n\n    clear: function PDFObjects_clear() {\n      this.objs = Object.create(null);\n    },\n  };\n  return PDFObjects;\n})();\n\n/**\n * Allows controlling of the rendering tasks.\n * @class\n * @alias RenderTask\n */\nvar RenderTask = (function RenderTaskClosure() {\n  function RenderTask(internalRenderTask) {\n    this._internalRenderTask = internalRenderTask;\n\n    /**\n     * Callback for incremental rendering -- a function that will be called\n     * each time the rendering is paused.  To continue rendering call the\n     * function that is the first argument to the callback.\n     * @type {function}\n     */\n    this.onContinue = null;\n  }\n\n  RenderTask.prototype = /** @lends RenderTask.prototype */ {\n    /**\n     * Promise for rendering task completion.\n     * @return {Promise}\n     */\n    get promise() {\n      return this._internalRenderTask.capability.promise;\n    },\n\n    /**\n     * Cancels the rendering task. If the task is currently rendering it will\n     * not be cancelled until graphics pauses with a timeout. The promise that\n     * this object extends will be rejected when cancelled.\n     */\n    cancel: function RenderTask_cancel() {\n      this._internalRenderTask.cancel();\n    },\n\n    /**\n     * Registers callbacks to indicate the rendering task completion.\n     *\n     * @param {function} onFulfilled The callback for the rendering completion.\n     * @param {function} onRejected The callback for the rendering failure.\n     * @return {Promise} A promise that is resolved after the onFulfilled or\n     *                   onRejected callback.\n     */\n    then: function RenderTask_then(onFulfilled, onRejected) {\n      return this.promise.then.apply(this.promise, arguments);\n    },\n  };\n\n  return RenderTask;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nvar InternalRenderTask = (function InternalRenderTaskClosure() {\n  let canvasInRendering = new WeakMap();\n\n  function InternalRenderTask(callback, params, objs, commonObjs, operatorList,\n                              pageNumber, canvasFactory, webGLContext,\n                              pdfBug = false) {\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this.pageNumber = pageNumber;\n    this.canvasFactory = canvasFactory;\n    this.webGLContext = webGLContext;\n    this._pdfBug = pdfBug;\n\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this.useRequestAnimationFrame = false;\n    this.cancelled = false;\n    this.capability = createPromiseCapability();\n    this.task = new RenderTask(this);\n    // caching this-bound methods\n    this._continueBound = this._continue.bind(this);\n    this._scheduleNextBound = this._scheduleNext.bind(this);\n    this._nextBound = this._next.bind(this);\n    this._canvas = params.canvasContext.canvas;\n  }\n\n  InternalRenderTask.prototype = {\n\n    initializeGraphics(transparency) {\n      if (this.cancelled) {\n        return;\n      }\n      if (this._canvas) {\n        if (canvasInRendering.has(this._canvas)) {\n          throw new Error(\n            'Cannot use the same canvas during multiple render() operations. ' +\n            'Use different canvas or ensure previous operations were ' +\n            'cancelled or completed.');\n        }\n        canvasInRendering.set(this._canvas, this);\n      }\n\n      if (this._pdfBug && globalScope.StepperManager &&\n          globalScope.StepperManager.enabled) {\n        this.stepper = globalScope.StepperManager.create(this.pageNumber - 1);\n        this.stepper.init(this.operatorList);\n        this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n      }\n\n      var params = this.params;\n      this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs,\n                                    this.objs, this.canvasFactory,\n                                    this.webGLContext, params.imageLayer);\n\n      this.gfx.beginDrawing({\n        transform: params.transform,\n        viewport: params.viewport,\n        transparency,\n        background: params.background,\n      });\n      this.operatorListIdx = 0;\n      this.graphicsReady = true;\n      if (this.graphicsReadyCallback) {\n        this.graphicsReadyCallback();\n      }\n    },\n\n    cancel: function InternalRenderTask_cancel() {\n      this.running = false;\n      this.cancelled = true;\n      if (this._canvas) {\n        canvasInRendering.delete(this._canvas);\n      }\n      this.callback(new RenderingCancelledException(\n        'Rendering cancelled, page ' + this.pageNumber, 'canvas'));\n    },\n\n    operatorListChanged: function InternalRenderTask_operatorListChanged() {\n      if (!this.graphicsReady) {\n        if (!this.graphicsReadyCallback) {\n          this.graphicsReadyCallback = this._continueBound;\n        }\n        return;\n      }\n\n      if (this.stepper) {\n        this.stepper.updateOperatorList(this.operatorList);\n      }\n\n      if (this.running) {\n        return;\n      }\n      this._continue();\n    },\n\n    _continue: function InternalRenderTask__continue() {\n      this.running = true;\n      if (this.cancelled) {\n        return;\n      }\n      if (this.task.onContinue) {\n        this.task.onContinue(this._scheduleNextBound);\n      } else {\n        this._scheduleNext();\n      }\n    },\n\n    _scheduleNext: function InternalRenderTask__scheduleNext() {\n      if (this.useRequestAnimationFrame && typeof window !== 'undefined') {\n        window.requestAnimationFrame(() => {\n          this._nextBound().catch(this.callback);\n        });\n      } else {\n        Promise.resolve().then(this._nextBound).catch(this.callback);\n      }\n    },\n\n    _next: function InternalRenderTask__next() {\n      return new Promise(() => {\n        if (this.cancelled) {\n          return;\n        }\n        this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList,\n                                          this.operatorListIdx,\n                                          this._continueBound,\n                                          this.stepper);\n        if (this.operatorListIdx === this.operatorList.argsArray.length) {\n          this.running = false;\n          if (this.operatorList.lastChunk) {\n            this.gfx.endDrawing();\n            if (this._canvas) {\n              canvasInRendering.delete(this._canvas);\n            }\n            this.callback();\n          }\n        }\n      });\n    },\n\n  };\n\n  return InternalRenderTask;\n})();\n\nvar version, build;\nif (typeof PDFJSDev !== 'undefined') {\n  version = PDFJSDev.eval('BUNDLE_VERSION');\n  build = PDFJSDev.eval('BUNDLE_BUILD');\n}\n\nexport {\n  getDocument,\n  LoopbackPort,\n  PDFDataRangeTransport,\n  PDFWorker,\n  PDFDocumentProxy,\n  PDFPageProxy,\n  setPDFNetworkStreamFactory,\n  version,\n  build,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert, CMapCompressionType, removeNullCharacters, stringToBytes,\n  unreachable, Util, warn\n} from '../shared/util';\n\nconst DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\nclass DOMCanvasFactory {\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error('invalid canvas size');\n    }\n    let canvas = document.createElement('canvas');\n    let context = canvas.getContext('2d');\n    canvas.width = width;\n    canvas.height = height;\n    return {\n      canvas,\n      context,\n    };\n  }\n\n  reset(canvasAndContext, width, height) {\n    if (!canvasAndContext.canvas) {\n      throw new Error('canvas is not specified');\n    }\n    if (width <= 0 || height <= 0) {\n      throw new Error('invalid canvas size');\n    }\n    canvasAndContext.canvas.width = width;\n    canvasAndContext.canvas.height = height;\n  }\n\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error('canvas is not specified');\n    }\n    // Zeroing the width and height cause Firefox to release graphics\n    // resources immediately, which can greatly reduce memory consumption.\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n}\n\nclass DOMCMapReaderFactory {\n  constructor({ baseUrl = null, isCompressed = false, }) {\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n\n  fetch({ name, }) {\n    if (!this.baseUrl) {\n      return Promise.reject(new Error(\n        'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n        'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'));\n    }\n    if (!name) {\n      return Promise.reject(new Error('CMap name must be specified.'));\n    }\n    return new Promise((resolve, reject) => {\n      let url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');\n\n      let request = new XMLHttpRequest();\n      request.open('GET', url, true);\n\n      if (this.isCompressed) {\n        request.responseType = 'arraybuffer';\n      }\n      request.onreadystatechange = () => {\n        if (request.readyState !== XMLHttpRequest.DONE) {\n          return;\n        }\n        if (request.status === 200 || request.status === 0) {\n          let data;\n          if (this.isCompressed && request.response) {\n            data = new Uint8Array(request.response);\n          } else if (!this.isCompressed && request.responseText) {\n            data = stringToBytes(request.responseText);\n          }\n          if (data) {\n            resolve({\n              cMapData: data,\n              compressionType: this.isCompressed ?\n                CMapCompressionType.BINARY : CMapCompressionType.NONE,\n            });\n            return;\n          }\n        }\n        reject(new Error('Unable to load ' +\n                         (this.isCompressed ? 'binary ' : '') +\n                         'CMap at: ' + url));\n      };\n\n      request.send(null);\n    });\n  }\n}\n\nclass DOMSVGFactory {\n  create(width, height) {\n    assert(width > 0 && height > 0, 'Invalid SVG dimensions');\n\n    let svg = document.createElementNS(SVG_NS, 'svg:svg');\n    svg.setAttribute('version', '1.1');\n    svg.setAttribute('width', width + 'px');\n    svg.setAttribute('height', height + 'px');\n    svg.setAttribute('preserveAspectRatio', 'none');\n    svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);\n\n    return svg;\n  }\n\n  createElement(type) {\n    assert(typeof type === 'string', 'Invalid SVG element type');\n\n    return document.createElementNS(SVG_NS, type);\n  }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array} viewBox - The xMin, yMin, xMax and yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} offsetX - (optional) The vertical, i.e. x-axis, offset.\n *   The default value is `0`.\n * @property {number} offsetY - (optional) The horizontal, i.e. y-axis, offset.\n *   The default value is `0`.\n * @property {boolean} dontFlip - (optional) If true, the x-axis will not be\n *   flipped. The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} scale - (optional) The scale, overriding the one in the\n *   cloned viewport. The default value is `this.scale`.\n * @property {number} rotation - (optional) The rotation, in degrees, overriding\n *   the one in the cloned viewport. The default value is `this.rotation`.\n * @property {boolean} dontFlip - (optional) If true, the x-axis will not be\n *   flipped. The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n  /**\n   * @param {PageViewportParameters}\n   */\n  constructor({ viewBox, scale, rotation, offsetX = 0, offsetY = 0,\n                dontFlip = false, }) {\n    this.viewBox = viewBox;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n\n    // creating transform to convert pdf coordinate system to the normal\n    // canvas like coordinates taking in account scale and rotation\n    let centerX = (viewBox[2] + viewBox[0]) / 2;\n    let centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    rotation = rotation % 360;\n    rotation = rotation < 0 ? rotation + 360 : rotation;\n    switch (rotation) {\n      case 180:\n        rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;\n        break;\n      case 90:\n        rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;\n        break;\n      case 270:\n        rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;\n        break;\n      // case 0:\n      default:\n        rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;\n        break;\n    }\n\n    if (dontFlip) {\n      rotateC = -rotateC; rotateD = -rotateD;\n    }\n\n    let offsetCanvasX, offsetCanvasY;\n    let width, height;\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n      height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n      height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n    }\n    // creating transform for the following operations:\n    // translate(-centerX, -centerY), rotate and flip vertically,\n    // scale, and translate(offsetCanvasX, offsetCanvasY)\n    this.transform = [\n      rotateA * scale,\n      rotateB * scale,\n      rotateC * scale,\n      rotateD * scale,\n      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY\n    ];\n\n    this.width = width;\n    this.height = height;\n  }\n\n  /**\n   * Clones viewport, with optional additional properties.\n   * @param {PageViewportCloneParameters} - (optional)\n   * @return {PageViewport} Cloned viewport.\n   */\n  clone({ scale = this.scale, rotation = this.rotation,\n          dontFlip = false, } = {}) {\n    return new PageViewport({\n      viewBox: this.viewBox.slice(),\n      scale,\n      rotation,\n      offsetX: this.offsetX,\n      offsetY: this.offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * Converts PDF point to the viewport coordinates. For examples, useful for\n   * converting PDF location into canvas pixel coordinates.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @return {Object} Object containing `x` and `y` properties of the\n   *   point in the viewport coordinate space.\n   * @see {@link convertToPdfPoint}\n   * @see {@link convertToViewportRectangle}\n   */\n  convertToViewportPoint(x, y) {\n    return Util.applyTransform([x, y], this.transform);\n  }\n\n  /**\n   * Converts PDF rectangle to the viewport coordinates.\n   * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n   * @return {Array} Array containing corresponding coordinates of the rectangle\n   *   in the viewport coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToViewportRectangle(rect) {\n    let tl = Util.applyTransform([rect[0], rect[1]], this.transform);\n    let br = Util.applyTransform([rect[2], rect[3]], this.transform);\n    return [tl[0], tl[1], br[0], br[1]];\n  }\n\n  /**\n   * Converts viewport coordinates to the PDF location. For examples, useful\n   * for converting canvas pixel location into PDF one.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @return {Object} Object containing `x` and `y` properties of the\n   *   point in the PDF coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToPdfPoint(x, y) {\n    return Util.applyInverseTransform([x, y], this.transform);\n  }\n}\n\nvar RenderingCancelledException = (function RenderingCancelledException() {\n  function RenderingCancelledException(msg, type) {\n    this.message = msg;\n    this.type = type;\n  }\n\n  RenderingCancelledException.prototype = new Error();\n  RenderingCancelledException.prototype.name = 'RenderingCancelledException';\n  RenderingCancelledException.constructor = RenderingCancelledException;\n\n  return RenderingCancelledException;\n})();\n\nconst LinkTarget = {\n  NONE: 0, // Default value.\n  SELF: 1,\n  BLANK: 2,\n  PARENT: 3,\n  TOP: 4,\n};\n\nconst LinkTargetStringMap = [\n  '',\n  '_self',\n  '_blank',\n  '_parent',\n  '_top'\n];\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} target - (optional) The link target.\n *   The default value is `LinkTarget.NONE`.\n * @property {string} rel - (optional) The link relationship.\n *   The default value is `DEFAULT_LINK_REL`.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLLinkElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, } = {}) {\n  link.href = link.title = (url ? removeNullCharacters(url) : '');\n\n  if (url) {\n    const LinkTargetValues = Object.values(LinkTarget);\n    let targetIndex =\n      LinkTargetValues.includes(target) ? target : LinkTarget.NONE;\n    link.target = LinkTargetStringMap[targetIndex];\n\n    link.rel = (typeof rel === 'string' ? rel : DEFAULT_LINK_REL);\n  }\n}\n\n// Gets the file name from a given URL.\nfunction getFilenameFromUrl(url) {\n  var anchor = url.indexOf('#');\n  var query = url.indexOf('?');\n  var end = Math.min(\n    anchor > 0 ? anchor : url.length,\n    query > 0 ? query : url.length);\n  return url.substring(url.lastIndexOf('/', end) + 1, end);\n}\n\nclass StatTimer {\n  constructor(enable = true) {\n    this.enabled = !!enable;\n    this.started = Object.create(null);\n    this.times = [];\n  }\n\n  time(name) {\n    if (!this.enabled) {\n      return;\n    }\n    if (name in this.started) {\n      warn('Timer is already running for ' + name);\n    }\n    this.started[name] = Date.now();\n  }\n\n  timeEnd(name) {\n    if (!this.enabled) {\n      return;\n    }\n    if (!(name in this.started)) {\n      warn('Timer has not been started for ' + name);\n    }\n    this.times.push({\n      'name': name,\n      'start': this.started[name],\n      'end': Date.now(),\n    });\n    // Remove timer from started so it can be called again.\n    delete this.started[name];\n  }\n\n  toString() {\n    let times = this.times;\n    // Find the longest name for padding purposes.\n    let out = '', longest = 0;\n    for (let i = 0, ii = times.length; i < ii; ++i) {\n      let name = times[i]['name'];\n      if (name.length > longest) {\n        longest = name.length;\n      }\n    }\n    for (let i = 0, ii = times.length; i < ii; ++i) {\n      let span = times[i];\n      let duration = span.end - span.start;\n      out += `${span['name'].padEnd(longest)} ${duration}ms\\n`;\n    }\n    return out;\n  }\n}\n\n/**\n * Helps avoid having to initialize {StatTimer} instances, e.g. one for every\n * page, in cases where the collected stats are not actually being used.\n * This (dummy) class can thus, since all its methods are `static`, be directly\n * shared between multiple call-sites without the need to be initialized first.\n *\n * NOTE: This must implement the same interface as {StatTimer}.\n */\nclass DummyStatTimer {\n  constructor() {\n    unreachable('Cannot initialize DummyStatTimer.');\n  }\n\n  static time(name) {}\n\n  static timeEnd(name) {}\n\n  static toString() {\n    return '';\n  }\n}\n\nfunction loadScript(src) {\n  return new Promise((resolve, reject) => {\n    let script = document.createElement('script');\n    script.src = src;\n\n    script.onload = resolve;\n    script.onerror = function() {\n      reject(new Error(`Cannot load script at: ${script.src}`));\n    };\n    (document.head || document.documentElement).appendChild(script);\n  });\n}\n\nexport {\n  PageViewport,\n  RenderingCancelledException,\n  addLinkAttributes,\n  getFilenameFromUrl,\n  LinkTarget,\n  DEFAULT_LINK_REL,\n  DOMCanvasFactory,\n  DOMCMapReaderFactory,\n  DOMSVGFactory,\n  StatTimer,\n  DummyStatTimer,\n  loadScript,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert, bytesToString, isEvalSupported, shadow, string32, unreachable,\n  UNSUPPORTED_FEATURES, warn\n} from '../shared/util';\n\nclass BaseFontLoader {\n  constructor(docId) {\n    if (this.constructor === BaseFontLoader) {\n      unreachable('Cannot initialize BaseFontLoader.');\n    }\n    this.docId = docId;\n\n    this.nativeFontFaces = [];\n    this.styleElement = null;\n    this.loadingContext = {\n      requests: [],\n      nextRequestId: 0,\n    };\n  }\n\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.push(nativeFontFace);\n    document.fonts.add(nativeFontFace);\n  }\n\n  insertRule(rule) {\n    let styleElement = this.styleElement;\n    if (!styleElement) {\n      styleElement = this.styleElement = document.createElement('style');\n      styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n      document.documentElement.getElementsByTagName('head')[0].appendChild(\n        styleElement);\n    }\n\n    const styleSheet = styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\n  }\n\n  clear() {\n    this.nativeFontFaces.forEach(function(nativeFontFace) {\n      document.fonts.delete(nativeFontFace);\n    });\n    this.nativeFontFaces.length = 0;\n\n    if (this.styleElement) {\n      // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n\n  bind(fonts, callback) {\n    const rules = [];\n    const fontsToLoad = [];\n    const fontLoadPromises = [];\n    const getNativeFontPromise = function(nativeFontFace) {\n      // Return a promise that is always fulfilled, even when the font fails to\n      // load.\n      return nativeFontFace.loaded.catch(function(reason) {\n        warn(`Failed to load font \"${nativeFontFace.family}\": ${reason}`);\n      });\n    };\n\n    for (const font of fonts) {\n      // Add the font to the DOM only once; skip if the font is already loaded.\n      if (font.attached || font.missingFile) {\n        continue;\n      }\n      font.attached = true;\n\n      if (this.isFontLoadingAPISupported) {\n        const nativeFontFace = font.createNativeFontFace();\n        if (nativeFontFace) {\n          this.addNativeFontFace(nativeFontFace);\n          fontLoadPromises.push(getNativeFontPromise(nativeFontFace));\n        }\n      } else {\n        const rule = font.createFontFaceRule();\n        if (rule) {\n          this.insertRule(rule);\n          rules.push(rule);\n          fontsToLoad.push(font);\n        }\n      }\n    }\n\n    const request = this._queueLoadingCallback(callback);\n    if (this.isFontLoadingAPISupported) {\n      Promise.all(fontLoadPromises).then(request.complete);\n    } else if (rules.length > 0 && !this.isSyncFontLoadingSupported) {\n      this._prepareFontLoadEvent(rules, fontsToLoad, request);\n    } else {\n      request.complete();\n    }\n  }\n\n  _queueLoadingCallback(callback) {\n    function completeRequest() {\n      assert(!request.done, 'completeRequest() cannot be called twice.');\n      request.done = true;\n\n      // Sending all completed requests in order of how they were queued.\n      while (context.requests.length > 0 && context.requests[0].done) {\n        const otherRequest = context.requests.shift();\n        setTimeout(otherRequest.callback, 0);\n      }\n    }\n\n    const context = this.loadingContext;\n    const request = {\n      id: `pdfjs-font-loading-${context.nextRequestId++}`,\n      done: false,\n      complete: completeRequest,\n      callback,\n    };\n    context.requests.push(request);\n    return request;\n  }\n\n  get isFontLoadingAPISupported() {\n    unreachable('Abstract method `isFontLoadingAPISupported`.');\n  }\n\n  get isSyncFontLoadingSupported() {\n    unreachable('Abstract method `isSyncFontLoadingSupported`.');\n  }\n\n  get _loadTestFont() {\n    unreachable('Abstract method `_loadTestFont`.');\n  }\n\n  _prepareFontLoadEvent(rules, fontsToLoad, request) {\n    unreachable('Abstract method `_prepareFontLoadEvent`.');\n  }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('MOZCENTRAL')) {\n\nFontLoader = class MozcentralFontLoader extends BaseFontLoader {\n  get isFontLoadingAPISupported() {\n    return shadow(this, 'isFontLoadingAPISupported',\n                  typeof document !== 'undefined' && !!document.fonts);\n  }\n\n  get isSyncFontLoadingSupported() {\n    return shadow(this, 'isSyncFontLoadingSupported', true);\n  }\n};\n\n} else { // PDFJSDev.test('CHROME || GENERIC')\n\nFontLoader = class GenericFontLoader extends BaseFontLoader {\n  constructor(docId) {\n    super(docId);\n    this.loadTestFontId = 0;\n  }\n\n  get isFontLoadingAPISupported() {\n    let supported = (typeof document !== 'undefined' && !!document.fonts);\n\n    if ((typeof PDFJSDev === 'undefined' || !PDFJSDev.test('CHROME')) &&\n        (supported && typeof navigator !== 'undefined')) {\n      // The Firefox Font Loading API does not work with `mozPrintCallback`\n      // prior to version 63; see https://bugzilla.mozilla.org/show_bug.cgi?id=1473742\n      const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n      if (m && m[1] < 63) {\n        supported = false;\n      }\n    }\n    return shadow(this, 'isFontLoadingAPISupported', supported);\n  }\n\n  get isSyncFontLoadingSupported() {\n    let supported = false;\n    if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('CHROME')) {\n      if (typeof navigator === 'undefined') {\n        // Node.js - we can pretend that sync font loading is supported.\n        supported = true;\n      } else {\n        // User agent string sniffing is bad, but there is no reliable way to\n        // tell if the font is fully loaded and ready to be used with canvas.\n        const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n        if (m && m[1] >= 14) {\n          supported = true;\n        }\n        // TODO - other browsers...\n      }\n    }\n    return shadow(this, 'isSyncFontLoadingSupported', supported);\n  }\n\n  get _loadTestFont() {\n    const getLoadTestFont = function() {\n      // This is a CFF font with 1 glyph for '.' that fills its entire width and\n      // height.\n      return atob(\n        'T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA' +\n        'FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA' +\n        'ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA' +\n        'AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1' +\n        'AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD' +\n        '6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM' +\n        'AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D' +\n        'IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA' +\n        'AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA' +\n        'AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB' +\n        'AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY' +\n        'AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA' +\n        'AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n        'AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n        'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n        'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n        'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n        'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA' +\n        'AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC' +\n        'AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3' +\n        'Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj' +\n        'FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==');\n    };\n    return shadow(this, '_loadTestFont', getLoadTestFont());\n  }\n\n  _prepareFontLoadEvent(rules, fonts, request) {\n    /** Hack begin */\n    // There's currently no event when a font has finished downloading so the\n    // following code is a dirty hack to 'guess' when a font is ready.\n    // It's assumed fonts are loaded in order, so add a known test font after\n    // the desired fonts and then test for the loading of that test font.\n\n    function int32(data, offset) {\n      return (data.charCodeAt(offset) << 24) |\n             (data.charCodeAt(offset + 1) << 16) |\n             (data.charCodeAt(offset + 2) << 8) |\n             (data.charCodeAt(offset + 3) & 0xff);\n    }\n    function spliceString(s, offset, remove, insert) {\n      let chunk1 = s.substring(0, offset);\n      let chunk2 = s.substring(offset + remove);\n      return chunk1 + insert + chunk2;\n    }\n    let i, ii;\n\n    // The temporary canvas is used to determine if fonts are loaded.\n    let canvas = document.createElement('canvas');\n    canvas.width = 1;\n    canvas.height = 1;\n    let ctx = canvas.getContext('2d');\n\n    let called = 0;\n    function isFontReady(name, callback) {\n      called++;\n      // With setTimeout clamping this gives the font ~100ms to load.\n      if (called > 30) {\n        warn('Load test font never loaded.');\n        callback();\n        return;\n      }\n      ctx.font = '30px ' + name;\n      ctx.fillText('.', 0, 20);\n      let imageData = ctx.getImageData(0, 0, 1, 1);\n      if (imageData.data[3] > 0) {\n        callback();\n        return;\n      }\n      setTimeout(isFontReady.bind(null, name, callback));\n    }\n\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n    // Chromium seems to cache fonts based on a hash of the actual font data,\n    // so the font must be modified for each load test else it will appear to\n    // be loaded already.\n    // TODO: This could maybe be made faster by avoiding the btoa of the full\n    // font by splitting it in chunks before hand and padding the font id.\n    let data = this._loadTestFont;\n    let COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n    data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length,\n                        loadTestFontId);\n    // CFF checksum is important for IE, adjusting it\n    let CFF_CHECKSUM_OFFSET = 16;\n    let XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n    let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n    for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n    }\n    if (i < loadTestFontId.length) { // align to 4 bytes boundary\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i)) | 0;\n    }\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n    const url = `url(data:font/opentype;base64,${btoa(data)});`;\n    const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n    this.insertRule(rule);\n\n    let names = [];\n    for (i = 0, ii = fonts.length; i < ii; i++) {\n      names.push(fonts[i].loadedName);\n    }\n    names.push(loadTestFontId);\n\n    let div = document.createElement('div');\n    div.setAttribute('style', 'visibility: hidden;' +\n                              'width: 10px; height: 10px;' +\n                              'position: absolute; top: 0px; left: 0px;');\n    for (i = 0, ii = names.length; i < ii; ++i) {\n      let span = document.createElement('span');\n      span.textContent = 'Hi';\n      span.style.fontFamily = names[i];\n      div.appendChild(span);\n    }\n    document.body.appendChild(div);\n\n    isFontReady(loadTestFontId, function() {\n      document.body.removeChild(div);\n      request.complete();\n    });\n    /** Hack end */\n  }\n};\n\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, 'value', isEvalSupported());\n  },\n};\n\nclass FontFaceObject {\n  constructor(translatedData, { isEvalSupported = true,\n                                disableFontFace = false,\n                                ignoreErrors = false,\n                                onUnsupportedFeature = null,\n                                fontRegistry = null, }) {\n    this.compiledGlyphs = Object.create(null);\n    // importing translated data\n    for (let i in translatedData) {\n      this[i] = translatedData[i];\n    }\n    this.isEvalSupported = isEvalSupported !== false;\n    this.disableFontFace = disableFontFace === true;\n    this.ignoreErrors = ignoreErrors === true;\n    this._onUnsupportedFeature = onUnsupportedFeature;\n    this.fontRegistry = fontRegistry;\n  }\n\n  createNativeFontFace() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    const nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n    if (this.fontRegistry) {\n      this.fontRegistry.registerFont(this);\n    }\n    return nativeFontFace;\n  }\n\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    const data = bytesToString(new Uint8Array(this.data));\n    // Add the @font-face rule to the document.\n    const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n    const rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n\n    if (this.fontRegistry) {\n      this.fontRegistry.registerFont(this, url);\n    }\n    return rule;\n  }\n\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n\n    let cmds, current;\n    try {\n      cmds = objs.get(this.loadedName + '_path_' + character);\n    } catch (ex) {\n      if (!this.ignoreErrors) {\n        throw ex;\n      }\n      if (this._onUnsupportedFeature) {\n        this._onUnsupportedFeature({ featureId: UNSUPPORTED_FEATURES.font, });\n      }\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n      return this.compiledGlyphs[character] = function(c, size) {\n        // No-op function, to allow rendering to continue.\n      };\n    }\n\n    // If we can, compile cmds into JS for MAXIMUM SPEED...\n    if (this.isEvalSupported && IsEvalSupportedCached.value) {\n      let args, js = '';\n      for (let i = 0, ii = cmds.length; i < ii; i++) {\n        current = cmds[i];\n\n        if (current.args !== undefined) {\n          args = current.args.join(',');\n        } else {\n          args = '';\n        }\n        js += 'c.' + current.cmd + '(' + args + ');\\n';\n      }\n      // eslint-disable-next-line no-new-func\n      return this.compiledGlyphs[character] = new Function('c', 'size', js);\n    }\n    // ... but fall back on using Function.prototype.apply() if we're\n    // blocked from using eval() for whatever reason (like CSP policies).\n    return this.compiledGlyphs[character] = function(c, size) {\n      for (let i = 0, ii = cmds.length; i < ii; i++) {\n        current = cmds[i];\n\n        if (current.cmd === 'scale') {\n          current.args = [size, -size];\n        }\n        c[current.cmd].apply(c, current.args);\n      }\n    };\n  }\n}\n\nexport {\n  FontFaceObject,\n  FontLoader,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n  const isNodeJS = require('../shared/is_node');\n\n  const userAgent =\n    (typeof navigator !== 'undefined' && navigator.userAgent) || '';\n  const isIE = /Trident/.test(userAgent);\n  const isIOSChrome = /CriOS/.test(userAgent);\n\n  // Checks if possible to use URL.createObjectURL()\n  // Support: IE, Chrome on iOS\n  (function checkOnBlobSupport() {\n    // Sometimes IE and Chrome on iOS losing the data created with\n    // createObjectURL(), see issues #3977 and #8081.\n    if (isIE || isIOSChrome) {\n      compatibilityParams.disableCreateObjectURL = true;\n    }\n  })();\n\n  // Support: Node.js\n  (function checkFontFaceAndImage() {\n    // Node.js is missing native support for `@font-face` and `Image`.\n    if (isNodeJS()) {\n      compatibilityParams.disableFontFace = true;\n      compatibilityParams.nativeImageDecoderSupport = 'none';\n    }\n  })();\n}\n\nexports.apiCompatibilityParams = Object.freeze(compatibilityParams);\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, info, isLittleEndian, isNum,\n  OPS, shadow, TextRenderingMode, unreachable, Util, warn\n} from '../shared/util';\nimport { getShadingPatternFromIR, TilingPattern } from './pattern_helper';\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n\n// Minimal font size that would be used during canvas fillText operations.\nvar MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\n\n// Heuristic value used when enforcing minimum line widths.\nvar MIN_WIDTH_FACTOR = 0.65;\n\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\n\nvar FULL_CHUNK_HEIGHT = 16;\n\nvar IsLittleEndianCached = {\n  get value() {\n    return shadow(IsLittleEndianCached, 'value', isLittleEndian());\n  },\n};\n\nfunction addContextCurrentTransform(ctx) {\n  // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n  if (!ctx.mozCurrentTransform) {\n    ctx._originalSave = ctx.save;\n    ctx._originalRestore = ctx.restore;\n    ctx._originalRotate = ctx.rotate;\n    ctx._originalScale = ctx.scale;\n    ctx._originalTranslate = ctx.translate;\n    ctx._originalTransform = ctx.transform;\n    ctx._originalSetTransform = ctx.setTransform;\n\n    ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n    ctx._transformStack = [];\n\n    Object.defineProperty(ctx, 'mozCurrentTransform', {\n      get: function getCurrentTransform() {\n        return this._transformMatrix;\n      },\n    });\n\n    Object.defineProperty(ctx, 'mozCurrentTransformInverse', {\n      get: function getCurrentTransformInverse() {\n        // Calculation done using WolframAlpha:\n        // http://www.wolframalpha.com/input/?\n        //   i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n        var m = this._transformMatrix;\n        var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n\n        var ad_bc = a * d - b * c;\n        var bc_ad = b * c - a * d;\n\n        return [\n          d / ad_bc,\n          b / bc_ad,\n          c / bc_ad,\n          a / ad_bc,\n          (d * e - c * f) / bc_ad,\n          (b * e - a * f) / ad_bc\n        ];\n      },\n    });\n\n    ctx.save = function ctxSave() {\n      var old = this._transformMatrix;\n      this._transformStack.push(old);\n      this._transformMatrix = old.slice(0, 6);\n\n      this._originalSave();\n    };\n\n    ctx.restore = function ctxRestore() {\n      var prev = this._transformStack.pop();\n      if (prev) {\n        this._transformMatrix = prev;\n        this._originalRestore();\n      }\n    };\n\n    ctx.translate = function ctxTranslate(x, y) {\n      var m = this._transformMatrix;\n      m[4] = m[0] * x + m[2] * y + m[4];\n      m[5] = m[1] * x + m[3] * y + m[5];\n\n      this._originalTranslate(x, y);\n    };\n\n    ctx.scale = function ctxScale(x, y) {\n      var m = this._transformMatrix;\n      m[0] = m[0] * x;\n      m[1] = m[1] * x;\n      m[2] = m[2] * y;\n      m[3] = m[3] * y;\n\n      this._originalScale(x, y);\n    };\n\n    ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n      var m = this._transformMatrix;\n      this._transformMatrix = [\n        m[0] * a + m[2] * b,\n        m[1] * a + m[3] * b,\n        m[0] * c + m[2] * d,\n        m[1] * c + m[3] * d,\n        m[0] * e + m[2] * f + m[4],\n        m[1] * e + m[3] * f + m[5]\n      ];\n\n      ctx._originalTransform(a, b, c, d, e, f);\n    };\n\n    ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n      this._transformMatrix = [a, b, c, d, e, f];\n\n      ctx._originalSetTransform(a, b, c, d, e, f);\n    };\n\n    ctx.rotate = function ctxRotate(angle) {\n      var cosValue = Math.cos(angle);\n      var sinValue = Math.sin(angle);\n\n      var m = this._transformMatrix;\n      this._transformMatrix = [\n        m[0] * cosValue + m[2] * sinValue,\n        m[1] * cosValue + m[3] * sinValue,\n        m[0] * (-sinValue) + m[2] * cosValue,\n        m[1] * (-sinValue) + m[3] * cosValue,\n        m[4],\n        m[5]\n      ];\n\n      this._originalRotate(angle);\n    };\n  }\n}\n\nvar CachedCanvases = (function CachedCanvasesClosure() {\n  function CachedCanvases(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\n  CachedCanvases.prototype = {\n    getCanvas: function CachedCanvases_getCanvas(id, width, height,\n                                                 trackTransform) {\n      var canvasEntry;\n      if (this.cache[id] !== undefined) {\n        canvasEntry = this.cache[id];\n        this.canvasFactory.reset(canvasEntry, width, height);\n        // reset canvas transform for emulated mozCurrentTransform, if needed\n        canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n      } else {\n        canvasEntry = this.canvasFactory.create(width, height);\n        this.cache[id] = canvasEntry;\n      }\n      if (trackTransform) {\n        addContextCurrentTransform(canvasEntry.context);\n      }\n      return canvasEntry;\n    },\n    clear() {\n      for (var id in this.cache) {\n        var canvasEntry = this.cache[id];\n        this.canvasFactory.destroy(canvasEntry);\n        delete this.cache[id];\n      }\n    },\n  };\n  return CachedCanvases;\n})();\n\nfunction compileType3Glyph(imgData) {\n  var POINT_TO_PROCESS_LIMIT = 1000;\n\n  var width = imgData.width, height = imgData.height;\n  var i, j, j0, width1 = width + 1;\n  var points = new Uint8Array(width1 * (height + 1));\n  var POINT_TYPES =\n      new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n\n  // decodes bit-packed mask data\n  var lineSize = (width + 7) & ~7, data0 = imgData.data;\n  var data = new Uint8Array(lineSize * height), pos = 0, ii;\n  for (i = 0, ii = data0.length; i < ii; i++) {\n    var mask = 128, elem = data0[i];\n    while (mask > 0) {\n      data[pos++] = (elem & mask) ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  // finding interesting points: every point is located between mask pixels,\n  // so there will be points of the (width + 1)x(height + 1) grid. Every point\n  // will have flags assigned based on neighboring mask pixels:\n  //   4 | 8\n  //   --P--\n  //   2 | 1\n  // We are interested only in points with the flags:\n  //   - outside corners: 1, 2, 4, 8;\n  //   - inside corners: 7, 11, 13, 14;\n  //   - and, intersections: 5, 10.\n  var count = 0;\n  pos = 0;\n  if (data[pos] !== 0) {\n    points[0] = 1;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j] = data[pos] ? 2 : 1;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j] = 2;\n    ++count;\n  }\n  for (i = 1; i < height; i++) {\n    pos = i * lineSize;\n    j0 = i * width1;\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0] = data[pos] ? 1 : 8;\n      ++count;\n    }\n    // 'sum' is the position of the current pixel configuration in the 'TYPES'\n    // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n    var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n    for (j = 1; j < width; j++) {\n      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) +\n            (data[pos - lineSize + 1] ? 8 : 0);\n      if (POINT_TYPES[sum]) {\n        points[j0 + j] = POINT_TYPES[sum];\n        ++count;\n      }\n      pos++;\n    }\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0 + j] = data[pos] ? 2 : 4;\n      ++count;\n    }\n\n    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\n    }\n  }\n\n  pos = lineSize * (height - 1);\n  j0 = i * width1;\n  if (data[pos] !== 0) {\n    points[j0] = 8;\n    ++count;\n  }\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j0 + j] = data[pos] ? 4 : 8;\n      ++count;\n    }\n    pos++;\n  }\n  if (data[pos] !== 0) {\n    points[j0 + j] = 4;\n    ++count;\n  }\n  if (count > POINT_TO_PROCESS_LIMIT) {\n    return null;\n  }\n\n  // building outlines\n  var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  var outlines = [];\n  for (i = 0; count && i <= height; i++) {\n    var p = i * width1;\n    var end = p + width;\n    while (p < end && !points[p]) {\n      p++;\n    }\n    if (p === end) {\n      continue;\n    }\n    var coords = [p % width1, i];\n\n    var type = points[p], p0 = p, pp;\n    do {\n      var step = steps[type];\n      do {\n        p += step;\n      } while (!points[p]);\n\n      pp = points[p];\n      if (pp !== 5 && pp !== 10) {\n        // set new direction\n        type = pp;\n        // delete mark\n        points[p] = 0;\n      } else { // type is 5 or 10, ie, a crossing\n        // set new direction\n        type = pp & ((0x33 * type) >> 4);\n        // set new type for \"future hit\"\n        points[p] &= (type >> 2 | type << 2);\n      }\n\n      coords.push(p % width1);\n      coords.push((p / width1) | 0);\n      --count;\n    } while (p0 !== p);\n    outlines.push(coords);\n    --i;\n  }\n\n  var drawOutline = function(c) {\n    c.save();\n    // the path shall be painted in [0..1]x[0..1] space\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.beginPath();\n    for (var i = 0, ii = outlines.length; i < ii; i++) {\n      var o = outlines[i];\n      c.moveTo(o[0], o[1]);\n      for (var j = 2, jj = o.length; j < jj; j += 2) {\n        c.lineTo(o[j], o[j + 1]);\n      }\n    }\n    c.fill();\n    c.beginPath();\n    c.restore();\n  };\n\n  return drawOutline;\n}\n\nvar CanvasExtraState = (function CanvasExtraStateClosure() {\n  function CanvasExtraState() {\n    // Are soft masks and alpha values shapes or opacities?\n    this.alphaIsShape = false;\n    this.fontSize = 0;\n    this.fontSizeScale = 1;\n    this.textMatrix = IDENTITY_MATRIX;\n    this.textMatrixScale = 1;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    // Current point (in user coordinates)\n    this.x = 0;\n    this.y = 0;\n    // Start of text line (in text coordinates)\n    this.lineX = 0;\n    this.lineY = 0;\n    // Character and word spacing\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.textRise = 0;\n    // Default fore and background colors\n    this.fillColor = '#000000';\n    this.strokeColor = '#000000';\n    this.patternFill = false;\n    // Note: fill alpha applies to all non-stroking operations\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.resumeSMaskCtx = null; // nonclonable field (see the save method below)\n  }\n\n  CanvasExtraState.prototype = {\n    clone: function CanvasExtraState_clone() {\n      return Object.create(this);\n    },\n    setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n      this.x = x;\n      this.y = y;\n    },\n  };\n  return CanvasExtraState;\n})();\n\nvar CanvasGraphics = (function CanvasGraphicsClosure() {\n  // Defines the time the executeOperatorList is going to be executing\n  // before it stops and shedules a continue of execution.\n  var EXECUTION_TIME = 15;\n  // Defines the number of steps before checking the execution time\n  var EXECUTION_STEPS = 10;\n\n  function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory,\n                          webGLContext, imageLayer) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState();\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.webGLContext = webGLContext;\n    this.imageLayer = imageLayer;\n    this.groupStack = [];\n    this.processingType3 = null;\n    // Patterns are painted relative to the initial page/form transform, see pdf\n    // spec 8.7.2 NOTE 1.\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    if (canvasCtx) {\n      // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n      // the transformation must already be set in canvasCtx._transformMatrix.\n      addContextCurrentTransform(canvasCtx);\n    }\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  function putBinaryImageData(ctx, imgData) {\n    if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {\n      ctx.putImageData(imgData, 0, 0);\n      return;\n    }\n\n    // Put the image data to the canvas in chunks, rather than putting the\n    // whole image at once.  This saves JS memory, because the ImageData object\n    // is smaller. It also possibly saves C++ memory within the implementation\n    // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n    // the data passed to putImageData()). |n| shouldn't be too small, however,\n    // because too many putImageData() calls will slow things down.\n    //\n    // Note: as written, if the last chunk is partial, the putImageData() call\n    // will (conceptually) put pixels past the bounds of the canvas.  But\n    // that's ok; any such pixels are ignored.\n\n    var height = imgData.height, width = imgData.width;\n    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n    var srcPos = 0, destPos;\n    var src = imgData.data;\n    var dest = chunkImgData.data;\n    var i, j, thisChunkHeight, elemsInThisChunk;\n\n    // There are multiple forms in which the pixel data can be passed, and\n    // imgData.kind tells us which one this is.\n    if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n      // Grayscale, 1 bit per pixel (i.e. black-and-white).\n      var srcLength = src.byteLength;\n      var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n      var dest32DataLength = dest32.length;\n      var fullSrcDiff = (width + 7) >> 3;\n      var white = 0xFFFFFFFF;\n      var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;\n      for (i = 0; i < totalChunks; i++) {\n        thisChunkHeight =\n          (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n        destPos = 0;\n        for (j = 0; j < thisChunkHeight; j++) {\n          var srcDiff = srcLength - srcPos;\n          var k = 0;\n          var kEnd = (srcDiff > fullSrcDiff) ? width : srcDiff * 8 - 7;\n          var kEndUnrolled = kEnd & ~7;\n          var mask = 0;\n          var srcByte = 0;\n          for (; k < kEndUnrolled; k += 8) {\n            srcByte = src[srcPos++];\n            dest32[destPos++] = (srcByte & 128) ? white : black;\n            dest32[destPos++] = (srcByte & 64) ? white : black;\n            dest32[destPos++] = (srcByte & 32) ? white : black;\n            dest32[destPos++] = (srcByte & 16) ? white : black;\n            dest32[destPos++] = (srcByte & 8) ? white : black;\n            dest32[destPos++] = (srcByte & 4) ? white : black;\n            dest32[destPos++] = (srcByte & 2) ? white : black;\n            dest32[destPos++] = (srcByte & 1) ? white : black;\n          }\n          for (; k < kEnd; k++) {\n             if (mask === 0) {\n               srcByte = src[srcPos++];\n               mask = 128;\n             }\n\n            dest32[destPos++] = (srcByte & mask) ? white : black;\n            mask >>= 1;\n          }\n        }\n        // We ran out of input. Make all remaining pixels transparent.\n        while (destPos < dest32DataLength) {\n          dest32[destPos++] = 0;\n        }\n\n        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n      }\n    } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n      // RGBA, 32-bits per pixel.\n\n      j = 0;\n      elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n      for (i = 0; i < fullChunks; i++) {\n        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n        srcPos += elemsInThisChunk;\n\n        ctx.putImageData(chunkImgData, 0, j);\n        j += FULL_CHUNK_HEIGHT;\n      }\n      if (i < totalChunks) {\n        elemsInThisChunk = width * partialChunkHeight * 4;\n        dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n        ctx.putImageData(chunkImgData, 0, j);\n      }\n\n    } else if (imgData.kind === ImageKind.RGB_24BPP) {\n      // RGB, 24-bits per pixel.\n      thisChunkHeight = FULL_CHUNK_HEIGHT;\n      elemsInThisChunk = width * thisChunkHeight;\n      for (i = 0; i < totalChunks; i++) {\n        if (i >= fullChunks) {\n          thisChunkHeight = partialChunkHeight;\n          elemsInThisChunk = width * thisChunkHeight;\n        }\n\n        destPos = 0;\n        for (j = elemsInThisChunk; j--;) {\n          dest[destPos++] = src[srcPos++];\n          dest[destPos++] = src[srcPos++];\n          dest[destPos++] = src[srcPos++];\n          dest[destPos++] = 255;\n        }\n        ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n      }\n    } else {\n      throw new Error(`bad image kind: ${imgData.kind}`);\n    }\n  }\n\n  function putBinaryImageMask(ctx, imgData) {\n    var height = imgData.height, width = imgData.width;\n    var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n    var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n    var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n    var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n    var srcPos = 0;\n    var src = imgData.data;\n    var dest = chunkImgData.data;\n\n    for (var i = 0; i < totalChunks; i++) {\n      var thisChunkHeight =\n        (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n      // Expand the mask so it can be used by the canvas.  Any required\n      // inversion has already been handled.\n      var destPos = 3; // alpha component offset\n      for (var j = 0; j < thisChunkHeight; j++) {\n        var mask = 0;\n        for (var k = 0; k < width; k++) {\n          if (!mask) {\n            var elem = src[srcPos++];\n            mask = 128;\n          }\n          dest[destPos] = (elem & mask) ? 0 : 255;\n          destPos += 4;\n          mask >>= 1;\n        }\n      }\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  }\n\n  function copyCtxState(sourceCtx, destCtx) {\n    var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha',\n                      'lineWidth', 'lineCap', 'lineJoin', 'miterLimit',\n                      'globalCompositeOperation', 'font'];\n    for (var i = 0, ii = properties.length; i < ii; i++) {\n      var property = properties[i];\n      if (sourceCtx[property] !== undefined) {\n        destCtx[property] = sourceCtx[property];\n      }\n    }\n    if (sourceCtx.setLineDash !== undefined) {\n      destCtx.setLineDash(sourceCtx.getLineDash());\n      destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n    }\n  }\n\n  function resetCtxToDefault(ctx) {\n    ctx.strokeStyle = '#000000';\n    ctx.fillStyle = '#000000';\n    ctx.fillRule = 'nonzero';\n    ctx.globalAlpha = 1;\n    ctx.lineWidth = 1;\n    ctx.lineCap = 'butt';\n    ctx.lineJoin = 'miter';\n    ctx.miterLimit = 10;\n    ctx.globalCompositeOperation = 'source-over';\n    ctx.font = '10px sans-serif';\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash([]);\n      ctx.lineDashOffset = 0;\n    }\n  }\n\n  function composeSMaskBackdrop(bytes, r0, g0, b0) {\n    var length = bytes.length;\n    for (var i = 3; i < length; i += 4) {\n      var alpha = bytes[i];\n      if (alpha === 0) {\n        bytes[i - 3] = r0;\n        bytes[i - 2] = g0;\n        bytes[i - 1] = b0;\n      } else if (alpha < 255) {\n        var alpha_ = 255 - alpha;\n        bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n        bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n        bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n      }\n    }\n  }\n\n  function composeSMaskAlpha(maskData, layerData, transferMap) {\n    var length = maskData.length;\n    var scale = 1 / 255;\n    for (var i = 3; i < length; i += 4) {\n      var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n      layerData[i] = (layerData[i] * alpha * scale) | 0;\n    }\n  }\n\n  function composeSMaskLuminosity(maskData, layerData, transferMap) {\n    var length = maskData.length;\n    for (var i = 3; i < length; i += 4) {\n      var y = (maskData[i - 3] * 77) +  // * 0.3 / 255 * 0x10000\n              (maskData[i - 2] * 152) + // * 0.59 ....\n              (maskData[i - 1] * 28);   // * 0.11 ....\n      layerData[i] = transferMap ?\n        (layerData[i] * transferMap[y >> 8]) >> 8 :\n        (layerData[i] * y) >> 16;\n    }\n  }\n\n  function genericComposeSMask(maskCtx, layerCtx, width, height,\n                               subtype, backdrop, transferMap) {\n    var hasBackdrop = !!backdrop;\n    var r0 = hasBackdrop ? backdrop[0] : 0;\n    var g0 = hasBackdrop ? backdrop[1] : 0;\n    var b0 = hasBackdrop ? backdrop[2] : 0;\n\n    var composeFn;\n    if (subtype === 'Luminosity') {\n      composeFn = composeSMaskLuminosity;\n    } else {\n      composeFn = composeSMaskAlpha;\n    }\n\n    // processing image in chunks to save memory\n    var PIXELS_TO_PROCESS = 1048576;\n    var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n    for (var row = 0; row < height; row += chunkSize) {\n      var chunkHeight = Math.min(chunkSize, height - row);\n      var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n      var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n      if (hasBackdrop) {\n        composeSMaskBackdrop(maskData.data, r0, g0, b0);\n      }\n      composeFn(maskData.data, layerData.data, transferMap);\n\n      maskCtx.putImageData(layerData, 0, row);\n    }\n  }\n\n  function composeSMask(ctx, smask, layerCtx, webGLContext) {\n    var mask = smask.canvas;\n    var maskCtx = smask.context;\n\n    ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY,\n                     smask.offsetX, smask.offsetY);\n\n    var backdrop = smask.backdrop || null;\n    if (!smask.transferMap && webGLContext.isEnabled) {\n      let composed = webGLContext.composeSMask({\n        layer: layerCtx.canvas,\n        mask,\n        properties: {\n          subtype: smask.subtype,\n          backdrop,\n        },\n      });\n      ctx.setTransform(1, 0, 0, 1, 0, 0);\n      ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n      return;\n    }\n    genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height,\n                        smask.subtype, backdrop, smask.transferMap);\n    ctx.drawImage(mask, 0, 0);\n  }\n\n  var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n  var NORMAL_CLIP = {};\n  var EO_CLIP = {};\n\n  CanvasGraphics.prototype = {\n\n    beginDrawing({ transform, viewport, transparency,\n                   background = null, }) {\n      // For pdfs that use blend modes we have to clear the canvas else certain\n      // blend modes can look wrong since we'd be blending with a white\n      // backdrop. The problem with a transparent backdrop though is we then\n      // don't get sub pixel anti aliasing on text, creating temporary\n      // transparent canvas when we have blend modes.\n      var width = this.ctx.canvas.width;\n      var height = this.ctx.canvas.height;\n\n      this.ctx.save();\n      this.ctx.fillStyle = background || 'rgb(255, 255, 255)';\n      this.ctx.fillRect(0, 0, width, height);\n      this.ctx.restore();\n\n      if (transparency) {\n        var transparentCanvas = this.cachedCanvases.getCanvas(\n          'transparent', width, height, true);\n        this.compositeCtx = this.ctx;\n        this.transparentCanvas = transparentCanvas.canvas;\n        this.ctx = transparentCanvas.context;\n        this.ctx.save();\n        // The transform can be applied before rendering, transferring it to\n        // the new canvas.\n        this.ctx.transform.apply(this.ctx,\n                                 this.compositeCtx.mozCurrentTransform);\n      }\n\n      this.ctx.save();\n      resetCtxToDefault(this.ctx);\n      if (transform) {\n        this.ctx.transform.apply(this.ctx, transform);\n      }\n      this.ctx.transform.apply(this.ctx, viewport.transform);\n\n      this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n      if (this.imageLayer) {\n        this.imageLayer.beginLayout();\n      }\n    },\n\n    executeOperatorList: function CanvasGraphics_executeOperatorList(\n                                    operatorList,\n                                    executionStartIdx, continueCallback,\n                                    stepper) {\n      var argsArray = operatorList.argsArray;\n      var fnArray = operatorList.fnArray;\n      var i = executionStartIdx || 0;\n      var argsArrayLen = argsArray.length;\n\n      // Sometimes the OperatorList to execute is empty.\n      if (argsArrayLen === i) {\n        return i;\n      }\n\n      var chunkOperations = (argsArrayLen - i > EXECUTION_STEPS &&\n                             typeof continueCallback === 'function');\n      var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n      var steps = 0;\n\n      var commonObjs = this.commonObjs;\n      var objs = this.objs;\n      var fnId;\n\n      while (true) {\n        if (stepper !== undefined && i === stepper.nextBreakPoint) {\n          stepper.breakIt(i, continueCallback);\n          return i;\n        }\n\n        fnId = fnArray[i];\n\n        if (fnId !== OPS.dependency) {\n          this[fnId].apply(this, argsArray[i]);\n        } else {\n          var deps = argsArray[i];\n          for (var n = 0, nn = deps.length; n < nn; n++) {\n            var depObjId = deps[n];\n            var common = depObjId[0] === 'g' && depObjId[1] === '_';\n            var objsPool = common ? commonObjs : objs;\n\n            // If the promise isn't resolved yet, add the continueCallback\n            // to the promise and bail out.\n            if (!objsPool.isResolved(depObjId)) {\n              objsPool.get(depObjId, continueCallback);\n              return i;\n            }\n          }\n        }\n\n        i++;\n\n        // If the entire operatorList was executed, stop as were done.\n        if (i === argsArrayLen) {\n          return i;\n        }\n\n        // If the execution took longer then a certain amount of time and\n        // `continueCallback` is specified, interrupt the execution.\n        if (chunkOperations && ++steps > EXECUTION_STEPS) {\n          if (Date.now() > endTime) {\n            continueCallback();\n            return i;\n          }\n          steps = 0;\n        }\n\n        // If the operatorList isn't executed completely yet OR the execution\n        // time was short enough, do another execution round.\n      }\n    },\n\n    endDrawing: function CanvasGraphics_endDrawing() {\n      // Finishing all opened operations such as SMask group painting.\n      if (this.current.activeSMask !== null) {\n        this.endSMaskGroup();\n      }\n\n      this.ctx.restore();\n\n      if (this.transparentCanvas) {\n        this.ctx = this.compositeCtx;\n        this.ctx.save();\n        this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n        this.ctx.drawImage(this.transparentCanvas, 0, 0);\n        this.ctx.restore();\n        this.transparentCanvas = null;\n      }\n\n      this.cachedCanvases.clear();\n      this.webGLContext.clear();\n\n      if (this.imageLayer) {\n        this.imageLayer.endLayout();\n      }\n    },\n\n    // Graphics state\n    setLineWidth: function CanvasGraphics_setLineWidth(width) {\n      this.current.lineWidth = width;\n      this.ctx.lineWidth = width;\n    },\n    setLineCap: function CanvasGraphics_setLineCap(style) {\n      this.ctx.lineCap = LINE_CAP_STYLES[style];\n    },\n    setLineJoin: function CanvasGraphics_setLineJoin(style) {\n      this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n    },\n    setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n      this.ctx.miterLimit = limit;\n    },\n    setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n      var ctx = this.ctx;\n      if (ctx.setLineDash !== undefined) {\n        ctx.setLineDash(dashArray);\n        ctx.lineDashOffset = dashPhase;\n      }\n    },\n    setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {\n      // Maybe if we one day fully support color spaces this will be important\n      // for now we can ignore.\n      // TODO set rendering intent?\n    },\n    setFlatness: function CanvasGraphics_setFlatness(flatness) {\n      // There's no way to control this with canvas, but we can safely ignore.\n      // TODO set flatness?\n    },\n    setGState: function CanvasGraphics_setGState(states) {\n      for (var i = 0, ii = states.length; i < ii; i++) {\n        var state = states[i];\n        var key = state[0];\n        var value = state[1];\n\n        switch (key) {\n          case 'LW':\n            this.setLineWidth(value);\n            break;\n          case 'LC':\n            this.setLineCap(value);\n            break;\n          case 'LJ':\n            this.setLineJoin(value);\n            break;\n          case 'ML':\n            this.setMiterLimit(value);\n            break;\n          case 'D':\n            this.setDash(value[0], value[1]);\n            break;\n          case 'RI':\n            this.setRenderingIntent(value);\n            break;\n          case 'FL':\n            this.setFlatness(value);\n            break;\n          case 'Font':\n            this.setFont(value[0], value[1]);\n            break;\n          case 'CA':\n            this.current.strokeAlpha = state[1];\n            break;\n          case 'ca':\n            this.current.fillAlpha = state[1];\n            this.ctx.globalAlpha = state[1];\n            break;\n          case 'BM':\n            this.ctx.globalCompositeOperation = value;\n            break;\n          case 'SMask':\n            if (this.current.activeSMask) {\n              // If SMask is currrenly used, it needs to be suspended or\n              // finished. Suspend only makes sense when at least one save()\n              // was performed and state needs to be reverted on restore().\n              if (this.stateStack.length > 0 &&\n                  (this.stateStack[this.stateStack.length - 1].activeSMask ===\n                   this.current.activeSMask)) {\n                this.suspendSMaskGroup();\n              } else {\n                this.endSMaskGroup();\n              }\n            }\n            this.current.activeSMask = value ? this.tempSMask : null;\n            if (this.current.activeSMask) {\n              this.beginSMaskGroup();\n            }\n            this.tempSMask = null;\n            break;\n        }\n      }\n    },\n    beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n\n      var activeSMask = this.current.activeSMask;\n      var drawnWidth = activeSMask.canvas.width;\n      var drawnHeight = activeSMask.canvas.height;\n      var cacheId = 'smaskGroupAt' + this.groupLevel;\n      var scratchCanvas = this.cachedCanvases.getCanvas(\n        cacheId, drawnWidth, drawnHeight, true);\n\n      var currentCtx = this.ctx;\n      var currentTransform = currentCtx.mozCurrentTransform;\n      this.ctx.save();\n\n      var groupCtx = scratchCanvas.context;\n      groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n      groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n      groupCtx.transform.apply(groupCtx, currentTransform);\n\n      activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n\n      copyCtxState(currentCtx, groupCtx);\n      this.ctx = groupCtx;\n      this.setGState([\n        ['BM', 'source-over'],\n        ['ca', 1],\n        ['CA', 1]\n      ]);\n      this.groupStack.push(currentCtx);\n      this.groupLevel++;\n    },\n    suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n      // Similar to endSMaskGroup, the intermediate canvas has to be composed\n      // and future ctx state restored.\n      var groupCtx = this.ctx;\n      this.groupLevel--;\n      this.ctx = this.groupStack.pop();\n\n      composeSMask(this.ctx, this.current.activeSMask, groupCtx,\n                   this.webGLContext);\n      this.ctx.restore();\n      this.ctx.save(); // save is needed since SMask will be resumed.\n      copyCtxState(groupCtx, this.ctx);\n\n      // Saving state for resuming.\n      this.current.resumeSMaskCtx = groupCtx;\n      // Transform was changed in the SMask canvas, reflecting this change on\n      // this.ctx.\n      var deltaTransform = Util.transform(\n        this.current.activeSMask.startTransformInverse,\n        groupCtx.mozCurrentTransform);\n      this.ctx.transform.apply(this.ctx, deltaTransform);\n\n      // SMask was composed, the results at the groupCtx can be cleared.\n      groupCtx.save();\n      groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n      groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n      groupCtx.restore();\n    },\n    resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n      // Resuming state saved by suspendSMaskGroup. We don't need to restore\n      // any groupCtx state since restore() command (the only caller) will do\n      // that for us. See also beginSMaskGroup.\n      var groupCtx = this.current.resumeSMaskCtx;\n      var currentCtx = this.ctx;\n      this.ctx = groupCtx;\n      this.groupStack.push(currentCtx);\n      this.groupLevel++;\n    },\n    endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n      var groupCtx = this.ctx;\n      this.groupLevel--;\n      this.ctx = this.groupStack.pop();\n\n      composeSMask(this.ctx, this.current.activeSMask, groupCtx,\n                   this.webGLContext);\n      this.ctx.restore();\n      copyCtxState(groupCtx, this.ctx);\n      // Transform was changed in the SMask canvas, reflecting this change on\n      // this.ctx.\n      var deltaTransform = Util.transform(\n        this.current.activeSMask.startTransformInverse,\n        groupCtx.mozCurrentTransform);\n      this.ctx.transform.apply(this.ctx, deltaTransform);\n    },\n    save: function CanvasGraphics_save() {\n      this.ctx.save();\n      var old = this.current;\n      this.stateStack.push(old);\n      this.current = old.clone();\n      this.current.resumeSMaskCtx = null;\n    },\n    restore: function CanvasGraphics_restore() {\n      // SMask was suspended, we just need to resume it.\n      if (this.current.resumeSMaskCtx) {\n        this.resumeSMaskGroup();\n      }\n      // SMask has to be finished once there is no states that are using the\n      // same SMask.\n      if (this.current.activeSMask !== null && (this.stateStack.length === 0 ||\n          this.stateStack[this.stateStack.length - 1].activeSMask !==\n          this.current.activeSMask)) {\n        this.endSMaskGroup();\n      }\n\n      if (this.stateStack.length !== 0) {\n        this.current = this.stateStack.pop();\n        this.ctx.restore();\n\n        // Ensure that the clipping path is reset (fixes issue6413.pdf).\n        this.pendingClip = null;\n\n        this._cachedGetSinglePixelWidth = null;\n      }\n    },\n    transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n      this.ctx.transform(a, b, c, d, e, f);\n\n      this._cachedGetSinglePixelWidth = null;\n    },\n\n    // Path\n    constructPath: function CanvasGraphics_constructPath(ops, args) {\n      var ctx = this.ctx;\n      var current = this.current;\n      var x = current.x, y = current.y;\n      for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n        switch (ops[i] | 0) {\n          case OPS.rectangle:\n            x = args[j++];\n            y = args[j++];\n            var width = args[j++];\n            var height = args[j++];\n            if (width === 0) {\n              width = this.getSinglePixelWidth();\n            }\n            if (height === 0) {\n              height = this.getSinglePixelWidth();\n            }\n            var xw = x + width;\n            var yh = y + height;\n            this.ctx.moveTo(x, y);\n            this.ctx.lineTo(xw, y);\n            this.ctx.lineTo(xw, yh);\n            this.ctx.lineTo(x, yh);\n            this.ctx.lineTo(x, y);\n            this.ctx.closePath();\n            break;\n          case OPS.moveTo:\n            x = args[j++];\n            y = args[j++];\n            ctx.moveTo(x, y);\n            break;\n          case OPS.lineTo:\n            x = args[j++];\n            y = args[j++];\n            ctx.lineTo(x, y);\n            break;\n          case OPS.curveTo:\n            x = args[j + 4];\n            y = args[j + 5];\n            ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3],\n                              x, y);\n            j += 6;\n            break;\n          case OPS.curveTo2:\n            ctx.bezierCurveTo(x, y, args[j], args[j + 1],\n                              args[j + 2], args[j + 3]);\n            x = args[j + 2];\n            y = args[j + 3];\n            j += 4;\n            break;\n          case OPS.curveTo3:\n            x = args[j + 2];\n            y = args[j + 3];\n            ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n            j += 4;\n            break;\n          case OPS.closePath:\n            ctx.closePath();\n            break;\n        }\n      }\n      current.setCurrentPoint(x, y);\n    },\n    closePath: function CanvasGraphics_closePath() {\n      this.ctx.closePath();\n    },\n    stroke: function CanvasGraphics_stroke(consumePath) {\n      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n      var ctx = this.ctx;\n      var strokeColor = this.current.strokeColor;\n      // Prevent drawing too thin lines by enforcing a minimum line width.\n      ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR,\n                               this.current.lineWidth);\n      // For stroke we want to temporarily change the global alpha to the\n      // stroking alpha.\n      ctx.globalAlpha = this.current.strokeAlpha;\n      if (strokeColor && strokeColor.hasOwnProperty('type') &&\n          strokeColor.type === 'Pattern') {\n        // for patterns, we transform to pattern space, calculate\n        // the pattern, call stroke, and restore to user space\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n        ctx.stroke();\n        ctx.restore();\n      } else {\n        ctx.stroke();\n      }\n      if (consumePath) {\n        this.consumePath();\n      }\n      // Restore the global alpha to the fill alpha\n      ctx.globalAlpha = this.current.fillAlpha;\n    },\n    closeStroke: function CanvasGraphics_closeStroke() {\n      this.closePath();\n      this.stroke();\n    },\n    fill: function CanvasGraphics_fill(consumePath) {\n      consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n      var ctx = this.ctx;\n      var fillColor = this.current.fillColor;\n      var isPatternFill = this.current.patternFill;\n      var needRestore = false;\n\n      if (isPatternFill) {\n        ctx.save();\n        if (this.baseTransform) {\n          ctx.setTransform.apply(ctx, this.baseTransform);\n        }\n        ctx.fillStyle = fillColor.getPattern(ctx, this);\n        needRestore = true;\n      }\n\n      if (this.pendingEOFill) {\n        ctx.fill('evenodd');\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill();\n      }\n\n      if (needRestore) {\n        ctx.restore();\n      }\n      if (consumePath) {\n        this.consumePath();\n      }\n    },\n    eoFill: function CanvasGraphics_eoFill() {\n      this.pendingEOFill = true;\n      this.fill();\n    },\n    fillStroke: function CanvasGraphics_fillStroke() {\n      this.fill(false);\n      this.stroke(false);\n\n      this.consumePath();\n    },\n    eoFillStroke: function CanvasGraphics_eoFillStroke() {\n      this.pendingEOFill = true;\n      this.fillStroke();\n    },\n    closeFillStroke: function CanvasGraphics_closeFillStroke() {\n      this.closePath();\n      this.fillStroke();\n    },\n    closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n      this.pendingEOFill = true;\n      this.closePath();\n      this.fillStroke();\n    },\n    endPath: function CanvasGraphics_endPath() {\n      this.consumePath();\n    },\n\n    // Clipping\n    clip: function CanvasGraphics_clip() {\n      this.pendingClip = NORMAL_CLIP;\n    },\n    eoClip: function CanvasGraphics_eoClip() {\n      this.pendingClip = EO_CLIP;\n    },\n\n    // Text\n    beginText: function CanvasGraphics_beginText() {\n      this.current.textMatrix = IDENTITY_MATRIX;\n      this.current.textMatrixScale = 1;\n      this.current.x = this.current.lineX = 0;\n      this.current.y = this.current.lineY = 0;\n    },\n    endText: function CanvasGraphics_endText() {\n      var paths = this.pendingTextPaths;\n      var ctx = this.ctx;\n      if (paths === undefined) {\n        ctx.beginPath();\n        return;\n      }\n\n      ctx.save();\n      ctx.beginPath();\n      for (var i = 0; i < paths.length; i++) {\n        var path = paths[i];\n        ctx.setTransform.apply(ctx, path.transform);\n        ctx.translate(path.x, path.y);\n        path.addToPath(ctx, path.fontSize);\n      }\n      ctx.restore();\n      ctx.clip();\n      ctx.beginPath();\n      delete this.pendingTextPaths;\n    },\n    setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n      this.current.charSpacing = spacing;\n    },\n    setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n      this.current.wordSpacing = spacing;\n    },\n    setHScale: function CanvasGraphics_setHScale(scale) {\n      this.current.textHScale = scale / 100;\n    },\n    setLeading: function CanvasGraphics_setLeading(leading) {\n      this.current.leading = -leading;\n    },\n    setFont: function CanvasGraphics_setFont(fontRefName, size) {\n      var fontObj = this.commonObjs.get(fontRefName);\n      var current = this.current;\n\n      if (!fontObj) {\n        throw new Error(`Can't find font for ${fontRefName}`);\n      }\n\n      current.fontMatrix = (fontObj.fontMatrix ?\n                            fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n      // A valid matrix needs all main diagonal elements to be non-zero\n      // This also ensures we bypass FF bugzilla bug #719844.\n      if (current.fontMatrix[0] === 0 ||\n          current.fontMatrix[3] === 0) {\n        warn('Invalid font matrix for font ' + fontRefName);\n      }\n\n      // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n      // and in some docs this can be negative (inverted x-y axes).\n      if (size < 0) {\n        size = -size;\n        current.fontDirection = -1;\n      } else {\n        current.fontDirection = 1;\n      }\n\n      this.current.font = fontObj;\n      this.current.fontSize = size;\n\n      if (fontObj.isType3Font) {\n        return; // we don't need ctx.font for Type3 fonts\n      }\n\n      var name = fontObj.loadedName || 'sans-serif';\n      var bold = fontObj.black ? '900' : (fontObj.bold ? 'bold' : 'normal');\n      var italic = fontObj.italic ? 'italic' : 'normal';\n      var typeface = '\"' + name + '\", ' + fontObj.fallbackName;\n\n      // Some font backends cannot handle fonts below certain size.\n      // Keeping the font at minimal size and using the fontSizeScale to change\n      // the current transformation matrix before the fillText/strokeText.\n      // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n      var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE :\n                            size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;\n      this.current.fontSizeScale = size / browserFontSize;\n\n      var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;\n      this.ctx.font = rule;\n    },\n    setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n      this.current.textRenderingMode = mode;\n    },\n    setTextRise: function CanvasGraphics_setTextRise(rise) {\n      this.current.textRise = rise;\n    },\n    moveText: function CanvasGraphics_moveText(x, y) {\n      this.current.x = this.current.lineX += x;\n      this.current.y = this.current.lineY += y;\n    },\n    setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n      this.setLeading(-y);\n      this.moveText(x, y);\n    },\n    setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n      this.current.textMatrix = [a, b, c, d, e, f];\n      this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n\n      this.current.x = this.current.lineX = 0;\n      this.current.y = this.current.lineY = 0;\n    },\n    nextLine: function CanvasGraphics_nextLine() {\n      this.moveText(0, this.current.leading);\n    },\n\n    paintChar(character, x, y, patternTransform) {\n      var ctx = this.ctx;\n      var current = this.current;\n      var font = current.font;\n      var textRenderingMode = current.textRenderingMode;\n      var fontSize = current.fontSize / current.fontSizeScale;\n      var fillStrokeMode = textRenderingMode &\n        TextRenderingMode.FILL_STROKE_MASK;\n      var isAddToPathSet = !!(textRenderingMode &\n        TextRenderingMode.ADD_TO_PATH_FLAG);\n      let patternFill = current.patternFill && font.data;\n\n      var addToPath;\n      if (font.disableFontFace || isAddToPathSet || patternFill) {\n        addToPath = font.getPathGenerator(this.commonObjs, character);\n      }\n\n      if (font.disableFontFace || patternFill) {\n        ctx.save();\n        ctx.translate(x, y);\n        ctx.beginPath();\n        addToPath(ctx, fontSize);\n        if (patternTransform) {\n          ctx.setTransform.apply(ctx, patternTransform);\n        }\n        if (fillStrokeMode === TextRenderingMode.FILL ||\n            fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n          ctx.fill();\n        }\n        if (fillStrokeMode === TextRenderingMode.STROKE ||\n            fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n          ctx.stroke();\n        }\n        ctx.restore();\n      } else {\n        if (fillStrokeMode === TextRenderingMode.FILL ||\n            fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n          ctx.fillText(character, x, y);\n        }\n        if (fillStrokeMode === TextRenderingMode.STROKE ||\n            fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n          ctx.strokeText(character, x, y);\n        }\n      }\n\n      if (isAddToPathSet) {\n        var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n        paths.push({\n          transform: ctx.mozCurrentTransform,\n          x,\n          y,\n          fontSize,\n          addToPath,\n        });\n      }\n    },\n\n    get isFontSubpixelAAEnabled() {\n      // Checks if anti-aliasing is enabled when scaled text is painted.\n      // On Windows GDI scaled fonts looks bad.\n      var ctx = this.canvasFactory.create(10, 10).context;\n      ctx.scale(1.5, 1);\n      ctx.fillText('I', 0, 10);\n      var data = ctx.getImageData(0, 0, 10, 10).data;\n      var enabled = false;\n      for (var i = 3; i < data.length; i += 4) {\n        if (data[i] > 0 && data[i] < 255) {\n          enabled = true;\n          break;\n        }\n      }\n      return shadow(this, 'isFontSubpixelAAEnabled', enabled);\n    },\n\n    showText: function CanvasGraphics_showText(glyphs) {\n      var current = this.current;\n      var font = current.font;\n      if (font.isType3Font) {\n        return this.showType3Text(glyphs);\n      }\n\n      var fontSize = current.fontSize;\n      if (fontSize === 0) {\n        return;\n      }\n\n      var ctx = this.ctx;\n      var fontSizeScale = current.fontSizeScale;\n      var charSpacing = current.charSpacing;\n      var wordSpacing = current.wordSpacing;\n      var fontDirection = current.fontDirection;\n      var textHScale = current.textHScale * fontDirection;\n      var glyphsLength = glyphs.length;\n      var vertical = font.vertical;\n      var spacingDir = vertical ? 1 : -1;\n      var defaultVMetrics = font.defaultVMetrics;\n      var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n      var simpleFillText =\n        current.textRenderingMode === TextRenderingMode.FILL &&\n        !font.disableFontFace && !current.patternFill;\n\n      ctx.save();\n      let patternTransform;\n      if (current.patternFill) {\n        // TODO: Patterns are not applied correctly to text if a non-embedded\n        // font is used. E.g. issue 8111 and ShowText-ShadingPattern.pdf.\n        ctx.save();\n        let pattern = current.fillColor.getPattern(ctx, this);\n        patternTransform = ctx.mozCurrentTransform;\n        ctx.restore();\n        ctx.fillStyle = pattern;\n      }\n      ctx.transform.apply(ctx, current.textMatrix);\n      ctx.translate(current.x, current.y + current.textRise);\n\n      if (fontDirection > 0) {\n        ctx.scale(textHScale, -1);\n      } else {\n        ctx.scale(textHScale, 1);\n      }\n\n      var lineWidth = current.lineWidth;\n      var scale = current.textMatrixScale;\n      if (scale === 0 || lineWidth === 0) {\n        var fillStrokeMode = current.textRenderingMode &\n          TextRenderingMode.FILL_STROKE_MASK;\n        if (fillStrokeMode === TextRenderingMode.STROKE ||\n            fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n          this._cachedGetSinglePixelWidth = null;\n          lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n        }\n      } else {\n        lineWidth /= scale;\n      }\n\n      if (fontSizeScale !== 1.0) {\n        ctx.scale(fontSizeScale, fontSizeScale);\n        lineWidth /= fontSizeScale;\n      }\n\n      ctx.lineWidth = lineWidth;\n\n      var x = 0, i;\n      for (i = 0; i < glyphsLength; ++i) {\n        var glyph = glyphs[i];\n        if (isNum(glyph)) {\n          x += spacingDir * glyph * fontSize / 1000;\n          continue;\n        }\n\n        var restoreNeeded = false;\n        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n        var character = glyph.fontChar;\n        var accent = glyph.accent;\n        var scaledX, scaledY, scaledAccentX, scaledAccentY;\n        var width = glyph.width;\n        if (vertical) {\n          var vmetric, vx, vy;\n          vmetric = glyph.vmetric || defaultVMetrics;\n          vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n          vx = -vx * widthAdvanceScale;\n          vy = vmetric[2] * widthAdvanceScale;\n\n          width = vmetric ? -vmetric[0] : width;\n          scaledX = vx / fontSizeScale;\n          scaledY = (x + vy) / fontSizeScale;\n        } else {\n          scaledX = x / fontSizeScale;\n          scaledY = 0;\n        }\n\n        if (font.remeasure && width > 0) {\n          // Some standard fonts may not have the exact width: rescale per\n          // character if measured width is greater than expected glyph width\n          // and subpixel-aa is enabled, otherwise just center the glyph.\n          var measuredWidth = ctx.measureText(character).width * 1000 /\n            fontSize * fontSizeScale;\n          if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n            var characterScaleX = width / measuredWidth;\n            restoreNeeded = true;\n            ctx.save();\n            ctx.scale(characterScaleX, 1);\n            scaledX /= characterScaleX;\n          } else if (width !== measuredWidth) {\n            scaledX += (width - measuredWidth) / 2000 *\n              fontSize / fontSizeScale;\n          }\n        }\n\n        // Only attempt to draw the glyph if it is actually in the embedded font\n        // file or if there isn't a font file so the fallback font is shown.\n        if (glyph.isInFont || font.missingFile) {\n          if (simpleFillText && !accent) {\n            // common case\n            ctx.fillText(character, scaledX, scaledY);\n          } else {\n            this.paintChar(character, scaledX, scaledY, patternTransform);\n            if (accent) {\n              scaledAccentX = scaledX + accent.offset.x / fontSizeScale;\n              scaledAccentY = scaledY - accent.offset.y / fontSizeScale;\n              this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY,\n                             patternTransform);\n            }\n          }\n        }\n\n        var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n        x += charWidth;\n\n        if (restoreNeeded) {\n          ctx.restore();\n        }\n      }\n      if (vertical) {\n        current.y -= x * textHScale;\n      } else {\n        current.x += x * textHScale;\n      }\n      ctx.restore();\n    },\n\n    showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n      // Type3 fonts - each glyph is a \"mini-PDF\"\n      var ctx = this.ctx;\n      var current = this.current;\n      var font = current.font;\n      var fontSize = current.fontSize;\n      var fontDirection = current.fontDirection;\n      var spacingDir = font.vertical ? 1 : -1;\n      var charSpacing = current.charSpacing;\n      var wordSpacing = current.wordSpacing;\n      var textHScale = current.textHScale * fontDirection;\n      var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n      var glyphsLength = glyphs.length;\n      var isTextInvisible =\n        current.textRenderingMode === TextRenderingMode.INVISIBLE;\n      var i, glyph, width, spacingLength;\n\n      if (isTextInvisible || fontSize === 0) {\n        return;\n      }\n      this._cachedGetSinglePixelWidth = null;\n\n      ctx.save();\n      ctx.transform.apply(ctx, current.textMatrix);\n      ctx.translate(current.x, current.y);\n\n      ctx.scale(textHScale, fontDirection);\n\n      for (i = 0; i < glyphsLength; ++i) {\n        glyph = glyphs[i];\n        if (isNum(glyph)) {\n          spacingLength = spacingDir * glyph * fontSize / 1000;\n          this.ctx.translate(spacingLength, 0);\n          current.x += spacingLength * textHScale;\n          continue;\n        }\n\n        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n        var operatorList = font.charProcOperatorList[glyph.operatorListId];\n        if (!operatorList) {\n          warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n          continue;\n        }\n        this.processingType3 = glyph;\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform.apply(ctx, fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n\n        var transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n        width = transformed[0] * fontSize + spacing;\n\n        ctx.translate(width, 0);\n        current.x += width * textHScale;\n      }\n      ctx.restore();\n      this.processingType3 = null;\n    },\n\n    // Type3 fonts\n    setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {\n      // We can safely ignore this since the width should be the same\n      // as the width in the Widths array.\n    },\n    setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,\n                                                                        yWidth,\n                                                                        llx,\n                                                                        lly,\n                                                                        urx,\n                                                                        ury) {\n      // TODO According to the spec we're also suppose to ignore any operators\n      // that set color or include images while processing this type3 font.\n      this.ctx.rect(llx, lly, urx - llx, ury - lly);\n      this.clip();\n      this.endPath();\n    },\n\n    // Color\n    getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n      var pattern;\n      if (IR[0] === 'TilingPattern') {\n        var color = IR[1];\n        var baseTransform = this.baseTransform ||\n                            this.ctx.mozCurrentTransform.slice();\n        var canvasGraphicsFactory = {\n          createCanvasGraphics: (ctx) => {\n            return new CanvasGraphics(ctx, this.commonObjs, this.objs,\n                                      this.canvasFactory, this.webGLContext);\n          },\n        };\n        pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory,\n                                    baseTransform);\n      } else {\n        pattern = getShadingPatternFromIR(IR);\n      }\n      return pattern;\n    },\n    setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n      this.current.strokeColor = this.getColorN_Pattern(arguments);\n    },\n    setFillColorN: function CanvasGraphics_setFillColorN() {\n      this.current.fillColor = this.getColorN_Pattern(arguments);\n      this.current.patternFill = true;\n    },\n    setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n      var color = Util.makeCssRgb(r, g, b);\n      this.ctx.strokeStyle = color;\n      this.current.strokeColor = color;\n    },\n    setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n      var color = Util.makeCssRgb(r, g, b);\n      this.ctx.fillStyle = color;\n      this.current.fillColor = color;\n      this.current.patternFill = false;\n    },\n\n    shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n      var ctx = this.ctx;\n\n      this.save();\n      var pattern = getShadingPatternFromIR(patternIR);\n      ctx.fillStyle = pattern.getPattern(ctx, this, true);\n\n      var inv = ctx.mozCurrentTransformInverse;\n      if (inv) {\n        var canvas = ctx.canvas;\n        var width = canvas.width;\n        var height = canvas.height;\n\n        var bl = Util.applyTransform([0, 0], inv);\n        var br = Util.applyTransform([0, height], inv);\n        var ul = Util.applyTransform([width, 0], inv);\n        var ur = Util.applyTransform([width, height], inv);\n\n        var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n        var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n        var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n        var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n        this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n      } else {\n        // HACK to draw the gradient onto an infinite rectangle.\n        // PDF gradients are drawn across the entire image while\n        // Canvas only allows gradients to be drawn in a rectangle\n        // The following bug should allow us to remove this.\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n        this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n      }\n\n      this.restore();\n    },\n\n    // Images\n    beginInlineImage: function CanvasGraphics_beginInlineImage() {\n      unreachable('Should not call beginInlineImage');\n    },\n    beginImageData: function CanvasGraphics_beginImageData() {\n      unreachable('Should not call beginImageData');\n    },\n\n    paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,\n                                                                        bbox) {\n      this.save();\n      this.baseTransformStack.push(this.baseTransform);\n\n      if (Array.isArray(matrix) && matrix.length === 6) {\n        this.transform.apply(this, matrix);\n      }\n\n      this.baseTransform = this.ctx.mozCurrentTransform;\n\n      if (Array.isArray(bbox) && bbox.length === 4) {\n        var width = bbox[2] - bbox[0];\n        var height = bbox[3] - bbox[1];\n        this.ctx.rect(bbox[0], bbox[1], width, height);\n        this.clip();\n        this.endPath();\n      }\n    },\n\n    paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n      this.restore();\n      this.baseTransform = this.baseTransformStack.pop();\n    },\n\n    beginGroup: function CanvasGraphics_beginGroup(group) {\n      this.save();\n      var currentCtx = this.ctx;\n      // TODO non-isolated groups - according to Rik at adobe non-isolated\n      // group results aren't usually that different and they even have tools\n      // that ignore this setting. Notes from Rik on implementing:\n      // - When you encounter an transparency group, create a new canvas with\n      // the dimensions of the bbox\n      // - copy the content from the previous canvas to the new canvas\n      // - draw as usual\n      // - remove the backdrop alpha:\n      // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n      // value of your transparency group and 'alphaBackdrop' the alpha of the\n      // backdrop\n      // - remove background color:\n      // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n      if (!group.isolated) {\n        info('TODO: Support non-isolated groups.');\n      }\n\n      // TODO knockout - supposedly possible with the clever use of compositing\n      // modes.\n      if (group.knockout) {\n        warn('Knockout groups not supported.');\n      }\n\n      var currentTransform = currentCtx.mozCurrentTransform;\n      if (group.matrix) {\n        currentCtx.transform.apply(currentCtx, group.matrix);\n      }\n      if (!group.bbox) {\n        throw new Error('Bounding box is required.');\n      }\n\n      // Based on the current transform figure out how big the bounding box\n      // will actually be.\n      var bounds = Util.getAxialAlignedBoundingBox(\n                    group.bbox,\n                    currentCtx.mozCurrentTransform);\n      // Clip the bounding box to the current canvas.\n      var canvasBounds = [0,\n                          0,\n                          currentCtx.canvas.width,\n                          currentCtx.canvas.height];\n      bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n      // Use ceil in case we're between sizes so we don't create canvas that is\n      // too small and make the canvas at least 1x1 pixels.\n      var offsetX = Math.floor(bounds[0]);\n      var offsetY = Math.floor(bounds[1]);\n      var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n      var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n      var scaleX = 1, scaleY = 1;\n      if (drawnWidth > MAX_GROUP_SIZE) {\n        scaleX = drawnWidth / MAX_GROUP_SIZE;\n        drawnWidth = MAX_GROUP_SIZE;\n      }\n      if (drawnHeight > MAX_GROUP_SIZE) {\n        scaleY = drawnHeight / MAX_GROUP_SIZE;\n        drawnHeight = MAX_GROUP_SIZE;\n      }\n\n      var cacheId = 'groupAt' + this.groupLevel;\n      if (group.smask) {\n        // Using two cache entries is case if masks are used one after another.\n        cacheId += '_smask_' + ((this.smaskCounter++) % 2);\n      }\n      var scratchCanvas = this.cachedCanvases.getCanvas(\n        cacheId, drawnWidth, drawnHeight, true);\n      var groupCtx = scratchCanvas.context;\n\n      // Since we created a new canvas that is just the size of the bounding box\n      // we have to translate the group ctx.\n      groupCtx.scale(1 / scaleX, 1 / scaleY);\n      groupCtx.translate(-offsetX, -offsetY);\n      groupCtx.transform.apply(groupCtx, currentTransform);\n\n      if (group.smask) {\n        // Saving state and cached mask to be used in setGState.\n        this.smaskStack.push({\n          canvas: scratchCanvas.canvas,\n          context: groupCtx,\n          offsetX,\n          offsetY,\n          scaleX,\n          scaleY,\n          subtype: group.smask.subtype,\n          backdrop: group.smask.backdrop,\n          transferMap: group.smask.transferMap || null,\n          startTransformInverse: null, // used during suspend operation\n        });\n      } else {\n        // Setup the current ctx so when the group is popped we draw it at the\n        // right location.\n        currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n        currentCtx.translate(offsetX, offsetY);\n        currentCtx.scale(scaleX, scaleY);\n      }\n      // The transparency group inherits all off the current graphics state\n      // except the blend mode, soft mask, and alpha constants.\n      copyCtxState(currentCtx, groupCtx);\n      this.ctx = groupCtx;\n      this.setGState([\n        ['BM', 'source-over'],\n        ['ca', 1],\n        ['CA', 1]\n      ]);\n      this.groupStack.push(currentCtx);\n      this.groupLevel++;\n\n      // Reseting mask state, masks will be applied on restore of the group.\n      this.current.activeSMask = null;\n    },\n\n    endGroup: function CanvasGraphics_endGroup(group) {\n      this.groupLevel--;\n      var groupCtx = this.ctx;\n      this.ctx = this.groupStack.pop();\n      // Turn off image smoothing to avoid sub pixel interpolation which can\n      // look kind of blurry for some pdfs.\n      if (this.ctx.imageSmoothingEnabled !== undefined) {\n        this.ctx.imageSmoothingEnabled = false;\n      } else {\n        this.ctx.mozImageSmoothingEnabled = false;\n      }\n      if (group.smask) {\n        this.tempSMask = this.smaskStack.pop();\n      } else {\n        this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      }\n      this.restore();\n    },\n\n    beginAnnotations: function CanvasGraphics_beginAnnotations() {\n      this.save();\n      if (this.baseTransform) {\n        this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n      }\n    },\n\n    endAnnotations: function CanvasGraphics_endAnnotations() {\n      this.restore();\n    },\n\n    beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform,\n                                                             matrix) {\n      this.save();\n      resetCtxToDefault(this.ctx);\n      this.current = new CanvasExtraState();\n\n      if (Array.isArray(rect) && rect.length === 4) {\n        var width = rect[2] - rect[0];\n        var height = rect[3] - rect[1];\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.clip();\n        this.endPath();\n      }\n\n      this.transform.apply(this, transform);\n      this.transform.apply(this, matrix);\n    },\n\n    endAnnotation: function CanvasGraphics_endAnnotation() {\n      this.restore();\n    },\n\n    paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {\n      var domImage = this.objs.get(objId);\n      if (!domImage) {\n        warn('Dependent image isn\\'t ready yet');\n        return;\n      }\n\n      this.save();\n\n      var ctx = this.ctx;\n      // scale the image to the unit square\n      ctx.scale(1 / w, -1 / h);\n\n      ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height,\n                    0, -h, w, h);\n      if (this.imageLayer) {\n        var currentTransform = ctx.mozCurrentTransformInverse;\n        var position = this.getCanvasPosition(0, 0);\n        this.imageLayer.appendImage({\n          objId,\n          left: position[0],\n          top: position[1],\n          width: w / currentTransform[0],\n          height: h / currentTransform[3],\n        });\n      }\n      this.restore();\n    },\n\n    paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n      var ctx = this.ctx;\n      var width = img.width, height = img.height;\n      var fillColor = this.current.fillColor;\n      var isPatternFill = this.current.patternFill;\n\n      var glyph = this.processingType3;\n\n      if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n        if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n          glyph.compiled =\n            compileType3Glyph({ data: img.data, width, height, });\n        } else {\n          glyph.compiled = null;\n        }\n      }\n\n      if (glyph && glyph.compiled) {\n        glyph.compiled(ctx);\n        return;\n      }\n\n      var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n                                                     width, height);\n      var maskCtx = maskCanvas.context;\n      maskCtx.save();\n\n      putBinaryImageMask(maskCtx, img);\n\n      maskCtx.globalCompositeOperation = 'source-in';\n\n      maskCtx.fillStyle = isPatternFill ?\n                          fillColor.getPattern(maskCtx, this) : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n\n      maskCtx.restore();\n\n      this.paintInlineImageXObject(maskCanvas.canvas);\n    },\n\n    paintImageMaskXObjectRepeat:\n      function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX,\n                                                          scaleY, positions) {\n      var width = imgData.width;\n      var height = imgData.height;\n      var fillColor = this.current.fillColor;\n      var isPatternFill = this.current.patternFill;\n\n      var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n                                                     width, height);\n      var maskCtx = maskCanvas.context;\n      maskCtx.save();\n\n      putBinaryImageMask(maskCtx, imgData);\n\n      maskCtx.globalCompositeOperation = 'source-in';\n\n      maskCtx.fillStyle = isPatternFill ?\n                          fillColor.getPattern(maskCtx, this) : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n\n      maskCtx.restore();\n\n      var ctx = this.ctx;\n      for (var i = 0, ii = positions.length; i < ii; i += 2) {\n        ctx.save();\n        ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);\n        ctx.scale(1, -1);\n        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n          0, -1, 1, 1);\n        ctx.restore();\n      }\n    },\n\n    paintImageMaskXObjectGroup:\n      function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n      var ctx = this.ctx;\n\n      var fillColor = this.current.fillColor;\n      var isPatternFill = this.current.patternFill;\n      for (var i = 0, ii = images.length; i < ii; i++) {\n        var image = images[i];\n        var width = image.width, height = image.height;\n\n        var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n                                                       width, height);\n        var maskCtx = maskCanvas.context;\n        maskCtx.save();\n\n        putBinaryImageMask(maskCtx, image);\n\n        maskCtx.globalCompositeOperation = 'source-in';\n\n        maskCtx.fillStyle = isPatternFill ?\n                            fillColor.getPattern(maskCtx, this) : fillColor;\n        maskCtx.fillRect(0, 0, width, height);\n\n        maskCtx.restore();\n\n        ctx.save();\n        ctx.transform.apply(ctx, image.transform);\n        ctx.scale(1, -1);\n        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n                      0, -1, 1, 1);\n        ctx.restore();\n      }\n    },\n\n    paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n      var imgData = this.objs.get(objId);\n      if (!imgData) {\n        warn('Dependent image isn\\'t ready yet');\n        return;\n      }\n\n      this.paintInlineImageXObject(imgData);\n    },\n\n    paintImageXObjectRepeat:\n      function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY,\n                                                          positions) {\n      var imgData = this.objs.get(objId);\n      if (!imgData) {\n        warn('Dependent image isn\\'t ready yet');\n        return;\n      }\n\n      var width = imgData.width;\n      var height = imgData.height;\n      var map = [];\n      for (var i = 0, ii = positions.length; i < ii; i += 2) {\n        map.push({ transform: [scaleX, 0, 0, scaleY, positions[i],\n                   positions[i + 1]], x: 0, y: 0, w: width, h: height, });\n      }\n      this.paintInlineImageXObjectGroup(imgData, map);\n    },\n\n    paintInlineImageXObject:\n      function CanvasGraphics_paintInlineImageXObject(imgData) {\n      var width = imgData.width;\n      var height = imgData.height;\n      var ctx = this.ctx;\n\n      this.save();\n      // scale the image to the unit square\n      ctx.scale(1 / width, -1 / height);\n\n      var currentTransform = ctx.mozCurrentTransformInverse;\n      var a = currentTransform[0], b = currentTransform[1];\n      var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n      var c = currentTransform[2], d = currentTransform[3];\n      var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n\n      var imgToPaint, tmpCanvas;\n      // typeof check is needed due to node.js support, see issue #8489\n      if ((typeof HTMLElement === 'function' &&\n           imgData instanceof HTMLElement) || !imgData.data) {\n        imgToPaint = imgData;\n      } else {\n        tmpCanvas = this.cachedCanvases.getCanvas('inlineImage',\n                                                  width, height);\n        var tmpCtx = tmpCanvas.context;\n        putBinaryImageData(tmpCtx, imgData);\n        imgToPaint = tmpCanvas.canvas;\n      }\n\n      var paintWidth = width, paintHeight = height;\n      var tmpCanvasId = 'prescale1';\n      // Vertial or horizontal scaling shall not be more than 2 to not loose the\n      // pixels during drawImage operation, painting on the temporary canvas(es)\n      // that are twice smaller in size\n      while ((widthScale > 2 && paintWidth > 1) ||\n             (heightScale > 2 && paintHeight > 1)) {\n        var newWidth = paintWidth, newHeight = paintHeight;\n        if (widthScale > 2 && paintWidth > 1) {\n          newWidth = Math.ceil(paintWidth / 2);\n          widthScale /= paintWidth / newWidth;\n        }\n        if (heightScale > 2 && paintHeight > 1) {\n          newHeight = Math.ceil(paintHeight / 2);\n          heightScale /= paintHeight / newHeight;\n        }\n        tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId,\n                                                  newWidth, newHeight);\n        tmpCtx = tmpCanvas.context;\n        tmpCtx.clearRect(0, 0, newWidth, newHeight);\n        tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n                                     0, 0, newWidth, newHeight);\n        imgToPaint = tmpCanvas.canvas;\n        paintWidth = newWidth;\n        paintHeight = newHeight;\n        tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';\n      }\n      ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n                                0, -height, width, height);\n\n      if (this.imageLayer) {\n        var position = this.getCanvasPosition(0, -height);\n        this.imageLayer.appendImage({\n          imgData,\n          left: position[0],\n          top: position[1],\n          width: width / currentTransform[0],\n          height: height / currentTransform[3],\n        });\n      }\n      this.restore();\n    },\n\n    paintInlineImageXObjectGroup:\n      function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n      var ctx = this.ctx;\n      var w = imgData.width;\n      var h = imgData.height;\n\n      var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);\n      var tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n\n      for (var i = 0, ii = map.length; i < ii; i++) {\n        var entry = map[i];\n        ctx.save();\n        ctx.transform.apply(ctx, entry.transform);\n        ctx.scale(1, -1);\n        ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h,\n                      0, -1, 1, 1);\n        if (this.imageLayer) {\n          var position = this.getCanvasPosition(entry.x, entry.y);\n          this.imageLayer.appendImage({\n            imgData,\n            left: position[0],\n            top: position[1],\n            width: w,\n            height: h,\n          });\n        }\n        ctx.restore();\n      }\n    },\n\n    paintSolidColorImageMask:\n      function CanvasGraphics_paintSolidColorImageMask() {\n        this.ctx.fillRect(0, 0, 1, 1);\n    },\n\n    paintXObject: function CanvasGraphics_paintXObject() {\n      warn('Unsupported \\'paintXObject\\' command.');\n    },\n\n    // Marked content\n\n    markPoint: function CanvasGraphics_markPoint(tag) {\n      // TODO Marked content.\n    },\n    markPointProps: function CanvasGraphics_markPointProps(tag, properties) {\n      // TODO Marked content.\n    },\n    beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {\n      // TODO Marked content.\n    },\n    beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(\n                                        tag, properties) {\n      // TODO Marked content.\n    },\n    endMarkedContent: function CanvasGraphics_endMarkedContent() {\n      // TODO Marked content.\n    },\n\n    // Compatibility\n\n    beginCompat: function CanvasGraphics_beginCompat() {\n      // TODO ignore undefined operators (should we do that anyway?)\n    },\n    endCompat: function CanvasGraphics_endCompat() {\n      // TODO stop ignoring undefined operators\n    },\n\n    // Helper functions\n\n    consumePath: function CanvasGraphics_consumePath() {\n      var ctx = this.ctx;\n      if (this.pendingClip) {\n        if (this.pendingClip === EO_CLIP) {\n          ctx.clip('evenodd');\n        } else {\n          ctx.clip();\n        }\n        this.pendingClip = null;\n      }\n      ctx.beginPath();\n    },\n    getSinglePixelWidth(scale) {\n      if (this._cachedGetSinglePixelWidth === null) {\n        const inverse = this.ctx.mozCurrentTransformInverse;\n        // max of the current horizontal and vertical scale\n        this._cachedGetSinglePixelWidth = Math.sqrt(Math.max(\n          (inverse[0] * inverse[0] + inverse[1] * inverse[1]),\n          (inverse[2] * inverse[2] + inverse[3] * inverse[3])));\n      }\n      return this._cachedGetSinglePixelWidth;\n    },\n    getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n      var transform = this.ctx.mozCurrentTransform;\n      return [\n        transform[0] * x + transform[2] * y + transform[4],\n        transform[1] * x + transform[3] * y + transform[5]\n      ];\n    },\n  };\n\n  for (var op in OPS) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n\n  return CanvasGraphics;\n})();\n\nexport {\n  CanvasGraphics,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, Util } from '../shared/util';\n\nvar ShadingIRs = {};\n\nShadingIRs.RadialAxial = {\n  fromIR: function RadialAxial_fromIR(raw) {\n    var type = raw[1];\n    var colorStops = raw[2];\n    var p0 = raw[3];\n    var p1 = raw[4];\n    var r0 = raw[5];\n    var r1 = raw[6];\n    return {\n      type: 'Pattern',\n      getPattern: function RadialAxial_getPattern(ctx) {\n        var grad;\n        if (type === 'axial') {\n          grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n        } else if (type === 'radial') {\n          grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n        }\n\n        for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n          var c = colorStops[i];\n          grad.addColorStop(c[0], c[1]);\n        }\n        return grad;\n      },\n    };\n  },\n};\n\nvar createMeshCanvas = (function createMeshCanvasClosure() {\n  function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n    // Very basic Gouraud-shaded triangle rasterization algorithm.\n    var coords = context.coords, colors = context.colors;\n    var bytes = data.data, rowSize = data.width * 4;\n    var tmp;\n    if (coords[p1 + 1] > coords[p2 + 1]) {\n      tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n    }\n    if (coords[p2 + 1] > coords[p3 + 1]) {\n      tmp = p2; p2 = p3; p3 = tmp; tmp = c2; c2 = c3; c3 = tmp;\n    }\n    if (coords[p1 + 1] > coords[p2 + 1]) {\n      tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n    }\n    var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n    var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n    var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n    var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n    var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n    var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n    if (y1 >= y3) {\n      return;\n    }\n    var c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2];\n    var c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2];\n    var c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2];\n\n    var minY = Math.round(y1), maxY = Math.round(y3);\n    var xa, car, cag, cab;\n    var xb, cbr, cbg, cbb;\n    var k;\n    for (var y = minY; y <= maxY; y++) {\n      if (y < y2) {\n        k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);\n        xa = x1 - (x1 - x2) * k;\n        car = c1r - (c1r - c2r) * k;\n        cag = c1g - (c1g - c2g) * k;\n        cab = c1b - (c1b - c2b) * k;\n      } else {\n        k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);\n        xa = x2 - (x2 - x3) * k;\n        car = c2r - (c2r - c3r) * k;\n        cag = c2g - (c2g - c3g) * k;\n        cab = c2b - (c2b - c3b) * k;\n      }\n      k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);\n      xb = x1 - (x1 - x3) * k;\n      cbr = c1r - (c1r - c3r) * k;\n      cbg = c1g - (c1g - c3g) * k;\n      cbb = c1b - (c1b - c3b) * k;\n      var x1_ = Math.round(Math.min(xa, xb));\n      var x2_ = Math.round(Math.max(xa, xb));\n      var j = rowSize * y + x1_ * 4;\n      for (var x = x1_; x <= x2_; x++) {\n        k = (xa - x) / (xa - xb);\n        k = k < 0 ? 0 : k > 1 ? 1 : k;\n        bytes[j++] = (car - (car - cbr) * k) | 0;\n        bytes[j++] = (cag - (cag - cbg) * k) | 0;\n        bytes[j++] = (cab - (cab - cbb) * k) | 0;\n        bytes[j++] = 255;\n      }\n    }\n  }\n\n  function drawFigure(data, figure, context) {\n    var ps = figure.coords;\n    var cs = figure.colors;\n    var i, ii;\n    switch (figure.type) {\n      case 'lattice':\n        var verticesPerRow = figure.verticesPerRow;\n        var rows = Math.floor(ps.length / verticesPerRow) - 1;\n        var cols = verticesPerRow - 1;\n        for (i = 0; i < rows; i++) {\n          var q = i * verticesPerRow;\n          for (var j = 0; j < cols; j++, q++) {\n            drawTriangle(data, context,\n              ps[q], ps[q + 1], ps[q + verticesPerRow],\n              cs[q], cs[q + 1], cs[q + verticesPerRow]);\n            drawTriangle(data, context,\n              ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow],\n              cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n          }\n        }\n        break;\n      case 'triangles':\n        for (i = 0, ii = ps.length; i < ii; i += 3) {\n          drawTriangle(data, context,\n            ps[i], ps[i + 1], ps[i + 2],\n            cs[i], cs[i + 1], cs[i + 2]);\n        }\n        break;\n      default:\n        throw new Error('illegal figure');\n    }\n  }\n\n  function createMeshCanvas(bounds, combinesScale, coords, colors, figures,\n                            backgroundColor, cachedCanvases, webGLContext) {\n    // we will increase scale on some weird factor to let antialiasing take\n    // care of \"rough\" edges\n    var EXPECTED_SCALE = 1.1;\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n    // We need to keep transparent border around our pattern for fill():\n    // createPattern with 'no-repeat' will bleed edges across entire area.\n    var BORDER_SIZE = 2;\n\n    var offsetX = Math.floor(bounds[0]);\n    var offsetY = Math.floor(bounds[1]);\n    var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n    var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n\n    var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] *\n      EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] *\n      EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    var scaleX = boundsWidth / width;\n    var scaleY = boundsHeight / height;\n\n    var context = {\n      coords,\n      colors,\n      offsetX: -offsetX,\n      offsetY: -offsetY,\n      scaleX: 1 / scaleX,\n      scaleY: 1 / scaleY,\n    };\n\n    var paddedWidth = width + BORDER_SIZE * 2;\n    var paddedHeight = height + BORDER_SIZE * 2;\n\n    var canvas, tmpCanvas, i, ii;\n    if (webGLContext.isEnabled) {\n      canvas = webGLContext.drawFigures({\n        width,\n        height,\n        backgroundColor,\n        figures,\n        context,\n      });\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=972126\n      tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n                                           false);\n      tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n      canvas = tmpCanvas.canvas;\n    } else {\n      tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n                                           false);\n      var tmpCtx = tmpCanvas.context;\n\n      var data = tmpCtx.createImageData(width, height);\n      if (backgroundColor) {\n        var bytes = data.data;\n        for (i = 0, ii = bytes.length; i < ii; i += 4) {\n          bytes[i] = backgroundColor[0];\n          bytes[i + 1] = backgroundColor[1];\n          bytes[i + 2] = backgroundColor[2];\n          bytes[i + 3] = 255;\n        }\n      }\n      for (i = 0; i < figures.length; i++) {\n        drawFigure(data, figures[i], context);\n      }\n      tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n      canvas = tmpCanvas.canvas;\n    }\n\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY,\n    };\n  }\n  return createMeshCanvas;\n})();\n\nShadingIRs.Mesh = {\n  fromIR: function Mesh_fromIR(raw) {\n    // var type = raw[1];\n    var coords = raw[2];\n    var colors = raw[3];\n    var figures = raw[4];\n    var bounds = raw[5];\n    var matrix = raw[6];\n    // var bbox = raw[7];\n    var background = raw[8];\n    return {\n      type: 'Pattern',\n      getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n        var scale;\n        if (shadingFill) {\n          scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n        } else {\n          // Obtain scale from matrix and current transformation matrix.\n          scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n          if (matrix) {\n            var matrixScale = Util.singularValueDecompose2dScale(matrix);\n            scale = [scale[0] * matrixScale[0],\n                     scale[1] * matrixScale[1]];\n          }\n        }\n\n        // Rasterizing on the main thread since sending/queue large canvases\n        // might cause OOM.\n        var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords,\n          colors, figures, shadingFill ? null : background,\n          owner.cachedCanvases, owner.webGLContext);\n\n        if (!shadingFill) {\n          ctx.setTransform.apply(ctx, owner.baseTransform);\n          if (matrix) {\n            ctx.transform.apply(ctx, matrix);\n          }\n        }\n\n        ctx.translate(temporaryPatternCanvas.offsetX,\n                      temporaryPatternCanvas.offsetY);\n        ctx.scale(temporaryPatternCanvas.scaleX,\n                  temporaryPatternCanvas.scaleY);\n\n        return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');\n      },\n    };\n  },\n};\n\nShadingIRs.Dummy = {\n  fromIR: function Dummy_fromIR() {\n    return {\n      type: 'Pattern',\n      getPattern: function Dummy_fromIR_getPattern() {\n        return 'hotpink';\n      },\n    };\n  },\n};\n\nfunction getShadingPatternFromIR(raw) {\n  var shadingIR = ShadingIRs[raw[0]];\n  if (!shadingIR) {\n    throw new Error(`Unknown IR type: ${raw[0]}`);\n  }\n  return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = (function TilingPatternClosure() {\n  var PaintType = {\n    COLORED: 1,\n    UNCOLORED: 2,\n  };\n\n  var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n\n  function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.color = color;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n    this.type = 'Pattern';\n    this.ctx = ctx;\n  }\n\n  TilingPattern.prototype = {\n    createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n      var operatorList = this.operatorList;\n      var bbox = this.bbox;\n      var xstep = this.xstep;\n      var ystep = this.ystep;\n      var paintType = this.paintType;\n      var tilingType = this.tilingType;\n      var color = this.color;\n      var canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n      info('TilingType: ' + tilingType);\n\n      var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3];\n\n      var topLeft = [x0, y0];\n      // we want the canvas to be as large as the step size\n      var botRight = [x0 + xstep, y0 + ystep];\n\n      var width = botRight[0] - topLeft[0];\n      var height = botRight[1] - topLeft[1];\n\n      // Obtain scale from matrix and current transformation matrix.\n      var matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n      var curMatrixScale = Util.singularValueDecompose2dScale(\n        this.baseTransform);\n      var combinedScale = [matrixScale[0] * curMatrixScale[0],\n        matrixScale[1] * curMatrixScale[1]];\n\n      // MAX_PATTERN_SIZE is used to avoid OOM situation.\n      // Use width and height values that are as close as possible to the end\n      // result when the pattern is used. Too low value makes the pattern look\n      // blurry. Too large value makes it look too crispy.\n      width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])),\n        MAX_PATTERN_SIZE);\n\n      height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])),\n        MAX_PATTERN_SIZE);\n\n      var tmpCanvas = owner.cachedCanvases.getCanvas('pattern',\n        width, height, true);\n      var tmpCtx = tmpCanvas.context;\n      var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n      graphics.groupLevel = owner.groupLevel;\n\n      this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n      this.setScale(width, height, xstep, ystep);\n      this.transformToScale(graphics);\n\n      // transform coordinates to pattern space\n      var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];\n      graphics.transform.apply(graphics, tmpTranslate);\n\n      this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n\n      graphics.executeOperatorList(operatorList);\n      return tmpCanvas.canvas;\n    },\n\n    setScale: function TilingPattern_setScale(width, height, xstep, ystep) {\n      this.scale = [width / xstep, height / ystep];\n    },\n\n    transformToScale: function TilingPattern_transformToScale(graphics) {\n      var scale = this.scale;\n      var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];\n      graphics.transform.apply(graphics, tmpScale);\n    },\n\n    scaleToContext: function TilingPattern_scaleToContext() {\n      var scale = this.scale;\n      this.ctx.scale(1 / scale[0], 1 / scale[1]);\n    },\n\n    clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n      if (Array.isArray(bbox) && bbox.length === 4) {\n        var bboxWidth = x1 - x0;\n        var bboxHeight = y1 - y0;\n        graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n        graphics.clip();\n        graphics.endPath();\n      }\n    },\n\n    setFillAndStrokeStyleToContext:\n      function setFillAndStrokeStyleToContext(graphics, paintType, color) {\n        let context = graphics.ctx, current = graphics.current;\n        switch (paintType) {\n          case PaintType.COLORED:\n            var ctx = this.ctx;\n            context.fillStyle = ctx.fillStyle;\n            context.strokeStyle = ctx.strokeStyle;\n            current.fillColor = ctx.fillStyle;\n            current.strokeColor = ctx.strokeStyle;\n            break;\n          case PaintType.UNCOLORED:\n            var cssColor = Util.makeCssRgb(color[0], color[1], color[2]);\n            context.fillStyle = cssColor;\n            context.strokeStyle = cssColor;\n            // Set color needed by image masks (fixes issues 3226 and 8741).\n            current.fillColor = cssColor;\n            current.strokeColor = cssColor;\n            break;\n          default:\n            throw new FormatError(`Unsupported paint type: ${paintType}`);\n        }\n      },\n\n    getPattern: function TilingPattern_getPattern(ctx, owner) {\n      var temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n      ctx = this.ctx;\n      ctx.setTransform.apply(ctx, this.baseTransform);\n      ctx.transform.apply(ctx, this.matrix);\n      this.scaleToContext();\n\n      return ctx.createPattern(temporaryPatternCanvas, 'repeat');\n    },\n  };\n\n  return TilingPattern;\n})();\n\nexport {\n  getShadingPatternFromIR,\n  TilingPattern,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst GlobalWorkerOptions = Object.create(null);\n\n/**\n * Defines global port for worker process. Overrides the `workerSrc` option.\n * @var {Object}\n */\nGlobalWorkerOptions.workerPort = (GlobalWorkerOptions.workerPort === undefined ?\n                                  null : GlobalWorkerOptions.workerPort);\n\n/**\n * Path and filename of the worker file. Required when workers are enabled in\n * development mode. If unspecified in production builds, the worker will be\n * loaded based on the location of the `pdf.js` file.\n *\n * NOTE: The `workerSrc` should always be set in custom applications, in order\n *       to prevent issues caused by third-party frameworks and libraries.\n * @var {string}\n */\nGlobalWorkerOptions.workerSrc = (GlobalWorkerOptions.workerSrc === undefined ?\n                                 '' : GlobalWorkerOptions.workerSrc);\n\nexport {\n  GlobalWorkerOptions,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException, assert, createPromiseCapability, MissingPDFException,\n  ReadableStream, UnexpectedResponseException, UnknownErrorException\n} from './util';\n\nasync function resolveCall(fn, args, thisArg = null) {\n  if (!fn) {\n    return;\n  }\n  return fn.apply(thisArg, args);\n}\n\nfunction wrapReason(reason) {\n  if (typeof reason !== 'object') {\n    return reason;\n  }\n  switch (reason.name) {\n    case 'AbortException':\n      return new AbortException(reason.message);\n    case 'MissingPDFException':\n      return new MissingPDFException(reason.message);\n    case 'UnexpectedResponseException':\n      return new UnexpectedResponseException(reason.message, reason.status);\n    default:\n      return new UnknownErrorException(reason.message, reason.details);\n  }\n}\n\nfunction makeReasonSerializable(reason) {\n  if (!(reason instanceof Error) ||\n      reason instanceof AbortException ||\n      reason instanceof MissingPDFException ||\n      reason instanceof UnexpectedResponseException ||\n      reason instanceof UnknownErrorException) {\n    return reason;\n  }\n  return new UnknownErrorException(reason.message, reason.toString());\n}\n\nfunction resolveOrReject(capability, success, reason) {\n  if (success) {\n    capability.resolve();\n  } else {\n    capability.reject(reason);\n  }\n}\n\nfunction finalize(promise) {\n  return Promise.resolve(promise).catch(() => {});\n}\n\nfunction MessageHandler(sourceName, targetName, comObj) {\n  this.sourceName = sourceName;\n  this.targetName = targetName;\n  this.comObj = comObj;\n  this.callbackId = 1;\n  this.streamId = 1;\n  this.postMessageTransfers = true;\n  this.streamSinks = Object.create(null);\n  this.streamControllers = Object.create(null);\n  let callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n  let ah = this.actionHandler = Object.create(null);\n\n  this._onComObjOnMessage = (event) => {\n    let data = event.data;\n    if (data.targetName !== this.sourceName) {\n      return;\n    }\n    if (data.stream) {\n      this._processStreamMessage(data);\n    } else if (data.isReply) {\n      let callbackId = data.callbackId;\n      if (data.callbackId in callbacksCapabilities) {\n        let callback = callbacksCapabilities[callbackId];\n        delete callbacksCapabilities[callbackId];\n        if ('error' in data) {\n          callback.reject(wrapReason(data.error));\n        } else {\n          callback.resolve(data.data);\n        }\n      } else {\n        throw new Error(`Cannot resolve callback ${callbackId}`);\n      }\n    } else if (data.action in ah) {\n      let action = ah[data.action];\n      if (data.callbackId) {\n        let sourceName = this.sourceName;\n        let targetName = data.sourceName;\n        Promise.resolve().then(function () {\n          return action[0].call(action[1], data.data);\n        }).then((result) => {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            isReply: true,\n            callbackId: data.callbackId,\n            data: result,\n          });\n        }, (reason) => {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            isReply: true,\n            callbackId: data.callbackId,\n            error: makeReasonSerializable(reason),\n          });\n        });\n      } else if (data.streamId) {\n        this._createStreamSink(data);\n      } else {\n        action[0].call(action[1], data.data);\n      }\n    } else {\n      throw new Error(`Unknown action from worker: ${data.action}`);\n    }\n  };\n  comObj.addEventListener('message', this._onComObjOnMessage);\n}\n\nMessageHandler.prototype = {\n  on(actionName, handler, scope) {\n    var ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = [handler, scope];\n  },\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {String} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers\n   */\n  send(actionName, data, transfers) {\n    var message = {\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data,\n    };\n    this.postMessage(message, transfers);\n  },\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {String} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    var callbackId = this.callbackId++;\n    var message = {\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data,\n      callbackId,\n    };\n    var capability = createPromiseCapability();\n    this.callbacksCapabilities[callbackId] = capability;\n    try {\n      this.postMessage(message, transfers);\n    } catch (e) {\n      capability.reject(e);\n    }\n    return capability.promise;\n  },\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {String} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n   * @return {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    let streamId = this.streamId++;\n    let sourceName = this.sourceName;\n    let targetName = this.targetName;\n\n    return new ReadableStream({\n      start: (controller) => {\n        let startCapability = createPromiseCapability();\n        this.streamControllers[streamId] = {\n          controller,\n          startCall: startCapability,\n          isClosed: false,\n        };\n        this.postMessage({\n          sourceName,\n          targetName,\n          action: actionName,\n          streamId,\n          data,\n          desiredSize: controller.desiredSize,\n        });\n        // Return Promise for Async process, to signal success/failure.\n        return startCapability.promise;\n      },\n\n      pull: (controller) => {\n        let pullCapability = createPromiseCapability();\n        this.streamControllers[streamId].pullCall = pullCapability;\n        this.postMessage({\n          sourceName,\n          targetName,\n          stream: 'pull',\n          streamId,\n          desiredSize: controller.desiredSize,\n        });\n        // Returning Promise will not call \"pull\"\n        // again until current pull is resolved.\n        return pullCapability.promise;\n      },\n\n      cancel: (reason) => {\n        let cancelCapability = createPromiseCapability();\n        this.streamControllers[streamId].cancelCall = cancelCapability;\n        this.streamControllers[streamId].isClosed = true;\n        this.postMessage({\n          sourceName,\n          targetName,\n          stream: 'cancel',\n          reason,\n          streamId,\n        });\n        // Return Promise to signal success or failure.\n        return cancelCapability.promise;\n      },\n    }, queueingStrategy);\n  },\n\n  _createStreamSink(data) {\n    let self = this;\n    let action = this.actionHandler[data.action];\n    let streamId = data.streamId;\n    let desiredSize = data.desiredSize;\n    let sourceName = this.sourceName;\n    let targetName = data.sourceName;\n    let capability = createPromiseCapability();\n\n    let sendStreamRequest = ({ stream, chunk, transfers,\n                               success, reason, }) => {\n      this.postMessage({ sourceName, targetName, stream, streamId,\n                         chunk, success, reason, }, transfers);\n    };\n\n    let streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        let lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        sendStreamRequest({ stream: 'enqueue', chunk, transfers, });\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        sendStreamRequest({ stream: 'close', });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        sendStreamRequest({ stream: 'error', reason, });\n      },\n\n      sinkCapability: capability,\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    resolveCall(action[0], [data.data, streamSink], action[1]).then(() => {\n      sendStreamRequest({ stream: 'start_complete', success: true, });\n    }, (reason) => {\n      sendStreamRequest({ stream: 'start_complete', success: false, reason, });\n    });\n  },\n\n  _processStreamMessage(data) {\n    let sourceName = this.sourceName;\n    let targetName = data.sourceName;\n    let streamId = data.streamId;\n\n    let sendStreamResponse = ({ stream, success, reason, }) => {\n      this.comObj.postMessage({ sourceName, targetName, stream,\n                                success, streamId, reason, });\n    };\n\n    let deleteStreamController = () => {\n      // Delete streamController only when start, pull and\n      // cancel callbacks are resolved, to avoid \"TypeError\".\n      Promise.all([\n        this.streamControllers[data.streamId].startCall,\n        this.streamControllers[data.streamId].pullCall,\n        this.streamControllers[data.streamId].cancelCall\n      ].map(function(capability) {\n        return capability && finalize(capability.promise);\n      })).then(() => {\n        delete this.streamControllers[data.streamId];\n      });\n    };\n\n    switch (data.stream) {\n      case 'start_complete':\n        resolveOrReject(this.streamControllers[data.streamId].startCall,\n                        data.success, wrapReason(data.reason));\n        break;\n      case 'pull_complete':\n        resolveOrReject(this.streamControllers[data.streamId].pullCall,\n                        data.success, wrapReason(data.reason));\n        break;\n      case 'pull':\n        // Ignore any pull after close is called.\n        if (!this.streamSinks[data.streamId]) {\n          sendStreamResponse({ stream: 'pull_complete', success: true, });\n          break;\n        }\n        // Pull increases the desiredSize property of sink,\n        // so when it changes from negative to positive,\n        // set ready property as resolved promise.\n        if (this.streamSinks[data.streamId].desiredSize <= 0 &&\n            data.desiredSize > 0) {\n          this.streamSinks[data.streamId].sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n        resolveCall(this.streamSinks[data.streamId].onPull).then(() => {\n          sendStreamResponse({ stream: 'pull_complete', success: true, });\n        }, (reason) => {\n          sendStreamResponse({ stream: 'pull_complete',\n                               success: false, reason, });\n        });\n        break;\n      case 'enqueue':\n        assert(this.streamControllers[data.streamId],\n               'enqueue should have stream controller');\n        if (!this.streamControllers[data.streamId].isClosed) {\n          this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n        }\n        break;\n      case 'close':\n        assert(this.streamControllers[data.streamId],\n               'close should have stream controller');\n        if (this.streamControllers[data.streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[data.streamId].isClosed = true;\n        this.streamControllers[data.streamId].controller.close();\n        deleteStreamController();\n        break;\n      case 'error':\n        assert(this.streamControllers[data.streamId],\n               'error should have stream controller');\n        this.streamControllers[data.streamId].controller.\n          error(wrapReason(data.reason));\n        deleteStreamController();\n        break;\n      case 'cancel_complete':\n        resolveOrReject(this.streamControllers[data.streamId].cancelCall,\n                        data.success, wrapReason(data.reason));\n        deleteStreamController();\n        break;\n      case 'cancel':\n        if (!this.streamSinks[data.streamId]) {\n          break;\n        }\n        resolveCall(this.streamSinks[data.streamId].onCancel,\n                    [wrapReason(data.reason)]).then(() => {\n          sendStreamResponse({ stream: 'cancel_complete', success: true, });\n        }, (reason) => {\n          sendStreamResponse({ stream: 'cancel_complete',\n                               success: false, reason, });\n        });\n        this.streamSinks[data.streamId].sinkCapability.\n          reject(wrapReason(data.reason));\n        this.streamSinks[data.streamId].isCancelled = true;\n        delete this.streamSinks[data.streamId];\n        break;\n      default:\n        throw new Error('Unexpected stream case');\n    }\n  },\n\n  /**\n   * Sends raw message to the comObj.\n   * @private\n   * @param {Object} message - Raw message.\n   * @param transfers List of transfers/ArrayBuffers, or undefined.\n   */\n  postMessage(message, transfers) {\n    if (transfers && this.postMessageTransfers) {\n      this.comObj.postMessage(message, transfers);\n    } else {\n      this.comObj.postMessage(message);\n    }\n  },\n\n  destroy() {\n    this.comObj.removeEventListener('message', this._onComObjOnMessage);\n  },\n};\n\nexport {\n  MessageHandler,\n};\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n  Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n  // Restore the original runtime.\n  g.regeneratorRuntime = oldRuntime;\n} else {\n  // Remove the global property added by runtime.js.\n  try {\n    delete g.regeneratorRuntime;\n  } catch(e) {\n    g.regeneratorRuntime = undefined;\n  }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  var inModule = typeof module === \"object\";\n  var runtime = global.regeneratorRuntime;\n  if (runtime) {\n    if (inModule) {\n      // If regeneratorRuntime is defined globally and we're in a module,\n      // make the exports object identical to regeneratorRuntime.\n      module.exports = runtime;\n    }\n    // Don't bother evaluating the rest of this file if the runtime was\n    // already defined globally.\n    return;\n  }\n\n  // Define the runtime globally (as expected by generated code) as either\n  // module.exports (if we're in a module) or a new, empty object.\n  runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  runtime.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] =\n    GeneratorFunction.displayName = \"GeneratorFunction\";\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      prototype[method] = function(arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n\n  runtime.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  runtime.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  runtime.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return Promise.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration. If the Promise is rejected, however, the\n          // result for this iteration will be rejected with the same\n          // reason. Note that rejections of yielded Promises are not\n          // thrown back into the generator function, as is the case\n          // when an awaited Promise is rejected. This difference in\n          // behavior between yield and await is important, because it\n          // allows the consumer to decide what to do with the yielded\n          // rejection (swallow it and continue, manually .throw it back\n          // into the generator, abandon iteration, whatever). With\n          // await, by contrast, there is no opportunity to examine the\n          // rejection reason outside the generator function, so the\n          // only option is to throw it from the await expression, and\n          // let the generator function handle the exception.\n          result.value = unwrapped;\n          resolve(result);\n        }, reject);\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  runtime.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList)\n    );\n\n    return runtime.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        if (delegate.iterator.return) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  Gp[toStringTagSymbol] = \"Generator\";\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  runtime.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  runtime.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n})(\n  // In sloppy mode, unbound `this` refers to the global object, fallback to\n  // Function constructor if we're in global strict mode. That is sadly a form\n  // of indirect eval which violates Content Security Policy.\n  (function() { return this })() || Function(\"return this\")()\n);\n","module.exports = function(module) {\r\n\tif (!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '../shared/util';\nimport { SimpleXMLParser } from './xml_parser';\n\nclass Metadata {\n  constructor(data) {\n    assert(typeof data === 'string', 'Metadata: input is not a string');\n\n    // Ghostscript may produce invalid metadata, so try to repair that first.\n    data = this._repair(data);\n\n    // Convert the string to an XML document.\n    let parser = new SimpleXMLParser();\n    const xmlDocument = parser.parseFromString(data);\n\n    this._metadata = Object.create(null);\n\n    if (xmlDocument) {\n      this._parse(xmlDocument);\n    }\n  }\n\n  _repair(data) {\n    return data.replace(/>\\\\376\\\\377([^<]+)/g, function(all, codes) {\n      let bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g,\n          function(code, d1, d2, d3) {\n        return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n      }).replace(/&(amp|apos|gt|lt|quot);/g, function(str, name) {\n        switch (name) {\n          case 'amp':\n            return '&';\n          case 'apos':\n            return '\\'';\n          case 'gt':\n            return '>';\n          case 'lt':\n            return '<';\n          case 'quot':\n            return '\\\"';\n        }\n        throw new Error(`_repair: ${name} isn't defined.`);\n      });\n\n      let chars = '';\n      for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n        let code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n        if (code >= 32 && code < 127 && code !== 60 && code !== 62 &&\n            code !== 38) {\n          chars += String.fromCharCode(code);\n        } else {\n          chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';\n        }\n      }\n\n      return '>' + chars;\n    });\n  }\n\n  _parse(xmlDocument) {\n    let rdf = xmlDocument.documentElement;\n\n    if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in <xmpmeta>\n      rdf = rdf.firstChild;\n      while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {\n        rdf = rdf.nextSibling;\n      }\n    }\n\n    let nodeName = rdf ? rdf.nodeName.toLowerCase() : null;\n    if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {\n      return;\n    }\n\n    let children = rdf.childNodes;\n    for (let i = 0, ii = children.length; i < ii; i++) {\n      let desc = children[i];\n      if (desc.nodeName.toLowerCase() !== 'rdf:description') {\n        continue;\n      }\n\n      for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {\n        if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {\n          let entry = desc.childNodes[j];\n          let name = entry.nodeName.toLowerCase();\n\n          this._metadata[name] = entry.textContent.trim();\n        }\n      }\n    }\n  }\n\n  get(name) {\n    return this._metadata[name] || null;\n  }\n\n  getAll() {\n    return this._metadata;\n  }\n\n  has(name) {\n    return typeof this._metadata[name] !== 'undefined';\n  }\n}\n\nexport {\n  Metadata,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// The code for XMLParserBase copied from\n// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts\n\nconst XMLParserErrorCode = {\n  NoError: 0,\n  EndOfDocument: -1,\n  UnterminatedCdat: -2,\n  UnterminatedXmlDeclaration: -3,\n  UnterminatedDoctypeDeclaration: -4,\n  UnterminatedComment: -5,\n  MalformedElement: -6,\n  OutOfMemory: -7,\n  UnterminatedAttributeValue: -8,\n  UnterminatedElement: -9,\n  ElementNeverBegun: -10,\n};\n\nfunction isWhitespace(s, index) {\n  const ch = s[index];\n  return ch === ' ' || ch === '\\n' || ch === '\\r' || ch === '\\t';\n}\n\nfunction isWhitespaceString(s) {\n  for (let i = 0, ii = s.length; i < ii; i++) {\n    if (!isWhitespace(s, i)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nclass XMLParserBase {\n  _resolveEntities(s) {\n    return s.replace(/&([^;]+);/g, function (all, entity) {\n      if (entity.substring(0, 2) === '#x') {\n        return String.fromCharCode(parseInt(entity.substring(2), 16));\n      } else if (entity.substring(0, 1) === '#') {\n        return String.fromCharCode(parseInt(entity.substring(1), 10));\n      }\n      switch (entity) {\n        case 'lt':\n          return '<';\n        case 'gt':\n          return '>';\n        case 'amp':\n          return '&';\n        case 'quot':\n          return '\\\"';\n      }\n      return this.onResolveEntity(entity);\n    });\n  }\n\n  _parseContent(s, start) {\n    let pos = start, name, attributes = [];\n\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n\n    while (pos < s.length && !isWhitespace(s, pos) &&\n           s[pos] !== '>' && s[pos] !== '/') {\n      ++pos;\n    }\n    name = s.substring(start, pos);\n    skipWs();\n    while (pos < s.length && s[pos] !== '>' &&\n           s[pos] !== '/' && s[pos] !== '?') {\n      skipWs();\n      let attrName = '', attrValue = '';\n      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== '=') {\n        attrName += s[pos];\n        ++pos;\n      }\n      skipWs();\n      if (s[pos] !== '=') {\n        return null;\n      }\n      ++pos;\n      skipWs();\n      const attrEndChar = s[pos];\n      if (attrEndChar !== '\\\"' && attrEndChar !== '\\'') {\n        return null;\n      }\n      const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n      if (attrEndIndex < 0) {\n        return null;\n      }\n      attrValue = s.substring(pos, attrEndIndex);\n      attributes.push({\n        name: attrName,\n        value: this._resolveEntities(attrValue),\n      });\n      pos = attrEndIndex + 1;\n      skipWs();\n    }\n    return {\n      name,\n      attributes,\n      parsed: pos - start,\n    };\n  }\n\n  _parseProcessingInstruction(s, start) {\n    let pos = start, name, value;\n\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n\n    while (pos < s.length && !isWhitespace(s, pos) &&\n           s[pos] !== '>' && s[pos] !== '/') {\n      ++pos;\n    }\n    name = s.substring(start, pos);\n    skipWs();\n    const attrStart = pos;\n    while (pos < s.length && (s[pos] !== '?' || s[pos + 1] !== '>')) {\n      ++pos;\n    }\n    value = s.substring(attrStart, pos);\n    return {\n      name,\n      value,\n      parsed: pos - start,\n    };\n  }\n\n  parseXml(s) {\n    let i = 0;\n    while (i < s.length) {\n      const ch = s[i];\n      let j = i;\n      if (ch === '<') {\n        ++j;\n        const ch2 = s[j];\n        let q;\n        switch (ch2) {\n          case '/':\n            ++j;\n            q = s.indexOf('>', j);\n            if (q < 0) {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n            this.onEndElement(s.substring(j, q));\n            j = q + 1;\n            break;\n          case '?':\n            ++j;\n            const pi = this._parseProcessingInstruction(s, j);\n            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== '?>') {\n              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n              return;\n            }\n            this.onPi(pi.name, pi.value);\n            j += pi.parsed + 2;\n            break;\n          case '!':\n            if (s.substring(j + 1, j + 3) === '--') {\n              q = s.indexOf('-->', j + 3);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedComment);\n                return;\n              }\n              this.onComment(s.substring(j + 3, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === '[CDATA[') {\n              q = s.indexOf(']]>', j + 8);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedCdat);\n                return;\n              }\n              this.onCdata(s.substring(j + 8, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === 'DOCTYPE') {\n              const q2 = s.indexOf('[', j + 8);\n              let complexDoctype = false;\n              q = s.indexOf('>', j + 8);\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                return;\n              }\n              if (q2 > 0 && q > q2) {\n                q = s.indexOf(']>', j + 8);\n                if (q < 0) {\n                  this.onError(\n                    XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                  return;\n                }\n                complexDoctype = true;\n              }\n              const doctypeContent =\n                s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n              this.onDoctype(doctypeContent);\n              j = q + (complexDoctype ? 2 : 1);\n            } else {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n            break;\n          default:\n            const content = this._parseContent(s, j);\n            if (content === null) {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n            let isClosed = false;\n            if (s.substring(j + content.parsed,\n                            j + content.parsed + 2) === '/>') {\n              isClosed = true;\n            } else if (s.substring(j + content.parsed,\n                       j + content.parsed + 1) !== '>') {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n            this.onBeginElement(content.name, content.attributes, isClosed);\n            j += content.parsed + (isClosed ? 2 : 1);\n            break;\n        }\n      } else {\n        while (j < s.length && s[j] !== '<') {\n          j++;\n        }\n        const text = s.substring(i, j);\n        this.onText(this._resolveEntities(text));\n      }\n      i = j;\n    }\n  }\n\n  onResolveEntity(name) {\n    return `&${name};`;\n  }\n\n  onPi(name, value) { }\n\n  onComment(text) { }\n\n  onCdata(text) { }\n\n  onDoctype(doctypeContent) { }\n\n  onText(text) { }\n\n  onBeginElement(name, attributes, isEmpty) { }\n\n  onEndElement(name) { }\n\n  onError(code) { }\n}\n\nclass SimpleDOMNode {\n  constructor(nodeName, nodeValue) {\n    this.nodeName = nodeName;\n    this.nodeValue = nodeValue;\n\n    Object.defineProperty(this, 'parentNode', { value: null, writable: true, });\n  }\n\n  get firstChild() {\n    return this.childNodes[0];\n  }\n\n  get nextSibling() {\n    let index = this.parentNode.childNodes.indexOf(this);\n    return this.parentNode.childNodes[index + 1];\n  }\n\n  get textContent() {\n    if (!this.childNodes) {\n      return this.nodeValue || '';\n    }\n    return this.childNodes.map(function(child) {\n      return child.textContent;\n    }).join('');\n  }\n\n  hasChildNodes() {\n    return this.childNodes && this.childNodes.length > 0;\n  }\n}\n\nclass SimpleXMLParser extends XMLParserBase {\n  constructor() {\n    super();\n    this._currentFragment = null;\n    this._stack = null;\n    this._errorCode = XMLParserErrorCode.NoError;\n  }\n\n  parseFromString(data) {\n    this._currentFragment = [];\n    this._stack = [];\n    this._errorCode = XMLParserErrorCode.NoError;\n\n    this.parseXml(data);\n\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\n      return undefined; // return undefined on error\n    }\n\n    // We should only have one root.\n    const [documentElement] = this._currentFragment;\n    if (!documentElement) {\n      return undefined; // Return undefined if no root was found.\n    }\n    return { documentElement, };\n  }\n\n  onResolveEntity(name) {\n    switch (name) {\n      case 'apos':\n        return '\\'';\n    }\n    return super.onResolveEntity(name);\n  }\n\n  onText(text) {\n    if (isWhitespaceString(text)) {\n      return;\n    }\n    const node = new SimpleDOMNode('#text', text);\n    this._currentFragment.push(node);\n  }\n\n  onCdata(text) {\n    const node = new SimpleDOMNode('#text', text);\n    this._currentFragment.push(node);\n  }\n\n  onBeginElement(name, attributes, isEmpty) {\n    const node = new SimpleDOMNode(name);\n    node.childNodes = [];\n    this._currentFragment.push(node);\n    if (isEmpty) {\n      return;\n    }\n    this._stack.push(this._currentFragment);\n    this._currentFragment = node.childNodes;\n  }\n\n  onEndElement(name) {\n    this._currentFragment = this._stack.pop();\n    const lastElement = this._currentFragment[this._currentFragment.length - 1];\n    for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n      lastElement.childNodes[i].parentNode = lastElement;\n    }\n  }\n\n  onError(code) {\n    this._errorCode = code;\n  }\n}\n\nexport {\n  SimpleXMLParser,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from '../shared/util';\n\n /** @implements {IPDFStream} */\nvar PDFDataTransportStream = (function PDFDataTransportStreamClosure() {\n  function PDFDataTransportStream(params, pdfDataRangeTransport) {\n    assert(pdfDataRangeTransport);\n\n    this._queuedChunks = [];\n    var initialData = params.initialData;\n    if (initialData && initialData.length > 0) {\n      let buffer = new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !params.disableStream;\n    this._isRangeSupported = !params.disableRange;\n    this._contentLength = params.length;\n\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n\n    this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({ begin, chunk, });\n    });\n\n    this._pdfDataRangeTransport.addProgressListener((loaded) => {\n      this._onProgress({ loaded, });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveReadListener((chunk) => {\n      this._onReceiveData({ chunk, });\n    });\n\n    this._pdfDataRangeTransport.transportReady();\n  }\n  PDFDataTransportStream.prototype = {\n    _onReceiveData: function PDFDataTransportStream_onReceiveData(args) {\n       let buffer = new Uint8Array(args.chunk).buffer;\n       if (args.begin === undefined) {\n         if (this._fullRequestReader) {\n           this._fullRequestReader._enqueue(buffer);\n         } else {\n           this._queuedChunks.push(buffer);\n         }\n       } else {\n         var found = this._rangeReaders.some(function (rangeReader) {\n           if (rangeReader._begin !== args.begin) {\n             return false;\n           }\n           rangeReader._enqueue(buffer);\n           return true;\n         });\n         assert(found);\n       }\n    },\n\n    _onProgress: function PDFDataTransportStream_onDataProgress(evt) {\n       if (this._rangeReaders.length > 0) {\n         // Reporting to first range reader.\n         var firstReader = this._rangeReaders[0];\n         if (firstReader.onProgress) {\n           firstReader.onProgress({ loaded: evt.loaded, });\n         }\n       }\n    },\n\n    _removeRangeReader:\n        function PDFDataTransportStream_removeRangeReader(reader) {\n      var i = this._rangeReaders.indexOf(reader);\n      if (i >= 0) {\n        this._rangeReaders.splice(i, 1);\n      }\n    },\n\n    getFullReader: function PDFDataTransportStream_getFullReader() {\n      assert(!this._fullRequestReader);\n      var queuedChunks = this._queuedChunks;\n      this._queuedChunks = null;\n      return new PDFDataTransportStreamReader(this, queuedChunks);\n    },\n\n    getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) {\n      var reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n      this._pdfDataRangeTransport.requestDataRange(begin, end);\n      this._rangeReaders.push(reader);\n      return reader;\n    },\n\n    cancelAllRequests:\n        function PDFDataTransportStream_cancelAllRequests(reason) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader.cancel(reason);\n      }\n      var readers = this._rangeReaders.slice(0);\n      readers.forEach(function (rangeReader) {\n        rangeReader.cancel(reason);\n      });\n      this._pdfDataRangeTransport.abort();\n    },\n  };\n\n  /** @implements {IPDFStreamReader} */\n  function PDFDataTransportStreamReader(stream, queuedChunks) {\n    this._stream = stream;\n    this._done = false;\n    this._filename = null;\n    this._queuedChunks = queuedChunks || [];\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n\n    this.onProgress = null; // not used\n  }\n  PDFDataTransportStreamReader.prototype = {\n    _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) {\n      if (this._done) {\n        return; // ignore new data\n      }\n      if (this._requests.length > 0) {\n        var requestCapability = this._requests.shift();\n        requestCapability.resolve({ value: chunk, done: false, });\n        return;\n      }\n      this._queuedChunks.push(chunk);\n    },\n\n    get headersReady() {\n      return this._headersReady;\n    },\n\n    get filename() {\n      return this._filename;\n    },\n\n    get isRangeSupported() {\n      return this._stream._isRangeSupported;\n    },\n\n    get isStreamingSupported() {\n      return this._stream._isStreamingSupported;\n    },\n\n    get contentLength() {\n      return this._stream._contentLength;\n    },\n\n    async read() {\n      if (this._queuedChunks.length > 0) {\n        var chunk = this._queuedChunks.shift();\n        return { value: chunk, done: false, };\n      }\n      if (this._done) {\n        return { value: undefined, done: true, };\n      }\n      var requestCapability = createPromiseCapability();\n      this._requests.push(requestCapability);\n      return requestCapability.promise;\n    },\n\n    cancel: function PDFDataTransportStreamReader_cancel(reason) {\n      this._done = true;\n      this._requests.forEach(function (requestCapability) {\n        requestCapability.resolve({ value: undefined, done: true, });\n      });\n      this._requests = [];\n    },\n  };\n\n  /** @implements {IPDFStreamRangeReader} */\n  function PDFDataTransportStreamRangeReader(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n\n    this.onProgress = null;\n  }\n  PDFDataTransportStreamRangeReader.prototype = {\n    _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) {\n      if (this._done) {\n        return; // ignore new data\n      }\n      if (this._requests.length === 0) {\n        this._queuedChunk = chunk;\n      } else {\n        var requestsCapability = this._requests.shift();\n        requestsCapability.resolve({ value: chunk, done: false, });\n        this._requests.forEach(function (requestCapability) {\n          requestCapability.resolve({ value: undefined, done: true, });\n        });\n        this._requests = [];\n      }\n      this._done = true;\n      this._stream._removeRangeReader(this);\n    },\n\n    get isStreamingSupported() {\n      return false;\n    },\n\n    async read() {\n      if (this._queuedChunk) {\n        let chunk = this._queuedChunk;\n        this._queuedChunk = null;\n        return { value: chunk, done: false, };\n      }\n      if (this._done) {\n        return { value: undefined, done: true, };\n      }\n      var requestCapability = createPromiseCapability();\n      this._requests.push(requestCapability);\n      return requestCapability.promise;\n    },\n\n    cancel: function PDFDataTransportStreamRangeReader_cancel(reason) {\n      this._done = true;\n      this._requests.forEach(function (requestCapability) {\n        requestCapability.resolve({ value: undefined, done: true, });\n      });\n      this._requests = [];\n      this._stream._removeRangeReader(this);\n    },\n  };\n\n  return PDFDataTransportStream;\n})();\n\nexport {\n  PDFDataTransportStream,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-str */\n\nimport { shadow } from '../shared/util';\n\nclass WebGLContext {\n  constructor({ enable = false, }) {\n    this._enabled = enable === true;\n  }\n\n  get isEnabled() {\n    let enabled = this._enabled;\n    if (enabled) {\n      enabled = WebGLUtils.tryInitGL();\n    }\n    return shadow(this, 'isEnabled', enabled);\n  }\n\n  composeSMask({ layer, mask, properties, }) {\n    return WebGLUtils.composeSMask(layer, mask, properties);\n  }\n\n  drawFigures({ width, height, backgroundColor, figures, context, }) {\n    return WebGLUtils.drawFigures(width, height, backgroundColor, figures,\n                                  context);\n  }\n\n  clear() {\n    WebGLUtils.cleanup();\n  }\n}\n\nvar WebGLUtils = (function WebGLUtilsClosure() {\n  function loadShader(gl, code, shaderType) {\n    var shader = gl.createShader(shaderType);\n    gl.shaderSource(shader, code);\n    gl.compileShader(shader);\n    var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n    if (!compiled) {\n      var errorMsg = gl.getShaderInfoLog(shader);\n      throw new Error('Error during shader compilation: ' + errorMsg);\n    }\n    return shader;\n  }\n  function createVertexShader(gl, code) {\n    return loadShader(gl, code, gl.VERTEX_SHADER);\n  }\n  function createFragmentShader(gl, code) {\n    return loadShader(gl, code, gl.FRAGMENT_SHADER);\n  }\n  function createProgram(gl, shaders) {\n    var program = gl.createProgram();\n    for (var i = 0, ii = shaders.length; i < ii; ++i) {\n      gl.attachShader(program, shaders[i]);\n    }\n    gl.linkProgram(program);\n    var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n    if (!linked) {\n      var errorMsg = gl.getProgramInfoLog(program);\n      throw new Error('Error during program linking: ' + errorMsg);\n    }\n    return program;\n  }\n  function createTexture(gl, image, textureId) {\n    gl.activeTexture(textureId);\n    var texture = gl.createTexture();\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n\n    // Set the parameters so we can render any size image.\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\n    // Upload the image into the texture.\n    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n    return texture;\n  }\n\n  var currentGL, currentCanvas;\n  function generateGL() {\n    if (currentGL) {\n      return;\n    }\n\n    // The temporary canvas is used in the WebGL context.\n    currentCanvas = document.createElement('canvas');\n    currentGL = currentCanvas.getContext('webgl',\n      { premultipliedalpha: false, });\n  }\n\n  var smaskVertexShaderCode = '\\\n  attribute vec2 a_position;                                    \\\n  attribute vec2 a_texCoord;                                    \\\n                                                                \\\n  uniform vec2 u_resolution;                                    \\\n                                                                \\\n  varying vec2 v_texCoord;                                      \\\n                                                                \\\n  void main() {                                                 \\\n    vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0;   \\\n    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \\\n                                                                \\\n    v_texCoord = a_texCoord;                                    \\\n  }                                                             ';\n\n  var smaskFragmentShaderCode = '\\\n  precision mediump float;                                      \\\n                                                                \\\n  uniform vec4 u_backdrop;                                      \\\n  uniform int u_subtype;                                        \\\n  uniform sampler2D u_image;                                    \\\n  uniform sampler2D u_mask;                                     \\\n                                                                \\\n  varying vec2 v_texCoord;                                      \\\n                                                                \\\n  void main() {                                                 \\\n    vec4 imageColor = texture2D(u_image, v_texCoord);           \\\n    vec4 maskColor = texture2D(u_mask, v_texCoord);             \\\n    if (u_backdrop.a > 0.0) {                                   \\\n      maskColor.rgb = maskColor.rgb * maskColor.a +             \\\n                      u_backdrop.rgb * (1.0 - maskColor.a);     \\\n    }                                                           \\\n    float lum;                                                  \\\n    if (u_subtype == 0) {                                       \\\n      lum = maskColor.a;                                        \\\n    } else {                                                    \\\n      lum = maskColor.r * 0.3 + maskColor.g * 0.59 +            \\\n            maskColor.b * 0.11;                                 \\\n    }                                                           \\\n    imageColor.a *= lum;                                        \\\n    imageColor.rgb *= imageColor.a;                             \\\n    gl_FragColor = imageColor;                                  \\\n  }                                                             ';\n\n  var smaskCache = null;\n\n  function initSmaskGL() {\n    var canvas, gl;\n\n    generateGL();\n    canvas = currentCanvas;\n    currentCanvas = null;\n    gl = currentGL;\n    currentGL = null;\n\n    // setup a GLSL program\n    var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n    var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n    var program = createProgram(gl, [vertexShader, fragmentShader]);\n    gl.useProgram(program);\n\n    var cache = {};\n    cache.gl = gl;\n    cache.canvas = canvas;\n    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n    cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n    cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');\n    cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');\n\n    var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');\n    var texLayerLocation = gl.getUniformLocation(program, 'u_image');\n    var texMaskLocation = gl.getUniformLocation(program, 'u_mask');\n\n    // provide texture coordinates for the rectangle.\n    var texCoordBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n      0.0, 0.0,\n      1.0, 0.0,\n      0.0, 1.0,\n      0.0, 1.0,\n      1.0, 0.0,\n      1.0, 1.0]), gl.STATIC_DRAW);\n    gl.enableVertexAttribArray(texCoordLocation);\n    gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n\n    gl.uniform1i(texLayerLocation, 0);\n    gl.uniform1i(texMaskLocation, 1);\n\n    smaskCache = cache;\n  }\n\n  function composeSMask(layer, mask, properties) {\n    var width = layer.width, height = layer.height;\n\n    if (!smaskCache) {\n      initSmaskGL();\n    }\n    var cache = smaskCache, canvas = cache.canvas, gl = cache.gl;\n    canvas.width = width;\n    canvas.height = height;\n    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n    gl.uniform2f(cache.resolutionLocation, width, height);\n\n    if (properties.backdrop) {\n      gl.uniform4f(cache.resolutionLocation, properties.backdrop[0],\n                   properties.backdrop[1], properties.backdrop[2], 1);\n    } else {\n      gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n    }\n    gl.uniform1i(cache.subtypeLocation,\n                 properties.subtype === 'Luminosity' ? 1 : 0);\n\n    // Create a textures\n    var texture = createTexture(gl, layer, gl.TEXTURE0);\n    var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n\n    // Create a buffer and put a single clipspace rectangle in\n    // it (2 triangles)\n    var buffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n      0, 0,\n      width, 0,\n      0, height,\n      0, height,\n      width, 0,\n      width, height]), gl.STATIC_DRAW);\n    gl.enableVertexAttribArray(cache.positionLocation);\n    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n    // draw\n    gl.clearColor(0, 0, 0, 0);\n    gl.enable(gl.BLEND);\n    gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n    gl.clear(gl.COLOR_BUFFER_BIT);\n\n    gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n    gl.flush();\n\n    gl.deleteTexture(texture);\n    gl.deleteTexture(maskTexture);\n    gl.deleteBuffer(buffer);\n\n    return canvas;\n  }\n\n  var figuresVertexShaderCode = '\\\n  attribute vec2 a_position;                                    \\\n  attribute vec3 a_color;                                       \\\n                                                                \\\n  uniform vec2 u_resolution;                                    \\\n  uniform vec2 u_scale;                                         \\\n  uniform vec2 u_offset;                                        \\\n                                                                \\\n  varying vec4 v_color;                                         \\\n                                                                \\\n  void main() {                                                 \\\n    vec2 position = (a_position + u_offset) * u_scale;          \\\n    vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0;     \\\n    gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1);          \\\n                                                                \\\n    v_color = vec4(a_color / 255.0, 1.0);                       \\\n  }                                                             ';\n\n  var figuresFragmentShaderCode = '\\\n  precision mediump float;                                      \\\n                                                                \\\n  varying vec4 v_color;                                         \\\n                                                                \\\n  void main() {                                                 \\\n    gl_FragColor = v_color;                                     \\\n  }                                                             ';\n\n  var figuresCache = null;\n\n  function initFiguresGL() {\n    var canvas, gl;\n\n    generateGL();\n    canvas = currentCanvas;\n    currentCanvas = null;\n    gl = currentGL;\n    currentGL = null;\n\n    // setup a GLSL program\n    var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n    var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n    var program = createProgram(gl, [vertexShader, fragmentShader]);\n    gl.useProgram(program);\n\n    var cache = {};\n    cache.gl = gl;\n    cache.canvas = canvas;\n    cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n    cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');\n    cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');\n    cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n    cache.colorLocation = gl.getAttribLocation(program, 'a_color');\n\n    figuresCache = cache;\n  }\n\n  function drawFigures(width, height, backgroundColor, figures, context) {\n    if (!figuresCache) {\n      initFiguresGL();\n    }\n    var cache = figuresCache, canvas = cache.canvas, gl = cache.gl;\n\n    canvas.width = width;\n    canvas.height = height;\n    gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n    gl.uniform2f(cache.resolutionLocation, width, height);\n\n    // count triangle points\n    var count = 0;\n    var i, ii, rows;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      switch (figures[i].type) {\n        case 'lattice':\n          rows = (figures[i].coords.length / figures[i].verticesPerRow) | 0;\n          count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n          break;\n        case 'triangles':\n          count += figures[i].coords.length;\n          break;\n      }\n    }\n    // transfer data\n    var coords = new Float32Array(count * 2);\n    var colors = new Uint8Array(count * 3);\n    var coordsMap = context.coords, colorsMap = context.colors;\n    var pIndex = 0, cIndex = 0;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      var figure = figures[i], ps = figure.coords, cs = figure.colors;\n      switch (figure.type) {\n        case 'lattice':\n          var cols = figure.verticesPerRow;\n          rows = (ps.length / cols) | 0;\n          for (var row = 1; row < rows; row++) {\n            var offset = row * cols + 1;\n            for (var col = 1; col < cols; col++, offset++) {\n              coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n              coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n              coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n              coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n              coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n              coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n              colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n              colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n              colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n              colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n              colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n              colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n              colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n              colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n              colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n\n              coords[pIndex + 6] = coords[pIndex + 2];\n              coords[pIndex + 7] = coords[pIndex + 3];\n              coords[pIndex + 8] = coords[pIndex + 4];\n              coords[pIndex + 9] = coords[pIndex + 5];\n              coords[pIndex + 10] = coordsMap[ps[offset]];\n              coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n              colors[cIndex + 9] = colors[cIndex + 3];\n              colors[cIndex + 10] = colors[cIndex + 4];\n              colors[cIndex + 11] = colors[cIndex + 5];\n              colors[cIndex + 12] = colors[cIndex + 6];\n              colors[cIndex + 13] = colors[cIndex + 7];\n              colors[cIndex + 14] = colors[cIndex + 8];\n              colors[cIndex + 15] = colorsMap[cs[offset]];\n              colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n              colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n              pIndex += 12;\n              cIndex += 18;\n            }\n          }\n          break;\n        case 'triangles':\n          for (var j = 0, jj = ps.length; j < jj; j++) {\n            coords[pIndex] = coordsMap[ps[j]];\n            coords[pIndex + 1] = coordsMap[ps[j] + 1];\n            colors[cIndex] = colorsMap[cs[j]];\n            colors[cIndex + 1] = colorsMap[cs[j] + 1];\n            colors[cIndex + 2] = colorsMap[cs[j] + 2];\n            pIndex += 2;\n            cIndex += 3;\n          }\n          break;\n      }\n    }\n\n    // draw\n    if (backgroundColor) {\n      gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255,\n                    backgroundColor[2] / 255, 1.0);\n    } else {\n      gl.clearColor(0, 0, 0, 0);\n    }\n    gl.clear(gl.COLOR_BUFFER_BIT);\n\n    var coordsBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n    gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n    gl.enableVertexAttribArray(cache.positionLocation);\n    gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n    var colorsBuffer = gl.createBuffer();\n    gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n    gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n    gl.enableVertexAttribArray(cache.colorLocation);\n    gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false,\n                           0, 0);\n\n    gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n    gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n\n    gl.drawArrays(gl.TRIANGLES, 0, count);\n\n    gl.flush();\n\n    gl.deleteBuffer(coordsBuffer);\n    gl.deleteBuffer(colorsBuffer);\n\n    return canvas;\n  }\n\n  return {\n    tryInitGL() {\n      try {\n        generateGL();\n        return !!currentGL;\n      } catch (ex) { }\n      return false;\n    },\n\n    composeSMask,\n\n    drawFigures,\n\n    cleanup() {\n      if (smaskCache && smaskCache.canvas) {\n        smaskCache.canvas.width = 0;\n        smaskCache.canvas.height = 0;\n      }\n      if (figuresCache && figuresCache.canvas) {\n        figuresCache.canvas.width = 0;\n        figuresCache.canvas.height = 0;\n      }\n      smaskCache = null;\n      figuresCache = null;\n    },\n  };\n})();\n\nexport {\n  WebGLContext,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AbortException, createPromiseCapability, Util } from '../shared/util';\nimport globalScope from '../shared/global_scope';\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {TextContent} textContent - (optional) Text content to render\n *   (the object is returned by the page's getTextContent() method).\n * @property {ReadableStream} textContentStream - (optional) Text content\n *   stream to render (the stream is returned by the page's\n *   streamTextContent() method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {PageViewport} viewport - The target viewport to properly\n *   layout the text runs.\n * @property {Array} textDivs - (optional) HTML elements that are correspond\n *   the text items of the textContent input. This is output and shall be\n *   initially be set to empty array.\n * @property {Array} textContentItemsStr - (optional) Strings that correspond\n *   the `str` property of the text items of textContent input. This is output\n *   and shall be initially be set to empty array.\n * @property {number} timeout - (optional) Delay in milliseconds before\n *   rendering of the text  runs occurs.\n * @property {boolean} enhanceTextSelection - (optional) Whether to turn on the\n *   text selection enhancement.\n */\nvar renderTextLayer = (function renderTextLayerClosure() {\n  var MAX_TEXT_DIVS_TO_RENDER = 100000;\n\n  var NonWhitespaceRegexp = /\\S/;\n\n  function isAllWhitespace(str) {\n    return !NonWhitespaceRegexp.test(str);\n  }\n\n  // Text layers may contain many thousands of divs, and using `styleBuf` avoids\n  // creating many intermediate strings when building their 'style' properties.\n  var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0,\n                  'px; font-family: ', '', ';'];\n\n  function appendText(task, geom, styles) {\n    // Initialize all used properties to keep the caches monomorphic.\n    var textDiv = document.createElement('div');\n    var textDivProperties = {\n      style: null,\n      angle: 0,\n      canvasWidth: 0,\n      isWhitespace: false,\n      originalTransform: null,\n      paddingBottom: 0,\n      paddingLeft: 0,\n      paddingRight: 0,\n      paddingTop: 0,\n      scale: 1,\n    };\n\n    task._textDivs.push(textDiv);\n    if (isAllWhitespace(geom.str)) {\n      textDivProperties.isWhitespace = true;\n      task._textDivProperties.set(textDiv, textDivProperties);\n      return;\n    }\n\n    var tx = Util.transform(task._viewport.transform, geom.transform);\n    var angle = Math.atan2(tx[1], tx[0]);\n    var style = styles[geom.fontName];\n    if (style.vertical) {\n      angle += Math.PI / 2;\n    }\n    var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));\n    var fontAscent = fontHeight;\n    if (style.ascent) {\n      fontAscent = style.ascent * fontAscent;\n    } else if (style.descent) {\n      fontAscent = (1 + style.descent) * fontAscent;\n    }\n\n    var left;\n    var top;\n    if (angle === 0) {\n      left = tx[4];\n      top = tx[5] - fontAscent;\n    } else {\n      left = tx[4] + (fontAscent * Math.sin(angle));\n      top = tx[5] - (fontAscent * Math.cos(angle));\n    }\n    styleBuf[1] = left;\n    styleBuf[3] = top;\n    styleBuf[5] = fontHeight;\n    styleBuf[7] = style.fontFamily;\n    textDivProperties.style = styleBuf.join('');\n    textDiv.setAttribute('style', textDivProperties.style);\n\n    textDiv.textContent = geom.str;\n    // `fontName` is only used by the FontInspector, and we only use `dataset`\n    // here to make the font name available in the debugger.\n    if (task._fontInspectorEnabled) {\n      textDiv.dataset.fontName = geom.fontName;\n    }\n    if (angle !== 0) {\n      textDivProperties.angle = angle * (180 / Math.PI);\n    }\n    // We don't bother scaling single-char text divs, because it has very\n    // little effect on text highlighting. This makes scrolling on docs with\n    // lots of such divs a lot faster.\n    if (geom.str.length > 1) {\n      if (style.vertical) {\n        textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n      } else {\n        textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n      }\n    }\n    task._textDivProperties.set(textDiv, textDivProperties);\n    if (task._textContentStream) {\n      task._layoutText(textDiv);\n    }\n\n    if (task._enhanceTextSelection) {\n      var angleCos = 1, angleSin = 0;\n      if (angle !== 0) {\n        angleCos = Math.cos(angle);\n        angleSin = Math.sin(angle);\n      }\n      var divWidth = (style.vertical ? geom.height : geom.width) *\n                     task._viewport.scale;\n      var divHeight = fontHeight;\n\n      var m, b;\n      if (angle !== 0) {\n        m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n        b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n      } else {\n        b = [left, top, left + divWidth, top + divHeight];\n      }\n\n      task._bounds.push({\n        left: b[0],\n        top: b[1],\n        right: b[2],\n        bottom: b[3],\n        div: textDiv,\n        size: [divWidth, divHeight],\n        m,\n      });\n    }\n  }\n\n  function render(task) {\n    if (task._canceled) {\n      return;\n    }\n    var textDivs = task._textDivs;\n    var capability = task._capability;\n    var textDivsLength = textDivs.length;\n\n    // No point in rendering many divs as it would make the browser\n    // unusable even after the divs are rendered.\n    if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n      task._renderingDone = true;\n      capability.resolve();\n      return;\n    }\n\n    if (!task._textContentStream) {\n      for (var i = 0; i < textDivsLength; i++) {\n        task._layoutText(textDivs[i]);\n      }\n    }\n\n    task._renderingDone = true;\n    capability.resolve();\n  }\n\n  function expand(task) {\n    var bounds = task._bounds;\n    var viewport = task._viewport;\n\n    var expanded = expandBounds(viewport.width, viewport.height, bounds);\n    for (var i = 0; i < expanded.length; i++) {\n      var div = bounds[i].div;\n      var divProperties = task._textDivProperties.get(div);\n      if (divProperties.angle === 0) {\n        divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n        divProperties.paddingTop = bounds[i].top - expanded[i].top;\n        divProperties.paddingRight = expanded[i].right - bounds[i].right;\n        divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n        task._textDivProperties.set(div, divProperties);\n        continue;\n      }\n      // Box is rotated -- trying to find padding so rotated div will not\n      // exceed its expanded bounds.\n      var e = expanded[i], b = bounds[i];\n      var m = b.m, c = m[0], s = m[1];\n      // Finding intersections with expanded box.\n      var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n      var ts = new Float64Array(64);\n      points.forEach(function (p, i) {\n        var t = Util.applyTransform(p, m);\n        ts[i + 0] = c && (e.left - t[0]) / c;\n        ts[i + 4] = s && (e.top - t[1]) / s;\n        ts[i + 8] = c && (e.right - t[0]) / c;\n        ts[i + 12] = s && (e.bottom - t[1]) / s;\n\n        ts[i + 16] = s && (e.left - t[0]) / -s;\n        ts[i + 20] = c && (e.top - t[1]) / c;\n        ts[i + 24] = s && (e.right - t[0]) / -s;\n        ts[i + 28] = c && (e.bottom - t[1]) / c;\n\n        ts[i + 32] = c && (e.left - t[0]) / -c;\n        ts[i + 36] = s && (e.top - t[1]) / -s;\n        ts[i + 40] = c && (e.right - t[0]) / -c;\n        ts[i + 44] = s && (e.bottom - t[1]) / -s;\n\n        ts[i + 48] = s && (e.left - t[0]) / s;\n        ts[i + 52] = c && (e.top - t[1]) / -c;\n        ts[i + 56] = s && (e.right - t[0]) / s;\n        ts[i + 60] = c && (e.bottom - t[1]) / -c;\n      });\n      var findPositiveMin = function (ts, offset, count) {\n        var result = 0;\n        for (var i = 0; i < count; i++) {\n          var t = ts[offset++];\n          if (t > 0) {\n            result = result ? Math.min(t, result) : t;\n          }\n        }\n        return result;\n      };\n      // Not based on math, but to simplify calculations, using cos and sin\n      // absolute values to not exceed the box (it can but insignificantly).\n      var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n      divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n      divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n      divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n      divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n      task._textDivProperties.set(div, divProperties);\n    }\n  }\n\n  function expandBounds(width, height, boxes) {\n    var bounds = boxes.map(function (box, i) {\n      return {\n        x1: box.left,\n        y1: box.top,\n        x2: box.right,\n        y2: box.bottom,\n        index: i,\n        x1New: undefined,\n        x2New: undefined,\n      };\n    });\n    expandBoundsLTR(width, bounds);\n    var expanded = new Array(boxes.length);\n    bounds.forEach(function (b) {\n      var i = b.index;\n      expanded[i] = {\n        left: b.x1New,\n        top: 0,\n        right: b.x2New,\n        bottom: 0,\n      };\n    });\n\n    // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n    // array and objects.\n    boxes.map(function (box, i) {\n      var e = expanded[i], b = bounds[i];\n      b.x1 = box.top;\n      b.y1 = width - e.right;\n      b.x2 = box.bottom;\n      b.y2 = width - e.left;\n      b.index = i;\n      b.x1New = undefined;\n      b.x2New = undefined;\n    });\n    expandBoundsLTR(height, bounds);\n\n    bounds.forEach(function (b) {\n      var i = b.index;\n      expanded[i].top = b.x1New;\n      expanded[i].bottom = b.x2New;\n    });\n    return expanded;\n  }\n\n  function expandBoundsLTR(width, bounds) {\n    // Sorting by x1 coordinate and walk by the bounds in the same order.\n    bounds.sort(function (a, b) {\n      return a.x1 - b.x1 || a.index - b.index;\n    });\n\n    // First we see on the horizon is a fake boundary.\n    var fakeBoundary = {\n      x1: -Infinity,\n      y1: -Infinity,\n      x2: 0,\n      y2: Infinity,\n      index: -1,\n      x1New: 0,\n      x2New: 0,\n    };\n    var horizon = [{\n      start: -Infinity,\n      end: Infinity,\n      boundary: fakeBoundary,\n    }];\n\n    bounds.forEach(function (boundary) {\n      // Searching for the affected part of horizon.\n      // TODO red-black tree or simple binary search\n      var i = 0;\n      while (i < horizon.length && horizon[i].end <= boundary.y1) {\n        i++;\n      }\n      var j = horizon.length - 1;\n      while (j >= 0 && horizon[j].start >= boundary.y2) {\n        j--;\n      }\n\n      var horizonPart, affectedBoundary;\n      var q, k, maxXNew = -Infinity;\n      for (q = i; q <= j; q++) {\n        horizonPart = horizon[q];\n        affectedBoundary = horizonPart.boundary;\n        var xNew;\n        if (affectedBoundary.x2 > boundary.x1) {\n          // In the middle of the previous element, new x shall be at the\n          // boundary start. Extending if further if the affected boundary\n          // placed on top of the current one.\n          xNew = affectedBoundary.index > boundary.index ?\n            affectedBoundary.x1New : boundary.x1;\n        } else if (affectedBoundary.x2New === undefined) {\n          // We have some space in between, new x in middle will be a fair\n          // choice.\n          xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n        } else {\n          // Affected boundary has x2new set, using it as new x.\n          xNew = affectedBoundary.x2New;\n        }\n        if (xNew > maxXNew) {\n          maxXNew = xNew;\n        }\n      }\n\n      // Set new x1 for current boundary.\n      boundary.x1New = maxXNew;\n\n      // Adjusts new x2 for the affected boundaries.\n      for (q = i; q <= j; q++) {\n        horizonPart = horizon[q];\n        affectedBoundary = horizonPart.boundary;\n        if (affectedBoundary.x2New === undefined) {\n          // Was not set yet, choosing new x if possible.\n          if (affectedBoundary.x2 > boundary.x1) {\n            // Current and affected boundaries intersect. If affected boundary\n            // is placed on top of the current, shrinking the affected.\n            if (affectedBoundary.index > boundary.index) {\n              affectedBoundary.x2New = affectedBoundary.x2;\n            }\n          } else {\n            affectedBoundary.x2New = maxXNew;\n          }\n        } else if (affectedBoundary.x2New > maxXNew) {\n          // Affected boundary is touching new x, pushing it back.\n          affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n        }\n      }\n\n      // Fixing the horizon.\n      var changedHorizon = [], lastBoundary = null;\n      for (q = i; q <= j; q++) {\n        horizonPart = horizon[q];\n        affectedBoundary = horizonPart.boundary;\n        // Checking which boundary will be visible.\n        var useBoundary = affectedBoundary.x2 > boundary.x2 ?\n          affectedBoundary : boundary;\n        if (lastBoundary === useBoundary) {\n          // Merging with previous.\n          changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n        } else {\n          changedHorizon.push({\n            start: horizonPart.start,\n            end: horizonPart.end,\n            boundary: useBoundary,\n          });\n          lastBoundary = useBoundary;\n        }\n      }\n      if (horizon[i].start < boundary.y1) {\n        changedHorizon[0].start = boundary.y1;\n        changedHorizon.unshift({\n          start: horizon[i].start,\n          end: boundary.y1,\n          boundary: horizon[i].boundary,\n        });\n      }\n      if (boundary.y2 < horizon[j].end) {\n        changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n        changedHorizon.push({\n          start: boundary.y2,\n          end: horizon[j].end,\n          boundary: horizon[j].boundary,\n        });\n      }\n\n      // Set x2 new of boundary that is no longer visible (see overlapping case\n      // above).\n      // TODO more efficient, e.g. via reference counting.\n      for (q = i; q <= j; q++) {\n        horizonPart = horizon[q];\n        affectedBoundary = horizonPart.boundary;\n        if (affectedBoundary.x2New !== undefined) {\n          continue;\n        }\n        var used = false;\n        for (k = i - 1; !used && k >= 0 &&\n        horizon[k].start >= affectedBoundary.y1; k--) {\n          used = horizon[k].boundary === affectedBoundary;\n        }\n        for (k = j + 1; !used && k < horizon.length &&\n        horizon[k].end <= affectedBoundary.y2; k++) {\n          used = horizon[k].boundary === affectedBoundary;\n        }\n        for (k = 0; !used && k < changedHorizon.length; k++) {\n          used = changedHorizon[k].boundary === affectedBoundary;\n        }\n        if (!used) {\n          affectedBoundary.x2New = maxXNew;\n        }\n      }\n\n      Array.prototype.splice.apply(horizon,\n        [i, j - i + 1].concat(changedHorizon));\n    });\n\n    // Set new x2 for all unset boundaries.\n    horizon.forEach(function (horizonPart) {\n      var affectedBoundary = horizonPart.boundary;\n      if (affectedBoundary.x2New === undefined) {\n        affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n      }\n    });\n  }\n\n  /**\n   * Text layer rendering task.\n   *\n   * @param {TextContent} textContent\n   * @param {HTMLElement} container\n   * @param {PageViewport} viewport\n   * @param {Array} textDivs\n   * @param {boolean} enhanceTextSelection\n   * @private\n   */\n  function TextLayerRenderTask({ textContent, textContentStream, container,\n                                 viewport, textDivs, textContentItemsStr,\n                                 enhanceTextSelection, }) {\n    this._textContent = textContent;\n    this._textContentStream = textContentStream;\n    this._container = container;\n    this._viewport = viewport;\n    this._textDivs = textDivs || [];\n    this._textContentItemsStr = textContentItemsStr || [];\n    this._enhanceTextSelection = !!enhanceTextSelection;\n    this._fontInspectorEnabled = !!(globalScope.FontInspector &&\n                                    globalScope.FontInspector.enabled);\n\n    this._reader = null;\n    this._layoutTextLastFontSize = null;\n    this._layoutTextLastFontFamily = null;\n    this._layoutTextCtx = null;\n    this._textDivProperties = new WeakMap();\n    this._renderingDone = false;\n    this._canceled = false;\n    this._capability = createPromiseCapability();\n    this._renderTimer = null;\n    this._bounds = [];\n  }\n  TextLayerRenderTask.prototype = {\n    get promise() {\n      return this._capability.promise;\n    },\n\n    cancel: function TextLayer_cancel() {\n      if (this._reader) {\n        this._reader.cancel(new AbortException('text layer task cancelled'));\n        this._reader = null;\n      }\n      this._canceled = true;\n      if (this._renderTimer !== null) {\n        clearTimeout(this._renderTimer);\n        this._renderTimer = null;\n      }\n      this._capability.reject('canceled');\n    },\n\n    _processItems(items, styleCache) {\n      for (let i = 0, len = items.length; i < len; i++) {\n        this._textContentItemsStr.push(items[i].str);\n        appendText(this, items[i], styleCache);\n      }\n    },\n\n    _layoutText(textDiv) {\n      let textLayerFrag = this._container;\n\n      let textDivProperties = this._textDivProperties.get(textDiv);\n      if (textDivProperties.isWhitespace) {\n        return;\n      }\n\n      let fontSize = textDiv.style.fontSize;\n      let fontFamily = textDiv.style.fontFamily;\n\n      // Only build font string and set to context if different from last.\n      if (fontSize !== this._layoutTextLastFontSize ||\n          fontFamily !== this._layoutTextLastFontFamily) {\n        this._layoutTextCtx.font = fontSize + ' ' + fontFamily;\n        this._layoutTextLastFontSize = fontSize;\n        this._layoutTextLastFontFamily = fontFamily;\n      }\n\n      let width = this._layoutTextCtx.measureText(textDiv.textContent).width;\n\n      let transform = '';\n      if (textDivProperties.canvasWidth !== 0 && width > 0) {\n        textDivProperties.scale = textDivProperties.canvasWidth / width;\n        transform = 'scaleX(' + textDivProperties.scale + ')';\n      }\n      if (textDivProperties.angle !== 0) {\n        transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;\n      }\n      if (transform !== '') {\n        textDivProperties.originalTransform = transform;\n        textDiv.style.transform = transform;\n      }\n      this._textDivProperties.set(textDiv, textDivProperties);\n      textLayerFrag.appendChild(textDiv);\n    },\n\n    _render: function TextLayer_render(timeout) {\n      let capability = createPromiseCapability();\n      let styleCache = Object.create(null);\n\n      // The temporary canvas is used to measure text length in the DOM.\n      let canvas = document.createElement('canvas');\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('FIREFOX || MOZCENTRAL || GENERIC')) {\n         canvas.mozOpaque = true;\n      }\n      this._layoutTextCtx = canvas.getContext('2d', { alpha: false, });\n\n      if (this._textContent) {\n        let textItems = this._textContent.items;\n        let textStyles = this._textContent.styles;\n        this._processItems(textItems, textStyles);\n        capability.resolve();\n      } else if (this._textContentStream) {\n        let pump = () => {\n          this._reader.read().then(({ value, done, }) => {\n            if (done) {\n              capability.resolve();\n              return;\n            }\n\n            Object.assign(styleCache, value.styles);\n            this._processItems(value.items, styleCache);\n            pump();\n          }, capability.reject);\n        };\n\n        this._reader = this._textContentStream.getReader();\n        pump();\n      } else {\n        throw new Error('Neither \"textContent\" nor \"textContentStream\"' +\n          ' parameters specified.');\n      }\n\n      capability.promise.then(() => {\n        styleCache = null;\n        if (!timeout) { // Render right away\n          render(this);\n        } else { // Schedule\n          this._renderTimer = setTimeout(() => {\n            render(this);\n            this._renderTimer = null;\n          }, timeout);\n        }\n      }, this._capability.reject);\n    },\n\n    expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n      if (!this._enhanceTextSelection || !this._renderingDone) {\n        return;\n      }\n      if (this._bounds !== null) {\n        expand(this);\n        this._bounds = null;\n      }\n\n      for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n        var div = this._textDivs[i];\n        var divProperties = this._textDivProperties.get(div);\n\n        if (divProperties.isWhitespace) {\n          continue;\n        }\n        if (expandDivs) {\n          var transform = '', padding = '';\n\n          if (divProperties.scale !== 1) {\n            transform = 'scaleX(' + divProperties.scale + ')';\n          }\n          if (divProperties.angle !== 0) {\n            transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;\n          }\n          if (divProperties.paddingLeft !== 0) {\n            padding += ' padding-left: ' +\n              (divProperties.paddingLeft / divProperties.scale) + 'px;';\n            transform += ' translateX(' +\n              (-divProperties.paddingLeft / divProperties.scale) + 'px)';\n          }\n          if (divProperties.paddingTop !== 0) {\n            padding += ' padding-top: ' + divProperties.paddingTop + 'px;';\n            transform += ' translateY(' + (-divProperties.paddingTop) + 'px)';\n          }\n          if (divProperties.paddingRight !== 0) {\n            padding += ' padding-right: ' +\n              (divProperties.paddingRight / divProperties.scale) + 'px;';\n          }\n          if (divProperties.paddingBottom !== 0) {\n            padding += ' padding-bottom: ' +\n              divProperties.paddingBottom + 'px;';\n          }\n\n          if (padding !== '') {\n            div.setAttribute('style', divProperties.style + padding);\n          }\n          if (transform !== '') {\n            div.style.transform = transform;\n          }\n        } else {\n          div.style.padding = 0;\n          div.style.transform = divProperties.originalTransform || '';\n        }\n      }\n    },\n  };\n\n  /**\n   * Starts rendering of the text layer.\n   *\n   * @param {TextLayerRenderParameters} renderParameters\n   * @returns {TextLayerRenderTask}\n   */\n  function renderTextLayer(renderParameters) {\n    var task = new TextLayerRenderTask({\n      textContent: renderParameters.textContent,\n      textContentStream: renderParameters.textContentStream,\n      container: renderParameters.container,\n      viewport: renderParameters.viewport,\n      textDivs: renderParameters.textDivs,\n      textContentItemsStr: renderParameters.textContentItemsStr,\n      enhanceTextSelection: renderParameters.enhanceTextSelection,\n    });\n    task._render(renderParameters.timeout);\n    return task;\n  }\n\n  return renderTextLayer;\n})();\n\nexport {\n  renderTextLayer,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  addLinkAttributes, DOMSVGFactory, getFilenameFromUrl, LinkTarget\n} from './dom_utils';\nimport {\n  AnnotationBorderStyleType, AnnotationType, stringToPDFString, unreachable,\n  Util, warn\n} from '../shared/util';\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPage} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} imageResourcesPath - (optional) Path for image resources,\n *   mainly for annotation icons. Include trailing slash.\n * @property {boolean} renderInteractiveForms\n * @property {Object} svgFactory\n */\n\nclass AnnotationElementFactory {\n  /**\n   * @param {AnnotationElementParameters} parameters\n   * @returns {AnnotationElement}\n   */\n  static create(parameters) {\n    let subtype = parameters.data.annotationType;\n\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n\n      case AnnotationType.WIDGET:\n        let fieldType = parameters.data.fieldType;\n\n        switch (fieldType) {\n          case 'Tx':\n            return new TextWidgetAnnotationElement(parameters);\n          case 'Btn':\n            if (parameters.data.radioButton) {\n              return new RadioButtonWidgetAnnotationElement(parameters);\n            } else if (parameters.data.checkBox) {\n              return new CheckboxWidgetAnnotationElement(parameters);\n            }\n            return new PushButtonWidgetAnnotationElement(parameters);\n          case 'Ch':\n            return new ChoiceWidgetAnnotationElement(parameters);\n        }\n        return new WidgetAnnotationElement(parameters);\n\n      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\n\nclass AnnotationElement {\n  constructor(parameters, isRenderable = false, ignoreBorder = false) {\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.page = parameters.page;\n    this.viewport = parameters.viewport;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderInteractiveForms = parameters.renderInteractiveForms;\n    this.svgFactory = parameters.svgFactory;\n\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n  }\n\n  /**\n   * Create an empty container for the annotation's HTML element.\n   *\n   * @private\n   * @param {boolean} ignoreBorder\n   * @memberof AnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  _createContainer(ignoreBorder = false) {\n    let data = this.data, page = this.page, viewport = this.viewport;\n    let container = document.createElement('section');\n    let width = data.rect[2] - data.rect[0];\n    let height = data.rect[3] - data.rect[1];\n\n    container.setAttribute('data-annotation-id', data.id);\n\n    // Do *not* modify `data.rect`, since that will corrupt the annotation\n    // position on subsequent calls to `_createContainer` (see issue 6804).\n    let rect = Util.normalizeRect([\n      data.rect[0],\n      page.view[3] - data.rect[1] + page.view[1],\n      data.rect[2],\n      page.view[3] - data.rect[3] + page.view[1]\n    ]);\n\n    container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';\n    container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';\n\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      container.style.borderWidth = data.borderStyle.width + 'px';\n      if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n        // Underline styles only have a bottom border, so we do not need\n        // to adjust for all borders. This yields a similar result as\n        // Adobe Acrobat/Reader.\n        width = width - 2 * data.borderStyle.width;\n        height = height - 2 * data.borderStyle.width;\n      }\n\n      let horizontalRadius = data.borderStyle.horizontalCornerRadius;\n      let verticalRadius = data.borderStyle.verticalCornerRadius;\n      if (horizontalRadius > 0 || verticalRadius > 0) {\n        let radius = horizontalRadius + 'px / ' + verticalRadius + 'px';\n        container.style.borderRadius = radius;\n      }\n\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          container.style.borderStyle = 'solid';\n          break;\n\n        case AnnotationBorderStyleType.DASHED:\n          container.style.borderStyle = 'dashed';\n          break;\n\n        case AnnotationBorderStyleType.BEVELED:\n          warn('Unimplemented border style: beveled');\n          break;\n\n        case AnnotationBorderStyleType.INSET:\n          warn('Unimplemented border style: inset');\n          break;\n\n        case AnnotationBorderStyleType.UNDERLINE:\n          container.style.borderBottomStyle = 'solid';\n          break;\n\n        default:\n          break;\n      }\n\n      if (data.color) {\n        container.style.borderColor = Util.makeCssRgb(data.color[0] | 0,\n                                                      data.color[1] | 0,\n                                                      data.color[2] | 0);\n      } else {\n        // Transparent (invisible) border, so do not draw it at all.\n        container.style.borderWidth = 0;\n      }\n    }\n\n    container.style.left = rect[0] + 'px';\n    container.style.top = rect[1] + 'px';\n\n    container.style.width = width + 'px';\n    container.style.height = height + 'px';\n\n    return container;\n  }\n\n  /**\n   * Create a popup for the annotation's HTML element. This is used for\n   * annotations that do not have a Popup entry in the dictionary, but\n   * are of a type that works with popups (such as Highlight annotations).\n   *\n   * @private\n   * @param {HTMLSectionElement} container\n   * @param {HTMLDivElement|HTMLImageElement|null} trigger\n   * @param {Object} data\n   * @memberof AnnotationElement\n   */\n  _createPopup(container, trigger, data) {\n    // If no trigger element is specified, create it.\n    if (!trigger) {\n      trigger = document.createElement('div');\n      trigger.style.height = container.style.height;\n      trigger.style.width = container.style.width;\n      container.appendChild(trigger);\n    }\n\n    let popupElement = new PopupElement({\n      container,\n      trigger,\n      color: data.color,\n      title: data.title,\n      contents: data.contents,\n      hideWrapper: true,\n    });\n    let popup = popupElement.render();\n\n    // Position the popup next to the annotation's container.\n    popup.style.left = container.style.width;\n\n    container.appendChild(popup);\n  }\n\n  /**\n   * Render the annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof AnnotationElement\n   */\n  render() {\n    unreachable('Abstract method `AnnotationElement.render` called');\n  }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.url || parameters.data.dest ||\n                          parameters.data.action);\n    super(parameters, isRenderable);\n  }\n\n  /**\n   * Render the link annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof LinkAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'linkAnnotation';\n\n    let { data, linkService, } = this;\n    let link = document.createElement('a');\n\n    addLinkAttributes(link, {\n      url: data.url,\n      target: (data.newWindow ?\n               LinkTarget.BLANK : linkService.externalLinkTarget),\n      rel: linkService.externalLinkRel,\n    });\n\n    if (!data.url) {\n      if (data.action) {\n        this._bindNamedAction(link, data.action);\n      } else {\n        this._bindLink(link, data.dest);\n      }\n    }\n\n    this.container.appendChild(link);\n    return this.container;\n  }\n\n  /**\n   * Bind internal links to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} destination\n   * @memberof LinkAnnotationElement\n   */\n  _bindLink(link, destination) {\n    link.href = this.linkService.getDestinationHash(destination);\n    link.onclick = () => {\n      if (destination) {\n        this.linkService.navigateTo(destination);\n      }\n      return false;\n    };\n    if (destination) {\n      link.className = 'internalLink';\n    }\n  }\n\n  /**\n   * Bind named actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} action\n   * @memberof LinkAnnotationElement\n   */\n  _bindNamedAction(link, action) {\n    link.href = this.linkService.getAnchorUrl('');\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n    link.className = 'internalLink';\n  }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable);\n  }\n\n  /**\n   * Render the text annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof TextAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'textAnnotation';\n\n    let image = document.createElement('img');\n    image.style.height = this.container.style.height;\n    image.style.width = this.container.style.width;\n    image.src = this.imageResourcesPath + 'annotation-' +\n      this.data.name.toLowerCase() + '.svg';\n    image.alt = '[{{type}} Annotation]';\n    image.dataset.l10nId = 'text_annotation_type';\n    image.dataset.l10nArgs = JSON.stringify({ type: this.data.name, });\n\n    if (!this.data.hasPopup) {\n      this._createPopup(this.container, image, this.data);\n    }\n\n    this.container.appendChild(image);\n    return this.container;\n  }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n  /**\n   * Render the widget annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof WidgetAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    // Show only the container for unsupported field types.\n    return this.container;\n  }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    let isRenderable = parameters.renderInteractiveForms ||\n      (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n    super(parameters, isRenderable);\n  }\n\n  /**\n   * Render the text widget annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof TextWidgetAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    const TEXT_ALIGNMENT = ['left', 'center', 'right'];\n\n    this.container.className = 'textWidgetAnnotation';\n\n    let element = null;\n    if (this.renderInteractiveForms) {\n      // NOTE: We cannot set the values using `element.value` below, since it\n      //       prevents the AnnotationLayer rasterizer in `test/driver.js`\n      //       from parsing the elements correctly for the reference tests.\n      if (this.data.multiLine) {\n        element = document.createElement('textarea');\n        element.textContent = this.data.fieldValue;\n      } else {\n        element = document.createElement('input');\n        element.type = 'text';\n        element.setAttribute('value', this.data.fieldValue);\n      }\n\n      element.disabled = this.data.readOnly;\n\n      if (this.data.maxLen !== null) {\n        element.maxLength = this.data.maxLen;\n      }\n\n      if (this.data.comb) {\n        let fieldWidth = this.data.rect[2] - this.data.rect[0];\n        let combWidth = fieldWidth / this.data.maxLen;\n\n        element.classList.add('comb');\n        element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';\n      }\n    } else {\n      element = document.createElement('div');\n      element.textContent = this.data.fieldValue;\n      element.style.verticalAlign = 'middle';\n      element.style.display = 'table-cell';\n\n      let font = null;\n      if (this.data.fontRefName) {\n        font = this.page.commonObjs.getData(this.data.fontRefName);\n      }\n      this._setTextStyle(element, font);\n    }\n\n    if (this.data.textAlignment !== null) {\n      element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n    }\n\n    this.container.appendChild(element);\n    return this.container;\n  }\n\n  /**\n   * Apply text styles to the text in the element.\n   *\n   * @private\n   * @param {HTMLDivElement} element\n   * @param {Object} font\n   * @memberof TextWidgetAnnotationElement\n   */\n  _setTextStyle(element, font) {\n    // TODO: This duplicates some of the logic in CanvasGraphics.setFont().\n    let style = element.style;\n    style.fontSize = this.data.fontSize + 'px';\n    style.direction = (this.data.fontDirection < 0 ? 'rtl' : 'ltr');\n\n    if (!font) {\n      return;\n    }\n\n    style.fontWeight = (font.black ?\n      (font.bold ? '900' : 'bold') :\n      (font.bold ? 'bold' : 'normal'));\n    style.fontStyle = (font.italic ? 'italic' : 'normal');\n\n    // Use a reasonable default font if the font doesn't specify a fallback.\n    let fontFamily = font.loadedName ? '\"' + font.loadedName + '\", ' : '';\n    let fallbackName = font.fallbackName || 'Helvetica, sans-serif';\n    style.fontFamily = fontFamily + fallbackName;\n  }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, parameters.renderInteractiveForms);\n  }\n\n  /**\n   * Render the checkbox widget annotation's HTML element\n   * in the empty container.\n   *\n   * @public\n   * @memberof CheckboxWidgetAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'buttonWidgetAnnotation checkBox';\n\n    let element = document.createElement('input');\n    element.disabled = this.data.readOnly;\n    element.type = 'checkbox';\n    if (this.data.fieldValue && this.data.fieldValue !== 'Off') {\n      element.setAttribute('checked', true);\n    }\n\n    this.container.appendChild(element);\n    return this.container;\n  }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, parameters.renderInteractiveForms);\n  }\n\n  /**\n   * Render the radio button widget annotation's HTML element\n   * in the empty container.\n   *\n   * @public\n   * @memberof RadioButtonWidgetAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'buttonWidgetAnnotation radioButton';\n\n    let element = document.createElement('input');\n    element.disabled = this.data.readOnly;\n    element.type = 'radio';\n    element.name = this.data.fieldName;\n    if (this.data.fieldValue === this.data.buttonValue) {\n      element.setAttribute('checked', true);\n    }\n\n    this.container.appendChild(element);\n    return this.container;\n  }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  /**\n   * Render the push button widget annotation's HTML element\n   * in the empty container.\n   *\n   * @public\n   * @memberof PushButtonWidgetAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    // The rendering and functionality of a push button widget annotation is\n    // equal to that of a link annotation, but may have more functionality, such\n    // as performing actions on form fields (resetting, submitting, et cetera).\n    let container = super.render();\n    container.className = 'buttonWidgetAnnotation pushButton';\n    return container;\n  }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, parameters.renderInteractiveForms);\n  }\n\n  /**\n   * Render the choice widget annotation's HTML element in the empty\n   * container.\n   *\n   * @public\n   * @memberof ChoiceWidgetAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'choiceWidgetAnnotation';\n\n    let selectElement = document.createElement('select');\n    selectElement.disabled = this.data.readOnly;\n\n    if (!this.data.combo) {\n      // List boxes have a size and (optionally) multiple selection.\n      selectElement.size = this.data.options.length;\n\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\n    }\n\n    // Insert the options into the choice field.\n    for (let i = 0, ii = this.data.options.length; i < ii; i++) {\n      let option = this.data.options[i];\n\n      let optionElement = document.createElement('option');\n      optionElement.textContent = option.displayValue;\n      optionElement.value = option.exportValue;\n\n      if (this.data.fieldValue.includes(option.displayValue)) {\n        optionElement.setAttribute('selected', true);\n      }\n\n      selectElement.appendChild(optionElement);\n    }\n\n    this.container.appendChild(selectElement);\n    return this.container;\n  }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable);\n  }\n\n  /**\n   * Render the popup annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof PopupAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    // Do not render popup annotations for parent elements with these types as\n    // they create the popups themselves (because of custom trigger divs).\n    const IGNORE_TYPES = [\n      'Line',\n      'Square',\n      'Circle',\n      'PolyLine',\n      'Polygon',\n      'Ink',\n    ];\n\n    this.container.className = 'popupAnnotation';\n\n    if (IGNORE_TYPES.includes(this.data.parentType)) {\n      return this.container;\n    }\n\n    let selector = '[data-annotation-id=\"' + this.data.parentId + '\"]';\n    let parentElement = this.layer.querySelector(selector);\n    if (!parentElement) {\n      return this.container;\n    }\n\n    let popup = new PopupElement({\n      container: this.container,\n      trigger: parentElement,\n      color: this.data.color,\n      title: this.data.title,\n      contents: this.data.contents,\n    });\n\n    // Position the popup next to the parent annotation's container.\n    // PDF viewers ignore a popup annotation's rectangle.\n    let parentLeft = parseFloat(parentElement.style.left);\n    let parentWidth = parseFloat(parentElement.style.width);\n    this.container.style.transformOrigin =\n      -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;\n    this.container.style.left = (parentLeft + parentWidth) + 'px';\n\n    this.container.appendChild(popup.render());\n    return this.container;\n  }\n}\n\nclass PopupElement {\n  constructor(parameters) {\n    this.container = parameters.container;\n    this.trigger = parameters.trigger;\n    this.color = parameters.color;\n    this.title = parameters.title;\n    this.contents = parameters.contents;\n    this.hideWrapper = parameters.hideWrapper || false;\n\n    this.pinned = false;\n  }\n\n  /**\n   * Render the popup's HTML element.\n   *\n   * @public\n   * @memberof PopupElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    const BACKGROUND_ENLIGHT = 0.7;\n\n    let wrapper = document.createElement('div');\n    wrapper.className = 'popupWrapper';\n\n    // For Popup annotations we hide the entire section because it contains\n    // only the popup. However, for Text annotations without a separate Popup\n    // annotation, we cannot hide the entire container as the image would\n    // disappear too. In that special case, hiding the wrapper suffices.\n    this.hideElement = (this.hideWrapper ? wrapper : this.container);\n    this.hideElement.setAttribute('hidden', true);\n\n    let popup = document.createElement('div');\n    popup.className = 'popup';\n\n    let color = this.color;\n    if (color) {\n      // Enlighten the color.\n      let r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n      let g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n      let b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n      popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0);\n    }\n\n    let contents = this._formatContents(this.contents);\n    let title = document.createElement('h1');\n    title.textContent = this.title;\n\n    // Attach the event listeners to the trigger element.\n    this.trigger.addEventListener('click', this._toggle.bind(this));\n    this.trigger.addEventListener('mouseover', this._show.bind(this, false));\n    this.trigger.addEventListener('mouseout', this._hide.bind(this, false));\n    popup.addEventListener('click', this._hide.bind(this, true));\n\n    popup.appendChild(title);\n    popup.appendChild(contents);\n    wrapper.appendChild(popup);\n    return wrapper;\n  }\n\n  /**\n   * Format the contents of the popup by adding newlines where necessary.\n   *\n   * @private\n   * @param {string} contents\n   * @memberof PopupElement\n   * @returns {HTMLParagraphElement}\n   */\n  _formatContents(contents) {\n    let p = document.createElement('p');\n    let lines = contents.split(/(?:\\r\\n?|\\n)/);\n    for (let i = 0, ii = lines.length; i < ii; ++i) {\n      let line = lines[i];\n      p.appendChild(document.createTextNode(line));\n      if (i < (ii - 1)) {\n        p.appendChild(document.createElement('br'));\n      }\n    }\n    return p;\n  }\n\n  /**\n   * Toggle the visibility of the popup.\n   *\n   * @private\n   * @memberof PopupElement\n   */\n  _toggle() {\n    if (this.pinned) {\n      this._hide(true);\n    } else {\n      this._show(true);\n    }\n  }\n\n  /**\n   * Show the popup.\n   *\n   * @private\n   * @param {boolean} pin\n   * @memberof PopupElement\n   */\n  _show(pin = false) {\n    if (pin) {\n      this.pinned = true;\n    }\n    if (this.hideElement.hasAttribute('hidden')) {\n      this.hideElement.removeAttribute('hidden');\n      this.container.style.zIndex += 1;\n    }\n  }\n\n  /**\n   * Hide the popup.\n   *\n   * @private\n   * @param {boolean} unpin\n   * @memberof PopupElement\n   */\n  _hide(unpin = true) {\n    if (unpin) {\n      this.pinned = false;\n    }\n    if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {\n      this.hideElement.setAttribute('hidden', true);\n      this.container.style.zIndex -= 1;\n    }\n  }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n  }\n\n  /**\n   * Render the line annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof LineAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'lineAnnotation';\n\n    // Create an invisible line with the same starting and ending coordinates\n    // that acts as the trigger for the popup. Only the line itself should\n    // trigger the popup, not the entire container.\n    let data = this.data;\n    let width = data.rect[2] - data.rect[0];\n    let height = data.rect[3] - data.rect[1];\n    let svg = this.svgFactory.create(width, height);\n\n    // PDF coordinates are calculated from a bottom left origin, so transform\n    // the line coordinates to a top left origin for the SVG element.\n    let line = this.svgFactory.createElement('svg:line');\n    line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);\n    line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);\n    line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);\n    line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);\n    line.setAttribute('stroke-width', data.borderStyle.width);\n    line.setAttribute('stroke', 'transparent');\n\n    svg.appendChild(line);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the line instead\n    // of to the entire container (which is the default).\n    this._createPopup(this.container, line, data);\n\n    return this.container;\n  }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n  }\n\n  /**\n   * Render the square annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof SquareAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'squareAnnotation';\n\n    // Create an invisible square with the same rectangle that acts as the\n    // trigger for the popup. Only the square itself should trigger the\n    // popup, not the entire container.\n    let data = this.data;\n    let width = data.rect[2] - data.rect[0];\n    let height = data.rect[3] - data.rect[1];\n    let svg = this.svgFactory.create(width, height);\n\n    // The browser draws half of the borders inside the square and half of\n    // the borders outside the square by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    let borderWidth = data.borderStyle.width;\n    let square = this.svgFactory.createElement('svg:rect');\n    square.setAttribute('x', borderWidth / 2);\n    square.setAttribute('y', borderWidth / 2);\n    square.setAttribute('width', width - borderWidth);\n    square.setAttribute('height', height - borderWidth);\n    square.setAttribute('stroke-width', borderWidth);\n    square.setAttribute('stroke', 'transparent');\n    square.setAttribute('fill', 'none');\n\n    svg.appendChild(square);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the square instead\n    // of to the entire container (which is the default).\n    this._createPopup(this.container, square, data);\n\n    return this.container;\n  }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n  }\n\n  /**\n   * Render the circle annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof CircleAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'circleAnnotation';\n\n    // Create an invisible circle with the same ellipse that acts as the\n    // trigger for the popup. Only the circle itself should trigger the\n    // popup, not the entire container.\n    let data = this.data;\n    let width = data.rect[2] - data.rect[0];\n    let height = data.rect[3] - data.rect[1];\n    let svg = this.svgFactory.create(width, height);\n\n    // The browser draws half of the borders inside the circle and half of\n    // the borders outside the circle by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    let borderWidth = data.borderStyle.width;\n    let circle = this.svgFactory.createElement('svg:ellipse');\n    circle.setAttribute('cx', width / 2);\n    circle.setAttribute('cy', height / 2);\n    circle.setAttribute('rx', (width / 2) - (borderWidth / 2));\n    circle.setAttribute('ry', (height / 2) - (borderWidth / 2));\n    circle.setAttribute('stroke-width', borderWidth);\n    circle.setAttribute('stroke', 'transparent');\n    circle.setAttribute('fill', 'none');\n\n    svg.appendChild(circle);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the circle instead\n    // of to the entire container (which is the default).\n    this._createPopup(this.container, circle, data);\n\n    return this.container;\n  }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n\n    this.containerClassName = 'polylineAnnotation';\n    this.svgElementName = 'svg:polyline';\n  }\n\n  /**\n   * Render the polyline annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof PolylineAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = this.containerClassName;\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup. Only the polyline itself should trigger the\n    // popup, not the entire container.\n    let data = this.data;\n    let width = data.rect[2] - data.rect[0];\n    let height = data.rect[3] - data.rect[1];\n    let svg = this.svgFactory.create(width, height);\n\n    // Convert the vertices array to a single points string that the SVG\n    // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n    // calculated from a bottom left origin, so transform the polyline\n    // coordinates to a top left origin for the SVG element.\n    let vertices = data.vertices;\n    let points = [];\n    for (let i = 0, ii = vertices.length; i < ii; i++) {\n      let x = vertices[i].x - data.rect[0];\n      let y = data.rect[3] - vertices[i].y;\n      points.push(x + ',' + y);\n    }\n    points = points.join(' ');\n\n    let borderWidth = data.borderStyle.width;\n    let polyline = this.svgFactory.createElement(this.svgElementName);\n    polyline.setAttribute('points', points);\n    polyline.setAttribute('stroke-width', borderWidth);\n    polyline.setAttribute('stroke', 'transparent');\n    polyline.setAttribute('fill', 'none');\n\n    svg.appendChild(polyline);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the polyline\n    // instead of to the entire container (which is the default).\n    this._createPopup(this.container, polyline, data);\n\n    return this.container;\n  }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.containerClassName = 'polygonAnnotation';\n    this.svgElementName = 'svg:polygon';\n  }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n\n    this.containerClassName = 'inkAnnotation';\n\n    // Use the polyline SVG element since it allows us to use coordinates\n    // directly and to draw both straight lines and curves.\n    this.svgElementName = 'svg:polyline';\n  }\n\n  /**\n   * Render the ink annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof InkAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = this.containerClassName;\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup.\n    let data = this.data;\n    let width = data.rect[2] - data.rect[0];\n    let height = data.rect[3] - data.rect[1];\n    let svg = this.svgFactory.create(width, height);\n\n    let inkLists = data.inkLists;\n    for (let i = 0, ii = inkLists.length; i < ii; i++) {\n      let inkList = inkLists[i];\n      let points = [];\n\n      // Convert the ink list to a single points string that the SVG\n      // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n      // calculated from a bottom left origin, so transform the polyline\n      // coordinates to a top left origin for the SVG element.\n      for (let j = 0, jj = inkList.length; j < jj; j++) {\n        let x = inkList[j].x - data.rect[0];\n        let y = data.rect[3] - inkList[j].y;\n        points.push(x + ',' + y);\n      }\n\n      points = points.join(' ');\n\n      let borderWidth = data.borderStyle.width;\n      let polyline = this.svgFactory.createElement(this.svgElementName);\n      polyline.setAttribute('points', points);\n      polyline.setAttribute('stroke-width', borderWidth);\n      polyline.setAttribute('stroke', 'transparent');\n      polyline.setAttribute('fill', 'none');\n\n      // Create the popup ourselves so that we can bind it to the polyline\n      // instead of to the entire container (which is the default).\n      this._createPopup(this.container, polyline, data);\n\n      svg.appendChild(polyline);\n    }\n\n    this.container.append(svg);\n\n    return this.container;\n  }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n  }\n\n  /**\n   * Render the highlight annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof HighlightAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'highlightAnnotation';\n\n    if (!this.data.hasPopup) {\n      this._createPopup(this.container, null, this.data);\n    }\n    return this.container;\n  }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n  }\n\n  /**\n   * Render the underline annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof UnderlineAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'underlineAnnotation';\n\n    if (!this.data.hasPopup) {\n      this._createPopup(this.container, null, this.data);\n    }\n    return this.container;\n  }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n  }\n\n  /**\n   * Render the squiggly annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof SquigglyAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'squigglyAnnotation';\n\n    if (!this.data.hasPopup) {\n      this._createPopup(this.container, null, this.data);\n    }\n    return this.container;\n  }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n  }\n\n  /**\n   * Render the strikeout annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof StrikeOutAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'strikeoutAnnotation';\n\n    if (!this.data.hasPopup) {\n      this._createPopup(this.container, null, this.data);\n    }\n    return this.container;\n  }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    let isRenderable = !!(parameters.data.hasPopup ||\n                          parameters.data.title || parameters.data.contents);\n    super(parameters, isRenderable, /* ignoreBorder = */ true);\n  }\n\n  /**\n   * Render the stamp annotation's HTML element in the empty container.\n   *\n   * @public\n   * @memberof StampAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'stampAnnotation';\n\n    if (!this.data.hasPopup) {\n      this._createPopup(this.container, null, this.data);\n    }\n    return this.container;\n  }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, /* isRenderable = */ true);\n\n    const { filename, content, } = this.data.file;\n    this.filename = getFilenameFromUrl(filename);\n    this.content = content;\n\n    if (this.linkService.eventBus) {\n      this.linkService.eventBus.dispatch('fileattachmentannotation', {\n        source: this,\n        id: stringToPDFString(filename),\n        filename,\n        content,\n      });\n    }\n  }\n\n  /**\n   * Render the file attachment annotation's HTML element in the empty\n   * container.\n   *\n   * @public\n   * @memberof FileAttachmentAnnotationElement\n   * @returns {HTMLSectionElement}\n   */\n  render() {\n    this.container.className = 'fileAttachmentAnnotation';\n\n    let trigger = document.createElement('div');\n    trigger.style.height = this.container.style.height;\n    trigger.style.width = this.container.style.width;\n    trigger.addEventListener('dblclick', this._download.bind(this));\n\n    if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n      this._createPopup(this.container, trigger, this.data);\n    }\n\n    this.container.appendChild(trigger);\n    return this.container;\n  }\n\n  /**\n   * Download the file attachment associated with this annotation.\n   *\n   * @private\n   * @memberof FileAttachmentAnnotationElement\n   */\n  _download() {\n    if (!this.downloadManager) {\n      warn('Download cannot be started due to unavailable download manager');\n      return;\n    }\n    this.downloadManager.downloadData(this.content, this.filename, '');\n  }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPage} page\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} imageResourcesPath - (optional) Path for image resources,\n *   mainly for annotation icons. Include trailing slash.\n * @property {boolean} renderInteractiveForms\n */\n\nclass AnnotationLayer {\n  /**\n   * Render a new annotation layer with all annotation elements.\n   *\n   * @public\n   * @param {AnnotationLayerParameters} parameters\n   * @memberof AnnotationLayer\n   */\n  static render(parameters) {\n    for (let i = 0, ii = parameters.annotations.length; i < ii; i++) {\n      let data = parameters.annotations[i];\n      if (!data) {\n        continue;\n      }\n      let element = AnnotationElementFactory.create({\n        data,\n        layer: parameters.div,\n        page: parameters.page,\n        viewport: parameters.viewport,\n        linkService: parameters.linkService,\n        downloadManager: parameters.downloadManager,\n        imageResourcesPath: parameters.imageResourcesPath || '',\n        renderInteractiveForms: parameters.renderInteractiveForms || false,\n        svgFactory: new DOMSVGFactory(),\n      });\n      if (element.isRenderable) {\n        parameters.div.appendChild(element.render());\n      }\n    }\n  }\n\n  /**\n   * Update the annotation elements on existing annotation layer.\n   *\n   * @public\n   * @param {AnnotationLayerParameters} parameters\n   * @memberof AnnotationLayer\n   */\n  static update(parameters) {\n    for (let i = 0, ii = parameters.annotations.length; i < ii; i++) {\n      let data = parameters.annotations[i];\n      let element = parameters.div.querySelector(\n        '[data-annotation-id=\"' + data.id + '\"]');\n      if (element) {\n        element.style.transform =\n          'matrix(' + parameters.viewport.transform.join(',') + ')';\n      }\n    }\n    parameters.div.removeAttribute('hidden');\n  }\n}\n\nexport {\n  AnnotationLayer,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n  createObjectURL, FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, isNum, OPS,\n  TextRenderingMode, Util, warn\n} from '../shared/util';\nimport { DOMSVGFactory } from './dom_utils';\nimport isNodeJS from '../shared/is_node';\n\nvar SVGGraphics = function() {\n  throw new Error('Not implemented: SVGGraphics');\n};\n\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n\nvar SVG_DEFAULTS = {\n  fontStyle: 'normal',\n  fontWeight: 'normal',\n  fillColor: '#000000',\n};\n\nvar convertImgDataToPng = (function convertImgDataToPngClosure() {\n  var PNG_HEADER =\n    new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n\n  var CHUNK_WRAPPER_SIZE = 12;\n\n  var crcTable = new Int32Array(256);\n  for (var i = 0; i < 256; i++) {\n    var c = i;\n    for (var h = 0; h < 8; h++) {\n      if (c & 1) {\n        c = 0xedB88320 ^ ((c >> 1) & 0x7fffffff);\n      } else {\n        c = (c >> 1) & 0x7fffffff;\n      }\n    }\n    crcTable[i] = c;\n  }\n\n  function crc32(data, start, end) {\n    var crc = -1;\n    for (var i = start; i < end; i++) {\n      var a = (crc ^ data[i]) & 0xff;\n      var b = crcTable[a];\n      crc = (crc >>> 8) ^ b;\n    }\n    return crc ^ -1;\n  }\n\n  function writePngChunk(type, body, data, offset) {\n    var p = offset;\n    var len = body.length;\n\n    data[p] = len >> 24 & 0xff;\n    data[p + 1] = len >> 16 & 0xff;\n    data[p + 2] = len >> 8 & 0xff;\n    data[p + 3] = len & 0xff;\n    p += 4;\n\n    data[p] = type.charCodeAt(0) & 0xff;\n    data[p + 1] = type.charCodeAt(1) & 0xff;\n    data[p + 2] = type.charCodeAt(2) & 0xff;\n    data[p + 3] = type.charCodeAt(3) & 0xff;\n    p += 4;\n\n    data.set(body, p);\n    p += body.length;\n\n    var crc = crc32(data, offset + 4, p);\n\n    data[p] = crc >> 24 & 0xff;\n    data[p + 1] = crc >> 16 & 0xff;\n    data[p + 2] = crc >> 8 & 0xff;\n    data[p + 3] = crc & 0xff;\n  }\n\n  function adler32(data, start, end) {\n    var a = 1;\n    var b = 0;\n    for (var i = start; i < end; ++i) {\n      a = (a + (data[i] & 0xff)) % 65521;\n      b = (b + a) % 65521;\n    }\n    return (b << 16) | a;\n  }\n\n  /**\n   * @param {Uint8Array} literals The input data.\n   * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n   *   This is the required format for compressed streams in the PNG format:\n   *   http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n   */\n  function deflateSync(literals) {\n    if (!isNodeJS()) {\n      // zlib is certainly not available outside of Node.js. We can either use\n      // the pako library for client-side DEFLATE compression, or use the canvas\n      // API of the browser to obtain a more optimal PNG file.\n      return deflateSyncUncompressed(literals);\n    }\n    try {\n      // NOTE: This implementation is far from perfect, but already way better\n      // than not applying any compression.\n      //\n      // A better algorithm will try to choose a good predictor/filter and\n      // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n      //\n      // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n      // Node v3.0.0   Buffer inherits from Uint8Array.\n      // Node v8.0.0   zlib.deflateSync accepts Uint8Array as input.\n      var input;\n        // eslint-disable-next-line no-undef\n      if (parseInt(process.versions.node) >= 8) {\n        input = literals;\n      } else {\n        // eslint-disable-next-line no-undef\n        input = new Buffer(literals);\n      }\n      var output = __non_webpack_require__('zlib')\n        .deflateSync(input, { level: 9, });\n      return output instanceof Uint8Array ? output : new Uint8Array(output);\n    } catch (e) {\n      warn('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);\n    }\n\n    return deflateSyncUncompressed(literals);\n  }\n\n  // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n  function deflateSyncUncompressed(literals) {\n    var len = literals.length;\n    var maxBlockLength = 0xFFFF;\n\n    var deflateBlocks = Math.ceil(len / maxBlockLength);\n    var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n    var pi = 0;\n    idat[pi++] = 0x78; // compression method and flags\n    idat[pi++] = 0x9c; // flags\n\n    var pos = 0;\n    while (len > maxBlockLength) {\n      // writing non-final DEFLATE blocks type 0 and length of 65535\n      idat[pi++] = 0x00;\n      idat[pi++] = 0xff;\n      idat[pi++] = 0xff;\n      idat[pi++] = 0x00;\n      idat[pi++] = 0x00;\n      idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n      pi += maxBlockLength;\n      pos += maxBlockLength;\n      len -= maxBlockLength;\n    }\n\n    // writing non-final DEFLATE blocks type 0\n    idat[pi++] = 0x01;\n    idat[pi++] = len & 0xff;\n    idat[pi++] = len >> 8 & 0xff;\n    idat[pi++] = (~len & 0xffff) & 0xff;\n    idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n    idat.set(literals.subarray(pos), pi);\n    pi += literals.length - pos;\n\n    var adler = adler32(literals, 0, literals.length); // checksum\n    idat[pi++] = adler >> 24 & 0xff;\n    idat[pi++] = adler >> 16 & 0xff;\n    idat[pi++] = adler >> 8 & 0xff;\n    idat[pi++] = adler & 0xff;\n    return idat;\n  }\n\n  function encode(imgData, kind, forceDataSchema, isMask) {\n    var width = imgData.width;\n    var height = imgData.height;\n    var bitDepth, colorType, lineSize;\n    var bytes = imgData.data;\n\n    switch (kind) {\n      case ImageKind.GRAYSCALE_1BPP:\n        colorType = 0;\n        bitDepth = 1;\n        lineSize = (width + 7) >> 3;\n        break;\n      case ImageKind.RGB_24BPP:\n        colorType = 2;\n        bitDepth = 8;\n        lineSize = width * 3;\n        break;\n      case ImageKind.RGBA_32BPP:\n        colorType = 6;\n        bitDepth = 8;\n        lineSize = width * 4;\n        break;\n      default:\n        throw new Error('invalid format');\n    }\n\n    // prefix every row with predictor 0\n    var literals = new Uint8Array((1 + lineSize) * height);\n    var offsetLiterals = 0, offsetBytes = 0;\n    var y, i;\n    for (y = 0; y < height; ++y) {\n      literals[offsetLiterals++] = 0; // no prediction\n      literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize),\n                   offsetLiterals);\n      offsetBytes += lineSize;\n      offsetLiterals += lineSize;\n    }\n\n    if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n      // inverting for image masks\n      offsetLiterals = 0;\n      for (y = 0; y < height; y++) {\n        offsetLiterals++; // skipping predictor\n        for (i = 0; i < lineSize; i++) {\n          literals[offsetLiterals++] ^= 0xFF;\n        }\n      }\n    }\n\n    var ihdr = new Uint8Array([\n      width >> 24 & 0xff,\n      width >> 16 & 0xff,\n      width >> 8 & 0xff,\n      width & 0xff,\n      height >> 24 & 0xff,\n      height >> 16 & 0xff,\n      height >> 8 & 0xff,\n      height & 0xff,\n      bitDepth, // bit depth\n      colorType, // color type\n      0x00, // compression method\n      0x00, // filter method\n      0x00 // interlace method\n    ]);\n\n    var idat = deflateSync(literals);\n\n    // PNG will consists: header, IHDR+data, IDAT+data, and IEND.\n    var pngLength = PNG_HEADER.length + (CHUNK_WRAPPER_SIZE * 3) +\n                    ihdr.length + idat.length;\n    var data = new Uint8Array(pngLength);\n    var offset = 0;\n    data.set(PNG_HEADER, offset);\n    offset += PNG_HEADER.length;\n    writePngChunk('IHDR', ihdr, data, offset);\n    offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n    writePngChunk('IDATA', idat, data, offset);\n    offset += CHUNK_WRAPPER_SIZE + idat.length;\n    writePngChunk('IEND', new Uint8Array(0), data, offset);\n\n    return createObjectURL(data, 'image/png', forceDataSchema);\n  }\n\n  return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n    var kind = (imgData.kind === undefined ?\n                ImageKind.GRAYSCALE_1BPP : imgData.kind);\n    return encode(imgData, kind, forceDataSchema, isMask);\n  };\n})();\n\nvar SVGExtraState = (function SVGExtraStateClosure() {\n  function SVGExtraState() {\n    this.fontSizeScale = 1;\n    this.fontWeight = SVG_DEFAULTS.fontWeight;\n    this.fontSize = 0;\n\n    this.textMatrix = IDENTITY_MATRIX;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    this.textRenderingMode = TextRenderingMode.FILL;\n\n    // Current point (in user coordinates)\n    this.x = 0;\n    this.y = 0;\n\n    // Start of text line (in text coordinates)\n    this.lineX = 0;\n    this.lineY = 0;\n\n    // Character and word spacing\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n\n    // Default foreground and background colors\n    this.fillColor = SVG_DEFAULTS.fillColor;\n    this.strokeColor = '#000000';\n\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.lineJoin = '';\n    this.lineCap = '';\n    this.miterLimit = 0;\n\n    this.dashArray = [];\n    this.dashPhase = 0;\n\n    this.dependencies = [];\n\n    // Clipping\n    this.activeClipUrl = null;\n    this.clipGroup = null;\n\n    this.maskId = '';\n  }\n\n  SVGExtraState.prototype = {\n    clone: function SVGExtraState_clone() {\n      return Object.create(this);\n    },\n    setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {\n      this.x = x;\n      this.y = y;\n    },\n  };\n  return SVGExtraState;\n})();\n\nSVGGraphics = (function SVGGraphicsClosure() {\n  function opListToTree(opList) {\n    var opTree = [];\n    var tmp = [];\n    var opListLen = opList.length;\n\n    for (var x = 0; x < opListLen; x++) {\n      if (opList[x].fn === 'save') {\n        opTree.push({ 'fnId': 92, 'fn': 'group', 'items': [], });\n        tmp.push(opTree);\n        opTree = opTree[opTree.length - 1].items;\n        continue;\n      }\n\n      if (opList[x].fn === 'restore') {\n        opTree = tmp.pop();\n      } else {\n        opTree.push(opList[x]);\n      }\n    }\n    return opTree;\n  }\n\n  /**\n   * Formats float number.\n   * @param value {number} number to format.\n   * @returns {string}\n   */\n  function pf(value) {\n    if (Number.isInteger(value)) {\n      return value.toString();\n    }\n    var s = value.toFixed(10);\n    var i = s.length - 1;\n    if (s[i] !== '0') {\n      return s;\n    }\n    // removing trailing zeros\n    do {\n      i--;\n    } while (s[i] === '0');\n    return s.substring(0, s[i] === '.' ? i : i + 1);\n  }\n\n  /**\n   * Formats transform matrix. The standard rotation, scale and translate\n   * matrices are replaced by their shorter forms, and for identity matrix\n   * returns empty string to save the memory.\n   * @param m {Array} matrix to format.\n   * @returns {string}\n   */\n  function pm(m) {\n    if (m[4] === 0 && m[5] === 0) {\n      if (m[1] === 0 && m[2] === 0) {\n        if (m[0] === 1 && m[3] === 1) {\n          return '';\n        }\n        return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';\n      }\n      if (m[0] === m[3] && m[1] === -m[2]) {\n        var a = Math.acos(m[0]) * 180 / Math.PI;\n        return 'rotate(' + pf(a) + ')';\n      }\n    } else {\n      if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n        return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n      }\n    }\n    return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' +\n      pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n  }\n\n  function SVGGraphics(commonObjs, objs, forceDataSchema) {\n    this.svgFactory = new DOMSVGFactory();\n\n    this.current = new SVGExtraState();\n    this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n    this.transformStack = [];\n    this.extraStack = [];\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n\n    this.embedFonts = false;\n    this.embeddedFonts = Object.create(null);\n    this.cssStyle = null;\n    this.forceDataSchema = !!forceDataSchema;\n  }\n\n  var XML_NS = 'http://www.w3.org/XML/1998/namespace';\n  var XLINK_NS = 'http://www.w3.org/1999/xlink';\n  var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n  var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n  var clipCount = 0;\n  var maskCount = 0;\n\n  SVGGraphics.prototype = {\n    save: function SVGGraphics_save() {\n      this.transformStack.push(this.transformMatrix);\n      var old = this.current;\n      this.extraStack.push(old);\n      this.current = old.clone();\n    },\n\n    restore: function SVGGraphics_restore() {\n      this.transformMatrix = this.transformStack.pop();\n      this.current = this.extraStack.pop();\n\n      this.pendingClip = null;\n      this.tgrp = null;\n    },\n\n    group: function SVGGraphics_group(items) {\n      this.save();\n      this.executeOpTree(items);\n      this.restore();\n    },\n\n    loadDependencies: function SVGGraphics_loadDependencies(operatorList) {\n      var fnArray = operatorList.fnArray;\n      var fnArrayLen = fnArray.length;\n      var argsArray = operatorList.argsArray;\n\n      for (var i = 0; i < fnArrayLen; i++) {\n        if (OPS.dependency === fnArray[i]) {\n          var deps = argsArray[i];\n          for (var n = 0, nn = deps.length; n < nn; n++) {\n            var obj = deps[n];\n            var common = obj.substring(0, 2) === 'g_';\n            var promise;\n            if (common) {\n              promise = new Promise((resolve) => {\n                this.commonObjs.get(obj, resolve);\n              });\n            } else {\n              promise = new Promise((resolve) => {\n                this.objs.get(obj, resolve);\n              });\n            }\n            this.current.dependencies.push(promise);\n          }\n        }\n      }\n      return Promise.all(this.current.dependencies);\n    },\n\n    transform: function SVGGraphics_transform(a, b, c, d, e, f) {\n      var transformMatrix = [a, b, c, d, e, f];\n      this.transformMatrix = Util.transform(this.transformMatrix,\n                                            transformMatrix);\n      this.tgrp = null;\n    },\n\n    getSVG: function SVGGraphics_getSVG(operatorList, viewport) {\n      this.viewport = viewport;\n\n      var svgElement = this._initialize(viewport);\n      return this.loadDependencies(operatorList).then(() => {\n        this.transformMatrix = IDENTITY_MATRIX;\n        var opTree = this.convertOpList(operatorList);\n        this.executeOpTree(opTree);\n        return svgElement;\n      });\n    },\n\n    convertOpList: function SVGGraphics_convertOpList(operatorList) {\n      var argsArray = operatorList.argsArray;\n      var fnArray = operatorList.fnArray;\n      var fnArrayLen = fnArray.length;\n      var REVOPS = [];\n      var opList = [];\n\n      for (var op in OPS) {\n        REVOPS[OPS[op]] = op;\n      }\n\n      for (var x = 0; x < fnArrayLen; x++) {\n        var fnId = fnArray[x];\n        opList.push({\n          'fnId': fnId,\n          'fn': REVOPS[fnId],\n          'args': argsArray[x],\n        });\n      }\n      return opListToTree(opList);\n    },\n\n    executeOpTree: function SVGGraphics_executeOpTree(opTree) {\n      var opTreeLen = opTree.length;\n      for (var x = 0; x < opTreeLen; x++) {\n        var fn = opTree[x].fn;\n        var fnId = opTree[x].fnId;\n        var args = opTree[x].args;\n\n        switch (fnId | 0) {\n          case OPS.beginText:\n            this.beginText();\n            break;\n          case OPS.dependency:\n            // Handled in loadDependencies, warning should not be thrown\n            break;\n          case OPS.setLeading:\n            this.setLeading(args);\n            break;\n          case OPS.setLeadingMoveText:\n            this.setLeadingMoveText(args[0], args[1]);\n            break;\n          case OPS.setFont:\n            this.setFont(args);\n            break;\n          case OPS.showText:\n            this.showText(args[0]);\n            break;\n          case OPS.showSpacedText:\n            this.showText(args[0]);\n            break;\n          case OPS.endText:\n            this.endText();\n            break;\n          case OPS.moveText:\n            this.moveText(args[0], args[1]);\n            break;\n          case OPS.setCharSpacing:\n            this.setCharSpacing(args[0]);\n            break;\n          case OPS.setWordSpacing:\n            this.setWordSpacing(args[0]);\n            break;\n          case OPS.setHScale:\n            this.setHScale(args[0]);\n            break;\n          case OPS.setTextMatrix:\n            this.setTextMatrix(args[0], args[1], args[2],\n                               args[3], args[4], args[5]);\n            break;\n          case OPS.setTextRise:\n            this.setTextRise(args[0]);\n            break;\n          case OPS.setTextRenderingMode:\n            this.setTextRenderingMode(args[0]);\n            break;\n          case OPS.setLineWidth:\n            this.setLineWidth(args[0]);\n            break;\n          case OPS.setLineJoin:\n            this.setLineJoin(args[0]);\n            break;\n          case OPS.setLineCap:\n            this.setLineCap(args[0]);\n            break;\n          case OPS.setMiterLimit:\n            this.setMiterLimit(args[0]);\n            break;\n          case OPS.setFillRGBColor:\n            this.setFillRGBColor(args[0], args[1], args[2]);\n            break;\n          case OPS.setStrokeRGBColor:\n            this.setStrokeRGBColor(args[0], args[1], args[2]);\n            break;\n          case OPS.setDash:\n            this.setDash(args[0], args[1]);\n            break;\n          case OPS.setGState:\n            this.setGState(args[0]);\n            break;\n          case OPS.fill:\n            this.fill();\n            break;\n          case OPS.eoFill:\n            this.eoFill();\n            break;\n          case OPS.stroke:\n            this.stroke();\n            break;\n          case OPS.fillStroke:\n            this.fillStroke();\n            break;\n          case OPS.eoFillStroke:\n            this.eoFillStroke();\n            break;\n          case OPS.clip:\n            this.clip('nonzero');\n            break;\n          case OPS.eoClip:\n            this.clip('evenodd');\n            break;\n          case OPS.paintSolidColorImageMask:\n            this.paintSolidColorImageMask();\n            break;\n          case OPS.paintJpegXObject:\n            this.paintJpegXObject(args[0], args[1], args[2]);\n            break;\n          case OPS.paintImageXObject:\n            this.paintImageXObject(args[0]);\n            break;\n          case OPS.paintInlineImageXObject:\n            this.paintInlineImageXObject(args[0]);\n            break;\n          case OPS.paintImageMaskXObject:\n            this.paintImageMaskXObject(args[0]);\n            break;\n          case OPS.paintFormXObjectBegin:\n            this.paintFormXObjectBegin(args[0], args[1]);\n            break;\n          case OPS.paintFormXObjectEnd:\n            this.paintFormXObjectEnd();\n            break;\n          case OPS.closePath:\n            this.closePath();\n            break;\n          case OPS.closeStroke:\n            this.closeStroke();\n            break;\n          case OPS.closeFillStroke:\n            this.closeFillStroke();\n            break;\n          case OPS.closeEOFillStroke:\n            this.closeEOFillStroke();\n            break;\n          case OPS.nextLine:\n            this.nextLine();\n            break;\n          case OPS.transform:\n            this.transform(args[0], args[1], args[2], args[3],\n                           args[4], args[5]);\n            break;\n          case OPS.constructPath:\n            this.constructPath(args[0], args[1]);\n            break;\n          case OPS.endPath:\n            this.endPath();\n            break;\n          case 92:\n            this.group(opTree[x].items);\n            break;\n          default:\n            warn('Unimplemented operator ' + fn);\n            break;\n        }\n      }\n    },\n\n    setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {\n      this.current.wordSpacing = wordSpacing;\n    },\n\n    setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {\n      this.current.charSpacing = charSpacing;\n    },\n\n    nextLine: function SVGGraphics_nextLine() {\n      this.moveText(0, this.current.leading);\n    },\n\n    setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {\n      var current = this.current;\n      this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];\n\n      this.current.x = this.current.lineX = 0;\n      this.current.y = this.current.lineY = 0;\n\n      current.xcoords = [];\n      current.tspan = this.svgFactory.createElement('svg:tspan');\n      current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n      current.tspan.setAttributeNS(null, 'font-size',\n                                   pf(current.fontSize) + 'px');\n      current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n\n      current.txtElement = this.svgFactory.createElement('svg:text');\n      current.txtElement.appendChild(current.tspan);\n    },\n\n    beginText: function SVGGraphics_beginText() {\n      this.current.x = this.current.lineX = 0;\n      this.current.y = this.current.lineY = 0;\n      this.current.textMatrix = IDENTITY_MATRIX;\n      this.current.lineMatrix = IDENTITY_MATRIX;\n      this.current.tspan = this.svgFactory.createElement('svg:tspan');\n      this.current.txtElement = this.svgFactory.createElement('svg:text');\n      this.current.txtgrp = this.svgFactory.createElement('svg:g');\n      this.current.xcoords = [];\n    },\n\n    moveText: function SVGGraphics_moveText(x, y) {\n      var current = this.current;\n      this.current.x = this.current.lineX += x;\n      this.current.y = this.current.lineY += y;\n\n      current.xcoords = [];\n      current.tspan = this.svgFactory.createElement('svg:tspan');\n      current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n      current.tspan.setAttributeNS(null, 'font-size',\n                                   pf(current.fontSize) + 'px');\n      current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n    },\n\n    showText: function SVGGraphics_showText(glyphs) {\n      var current = this.current;\n      var font = current.font;\n      var fontSize = current.fontSize;\n\n      if (fontSize === 0) {\n        return;\n      }\n\n      var charSpacing = current.charSpacing;\n      var wordSpacing = current.wordSpacing;\n      var fontDirection = current.fontDirection;\n      var textHScale = current.textHScale * fontDirection;\n      var glyphsLength = glyphs.length;\n      var vertical = font.vertical;\n      var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n      var x = 0, i;\n      for (i = 0; i < glyphsLength; ++i) {\n        var glyph = glyphs[i];\n        if (glyph === null) {\n          // word break\n          x += fontDirection * wordSpacing;\n          continue;\n        } else if (isNum(glyph)) {\n          x += -glyph * fontSize * 0.001;\n          continue;\n        }\n\n        var width = glyph.width;\n        var character = glyph.fontChar;\n        var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n        var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n\n        if (!glyph.isInFont && !font.missingFile) {\n          x += charWidth;\n          // TODO: To assist with text selection, we should replace the missing\n          // character with a space character if charWidth is not zero.\n          // But we cannot just do \"character = ' '\", because the ' ' character\n          // might actually map to a different glyph.\n          continue;\n        }\n        current.xcoords.push(current.x + x * textHScale);\n        current.tspan.textContent += character;\n        x += charWidth;\n      }\n      if (vertical) {\n        current.y -= x * textHScale;\n      } else {\n        current.x += x * textHScale;\n      }\n\n      current.tspan.setAttributeNS(null, 'x',\n                                   current.xcoords.map(pf).join(' '));\n      current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n      current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n      current.tspan.setAttributeNS(null, 'font-size',\n                                   pf(current.fontSize) + 'px');\n      if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n        current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);\n      }\n      if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n        current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);\n      }\n\n      const fillStrokeMode = current.textRenderingMode &\n        TextRenderingMode.FILL_STROKE_MASK;\n\n      if (fillStrokeMode === TextRenderingMode.FILL ||\n          fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n          current.tspan.setAttributeNS(null, 'fill', current.fillColor);\n        }\n        if (current.fillAlpha < 1) {\n          current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n        }\n      } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n        // Workaround for Firefox: We must set fill=\"transparent\" because\n        // fill=\"none\" would generate an empty clipping path.\n        current.tspan.setAttributeNS(null, 'fill', 'transparent');\n      } else {\n        current.tspan.setAttributeNS(null, 'fill', 'none');\n      }\n\n      if (fillStrokeMode === TextRenderingMode.STROKE ||\n          fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n        this._setStrokeAttributes(current.tspan);\n      }\n\n      // Include the text rise in the text matrix since the `pm` function\n      // creates the SVG element's `translate` entry (work on a copy to avoid\n      // altering the original text matrix).\n      let textMatrix = current.textMatrix;\n      if (current.textRise !== 0) {\n        textMatrix = textMatrix.slice();\n        textMatrix[5] += current.textRise;\n      }\n\n      current.txtElement.setAttributeNS(null, 'transform',\n                                        pm(textMatrix) + ' scale(1, -1)');\n      current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');\n      current.txtElement.appendChild(current.tspan);\n      current.txtgrp.appendChild(current.txtElement);\n\n      this._ensureTransformGroup().appendChild(current.txtElement);\n    },\n\n    setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {\n      this.setLeading(-y);\n      this.moveText(x, y);\n    },\n\n    addFontStyle: function SVGGraphics_addFontStyle(fontObj) {\n      if (!this.cssStyle) {\n        this.cssStyle = this.svgFactory.createElement('svg:style');\n        this.cssStyle.setAttributeNS(null, 'type', 'text/css');\n        this.defs.appendChild(this.cssStyle);\n      }\n\n      var url = createObjectURL(fontObj.data, fontObj.mimetype,\n                                this.forceDataSchema);\n      this.cssStyle.textContent +=\n        '@font-face { font-family: \"' + fontObj.loadedName + '\";' +\n        ' src: url(' + url + '); }\\n';\n    },\n\n    setFont: function SVGGraphics_setFont(details) {\n      var current = this.current;\n      var fontObj = this.commonObjs.get(details[0]);\n      var size = details[1];\n      this.current.font = fontObj;\n\n      if (this.embedFonts && fontObj.data &&\n          !this.embeddedFonts[fontObj.loadedName]) {\n        this.addFontStyle(fontObj);\n        this.embeddedFonts[fontObj.loadedName] = fontObj;\n      }\n\n      current.fontMatrix = (fontObj.fontMatrix ?\n                            fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n      var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :\n                                 (fontObj.bold ? 'bold' : 'normal');\n      var italic = fontObj.italic ? 'italic' : 'normal';\n\n      if (size < 0) {\n        size = -size;\n        current.fontDirection = -1;\n      } else {\n        current.fontDirection = 1;\n      }\n      current.fontSize = size;\n      current.fontFamily = fontObj.loadedName;\n      current.fontWeight = bold;\n      current.fontStyle = italic;\n\n      current.tspan = this.svgFactory.createElement('svg:tspan');\n      current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n      current.xcoords = [];\n    },\n\n    endText() {\n      const current = this.current;\n      if ((current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) &&\n          current.txtElement && current.txtElement.hasChildNodes()) {\n        // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n        current.element = current.txtElement;\n        this.clip('nonzero');\n        this.endPath();\n      }\n    },\n\n    // Path properties\n    setLineWidth: function SVGGraphics_setLineWidth(width) {\n      this.current.lineWidth = width;\n    },\n    setLineCap: function SVGGraphics_setLineCap(style) {\n      this.current.lineCap = LINE_CAP_STYLES[style];\n    },\n    setLineJoin: function SVGGraphics_setLineJoin(style) {\n      this.current.lineJoin = LINE_JOIN_STYLES[style];\n    },\n    setMiterLimit: function SVGGraphics_setMiterLimit(limit) {\n      this.current.miterLimit = limit;\n    },\n    setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) {\n      this.current.strokeAlpha = strokeAlpha;\n    },\n    setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {\n      var color = Util.makeCssRgb(r, g, b);\n      this.current.strokeColor = color;\n    },\n    setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {\n      this.current.fillAlpha = fillAlpha;\n    },\n    setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {\n      var color = Util.makeCssRgb(r, g, b);\n      this.current.fillColor = color;\n      this.current.tspan = this.svgFactory.createElement('svg:tspan');\n      this.current.xcoords = [];\n    },\n    setDash: function SVGGraphics_setDash(dashArray, dashPhase) {\n      this.current.dashArray = dashArray;\n      this.current.dashPhase = dashPhase;\n    },\n\n    constructPath: function SVGGraphics_constructPath(ops, args) {\n      var current = this.current;\n      var x = current.x, y = current.y;\n      current.path = this.svgFactory.createElement('svg:path');\n      var d = [];\n      var opLength = ops.length;\n\n      for (var i = 0, j = 0; i < opLength; i++) {\n        switch (ops[i] | 0) {\n          case OPS.rectangle:\n            x = args[j++];\n            y = args[j++];\n            var width = args[j++];\n            var height = args[j++];\n            var xw = x + width;\n            var yh = y + height;\n            d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh),\n                   'L', pf(x), pf(yh), 'Z');\n            break;\n          case OPS.moveTo:\n            x = args[j++];\n            y = args[j++];\n            d.push('M', pf(x), pf(y));\n            break;\n          case OPS.lineTo:\n            x = args[j++];\n            y = args[j++];\n            d.push('L', pf(x), pf(y));\n            break;\n          case OPS.curveTo:\n            x = args[j + 4];\n            y = args[j + 5];\n            d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]),\n                   pf(args[j + 3]), pf(x), pf(y));\n            j += 6;\n            break;\n          case OPS.curveTo2:\n            x = args[j + 2];\n            y = args[j + 3];\n            d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]),\n                   pf(args[j + 2]), pf(args[j + 3]));\n            j += 4;\n            break;\n          case OPS.curveTo3:\n            x = args[j + 2];\n            y = args[j + 3];\n            d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y),\n                   pf(x), pf(y));\n            j += 4;\n            break;\n          case OPS.closePath:\n            d.push('Z');\n            break;\n        }\n      }\n      current.path.setAttributeNS(null, 'd', d.join(' '));\n      current.path.setAttributeNS(null, 'fill', 'none');\n\n      this._ensureTransformGroup().appendChild(current.path);\n\n      // Saving a reference in current.element so that it can be addressed\n      // in 'fill' and 'stroke'\n      current.element = current.path;\n      current.setCurrentPoint(x, y);\n    },\n\n    endPath: function SVGGraphics_endPath() {\n      if (!this.pendingClip) {\n        return;\n      }\n      var current = this.current;\n      // Add current path to clipping path\n      var clipId = 'clippath' + clipCount;\n      clipCount++;\n      var clipPath = this.svgFactory.createElement('svg:clipPath');\n      clipPath.setAttributeNS(null, 'id', clipId);\n      clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n      // A deep clone is needed when text is used as a clipping path.\n      const clipElement = current.element.cloneNode(true);\n      if (this.pendingClip === 'evenodd') {\n        clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');\n      } else {\n        clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');\n      }\n      this.pendingClip = null;\n      clipPath.appendChild(clipElement);\n      this.defs.appendChild(clipPath);\n\n      if (current.activeClipUrl) {\n        // The previous clipping group content can go out of order -- resetting\n        // cached clipGroups.\n        current.clipGroup = null;\n        this.extraStack.forEach(function (prev) {\n          prev.clipGroup = null;\n        });\n        // Intersect with the previous clipping path.\n        clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);\n      }\n      current.activeClipUrl = 'url(#' + clipId + ')';\n\n      this.tgrp = null;\n    },\n\n    clip: function SVGGraphics_clip(type) {\n      this.pendingClip = type;\n    },\n\n    closePath: function SVGGraphics_closePath() {\n      var current = this.current;\n      if (current.path) {\n        var d = current.path.getAttributeNS(null, 'd');\n        d += 'Z';\n        current.path.setAttributeNS(null, 'd', d);\n      }\n    },\n\n    setLeading: function SVGGraphics_setLeading(leading) {\n      this.current.leading = -leading;\n    },\n\n    setTextRise: function SVGGraphics_setTextRise(textRise) {\n      this.current.textRise = textRise;\n    },\n\n    setTextRenderingMode(textRenderingMode) {\n      this.current.textRenderingMode = textRenderingMode;\n    },\n\n    setHScale: function SVGGraphics_setHScale(scale) {\n      this.current.textHScale = scale / 100;\n    },\n\n    setGState: function SVGGraphics_setGState(states) {\n      for (var i = 0, ii = states.length; i < ii; i++) {\n        var state = states[i];\n        var key = state[0];\n        var value = state[1];\n\n        switch (key) {\n          case 'LW':\n            this.setLineWidth(value);\n            break;\n          case 'LC':\n            this.setLineCap(value);\n            break;\n          case 'LJ':\n            this.setLineJoin(value);\n            break;\n          case 'ML':\n            this.setMiterLimit(value);\n            break;\n          case 'D':\n            this.setDash(value[0], value[1]);\n            break;\n          case 'Font':\n            this.setFont(value);\n            break;\n          case 'CA':\n            this.setStrokeAlpha(value);\n            break;\n          case 'ca':\n            this.setFillAlpha(value);\n            break;\n          default:\n            warn('Unimplemented graphic state ' + key);\n            break;\n        }\n      }\n    },\n\n    fill: function SVGGraphics_fill() {\n      var current = this.current;\n      if (current.element) {\n        current.element.setAttributeNS(null, 'fill', current.fillColor);\n        current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n        this.endPath();\n      }\n    },\n\n    stroke: function SVGGraphics_stroke() {\n      var current = this.current;\n\n      if (current.element) {\n        this._setStrokeAttributes(current.element);\n\n        current.element.setAttributeNS(null, 'fill', 'none');\n\n        this.endPath();\n      }\n    },\n\n    /**\n     * @private\n     */\n    _setStrokeAttributes(element) {\n      const current = this.current;\n      element.setAttributeNS(null, 'stroke', current.strokeColor);\n      element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);\n      element.setAttributeNS(null, 'stroke-miterlimit',\n                             pf(current.miterLimit));\n      element.setAttributeNS(null, 'stroke-linecap', current.lineCap);\n      element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);\n      element.setAttributeNS(null, 'stroke-width',\n                             pf(current.lineWidth) + 'px');\n      element.setAttributeNS(null, 'stroke-dasharray',\n                             current.dashArray.map(pf).join(' '));\n      element.setAttributeNS(null, 'stroke-dashoffset',\n                             pf(current.dashPhase) + 'px');\n    },\n\n    eoFill: function SVGGraphics_eoFill() {\n      if (this.current.element) {\n        this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n      }\n      this.fill();\n    },\n\n    fillStroke: function SVGGraphics_fillStroke() {\n      // Order is important since stroke wants fill to be none.\n      // First stroke, then if fill needed, it will be overwritten.\n      this.stroke();\n      this.fill();\n    },\n\n    eoFillStroke: function SVGGraphics_eoFillStroke() {\n      if (this.current.element) {\n        this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n      }\n      this.fillStroke();\n    },\n\n    closeStroke: function SVGGraphics_closeStroke() {\n      this.closePath();\n      this.stroke();\n    },\n\n    closeFillStroke: function SVGGraphics_closeFillStroke() {\n      this.closePath();\n      this.fillStroke();\n    },\n\n    closeEOFillStroke() {\n      this.closePath();\n      this.eoFillStroke();\n    },\n\n    paintSolidColorImageMask:\n        function SVGGraphics_paintSolidColorImageMask() {\n      var current = this.current;\n      var rect = this.svgFactory.createElement('svg:rect');\n      rect.setAttributeNS(null, 'x', '0');\n      rect.setAttributeNS(null, 'y', '0');\n      rect.setAttributeNS(null, 'width', '1px');\n      rect.setAttributeNS(null, 'height', '1px');\n      rect.setAttributeNS(null, 'fill', current.fillColor);\n\n      this._ensureTransformGroup().appendChild(rect);\n    },\n\n    paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {\n      var imgObj = this.objs.get(objId);\n      var imgEl = this.svgFactory.createElement('svg:image');\n      imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);\n      imgEl.setAttributeNS(null, 'width', pf(w));\n      imgEl.setAttributeNS(null, 'height', pf(h));\n      imgEl.setAttributeNS(null, 'x', '0');\n      imgEl.setAttributeNS(null, 'y', pf(-h));\n      imgEl.setAttributeNS(null, 'transform',\n                           'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');\n\n      this._ensureTransformGroup().appendChild(imgEl);\n    },\n\n    paintImageXObject: function SVGGraphics_paintImageXObject(objId) {\n      var imgData = this.objs.get(objId);\n      if (!imgData) {\n        warn('Dependent image isn\\'t ready yet');\n        return;\n      }\n      this.paintInlineImageXObject(imgData);\n    },\n\n    paintInlineImageXObject:\n        function SVGGraphics_paintInlineImageXObject(imgData, mask) {\n      var width = imgData.width;\n      var height = imgData.height;\n\n      var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n      var cliprect = this.svgFactory.createElement('svg:rect');\n      cliprect.setAttributeNS(null, 'x', '0');\n      cliprect.setAttributeNS(null, 'y', '0');\n      cliprect.setAttributeNS(null, 'width', pf(width));\n      cliprect.setAttributeNS(null, 'height', pf(height));\n      this.current.element = cliprect;\n      this.clip('nonzero');\n      var imgEl = this.svgFactory.createElement('svg:image');\n      imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);\n      imgEl.setAttributeNS(null, 'x', '0');\n      imgEl.setAttributeNS(null, 'y', pf(-height));\n      imgEl.setAttributeNS(null, 'width', pf(width) + 'px');\n      imgEl.setAttributeNS(null, 'height', pf(height) + 'px');\n      imgEl.setAttributeNS(null, 'transform',\n                           'scale(' + pf(1 / width) + ' ' +\n                           pf(-1 / height) + ')');\n      if (mask) {\n        mask.appendChild(imgEl);\n      } else {\n        this._ensureTransformGroup().appendChild(imgEl);\n      }\n    },\n\n    paintImageMaskXObject:\n        function SVGGraphics_paintImageMaskXObject(imgData) {\n      var current = this.current;\n      var width = imgData.width;\n      var height = imgData.height;\n      var fillColor = current.fillColor;\n\n      current.maskId = 'mask' + maskCount++;\n      var mask = this.svgFactory.createElement('svg:mask');\n      mask.setAttributeNS(null, 'id', current.maskId);\n\n      var rect = this.svgFactory.createElement('svg:rect');\n      rect.setAttributeNS(null, 'x', '0');\n      rect.setAttributeNS(null, 'y', '0');\n      rect.setAttributeNS(null, 'width', pf(width));\n      rect.setAttributeNS(null, 'height', pf(height));\n      rect.setAttributeNS(null, 'fill', fillColor);\n      rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');\n      this.defs.appendChild(mask);\n\n      this._ensureTransformGroup().appendChild(rect);\n\n      this.paintInlineImageXObject(imgData, mask);\n    },\n\n    paintFormXObjectBegin:\n        function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {\n      if (Array.isArray(matrix) && matrix.length === 6) {\n        this.transform(matrix[0], matrix[1], matrix[2],\n                       matrix[3], matrix[4], matrix[5]);\n      }\n\n      if (Array.isArray(bbox) && bbox.length === 4) {\n        var width = bbox[2] - bbox[0];\n        var height = bbox[3] - bbox[1];\n\n        var cliprect = this.svgFactory.createElement('svg:rect');\n        cliprect.setAttributeNS(null, 'x', bbox[0]);\n        cliprect.setAttributeNS(null, 'y', bbox[1]);\n        cliprect.setAttributeNS(null, 'width', pf(width));\n        cliprect.setAttributeNS(null, 'height', pf(height));\n        this.current.element = cliprect;\n        this.clip('nonzero');\n        this.endPath();\n      }\n    },\n\n    paintFormXObjectEnd:\n        function SVGGraphics_paintFormXObjectEnd() {},\n\n    /**\n     * @private\n     */\n    _initialize(viewport) {\n      let svg = this.svgFactory.create(viewport.width, viewport.height);\n\n      // Create the definitions element.\n      let definitions = this.svgFactory.createElement('svg:defs');\n      svg.appendChild(definitions);\n      this.defs = definitions;\n\n      // Create the root group element, which acts a container for all other\n      // groups and applies the viewport transform.\n      let rootGroup = this.svgFactory.createElement('svg:g');\n      rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));\n      svg.appendChild(rootGroup);\n\n      // For the construction of the SVG image we are only interested in the\n      // root group, so we expose it as the entry point of the SVG image for\n      // the other code in this class.\n      this.svg = rootGroup;\n\n      return svg;\n    },\n\n    /**\n     * @private\n     */\n    _ensureClipGroup: function SVGGraphics_ensureClipGroup() {\n      if (!this.current.clipGroup) {\n        var clipGroup = this.svgFactory.createElement('svg:g');\n        clipGroup.setAttributeNS(null, 'clip-path',\n                                 this.current.activeClipUrl);\n        this.svg.appendChild(clipGroup);\n        this.current.clipGroup = clipGroup;\n      }\n      return this.current.clipGroup;\n    },\n\n    /**\n     * @private\n     */\n    _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {\n      if (!this.tgrp) {\n        this.tgrp = this.svgFactory.createElement('svg:g');\n        this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n        if (this.current.activeClipUrl) {\n          this._ensureClipGroup().appendChild(this.tgrp);\n        } else {\n          this.svg.appendChild(this.tgrp);\n        }\n      }\n      return this.tgrp;\n    },\n  };\n  return SVGGraphics;\n})();\n\n}\n\nexport {\n  SVGGraphics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nlet fs = __non_webpack_require__('fs');\nlet http = __non_webpack_require__('http');\nlet https = __non_webpack_require__('https');\nlet url = __non_webpack_require__('url');\n\nimport {\n  AbortException, assert, createPromiseCapability, MissingPDFException\n} from '../shared/util';\nimport {\n  extractFilenameFromHeader, validateRangeRequestCapabilities\n} from './network_utils';\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n  let parsedUrl = url.parse(sourceUrl);\n  if (parsedUrl.protocol === 'file:' || parsedUrl.host) {\n    return parsedUrl;\n  }\n  // Prepending 'file:///' to Windows absolute path.\n  if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n    return url.parse(`file:///${sourceUrl}`);\n  }\n  // Changes protocol to 'file:' if url refers to filesystem.\n  if (!parsedUrl.host) {\n    parsedUrl.protocol = 'file:';\n  }\n  return parsedUrl;\n}\n\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrl(source.url);\n    this.isHttp = this.url.protocol === 'http:' ||\n                  this.url.protocol === 'https:';\n    // Check if url refers to filesystem.\n    this.isFsUrl = this.url.protocol === 'file:';\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n    this._fullRequest = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    assert(!this._fullRequest);\n    this._fullRequest = this.isFsUrl ?\n      new PDFNodeStreamFsFullReader(this) :\n      new PDFNodeStreamFullReader(this);\n    return this._fullRequest;\n  }\n\n  getRangeReader(start, end) {\n    let rangeReader = this.isFsUrl ?\n      new PDFNodeStreamFsRangeReader(this, start, end) :\n      new PDFNodeStreamRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequest) {\n      this._fullRequest.cancel(reason);\n    }\n\n    let readers = this._rangeRequestReaders.slice(0);\n    readers.forEach(function(reader) {\n      reader.cancel(reason);\n    });\n  }\n}\n\nclass BaseFullReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    let source = stream.source;\n    this._contentLength = source.length; // optional\n    this._loaded = 0;\n    this._filename = null;\n\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._readableStream = null;\n    this._readCapability = createPromiseCapability();\n    this._headersCapability = createPromiseCapability();\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true, };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    let chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = createPromiseCapability();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: this._loaded,\n        total: this._contentLength,\n      });\n    }\n    // Ensure that `read()` method returns ArrayBuffer.\n    let buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false, };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on('readable', () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on('end', () => {\n      // Destroy readable to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on('error', (reason) => {\n      this._error(reason);\n    });\n\n    // We need to stop reading when range is supported and streaming is\n    // disabled.\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException('streaming is disabled'));\n    }\n\n    // Destroy ReadableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nclass BaseRangeReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = createPromiseCapability();\n    let source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true, };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    let chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = createPromiseCapability();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    if (this.onProgress) {\n      this.onProgress({ loaded: this._loaded, });\n    }\n    // Ensure that `read()` method returns ArrayBuffer.\n    let buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false, };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on('readable', () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on('end', () => {\n      // Destroy readableStream to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on('error', (reason) => {\n      this._error(reason);\n    });\n\n    // Destroy readableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nfunction createRequestOptions(url, headers) {\n  return {\n    protocol: url.protocol,\n    auth: url.auth,\n    host: url.hostname,\n    port: url.port,\n    path: url.path,\n    method: 'GET',\n    headers,\n  };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    let handleResponse = (response) => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      this._headersCapability.resolve();\n      this._setReadableStream(response);\n\n      const getResponseHeader = (name) => {\n        // Make sure that headers name are in lower case, as mentioned\n        // here: https://nodejs.org/api/http.html#http_message_headers.\n        return this._readableStream.headers[name.toLowerCase()];\n      };\n      let { allowRangeRequests, suggestedLength, } =\n        validateRangeRequestCapabilities({\n          getResponseHeader,\n          isHttp: stream.isHttp,\n          rangeChunkSize: this._rangeChunkSize,\n          disableRange: this._disableRange,\n        });\n\n      this._isRangeSupported = allowRangeRequests;\n      // Setting right content length.\n      this._contentLength = suggestedLength || this._contentLength;\n\n      this._filename = extractFilenameFromHeader(getResponseHeader);\n    };\n\n    this._request = null;\n    if (this._url.protocol === 'http:') {\n      this._request = http.request(\n        createRequestOptions(this._url, stream.httpHeaders),\n        handleResponse);\n    } else {\n      this._request = https.request(\n        createRequestOptions(this._url, stream.httpHeaders),\n        handleResponse);\n    }\n\n    this._request.on('error', (reason) => {\n      this._storedError = reason;\n      this._headersCapability.reject(reason);\n    });\n    // Note: `request.end(data)` is used to write `data` to request body\n    // and notify end of request. But one should always call `request.end()`\n    // even if there is no data to write -- (to notify the end of request).\n    this._request.end();\n  }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n\n    this._httpHeaders = {};\n    for (let property in stream.httpHeaders) {\n      let value = stream.httpHeaders[property];\n      if (typeof value === 'undefined') {\n        continue;\n      }\n      this._httpHeaders[property] = value;\n    }\n    this._httpHeaders['Range'] = `bytes=${start}-${end - 1}`;\n\n    let handleResponse = (response) => {\n      if (response.statusCode === 404) {\n        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        return;\n      }\n      this._setReadableStream(response);\n    };\n\n    this._request = null;\n    if (this._url.protocol === 'http:') {\n      this._request = http.request(\n        createRequestOptions(this._url, this._httpHeaders),\n        handleResponse);\n    } else {\n      this._request = https.request(\n        createRequestOptions(this._url, this._httpHeaders),\n        handleResponse);\n    }\n\n    this._request.on('error', (reason) => {\n      this._storedError = reason;\n    });\n    this._request.end();\n  }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    let path = decodeURIComponent(this._url.path);\n\n    // Remove the extra slash to get right path from url like `file:///C:/`\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, '');\n    }\n\n    fs.lstat(path, (error, stat) => {\n      if (error) {\n        if (error.code === 'ENOENT') {\n          error = new MissingPDFException(`Missing PDF \"${path}\".`);\n        }\n        this._storedError = error;\n        this._headersCapability.reject(error);\n        return;\n      }\n      // Setting right content length.\n      this._contentLength = stat.size;\n\n      this._setReadableStream(fs.createReadStream(path));\n      this._headersCapability.resolve();\n    });\n  }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n\n    let path = decodeURIComponent(this._url.path);\n\n    // Remove the extra slash to get right path from url like `file:///C:/`\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, '');\n    }\n\n    this._setReadableStream(\n      fs.createReadStream(path, { start, end: end - 1, }));\n  }\n}\n\nexport {\n  PDFNodeStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert, MissingPDFException, UnexpectedResponseException\n} from '../shared/util';\nimport {\n  getFilenameFromContentDispositionHeader\n} from './content_disposition';\n\nfunction validateRangeRequestCapabilities({ getResponseHeader, isHttp,\n                                            rangeChunkSize, disableRange, }) {\n  assert(rangeChunkSize > 0, 'Range chunk size must be larger than zero');\n  let returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined,\n  };\n\n  let length = parseInt(getResponseHeader('Content-Length'), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n\n  returnValues.suggestedLength = length;\n\n  if (length <= 2 * rangeChunkSize) {\n    // The file size is smaller than the size of two chunks, so it does not\n    // make any sense to abort the request and retry with a range request.\n    return returnValues;\n  }\n\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (getResponseHeader('Accept-Ranges') !== 'bytes') {\n    return returnValues;\n  }\n\n  let contentEncoding = getResponseHeader('Content-Encoding') || 'identity';\n  if (contentEncoding !== 'identity') {\n    return returnValues;\n  }\n\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n  const contentDisposition = getResponseHeader('Content-Disposition');\n  if (contentDisposition) {\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n    if (/\\.pdf$/i.test(filename)) {\n      return filename;\n    }\n  }\n  return null;\n}\n\nfunction createResponseStatusError(status, url) {\n  if (status === 404 || status === 0 && /^file:/.test(url)) {\n    return new MissingPDFException('Missing PDF \"' + url + '\".');\n  }\n  return new UnexpectedResponseException(\n    'Unexpected server response (' + status +\n    ') while retrieving PDF \"' + url + '\".', status);\n}\n\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\nexport {\n  createResponseStatusError,\n  extractFilenameFromHeader,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Support UTF-8 decoding when TextDecoder is unsupported.\n// - Replace Array.from with Array + loop for compat with old browsers.\n// - Replace \"startsWith\" with other string method for compat with old browsers.\n// - Move return to the end of the function to prevent Babel from dropping the\n//   function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @return {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n\n  // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n  let tmp = toParamRegExp('filename\\\\*', 'i').exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n  // filename*n*=part\n  // filename*n=part\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    // RFC 2047, section\n    let filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n\n  // filename=value (RFC 5987, section 4.1).\n  tmp = toParamRegExp('filename', 'i').exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // After this line there are only function declarations. We cannot put\n  // \"return\" here for readability because babel would then drop the function\n  // declarations...\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\n      '(?:^|;)\\\\s*' + attributePattern + '\\\\s*=\\\\s*' +\n      // Captures: value = token | quoted-string\n      // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n      '(' +\n        '[^\";\\\\s][^;\\\\s]*' +\n      '|' +\n        '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n      ')', flags);\n  }\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n      try {\n        let decoder = new TextDecoder(encoding, { fatal: true, });\n        let bytes = new Array(value.length);\n        for (let i = 0; i < value.length; ++i) {\n          bytes[i] = value.charCodeAt(i);\n        }\n        value = decoder.decode(new Uint8Array(bytes));\n        needsEncodingFixup = false;\n      } catch (e) {\n        // TextDecoder constructor threw - unrecognized encoding.\n        // Or TextDecoder API is not available (in IE / Edge).\n        if (/^utf-?8$/i.test(encoding)) {\n          // UTF-8 is commonly used, try to support it in another way:\n          try {\n            value = decodeURIComponent(escape(value));\n            needsEncodingFixup = false;\n          } catch (err) {\n          }\n        }\n      }\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      // Maybe multi-byte UTF-8.\n      value = textdecode('utf-8', value);\n      if (needsEncodingFixup) {\n        // Try iso-8859-1 encoding.\n        value = textdecode('iso-8859-1', value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDisposition) {\n    let matches = [], match;\n    // Iterate over all filename*n= and filename*n*= with n being an integer\n    // of at least zero. Any non-zero number must not start with '0'.\n    let iter = toParamRegExp('filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)', 'ig');\n    while ((match = iter.exec(contentDisposition)) !== null) {\n      let [, n, quot, part] = match;\n      n = parseInt(n, 10);\n      if (n in matches) {\n        // Ignore anything after the invalid second filename*0.\n        if (n === 0) {\n          break;\n        }\n        continue;\n      }\n      matches[n] = [quot, part];\n    }\n    let parts = [];\n    for (let n = 0; n < matches.length; ++n) {\n      if (!(n in matches)) {\n        // Numbers must be consecutive. Truncate when there is a hole.\n        break;\n      }\n      let [quot, part] = matches[n];\n      part = rfc2616unquote(part);\n      if (quot) {\n        part = unescape(part);\n        if (n === 0) {\n          part = rfc5987decode(part);\n        }\n      }\n      parts.push(part);\n    }\n    return parts.join('');\n  }\n  function rfc2616unquote(value) {\n    if (value.charAt(0) === '\"') {\n      let parts = value.slice(1).split('\\\\\"');\n      // Find the first unescaped \" and terminate there.\n      for (let i = 0; i < parts.length; ++i) {\n        let quotindex = parts[i].indexOf('\"');\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1; // Truncates and stop the iteration.\n        }\n        parts[i] = parts[i].replace(/\\\\(.)/g, '$1');\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    // Decodes \"ext-value\" from RFC 5987.\n    let encodingend = extvalue.indexOf('\\'');\n    if (encodingend === -1) {\n      // Some servers send \"filename*=\" without encoding 'language' prefix,\n      // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n      // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n      return extvalue;\n    }\n    let encoding = extvalue.slice(0, encodingend);\n    let langvalue = extvalue.slice(encodingend + 1);\n    // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n    let value = langvalue.replace(/^[^']*'/, '');\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    // RFC 2047-decode the result. Firefox tried to drop support for it, but\n    // backed out because some servers use it - https://bugzil.la/875615\n    // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n    // We are more strict and only recognize RFC 2047-encoding if the value\n    // starts with \"=?\", since then it is likely that the full value is\n    // RFC 2047-encoded.\n\n    // Firefox also decodes words even where RFC 2047 section 5 states:\n    // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n    if (value.slice(0, 2) !== '=?' || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    // RFC 2047, section 2.4\n    // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n    // charset = token (but let's restrict to characters that denote a\n    //       possibly valid encoding).\n    // encoding = q or b\n    // encoded-text = any printable ASCII character other than ? or space.\n    //        ... but Firefox permits ? and space.\n    return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n      function(_, charset, encoding, text) {\n        if (encoding === 'q' || encoding === 'Q') {\n          // RFC 2047 section 4.2.\n          text = text.replace(/_/g, ' ');\n          text = text.replace(/=([0-9a-fA-F]{2})/g, function(_, hex) {\n            return String.fromCharCode(parseInt(hex, 16));\n          });\n          return textdecode(charset, text);\n        } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n        try {\n          text = atob(text);\n        } catch (e) {\n        }\n        return textdecode(charset, text);\n      });\n  }\n\n  return '';\n}\n\nexport {\n  getFilenameFromContentDispositionHeader,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException, assert, createPromiseCapability\n} from '../shared/util';\nimport {\n  createResponseStatusError, extractFilenameFromHeader,\n  validateRangeRequestCapabilities, validateResponseStatus\n} from './network_utils';\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n  return {\n    method: 'GET',\n    headers,\n    signal: abortController && abortController.signal,\n    mode: 'cors',\n    credentials: withCredentials ? 'include' : 'same-origin',\n    redirect: 'follow',\n  };\n}\n\nclass PDFFetchStream {\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    assert(!this._fullRequestReader);\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    let reader = new PDFFetchStreamRangeReader(this, begin, end);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    let readers = this._rangeRequestReaders.slice(0);\n    readers.forEach(function(reader) {\n      reader.cancel(reason);\n    });\n  }\n}\n\nclass PDFFetchStreamReader {\n  constructor(stream) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    let source = stream.source;\n    this._withCredentials = source.withCredentials;\n    this._contentLength = source.length;\n    this._headersCapability = createPromiseCapability();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    if (typeof AbortController !== 'undefined') {\n      this._abortController = new AbortController();\n    }\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._headers = new Headers();\n    for (let property in this._stream.httpHeaders) {\n      let value = this._stream.httpHeaders[property];\n      if (typeof value === 'undefined') {\n        continue;\n      }\n      this._headers.append(property, value);\n    }\n\n    let url = source.url;\n    fetch(url, createFetchOptions(this._headers, this._withCredentials,\n        this._abortController)).then((response) => {\n      if (!validateResponseStatus(response.status)) {\n        throw createResponseStatusError(response.status, url);\n      }\n      this._reader = response.body.getReader();\n      this._headersCapability.resolve();\n\n      const getResponseHeader = (name) => {\n        return response.headers.get(name);\n      };\n      let { allowRangeRequests, suggestedLength, } =\n        validateRangeRequestCapabilities({\n          getResponseHeader,\n          isHttp: this._stream.isHttp,\n          rangeChunkSize: this._rangeChunkSize,\n          disableRange: this._disableRange,\n        });\n\n      this._isRangeSupported = allowRangeRequests;\n      // Setting right content length.\n      this._contentLength = suggestedLength || this._contentLength;\n\n      this._filename = extractFilenameFromHeader(getResponseHeader);\n\n      // We need to stop reading when range is supported and streaming is\n      // disabled.\n      if (!this._isStreamingSupported && this._isRangeSupported) {\n        this.cancel(new AbortException('streaming is disabled'));\n      }\n    }).catch(this._headersCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n    const { value, done, } = await this._reader.read();\n    if (done) {\n      return { value, done, };\n    }\n    this._loaded += value.byteLength;\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: this._loaded,\n        total: this._contentLength,\n      });\n    }\n    let buffer = new Uint8Array(value).buffer;\n    return { value: buffer, done: false, };\n  }\n\n  cancel(reason) {\n    if (this._reader) {\n      this._reader.cancel(reason);\n    }\n    if (this._abortController) {\n      this._abortController.abort();\n    }\n  }\n}\n\nclass PDFFetchStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    let source = stream.source;\n    this._withCredentials = source.withCredentials;\n    this._readCapability = createPromiseCapability();\n    this._isStreamingSupported = !source.disableStream;\n\n    if (typeof AbortController !== 'undefined') {\n      this._abortController = new AbortController();\n    }\n\n    this._headers = new Headers();\n    for (let property in this._stream.httpHeaders) {\n      let value = this._stream.httpHeaders[property];\n      if (typeof value === 'undefined') {\n        continue;\n      }\n      this._headers.append(property, value);\n    }\n\n    let rangeStr = begin + '-' + (end - 1);\n    this._headers.append('Range', 'bytes=' + rangeStr);\n    let url = source.url;\n    fetch(url, createFetchOptions(this._headers, this._withCredentials,\n        this._abortController)).then((response) => {\n      if (!validateResponseStatus(response.status)) {\n        throw createResponseStatusError(response.status, url);\n      }\n      this._readCapability.resolve();\n      this._reader = response.body.getReader();\n    });\n\n    this.onProgress = null;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    const { value, done, } = await this._reader.read();\n    if (done) {\n      return { value, done, };\n    }\n    this._loaded += value.byteLength;\n    if (this.onProgress) {\n      this.onProgress({ loaded: this._loaded, });\n    }\n    let buffer = new Uint8Array(value).buffer;\n    return { value: buffer, done: false, };\n  }\n\n  cancel(reason) {\n    if (this._reader) {\n      this._reader.cancel(reason);\n    }\n    if (this._abortController) {\n      this._abortController.abort();\n    }\n  }\n}\n\nexport {\n  PDFFetchStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability, stringToBytes } from '../shared/util';\nimport {\n  createResponseStatusError, extractFilenameFromHeader,\n  validateRangeRequestCapabilities\n} from './network_utils';\nimport globalScope from '../shared/global_scope';\n\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n  throw new Error('Module \"./network\" shall not ' +\n                  'be used with FIREFOX or MOZCENTRAL build.');\n}\n\nvar OK_RESPONSE = 200;\nvar PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction NetworkManager(url, args) {\n  this.url = url;\n  args = args || {};\n  this.isHttp = /^https?:/i.test(url);\n  this.httpHeaders = (this.isHttp && args.httpHeaders) || {};\n  this.withCredentials = args.withCredentials || false;\n  this.getXhr = args.getXhr ||\n    function NetworkManager_getXhr() {\n      return new XMLHttpRequest();\n    };\n\n  this.currXhrId = 0;\n  this.pendingRequests = Object.create(null);\n  this.loadedRequests = Object.create(null);\n}\n\nfunction getArrayBuffer(xhr) {\n  var data = xhr.response;\n  if (typeof data !== 'string') {\n    return data;\n  }\n  let array = stringToBytes(data);\n  return array.buffer;\n}\n\nvar supportsMozChunked =\n  typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME') ? false :\n    (function supportsMozChunkedClosure() {\n  try {\n    var x = new XMLHttpRequest();\n    // Firefox 37- required .open() to be called before setting responseType.\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=707484\n    // Even though the URL is not visited, .open() could fail if the URL is\n    // blocked, e.g. via the connect-src CSP directive or the NoScript addon.\n    // When this error occurs, this feature detection method will mistakenly\n    // report that moz-chunked-arraybuffer is not supported in Firefox 37-.\n    x.open('GET', globalScope.location.href);\n    x.responseType = 'moz-chunked-arraybuffer';\n    return x.responseType === 'moz-chunked-arraybuffer';\n  } catch (e) {\n    return false;\n  }\n})();\n\nNetworkManager.prototype = {\n  requestRange: function NetworkManager_requestRange(begin, end, listeners) {\n    var args = {\n      begin,\n      end,\n    };\n    for (var prop in listeners) {\n      args[prop] = listeners[prop];\n    }\n    return this.request(args);\n  },\n\n  requestFull: function NetworkManager_requestFull(listeners) {\n    return this.request(listeners);\n  },\n\n  request: function NetworkManager_request(args) {\n    var xhr = this.getXhr();\n    var xhrId = this.currXhrId++;\n    var pendingRequest = this.pendingRequests[xhrId] = {\n      xhr,\n    };\n\n    xhr.open('GET', this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (var property in this.httpHeaders) {\n      var value = this.httpHeaders[property];\n      if (typeof value === 'undefined') {\n        continue;\n      }\n      xhr.setRequestHeader(property, value);\n    }\n    if (this.isHttp && 'begin' in args && 'end' in args) {\n      var rangeStr = args.begin + '-' + (args.end - 1);\n      xhr.setRequestHeader('Range', 'bytes=' + rangeStr);\n      pendingRequest.expectedStatus = 206;\n    } else {\n      pendingRequest.expectedStatus = 200;\n    }\n\n    var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData;\n    if (useMozChunkedLoading) {\n      xhr.responseType = 'moz-chunked-arraybuffer';\n      pendingRequest.onProgressiveData = args.onProgressiveData;\n      pendingRequest.mozChunked = true;\n    } else {\n      xhr.responseType = 'arraybuffer';\n    }\n\n    if (args.onError) {\n      xhr.onerror = function(evt) {\n        args.onError(xhr.status);\n      };\n    }\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n\n    xhr.send(null);\n\n    return xhrId;\n  },\n\n  onProgress: function NetworkManager_onProgress(xhrId, evt) {\n    var pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      // Maybe abortRequest was called...\n      return;\n    }\n\n    if (pendingRequest.mozChunked) {\n      var chunk = getArrayBuffer(pendingRequest.xhr);\n      pendingRequest.onProgressiveData(chunk);\n    }\n\n    var onProgress = pendingRequest.onProgress;\n    if (onProgress) {\n      onProgress(evt);\n    }\n  },\n\n  onStateChange: function NetworkManager_onStateChange(xhrId, evt) {\n    var pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      // Maybe abortRequest was called...\n      return;\n    }\n\n    var xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (!(xhrId in this.pendingRequests)) {\n      // The XHR request might have been aborted in onHeadersReceived()\n      // callback, in which case we should abort request\n      return;\n    }\n\n    delete this.pendingRequests[xhrId];\n\n    // success status == 0 can be on ftp, file and other protocols\n    if (xhr.status === 0 && this.isHttp) {\n      if (pendingRequest.onError) {\n        pendingRequest.onError(xhr.status);\n      }\n      return;\n    }\n    var xhrStatus = xhr.status || OK_RESPONSE;\n\n    // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n    // \"A server MAY ignore the Range header\". This means it's possible to\n    // get a 200 rather than a 206 response from a range request.\n    var ok_response_on_range_request =\n        xhrStatus === OK_RESPONSE &&\n        pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n    if (!ok_response_on_range_request &&\n        xhrStatus !== pendingRequest.expectedStatus) {\n      if (pendingRequest.onError) {\n        pendingRequest.onError(xhr.status);\n      }\n      return;\n    }\n\n    this.loadedRequests[xhrId] = true;\n\n    var chunk = getArrayBuffer(xhr);\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      var rangeHeader = xhr.getResponseHeader('Content-Range');\n      var matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      var begin = parseInt(matches[1], 10);\n      pendingRequest.onDone({\n        begin,\n        chunk,\n      });\n    } else if (pendingRequest.onProgressiveData) {\n      pendingRequest.onDone(null);\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk,\n      });\n    } else if (pendingRequest.onError) {\n      pendingRequest.onError(xhr.status);\n    }\n  },\n\n  hasPendingRequests: function NetworkManager_hasPendingRequests() {\n    for (var xhrId in this.pendingRequests) {\n      return true;\n    }\n    return false;\n  },\n\n  getRequestXhr: function NetworkManager_getXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  },\n\n  isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {\n    return !!(this.pendingRequests[xhrId].onProgressiveData);\n  },\n\n  isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  },\n\n  isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {\n    return xhrId in this.loadedRequests;\n  },\n\n  abortAllRequests: function NetworkManager_abortAllRequests() {\n    for (var xhrId in this.pendingRequests) {\n      this.abortRequest(xhrId | 0);\n    }\n  },\n\n  abortRequest: function NetworkManager_abortRequest(xhrId) {\n    var xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  },\n};\n\n/** @implements {IPDFStream} */\nfunction PDFNetworkStream(source) {\n  this._source = source;\n  this._manager = new NetworkManager(source.url, {\n    httpHeaders: source.httpHeaders,\n    withCredentials: source.withCredentials,\n  });\n  this._rangeChunkSize = source.rangeChunkSize;\n  this._fullRequestReader = null;\n  this._rangeRequestReaders = [];\n}\n\nPDFNetworkStream.prototype = {\n  _onRangeRequestReaderClosed:\n      function PDFNetworkStream_onRangeRequestReaderClosed(reader) {\n    var i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  },\n\n  getFullReader: function PDFNetworkStream_getFullReader() {\n    assert(!this._fullRequestReader);\n    this._fullRequestReader =\n      new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n    return this._fullRequestReader;\n  },\n\n  getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) {\n    var reader = new PDFNetworkStreamRangeRequestReader(this._manager,\n                                                        begin, end);\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  },\n\n  cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n    var readers = this._rangeRequestReaders.slice(0);\n    readers.forEach(function (reader) {\n      reader.cancel(reason);\n    });\n  },\n};\n\n/** @implements {IPDFStreamReader} */\nfunction PDFNetworkStreamFullRequestReader(manager, source) {\n  this._manager = manager;\n\n  var args = {\n    onHeadersReceived: this._onHeadersReceived.bind(this),\n    onProgressiveData: source.disableStream ? null :\n                       this._onProgressiveData.bind(this),\n    onDone: this._onDone.bind(this),\n    onError: this._onError.bind(this),\n    onProgress: this._onProgress.bind(this),\n  };\n  this._url = source.url;\n  this._fullRequestId = manager.requestFull(args);\n  this._headersReceivedCapability = createPromiseCapability();\n  this._disableRange = source.disableRange || false;\n  this._contentLength = source.length; // optional\n  this._rangeChunkSize = source.rangeChunkSize;\n  if (!this._rangeChunkSize && !this._disableRange) {\n    this._disableRange = true;\n  }\n\n  this._isStreamingSupported = false;\n  this._isRangeSupported = false;\n\n  this._cachedChunks = [];\n  this._requests = [];\n  this._done = false;\n  this._storedError = undefined;\n  this._filename = null;\n\n  this.onProgress = null;\n}\n\nPDFNetworkStreamFullRequestReader.prototype = {\n  _onHeadersReceived:\n      function PDFNetworkStreamFullRequestReader_onHeadersReceived() {\n    var fullRequestXhrId = this._fullRequestId;\n    var fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n    const getResponseHeader = (name) => {\n      return fullRequestXhr.getResponseHeader(name);\n    };\n    let { allowRangeRequests, suggestedLength, } =\n      validateRangeRequestCapabilities({\n        getResponseHeader,\n        isHttp: this._manager.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange,\n      });\n\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    // Setting right content length.\n    this._contentLength = suggestedLength || this._contentLength;\n\n    this._filename = extractFilenameFromHeader(getResponseHeader);\n\n    var networkManager = this._manager;\n    if (networkManager.isStreamingRequest(fullRequestXhrId)) {\n      // We can continue fetching when progressive loading is enabled,\n      // and we don't need the autoFetch feature.\n      this._isStreamingSupported = true;\n    } else if (this._isRangeSupported) {\n      // NOTE: by cancelling the full request, and then issuing range\n      // requests, there will be an issue for sites where you can only\n      // request the pdf once. However, if this is the case, then the\n      // server should not be returning that it can support range\n      // requests.\n      networkManager.abortRequest(fullRequestXhrId);\n    }\n\n    this._headersReceivedCapability.resolve();\n  },\n\n  _onProgressiveData:\n      function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) {\n    if (this._requests.length > 0) {\n      var requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false, });\n    } else {\n      this._cachedChunks.push(chunk);\n    }\n  },\n\n  _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) {\n    if (args) {\n      this._onProgressiveData(args.chunk);\n    }\n    this._done = true;\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.resolve({ value: undefined, done: true, });\n    });\n    this._requests = [];\n  },\n\n  _onError: function PDFNetworkStreamFullRequestReader_onError(status) {\n    var url = this._url;\n    var exception = createResponseStatusError(status, url);\n    this._storedError = exception;\n    this._headersReceivedCapability.reject(exception);\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.reject(exception);\n    });\n    this._requests = [];\n    this._cachedChunks = [];\n  },\n\n  _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) {\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: data.loaded,\n        total: data.lengthComputable ? data.total : this._contentLength,\n      });\n    }\n  },\n\n  get filename() {\n    return this._filename;\n  },\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  },\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  },\n\n  get contentLength() {\n    return this._contentLength;\n  },\n\n  get headersReady() {\n    return this._headersReceivedCapability.promise;\n  },\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      var chunk = this._cachedChunks.shift();\n      return { value: chunk, done: false, };\n    }\n    if (this._done) {\n      return { value: undefined, done: true, };\n    }\n    var requestCapability = createPromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  },\n\n  cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) {\n    this._done = true;\n    this._headersReceivedCapability.reject(reason);\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.resolve({ value: undefined, done: true, });\n    });\n    this._requests = [];\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n    this._fullRequestReader = null;\n  },\n};\n\n/** @implements {IPDFStreamRangeReader} */\nfunction PDFNetworkStreamRangeRequestReader(manager, begin, end) {\n  this._manager = manager;\n  var args = {\n    onDone: this._onDone.bind(this),\n    onProgress: this._onProgress.bind(this),\n  };\n  this._requestId = manager.requestRange(begin, end, args);\n  this._requests = [];\n  this._queuedChunk = null;\n  this._done = false;\n\n  this.onProgress = null;\n  this.onClosed = null;\n}\n\nPDFNetworkStreamRangeRequestReader.prototype = {\n  _close: function PDFNetworkStreamRangeRequestReader_close() {\n    if (this.onClosed) {\n      this.onClosed(this);\n    }\n  },\n\n  _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) {\n    var chunk = data.chunk;\n    if (this._requests.length > 0) {\n      var requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false, });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.resolve({ value: undefined, done: true, });\n    });\n    this._requests = [];\n    this._close();\n  },\n\n  _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) {\n    if (!this.isStreamingSupported && this.onProgress) {\n      this.onProgress({\n        loaded: evt.loaded,\n      });\n    }\n  },\n\n  get isStreamingSupported() {\n    return false; // TODO allow progressive range bytes loading\n  },\n\n  async read() {\n    if (this._queuedChunk !== null) {\n      var chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false, };\n    }\n    if (this._done) {\n      return { value: undefined, done: true, };\n    }\n    var requestCapability = createPromiseCapability();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  },\n\n  cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) {\n    this._done = true;\n    this._requests.forEach(function (requestCapability) {\n      requestCapability.resolve({ value: undefined, done: true, });\n    });\n    this._requests = [];\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n    this._close();\n  },\n};\n\nexport {\n  PDFNetworkStream,\n  NetworkManager,\n};\n"],"sourceRoot":""}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.worker.js
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/build/pdf.worker.js.map
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
{"version":3,"sources":["webpack://pdfjs-dist/build/pdf.worker/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf.worker/webpack/bootstrap","webpack://pdfjs-dist/build/pdf.worker/src/pdf.worker.js","webpack://pdfjs-dist/build/pdf.worker/src/core/worker.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/util.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/global_scope.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/string/includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.string.includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_export.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_global.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_core.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_hide.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-dp.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_an-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_is-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_ie8-dom-define.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_descriptors.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_fails.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_dom-create.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_to-primitive.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_property-desc.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_redefine.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_has.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_uid.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_ctx.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_a-function.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_string-context.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_is-regexp.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_cof.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_wks.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_shared.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_library.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_defined.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_fails-is-regexp.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/array/includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es7.array.includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_array-includes.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_to-iobject.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_iobject.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_to-length.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_to-integer.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_to-absolute-index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_add-to-unscopables.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/object/assign.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.object.assign.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-assign.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-keys-internal.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_shared-key.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_enum-bug-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-gops.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-pie.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_to-object.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/math/log2.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.math.log2.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/number/is-nan.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.number.is-nan.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/number/is-integer.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.number.is-integer.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_is-integer.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/promise.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.object.to-string.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_classof.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.string.iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_string-at.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_iter-define.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_iterators.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_iter-create.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-create.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-dps.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_html.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_set-to-string-tag.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-gpo.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/web.dom.iterable.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.array.iterator.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_iter-step.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.promise.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_an-instance.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_for-of.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_iter-call.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_is-array-iter.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/core.get-iterator-method.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_species-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_task.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_invoke.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_microtask.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_new-promise-capability.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_perform.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_user-agent.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_promise-resolve.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_redefine-all.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_set-species.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_iter-detect.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es7.promise.finally.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es7.promise.try.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/weak-map.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.weak-map.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_array-methods.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_array-species-create.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_array-species-constructor.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_is-array.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_meta.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_collection-weak.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_validate-collection.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_collection.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_inherit-if-required.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_set-proto.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-gopd.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es7.weak-map.of.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_set-collection-of.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es7.weak-map.from.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_set-collection-from.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/string/code-point-at.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.string.code-point-at.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/string/from-code-point.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.string.from-code-point.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/es6/symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es6.symbol.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_wks-ext.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_wks-define.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_enum-keys.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-gopn-ext.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-gopn.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/fn/object/values.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/es7.object.values.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/core-js/modules/_object-to-array.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/streams_polyfill.js","webpack://pdfjs-dist/build/pdf.worker/external/streams/streams-lib.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/url_polyfill.js","webpack://pdfjs-dist/build/pdf.worker/external/url/url-lib.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pdf_manager.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/babel-runtime/regenerator/index.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/regenerator-runtime/runtime-module.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/regenerator-runtime/runtime.js","webpack://pdfjs-dist/build/pdf.worker/node_modules/webpack/buildin/module.js","webpack://pdfjs-dist/build/pdf.worker/src/core/chunked_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/document.js","webpack://pdfjs-dist/build/pdf.worker/src/core/obj.js","webpack://pdfjs-dist/build/pdf.worker/src/core/primitives.js","webpack://pdfjs-dist/build/pdf.worker/src/core/parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ccitt.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jbig2.js","webpack://pdfjs-dist/build/pdf.worker/src/core/arithmetic_decoder.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpeg_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpg.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx_stream.js","webpack://pdfjs-dist/build/pdf.worker/src/core/jpx.js","webpack://pdfjs-dist/build/pdf.worker/src/core/crypto.js","webpack://pdfjs-dist/build/pdf.worker/src/core/colorspace.js","webpack://pdfjs-dist/build/pdf.worker/src/core/annotation.js","webpack://pdfjs-dist/build/pdf.worker/src/core/operator_list.js","webpack://pdfjs-dist/build/pdf.worker/src/core/evaluator.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cmap.js","webpack://pdfjs-dist/build/pdf.worker/src/core/fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/cff_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/charsets.js","webpack://pdfjs-dist/build/pdf.worker/src/core/encodings.js","webpack://pdfjs-dist/build/pdf.worker/src/core/glyphlist.js","webpack://pdfjs-dist/build/pdf.worker/src/core/standard_fonts.js","webpack://pdfjs-dist/build/pdf.worker/src/core/unicode.js","webpack://pdfjs-dist/build/pdf.worker/src/core/font_renderer.js","webpack://pdfjs-dist/build/pdf.worker/src/core/type1_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/pattern.js","webpack://pdfjs-dist/build/pdf.worker/src/core/bidi.js","webpack://pdfjs-dist/build/pdf.worker/src/core/metrics.js","webpack://pdfjs-dist/build/pdf.worker/src/core/function.js","webpack://pdfjs-dist/build/pdf.worker/src/core/ps_parser.js","webpack://pdfjs-dist/build/pdf.worker/src/core/murmurhash3.js","webpack://pdfjs-dist/build/pdf.worker/src/core/image.js","webpack://pdfjs-dist/build/pdf.worker/src/shared/message_handler.js"],"names":["pdfjsVersion","pdfjsBuild","pdfjsCoreWorker","require","exports","WorkerTask","finish","terminate","ensureNotTerminated","PDFWorkerStream","getFullReader","assert","getRangeReader","reader","cancelAllRequests","readers","readableStream","data","PDFWorkerStreamReader","read","value","done","cancel","PDFWorkerStreamRangeReader","WorkerMessageHandler","setup","testMessageProcessed","handler","supportTransfers","xhr","responseExists","supportTypedArray","setVerbosityLevel","createDocumentHandler","terminated","cancelXHRs","WorkerTasks","apiVersion","docParams","workerVersion","docId","docBaseUrl","workerHandlerName","task","i","loadDocumentCapability","parseSuccess","Promise","pdfManager","parseFailure","pdfManagerCapability","source","cachedChunks","pdfStream","fullRequest","disableAutoFetch","msgHandler","url","password","length","rangeChunkSize","loaded","flushChunks","pdfFile","arraysToBytes","warn","readPromise","readChunk","chunk","arrayByteLength","total","Math","reject","pdfInfo","e","startWorkerTask","finishWorkerTask","loadDocument","onFailure","evaluatorOptions","forceDataSchema","maxImageSize","disableFontFace","nativeImageDecoderSupport","ignoreErrors","isEvalSupported","getPdfManager","newPdfManager","stream","ref","catalog","page","pageIndex","pageNum","start","Date","intent","renderInteractiveForms","info","operatorList","featureId","UNSUPPORTED_FEATURES","minimumStackMessage","wrappedException","message","stack","error","sink","normalizeWhitespace","combineTextItems","waitOn","setupDoc","initializeFromPort","maybePort","isMessagePort","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","NativeImageDecoding","NONE","DECODE","DISPLAY","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RL","FontType","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","smask","shadingPattern","font","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","Number","console","unreachable","base","other","absoluteUrl","baseUrl","_isValidProtocol","Object","enumerable","configurable","writable","lookup","initializer","PasswordException","UnknownErrorException","InvalidPDFException","MissingPDFException","UnexpectedResponseException","MissingDataException","XRefParseException","FormatError","AbortException","NullCharactersRegExp","str","bytes","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","arr","resultLength","ii","item","itemLength","pos","stringToBytes","x","offset","buffer8","view32","getArray","stopWhenFound","LOOP_LIMIT","loopCount","dict","values","Util","rgbBuf","m1","m2","xt","p","m","yt","d","p1","p2","r","p3","p4","v","transpose","a","b","c","first","second","sx","sy","rect","orderedX","rect1","rect2","orderedY","result","ROMAN_NUMBER_MAP","lowerCase","number","romanBuf","romanStr","PDFStringTranslateTable","n","code","decodeURIComponent","escape","unescape","encodeURIComponent","ch","capability","createObjectURL","digits","URL","blob","type","buffer","b1","b2","b3","d1","d2","d3","d4","globalScope","isNodeJS","hasDOM","Buffer","get","scripts","document","Element","div","originalDOMTokenListToggle","DOMTokenList","arguments","force","Array","module","window","global","self","process","$export","context","INCLUDES","includes","core","hide","redefine","ctx","PROTOTYPE","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","target","expProto","own","out","exp","Function","__g","version","__e","dP","createDesc","object","anObject","IE8_DOM_DEFINE","toPrimitive","P","TypeError","O","Attributes","isObject","it","is","S","val","fn","has","SRC","TO_STRING","$toString","TPL","isFunction","hasOwnProperty","id","px","key","aFunction","that","isRegExp","defined","cof","MATCH","toString","store","uid","Symbol","USE_SYMBOL","$exports","SHARED","mode","copyright","re","$includes","toIObject","toLength","toAbsoluteIndex","index","IS_INCLUDES","el","IObject","toInteger","min","ceil","floor","isNaN","max","UNSCOPABLES","ArrayProto","assign","getKeys","gOPS","pIE","toObject","$assign","A","B","K","T","aLen","getSymbols","isEnum","keys","j","$keys","enumBugKeys","arrayIndexOf","IE_PROTO","names","shared","log2","isInteger","isFinite","classof","test","TAG","ARG","tryGet","$at","point","s","l","LIBRARY","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","getMethod","kind","proto","NAME","DEF_VALUES","DEFAULT","VALUES_BUG","Base","$native","$default","$entries","$anyNative","IteratorPrototype","methods","IS_SET","entries","create","descriptor","Constructor","next","dPs","Empty","createDict","iframe","lt","gt","iframeDocument","Properties","def","stat","ObjectProto","$iterators","wks","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","addToUnscopables","step","anInstance","forOf","speciesConstructor","microtask","newPromiseCapabilityModule","perform","userAgent","promiseResolve","PROMISE","versions","v8","$Promise","isNode","empty","newPromiseCapability","newGenericPromiseCapability","USE_NATIVE","promise","FakePromise","exec","isThenable","notify","chain","ok","run","reaction","resolve","domain","onHandleUnhandled","exited","then","isReject","onUnhandled","unhandled","isUnhandled","reason","$reject","$resolve","wrapper","_w","_d","Internal","executor","OwnPromiseCapability","C","Wrapper","$$reject","all","remaining","$index","alreadyCalled","race","forbiddenField","name","call","isArrayIter","getIterFn","BREAK","RETURN","iterFn","f","iterable","iterator","ret","SPECIES","invoke","html","cel","setTask","clearTask","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","listener","event","args","defer","channel","port","setTimeout","set","clear","un","macrotask","Observer","flush","parent","head","last","toggle","node","characterData","navigator","promiseCapability","src","DESCRIPTORS","SAFE_CLOSING","riter","safe","iter","each","meta","weak","fails","validate","WEAK_MAP","getWeak","isExtensible","uncaughtFrozenStore","tmp","$WeakMap","InternalMap","method","asc","IS_MAP","TYPE","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$create","res","isArray","original","META","setDesc","FREEZE","setMeta","w","fastKey","onFreeze","KEY","NEED","redefineAll","createArrayMethod","$has","arrayFind","arrayFindIndex","UncaughtFrozenStore","findUncaughtFrozen","entry","getConstructor","ufstore","$iterDetect","inheritIfRequired","ADDER","fixMethod","IS_WEAK","common","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setPrototypeOf","check","buggy","gOPD","of","from","mapFn","mapping","cb","codePointAt","fromCharCode","$fromCodePoint","fromCodePoint","RangeError","$fails","wksExt","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","gOPN","$Symbol","$JSON","_stringify","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperty","D","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","tag","$set","es6Symbols","wellKnownSymbols","k","keyFor","useSetter","useSimple","defineProperty","defineProperties","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","stringify","$replacer","replacer","symbols","windowNames","getWindowNames","hiddenKeys","$values","isReadableStreamSupported","controller","installedModules","modules","__w_pdfjs_require__","getter","_typeof","obj","_require","elements","IsPropertyKey","Call","F","highWaterMark","size","AssertionError","Error","rethrowAssertionErrorRejection","_createClass","props","InvokeOrNoop","PromiseInvokeOrNoop","ValidateAndNormalizeQueuingStrategy","typeIsObject","_require2","_require3","DequeueValue","EnqueueValueWithSize","PeekQueueValue","ResetQueue","WritableStream","underlyingSink","_ref","_ref$highWaterMark","_classCallCheck","IsWritableStream","streamBrandCheckException","IsWritableStreamLocked","WritableStreamAbort","AcquireWritableStreamDefaultWriter","WritableStreamDefaultControllerError","WritableStreamDefaultWriterCloseWithErrorPropagation","WritableStreamDefaultWriterRelease","WritableStreamDefaultWriterWrite","WritableStreamCloseQueuedOrInFlight","state","wasAlreadyErroring","_resolve","_reject","_reason","_wasAlreadyErroring","WritableStreamStartErroring","writeRequest","WritableStreamFinishErroring","writer","WritableStreamDefaultWriterEnsureReadyPromiseRejected","WritableStreamHasOperationMarkedInFlight","storedError","WritableStreamRejectCloseAndClosedPromiseIfNeeded","abortRequest","WritableStreamDealWithRejection","defaultWriterClosedPromiseResolve","defaultWriterClosedPromiseReject","backpressure","defaultWriterReadyPromiseReset","defaultWriterReadyPromiseResolve","WritableStreamDefaultWriter","defaultWriterReadyPromiseInitialize","defaultWriterReadyPromiseInitializeAsResolved","defaultWriterClosedPromiseInitialize","defaultWriterReadyPromiseInitializeAsRejected","defaultWriterClosedPromiseInitializeAsResolved","defaultWriterClosedPromiseInitializeAsRejected","IsWritableStreamDefaultWriter","defaultWriterBrandCheckException","defaultWriterLockException","WritableStreamDefaultWriterAbort","WritableStreamDefaultWriterClose","WritableStreamDefaultWriterGetDesiredSize","closeRequest","WritableStreamDefaultControllerClose","defaultWriterClosedPromiseResetToRejected","defaultWriterReadyPromiseReject","defaultWriterReadyPromiseResetToRejected","WritableStreamDefaultControllerGetDesiredSize","releasedError","WritableStreamDefaultWriterEnsureClosedPromiseRejected","chunkSize","WritableStreamDefaultControllerGetChunkSize","WritableStreamAddWriteRequest","WritableStreamDefaultControllerWrite","WritableStreamDefaultController","normalizedStrategy","WritableStreamDefaultControllerGetBackpressure","WritableStreamUpdateBackpressure","IsWritableStreamDefaultController","_this","startResult","WritableStreamDefaultControllerAdvanceQueueIfNeeded","strategySize","WritableStreamDefaultControllerErrorIfNeeded","writeRecord","WritableStreamDefaultControllerProcessClose","WritableStreamDefaultControllerProcessWrite","WritableStreamMarkCloseRequestInFlight","sinkClosePromise","WritableStreamFinishInFlightClose","WritableStreamFinishInFlightCloseWithError","WritableStreamMarkFirstWriteRequestInFlight","sinkWritePromise","WritableStreamFinishInFlightWrite","WritableStreamFinishInFlightWriteWithError","desiredSize","IsFiniteNonNegativeNumber","container","pair","ArrayBufferCopy","CreateIterResultObject","TransferArrayBuffer","ValidateAndNormalizeHighWaterMark","createArrayFromList","createDataProperty","_require4","_require5","ReadableStream","underlyingSource","typeString","IsReadableStream","IsReadableStreamLocked","ReadableStreamCancel","_ref2","AcquireReadableStreamDefaultReader","AcquireReadableStreamBYOBReader","_ref3","readable","ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue","_ref4","preventClose","preventAbort","preventCancel","Boolean","shuttingDown","currentWrite","_ref5","isOrBecomesErrored","shutdownWithAction","shutdown","isOrBecomesClosed","dest","destClosed","pipeLoop","oldCurrentWrite","action","waitForWritesToFinish","finalize","ReadableStreamReaderGenericRelease","branches","ReadableStreamTee","IsReadableStreamDisturbed","ReadableStreamDefaultControllerClose","ReadableStreamDefaultControllerEnqueue","ReadableStreamDefaultControllerError","ReadableStreamDefaultControllerGetDesiredSize","teeState","closedOrErrored","canceled1","canceled2","reason1","reason2","pull","cancel1","cancel2","underlyingSource1","branch1Stream","underlyingSource2","branch2Stream","branch1","branch2","value1","value2","compositeReason","cancelResult","IsReadableStreamBYOBReader","readIntoRequest","IsReadableStreamDefaultReader","readRequest","ReadableStreamClose","sourceCancelPromise","defaultReaderClosedPromiseResolve","_i","defaultReaderClosedPromiseReject","ReadableStreamDefaultReader","ReadableStreamReaderGenericInitialize","defaultReaderBrandCheckException","readerLockException","ReadableStreamReaderGenericCancel","ReadableStreamDefaultReaderRead","ReadableStreamBYOBReader","IsReadableByteStreamController","byobReaderBrandCheckException","ArrayBuffer","view","ReadableStreamBYOBReaderRead","defaultReaderClosedPromiseInitialize","defaultReaderClosedPromiseInitializeAsResolved","defaultReaderClosedPromiseInitializeAsRejected","defaultReaderClosedPromiseResetToRejected","ReadableByteStreamControllerPullInto","ReadableStreamDefaultController","ReadableStreamDefaultControllerCallPullIfNeeded","ReadableStreamDefaultControllerErrorIfNeeded","IsReadableStreamDefaultController","defaultControllerBrandCheckException","pendingPromise","ReadableStreamAddReadRequest","shouldPull","ReadableStreamDefaultControllerShouldCallPull","pullPromise","ReadableStreamGetNumReadRequests","ReadableStreamFulfillReadRequest","ReadableStreamError","ReadableStreamBYOBRequest","IsReadableStreamBYOBRequest","byobRequestBrandCheckException","ReadableByteStreamControllerRespond","ReadableByteStreamControllerRespondWithNewView","ReadableByteStreamController","ReadableByteStreamControllerClearPendingPullIntos","autoAllocateChunkSize","underlyingByteSource","ReadableByteStreamControllerCallPullIfNeeded","ReadableByteStreamControllerError","byteStreamControllerBrandCheckException","ReadableByteStreamControllerClose","ReadableByteStreamControllerEnqueue","firstDescriptor","ReadableStreamHasDefaultReader","ReadableByteStreamControllerHandleQueueDrain","pullIntoDescriptor","byteOffset","byteLength","bytesFilled","elementSize","ctor","readerType","ReadableByteStreamControllerGetDesiredSize","ReadableByteStreamControllerShouldCallPull","ReadableByteStreamControllerInvalidateBYOBRequest","filledView","ReadableByteStreamControllerConvertPullIntoDescriptor","ReadableStreamFulfillReadIntoRequest","currentAlignedBytes","maxBytesToCopy","maxBytesFilled","maxAlignedBytes","totalBytesToCopyRemaining","ready","headOfQueue","bytesToCopy","destStart","ReadableByteStreamControllerFillHeadPullIntoDescriptor","ReadableByteStreamControllerFillPullIntoDescriptorFromQueue","ReadableByteStreamControllerShiftPendingPullInto","ReadableByteStreamControllerCommitPullIntoDescriptor","ReadableStreamAddReadIntoRequest","emptyView","ReadableStreamHasBYOBReader","ReadableStreamGetNumReadIntoRequests","remainderSize","end","remainder","ReadableByteStreamControllerEnqueueChunkToQueue","ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue","bytesWritten","ReadableByteStreamControllerRespondInClosedState","ReadableByteStreamControllerRespondInReadableState","firstPendingPullInto","transferredBuffer","transferredView","ReadableByteStreamControllerRespondInternal","transformStream","writableStream","PromiseInvokeOrPerformFallback","TransformStreamCloseReadableInternal","TransformStreamErrorIfNeeded","maybeBackpressure","TransformStreamSetBackpressure","TransformStreamErrorInternal","resolution","transformStreamController","TransformStreamEnqueueToReadable","transformer","transformPromise","TransformStreamReadableReadyPromise","TransformStreamSink","TransformStreamTransform","flushPromise","TransformStreamSource","TransformStreamDefaultController","IsTransformStream","IsTransformStreamDefaultController","TransformStreamCloseReadable","TransformStreamError","readableController","TransformStream","readableStrategy","writableStrategy","startPromise_resolve","startPromise","isURLSupported","u","PolyfillURL","OriginalURL","relative","relativePathDotMapping","h","invalid","unicode","ALPHA","ALPHANUMERIC","errors","stateOverride","cursor","seenAt","seenBracket","input","err","isRelativeScheme","percentEscape","nextC","nextNextC","cp","tempC","IDNAToASCII","temp","parseInt","percentEscapeQuery","parse","JURL","authority","host","constructor","ensureDoc","ensureXRef","ensureCatalog","getPage","requestRange","sendProgressiveData","updatePassword","createValidAbsoluteUrl","shadow","ex","g","hadRuntime","oldRuntime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","inModule","runtime","protoGenerator","outerFn","generator","tryLocsList","makeInvokeMethod","arg","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","prototype","genFun","__await","record","tryCatch","previousPromise","defineIteratorMethods","AsyncIterator","delegate","delegateResult","maybeInvokeDelegate","tryLoc","locs","iteratorMethod","Context","reset","stop","rootEntry","rootRecord","dispatchException","handle","hasCatch","hasFinally","abrupt","finallyEntry","complete","resetTryEntry","thrown","delegateYield","resultName","nextLoc","ChunkedStream","getMissingChunks","chunks","getBaseStreams","allChunksLoaded","onReceiveData","begin","beginChunk","endChunk","curChunk","onReceiveProgressiveData","position","ensureByte","ensureRange","nextEmptyChunk","numChunks","hasChunk","getByte","getUint16","b0","getInt32","getBytes","forceClamped","strEnd","subarray","peekByte","peekedByte","peekBytes","getByteRange","skip","moveStart","makeSubStream","ChunkedStreamSubstream","missingChunks","subStream","ChunkedStreamManager","onLoadedStream","sendRequest","rangeReader","manager","chunkData","requestAllChunks","_requestChunks","requestId","chunksNeeded","isEmptyObj","chunksToRequest","groupedChunksToRequest","groupedChunk","getStream","requestRanges","ranges","groupChunks","groupedChunks","prevChunk","onProgress","bytesLoaded","isProgressive","loadedRequests","requestIds","lastChunk","onError","getBeginChunk","getEndChunk","abort","Page","DEFAULT_USER_UNIT","LETTER_SIZE_MEDIABOX","annotation","uniquePrefix","idCounters","createObjId","_getInheritableProperty","isDict","Dict","mediaBox","cropBox","isNum","intersection","rotate","getContentStream","content","xref","streams","isStream","loadResources","objectLoader","getOperatorList","contentStreamPromise","resourcesPromise","partialEvaluator","idFactory","fontCache","builtInCMapCache","options","pdfFunctionFactory","dataPromises","pageListPromise","opList","transparency","resources","annotations","pageOpList","opListPromises","isAnnotationRenderable","opLists","extractTextContent","getAnnotationsData","annotationsData","parsedAnnotations","annotationRefs","annotationPromises","AnnotationFactory","PDFDocument","FINGERPRINT_FIRST_BYTES","EMPTY_FINGERPRINT","isArrayBuffer","limit","backwards","DocumentInfoValidators","Title","Author","Subject","Keywords","Creator","Producer","CreationDate","ModDate","Trapped","isName","fields","linearization","Linearization","startXRef","find","found","isSpace","checkHeader","MAX_VERSION_LENGTH","parseStartXRef","num","docInfo","PDFFormatVersion","IsLinearized","IsAcroFormPresent","IsXFAPresent","infoDict","stringToPDFString","fileID","idArray","isString","hash","calculateMD5","hex","_getLinearizationPage","cleanup","isRef","root","items","processed","blackColor","outlineDict","Catalog","destDict","resultObj","title","flags","color","rgbColor","ColorSpace","outlineItem","unsafeUrl","newWindow","count","bold","italic","encrypt","permissions","getDestination","fetchDestination","pageLabels","style","prefix","numberTree","nums","currentLabel","currentIndex","labelDict","st","toRomanNumerals","LIMIT","A_UPPER_CASE","A_LOWER_CASE","baseCharCode","letterIndex","character","charBuf","jj","promises","translatedFonts","getPageDict","nodesToVisit","pageKidsCountCache","currentPageIndex","currentNode","objId","kids","getPageIndex","isRefsEqual","parentRef","kidPromises","kid","streamRef","suppressEncryption","subtype","metadata","stringToUTF8String","bytesToString","pagesObj","dests","pageMode","attachments","nameTree","fs","jsDict","js","appendIfJavaScriptDict","openActionDict","actionType","params","actionName","addDefaultProtocolToUrl","urlDict","remoteDest","JSON","isBool","namedAction","jsAction","URL_OPEN_METHODS","regex","jsUrl","tryConvertUrlEncoding","XRef","streamTypes","fontTypes","setStartXRef","trailerDict","ids","fileId","processXRefTable","entryNum","streamPos","parser","parserBuf1","parserBuf2","isCmd","readXRefTable","tableState","processXRefStream","streamParameters","byteWidths","range","entryRanges","readXRefStream","streamState","typeFieldWidth","offsetFieldWidth","generationFieldWidth","generation","indexObjects","TAB","LF","CR","SPACE","PERCENT","LT","token","what","dataLength","skipped","objRegExp","endobjRegExp","nestedObjRegExp","CHECK_CONTENT_LENGTH","trailerBytes","startxrefBytes","objBytes","xrefBytes","trailers","xrefStms","readToken","skipUntil","gen","uncompressed","startPos","endPos","contentLength","checkPos","tokenStr","objToken","xrefTagOffset","rootDict","readXRef","startXRefParsedCache","getEntry","xrefEntry","fetchIfRef","fetch","cacheEntry","fetchUncompressed","obj1","obj2","obj3","fetchCompressed","tableOffset","getCatalogObj","kidsOrEntries","MAX_LEVELS","limits","currentKey","FileSpec","filename","pickPlatformItem","fileObj","ObjectLoader","dictKeys","rawValue","mayHaveChildren","load","_walk","nodesToRevisit","pendingRequests","baseStreams","foundMissingData","addChildren","EOF","Name","nameCache","nameValue","Cmd","cmdCache","cmdValue","nonSerializable","assignXref","key1","key2","getAsync","getRaw","forEach","callback","mergedDict","dictArray","Ref","RefSet","put","remove","RefSetCache","putAlias","v1","v2","MAX_LENGTH_TO_CACHE","MAX_ADLER32_LENGTH","bytesLength","Parser","recoveryMode","refill","shift","tryShift","getObj","buf1","array","isEOF","cipherTransform","findDefaultInlineStreamEnd","I","NUL","maybeEIPos","followingBytes","findDCTDecodeInlineStreamEnd","foundEOI","markerLength","findASCII85DecodeInlineStreamEnd","TILDE","GT","findASCIIHexDecodeInlineStreamEnd","inlineStreamSkipEI","makeInlineImage","lexer","dictLength","filter","filterName","filterZero","imageStream","imageBytes","initialStreamPos","dictBytes","cacheKey","computeAdler32","_findStreamLength","SCAN_BLOCK_LENGTH","signatureLength","signature","scanBytes","scanLength","makeStream","ENDSTREAM_SIGNATURE","actualLength","MAX_TRUNCATION","TRUNCATED_SIGNATURE","maybeLength","lastByte","filterArray","paramsArray","makeFilter","xrefStreamStats","earlyChange","Lexer","specialChars","nextChar","peekChar","getNumber","eNotation","divideBy","sign","baseValue","powerValue","powerValueSign","currentDigit","getString","numParen","charBuffered","getName","toHexDigit","previousCh","x2","getHexString","isFirstHex","firstDigit","secondDigit","comment","knownCommands","knownCommandFound","possibleCommand","skipToNextLine","linDict","hints","hintsLength","getInt","objectNumberFirst","endFirst","numPages","mainXRefEntriesOffset","pageFirst","Stream","arrayBuffer","StringStream","DecodeStream","emptyBuffer","maybeMinBufferLength","ensureBuffer","requested","buffer2","bufEnd","StreamsSequenceStream","bufferLength","newLength","FlateStream","codeLenCodeMap","lengthDecode","distDecode","fixedLitCodeTab","fixedDistCodeTab","cmf","flg","codeSize","codeBuf","codes","table","maxLen","codeLen","codeVal","lengths","len","code2","t","hdr","blockLen","litCodeTable","distCodeTable","numLitCodes","numDistCodes","numCodeLenCodes","codeLenCodeLengths","codeLenCodeTab","codeLengths","bitsLength","bitsOffset","repeatLength","code1","dist","PredictorStream","predictor","colors","bits","columns","rowBytes","rawBytes","inbuf","outbuf","inbits","outbits","bytesPerPixel","sum","compArray","bitMask","kk","pixBytes","prevRow","up","upLeft","left","pa","pb","pc","DecryptStream","hasMoreData","decrypt","Ascii85Stream","TILDA_CHAR","Z_LOWER_CHAR","AsciiHexStream","UPSTREAM_BLOCK_SIZE","maxDecodeLength","digit","RunLengthStream","repeatHeader","LZWStream","maxLzwDictionarySize","lzwState","codeLength","nextCode","dictionaryValues","dictionaryLengths","dictionaryPrevCodes","currentSequence","currentSequenceLength","bitsCached","cachedData","blockSize","estimatedDecodedSize","decodedSizeDelta","prevCode","decodedLength","currentBufferLength","hasPrev","q","NullStream","CCITTFaxStream","EndOfLine","EncodedByteAlign","Columns","Rows","EndOfBlock","BlackIs1","CCITTFaxDecoder","ccittEOL","ccittEOF","twoDimPass","twoDimHoriz","twoDimVert0","twoDimVertR1","twoDimVertL1","twoDimVertR2","twoDimVertL2","twoDimVertR3","twoDimVertL3","twoDimTable","whiteTable1","whiteTable2","blackTable1","blackTable2","blackTable3","eoblock","readNextChar","refLine","codingLine","refPos","blackPixels","code3","gotEOL","_addPixels","codingPos","a1","_addPixelsNeg","_findTableCode","limitValue","_getTwoDimCode","_getWhiteCode","_getBlackCode","_lookBits","_eatBits","Jbig2Stream","jbig2Image","globalsStream","globals","Jbig2Error","Jbig2Image","ContextCache","getContexts","DecodingContext","decoder","cache","contexts","contextCache","prev","bit","readBits","SegmentTypes","CodingTemplates","y","RefinementTemplates","coding","reference","ReusedContexts","RefinementReusedContexts","decodingContext","bitmap","OLD_PIXEL_MASK","row","row1","row2","contextLabel","pixel","decodeMMRBitmap","templateIndex","at","decodeBitmapTemplate0","useskip","template","templateLength","templateX","templateY","changingTemplateEntries","reuseMask","minX","maxX","minY","changingEntriesLength","changingTemplateX","changingTemplateY","changingTemplateBit","sbb_left","sbb_top","sbb_right","width","pseudoPixelContext","ltp","sltp","i0","j0","codingTemplate","codingTemplateLength","codingTemplateX","codingTemplateY","referenceTemplate","referenceTemplateLength","referenceTemplateX","referenceTemplateY","referenceWidth","referenceBitmap","referenceHeight","huffman","newSymbols","currentHeight","symbolCodeLength","tableB1","getStandardTable","symbolWidths","deltaHeight","huffmanTables","decodeInteger","currentWidth","totalWidth","firstSymbol","deltaWidth","numberOfInstances","decodeTextRegion","symbolId","decodeIAID","rdx","rdy","symbol","decodeRefinement","decodeBitmap","bitmapSize","huffmanInput","collectiveBitmap","readUncompressedBitmap","originalEnd","bitmapEnd","numberOfSymbolsDecoded","xMin","bitmapWidth","xMax","symbolBitmap","exportedSymbols","currentFlag","totalSymbolsLength","runLength","stripT","firstS","deltaT","deltaFirstS","currentS","currentT","stripSize","applyRefinement","refinement","inputSymbols","symbolWidth","symbolHeight","rdw","rdh","offsetT","referenceCorner","offsetS","s2","symbolRow","maxWidth","t2","deltaS","collectiveWidth","patterns","patternBitmap","patternWidth","combinationOperator","regionBitmap","numberOfPatterns","pattern0","patternHeight","bitsPerValue","grayScaleBitPlanes","mmrInput","mg","ng","patternIndex","gridOffsetX","gridOffsetY","regionRow","patternRow","regionY","regionX","segmentHeader","readUint32","segmentType","pageAssociationFieldSize","referredFlags","referredToCount","retainBits","referredToSegmentNumberSize","referredTo","readUint16","genericRegionInfo","readRegionSegmentInformation","genericRegionSegmentFlags","genericRegionMmr","searchPatternLength","searchPattern","segments","readSegmentHeader","segment","header","height","RegionSegmentInformationFieldLength","dictionary","dictionaryFlags","atLength","readInt8","textRegion","textRegionSegmentFlags","textRegionHuffmanFlags","patternDictionary","patternDictionaryFlags","halftoneRegion","halftoneRegionFlags","genericRegion","pageInfo","resolutionX","resolutionY","pageSegmentFlags","callbackName","visitor","processSegment","readSegments","processSegments","bitPacked","imgData","mask","SimpleSegmentVisitor","onPageInformation","rowSize","drawBitmap","regionInfo","mask0","offset0","onImmediateGenericRegion","region","onImmediateLosslessGenericRegion","onSymbolDictionary","getSymbolDictionaryHuffmanTables","referredSegments","referredSymbols","decodeSymbolDictionary","onImmediateTextRegion","getTextRegionHuffmanTables","onImmediateLosslessTextRegion","onPatternDictionary","decodePatternDictionary","onImmediateHalftoneRegion","decodeHalftoneRegion","onImmediateLosslessHalftoneRegion","onTables","customTables","decodeTablesSegment","lineData","line","HuffmanTreeNode","buildTree","decodeNode","htOffset","lines","HuffmanTable","decode","assignPrefixCodes","linesLength","prefixLengthMax","histogram","currentLength","firstCode","currentCode","currentTemp","lowestValue","highestValue","prefixSizeBits","rangeSizeBits","currentRangeLow","prefixLength","rangeLength","standardTablesCache","Reader","readBit","numBits","byteAlign","runCodesTable","numberOfRepeats","repeatedLength","symbolIDTable","customIndex","tableFirstS","getCustomHuffmanTable","tableDeltaS","tableDeltaT","tableDeltaHeight","tableDeltaWidth","tableBitmapSize","tableAggregateInstances","eof","currentByte","endOfBlock","lookForEOFLimit","parseChunks","parseJbig2Chunks","parseJbig2","ArithmeticDecoder","QeTable","qe","nmps","nlps","switchFlag","byteIn","bp","cx_index","cx_mps","qeTableIcx","qeIcx","JpegStream","jpegOptions","decodeTransform","colorTransform","decodeArr","bitsPerComponent","decodeArrLength","transformNeeded","maxValue","jpegImage","forceRGB","isSourcePDF","JpegError","DNLMarkerError","EOIMarkerError","JpegImage","dctZigZag","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","children","parseDNLMarker","mcusPerLine","frame","progressive","startOffset","bitsData","bitsCount","nextByte","scanLines","receive","decodeHuffman","component","diff","receiveAndExtend","rs","z","eobrun","successiveACState","offsetZ","successiveACNextValue","mcuRow","mcu","mcuCol","blockRow","blockCol","getBlockBufferOffset","componentsLength","components","spectralStart","decodeFn","successivePrev","mcuExpected","mcuToRead","resetInterval","decodeBlock","decodeMcu","fileMarker","findNextFileMarker","marker","qt","blockData","p0","blockBufferOffset","p5","p6","p7","v0","v3","v4","v7","v5","v6","col","blocksPerLine","blocksPerColumn","computationBuffer","quantizeAndInverse","maxPos","newPos","currentPos","currentMarker","peekUint16","newMarker","dnlScanLines","endOffset","mcusPerColumn","blocksPerLineForMcu","blocksPerColumnForMcu","blocksBufferSize","jfif","adobe","numSOSMarkers","quantizationTables","huffmanTablesAC","huffmanTablesDC","appData","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesLength","quantizationTablesEnd","quantizationTableSpec","tableData","sofScanLines","componentsCount","maxH","maxV","componentId","qId","quantizationId","quantizationTable","prepareComponents","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","buildHuffmanTable","selectorsCount","componentIndex","tableSpec","spectralEnd","successiveApproximation","decodeScan","nextFileMarker","output","buildComponentData","scaleX","scaleY","_getLinearizedBlockData","numComponents","xScaleBlockOffset","mask3LSB","componentScaleX","componentScaleY","blocksPerScanline","_convertYccToRgb","Y","Cb","Cr","_convertYcckToRgb","_convertYcckToCmyk","_convertCmykToRgb","scale","getData","rgbData","grayColor","JpxStream","jpxImage","tileCount","tileComponents","tileWidth","tileHeight","tileLeft","tileTop","srcPosition","dataPosition","imgRowSize","tileRowSize","JpxError","JpxImage","SubbandsGainLog2","headerSize","lbox","tbox","jumpDataLength","colorspace","headerType","parseImageProperties","newByte","oldByte","Xsiz","Ysiz","XOsiz","YOsiz","Csiz","parseCodestream","doNotRecover","siz","precision","isSigned","XRsiz","YRsiz","calculateComponentDimensions","calculateTileGrids","qcd","sqcd","spqcdSize","scalarExpounded","spqcds","spqcd","qcc","cqcc","cod","scod","blockStyle","precinctsSizes","precinctsSize","PPx","PPy","unsupported","tile","initializeTile","buildPackets","parseTilePackets","transformComponents","tiles","numXtiles","numYtiles","tileComponent","codOrCoc","precinctWidth","dimensions","precinctHeight","isZeroRes","precinctWidthInSubband","precinctHeightInSubband","numprecinctswide","numprecinctshigh","numprecincts","xcb_","ycb_","codeblockWidth","codeblockHeight","cbx0","subband","cby0","cbx1","cby1","precinctParameters","codeblocks","precincts","codeblock","cbx","cby","tbx0","tby0","tbx1","tby1","pi","pj","precinctNumber","precinct","cbxMin","cbyMin","cbxMax","cbyMax","numcodeblockwide","numcodeblockhigh","precinctCodeblocks","subbands","tileIndex","layersCount","maxDecompositionLevelsCount","packet","createPacket","maxNumPrecinctsInLevel","maxNumPrecincts","resolutions","getPrecinctSizesInImageScale","precinctsIterationSizes","py","decompositionLevelsCount","sizeInImageScale","getPrecinctIndexIfExist","posX","pxIndex","precinctIterationSizes","posY","pyIndex","startPrecinctRowIndex","minWidth","minHeight","maxNumWide","maxNumHigh","sizePerComponent","sizePerResolution","minWidthCurrentComponent","minHeightCurrentComponent","maxNumWideCurrentComponent","maxNumHighCurrentComponent","widthCurrentResolution","heightCurrentResolution","blocksDimensions","getBlocksDimensions","buildPrecincts","buildCodeblocks","bscale","resolutionSubbands","progressionOrder","bufferSize","skipNextBit","skipBytes","sopMarkerUsed","ephMarkerUsed","packetsIterator","skipMarkerIfEqual","layerNumber","codeblockColumn","codeblockRow","codeblockIncluded","firstTimeInclusion","inclusionTree","zeroBitPlanesTree","valueReady","codingpasses","codingpassesLog2","codedDataLength","packetItem","x0","y0","right","bottom","blockWidth","blockHeight","bitModel","currentCodingpassType","totalLength","dataItem","encodedData","magnitude","bitsDecoded","magnitudeCorrection","reversible","interleave","levelOffset","nb","coefficients","mb","codingStyleParameters","quantizationParameters","guardBits","segmentationSymbolUsed","subbandCoefficients","mu","epsilon","gainLog2","delta","copyCoefficients","top","resultImages","transformedTiles","transformTile","tile0","fourComponents","y0items","y1items","y2items","y3items","component0","alpha01","y1","y2","qcdOrQcc","TagTree","levelsLength","level","currentLevel","incrementValue","nextLevel","InclusionTree","stopValue","propagateValues","levelIndex","currentValue","BitModel","UNIFORM_CONTEXT","RUNLENGTH_CONTEXT","LLAndLHContextsLabel","HLContextLabel","HHContextLabel","coefficientCount","zeroBitPlanes","setDecoder","setNeighborsSignificance","neighborsSignificance","column","runSignificancePropagationPass","coefficentsMagnitude","coefficentsSign","processingFlags","labels","processedInverseMask","processedMask","firstMagnitudeBitMask","i1","decision","decodeSignBit","significance1","sign1","sign0","contribution","horizontalContribution","decoded","runMagnitudeRefinementPass","width4","index0","indexNext","significance","runCleanupPass","oneRowDown","twoRowsDown","threeRowsDown","iNext","indexBase","checkAllEmpty","allEmpty","hasSignificantCoefficent","i2","checkSegmentationSymbol","Transform","ll","j1","j2","llWidth","llHeight","llItems","hl_lh_hh","bufferPadding","rowBuffer","numBuffers","colBuffers","currentBuffer","IrreversibleTransform","alpha","beta","gamma","K_","current","ReversibleTransform","ARCFourCipher","keyLength","encryptBlock","tmp2","h0","h1","h2","h3","paddedLength","padded","rotateArg","Word64","highInteger","lowInteger","and","word","xor","or","shiftRight","places","shiftLeft","rotateRight","high","low","not","add","lowAdd","highAdd","copyTo","calculateSHA256","rotr","h4","h5","h6","h7","littleSigmaPrime","littleSigma","t1","sigmaPrime","sigma","maj","calculateSHA512","mode384","tmp1","tmp3","calculateSHA384","NullCipher","decryptBlock","_expandKey","_decrypt","s0","s1","s3","_encrypt","_decryptBlock2","sourceLength","iv","plain","outputLength","lastBlock","psLen","cipher","rcon","t3","t4","PDF17","array1","array2","checkOwnerPassword","hashData","ownerValidationSalt","compareByteArrays","checkUserPassword","getOwnerKey","ownerKeySalt","getUserKey","PDF20","arrayLength","userBytes","k1","concatArrays","calculatePDF20Hash","CipherTransform","createStream","decryptString","CipherTransformFactory","defaultPasswordBytes","passwordLength","revision","pdfAlgorithm","hashDataSize","ownerPassword","keyLengthInBytes","encryptionKey","checkData","derivedKey","userPassword","identityName","algorithm","cfDict","streamCryptoName","handlerDict","encryptMetadata","fileIdBytes","utf8StringToString","passwordBytes","prepareKeyData","uBytes","userValidationSalt","userKeySalt","ownerEncryption","userEncryption","perms","createEncryptionKey20","decodedPassword","decodeUserPassword","cf","cryptFilter","cfm","buildObjectKey","createCipherTransform","buildCipherConstructor","cipherConstructor","COMPONENTS","xRatio","w1","yRatio","newIndex","xScaled","w1Scanline","oldIndex","getRgb","rgb","getRgbItem","getRgbBuffer","getOutputLength","isPassthrough","fillRgb","originalWidth","numComponentColors","needsResizing","originalHeight","allColors","bpc","colorMap","destPos","comps","rgbPos","resizeRgbImage","IR","whitePoint","blackPoint","matrix","basePatternCS","baseIndexedCS","hiVal","numComps","alt","tintFn","cs","colorSpaces","resCS","altIR","altCS","tmpBuf","baseNumComps","usesZeroToOneRange","baseBuf","scaled","tinted","inputLength","isDefaultDecode","outputDelta","lookupPos","destOffset","srcOffset","DeviceCmykCS","convertToRgb","CalGrayCS","AG","L","CalRGBCS","BRADFORD_SCALE_MATRIX","BRADFORD_SCALE_INVERSE_MATRIX","SRGB_D65_XYZ_TO_RGB_MATRIX","FLAT_WHITEPOINT_MATRIX","tempNormalizeMatrix","tempConvertMatrix1","tempConvertMatrix2","DECODE_L_CONSTANT","LMS","sourceWhitePoint","D65X","D65Y","D65Z","adjustToRange","decodeL","sourceBlackPoint","XYZ_Flat","zeroDecodeL","X_DST","X_SRC","Y_DST","Y_SRC","Z_DST","Z_SRC","X_Scale","X_Offset","Y_Scale","Y_Offset","Z_Scale","Z_Offset","XYZ_In","matrixProduct","LMS_Flat","convertToFlat","LMS_D65","convertToD65","AGR","BGG","CGB","X","Z","XYZ","normalizeWhitePointToFlat","XYZ_Black","compensateBlackPoint","XYZ_D65","normalizeWhitePointToD65","SRGB","sRGBTransferFunction","XW","YW","ZW","XB","YB","ZB","LabCS","low2","Ls","as","bs","maxVal","M","N","fn_g","parameters","fieldType","bounds","maxY","annotationFlags","borderStyle","hasAppearance","_hasFlag","_isViewable","_isPrintable","setFlags","hasFlag","setRectangle","setColor","setBorderStyle","dictType","setAppearance","appearanceStates","normalAppearanceState","_preparePopup","appearanceDict","bbox","getTransformMatrix","setWidth","setStyle","setDashArray","dashArray","isValid","allZeros","element","validNumber","setHorizontalCornerRadius","setVerticalCornerRadius","_constructFieldName","fieldName","loopDict","hasFieldFlag","alignment","maximumLength","renderForms","_processCheckBox","customAppearance","exportValueOptionsDict","exportValues","hasCorrectOptionCount","_processRadioButton","fieldParent","fieldParentValue","_processPushButton","option","isOptionArray","exportValue","displayValue","DEFAULT_ICON_SIZE","parentItem","parentSubtype","parentFlags","rawVertices","originalInkLists","file","QueueOptimizer","pattern","iFirstPIMXO","iFirstSave","argsArray","imageMask","fnArray","InitialState","addState","MIN_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_IMAGES_IN_INLINE_IMAGES_BLOCK","MAX_WIDTH","IMAGE_PADDING","curr","iFirstTransform","iFirstPIIXO","map","maxLineHeight","currentX","currentY","img","imgWidth","imgHeight","dataOffset","MIN_IMAGES_IN_MASKS_BLOCK","MAX_IMAGES_IN_MASKS_BLOCK","MAX_SAME_IMAGES_IN_MASKS_BLOCK","handlePaintSolidColorImageMask","isSameImage","firstPIMXOArg0","firstTransformArg0","firstTransformArg3","iTransform","iPIMXO","transformArgs","positions","images","maskParams","iFirstPIXO","firstPIXOArg0","MIN_IMAGES_IN_BLOCK","MAX_IMAGES_IN_BLOCK","iFirstSetFont","firstSetFontArg0","firstSetFontArg1","MIN_CHARS_IN_BLOCK","MAX_CHARS_IN_BLOCK","iFirstBeginText","iFirstSetTextMatrix","iFirstShowText","iFirstEndText","iFirst","iEndText","iCurr","_optimize","match","iterate","push","NullOptimizer","OperatorList","CHUNK_SIZE","CHUNK_SIZE_ABOUT","transfers","messageHandler","addOp","addDependency","addDependencies","addOpList","getIR","getTransfers","PartialEvaluator","DefaultPartialEvaluatorOptions","NativeImageDecoder","canDecode","image","colorSpace","TIME_SLOT_DURATION_MS","CHECK_TIME_EVERY","TimeSlotManager","deferred","TILING_PATTERN","SHADING_PATTERN","clone","newOptions","newEvaluator","hasBlendModes","nodes","graphicStates","graphicStatesKeys","graphicState","bm","xObjects","xObjectsKeys","xObject","xResources","buildFormXObject","xobj","group","groupOptions","isolated","knockout","groupSubtype","buildPaintImageXObject","isInline","forceDisableNativeImageDecoder","bitStrideLength","imgArray","imageIsFromDecodeStream","inverseDecode","imageCache","softMask","SMALL_IMAGE_DIMENSIONS","imageObj","nativeImageDecoder","PDFImage","nativeDecoder","handleSMask","smaskContent","smaskOptions","backdrop","transferObj","isPDFFunction","transferFn","transferMap","stateManager","handleTilingType","tilingOpList","resourcesArray","patternDict","patternResources","handleSetFont","fontArgs","fontName","translated","handleText","glyphs","isAddToPathSet","buildPath","path","glyph","accent","gStateObj","gStateKeys","gState","normalizeBlendMode","loadFont","fontRef","fontRes","fontCapability","preEvaluatedFont","fontRefIsRef","fontID","fontAliases","aliasFontRef","Font","translatedPromise","translatedFont","xrefFontStats","fontFile3","fontType","getFontType","lastIndex","opArgs","handleColorN","patternName","typeNum","shading","Pattern","initialState","xobjs","preprocessor","timeSlotManager","promiseBody","operation","fontSize","combinedGlyphs","arrLength","arrItem","shadingRes","patternIR","dictName","extGState","getTextContent","seenStyles","WhitespaceRegexp","textContent","styles","textContentItem","initialized","vertical","lastAdvanceWidth","lastAdvanceHeight","textAdvanceScale","spaceWidth","fakeSpaceMin","fakeMultiSpaceMin","fakeMultiSpaceMax","textRunBreakAllowed","SPACE_FACTOR","MULTI_SPACE_FACTOR","MULTI_SPACE_FACTOR_MAX","skipEmptyXObjs","textState","fontFamily","ascent","descent","tsm","glyphHeight","trm","scaleLineX","scaleCtmX","textChunk","bidiResult","bidi","replaceWhitespace","dir","glyphWidth","glyphUnicode","NormalizedUnicodes","reverseIfRtl","charSpacing","wordSpacing","addFakeSpaces","tx","ty","w0","fakeSpaces","runBidiTransform","fontNameArg","fontSizeArg","isSameTextLine","advance","buildTextContentItem","breakTextRun","currentState","xObjStateManager","sinkWrapper","enqueueInvoked","enqueue","gStateFont","extractDataStructures","toUnicode","baseDict","toUnicodePromise","properties","cidSystemInfo","registry","ordering","supplement","cidToGidMap","differences","baseEncodingName","encoding","diffEncoding","getEncoding","isSymbolicFont","FontFlags","isNonsymbolicFont","_buildSimpleFontToUnicode","glyphName","glyphsUnicodeMap","getUnicodeForGlyph","baseEncoding","buildToUnicode","ucs2CMapName","fetchBuiltInCMap","useCMap","cMap","cid","ucs2","ucs2CMap","readToUnicode","cmapObj","cmap","w2","readCidToGidMap","glyphsData","cidToGidStream","glyphID","extractWidths","glyphsWidths","defaultWidth","glyphsVMetrics","widths","vmetrics","defaultVMetrics","vmetric","firstChar","parseFloat","baseFontName","metrics","isMonospace","firstWidth","isSerifFont","fontNameWoStyle","getBaseFontMetrics","monospace","stdFontMap","lookupName","Metrics","glyphWidths","buildCharCodeToWidth","charCode","widthsByGlyphName","preEvaluateFont","composite","df","diffLength","diffBuf","diffEntry","uint8array","translateFont","maxCharIndex","lastChar","baseFont","fontNameStr","baseFontStr","fontFile","length1","length2","length3","loadedName","wideChars","fixedPitch","fontMatrix","xHeight","capHeight","italicAngle","isType3Font","cidEncoding","cMapPromise","TranslatedFont","send","fontData","loadType3Data","type3Options","evaluator","type3Evaluator","loadCharProcsPromise","charProcs","fontResources","charProcKeys","charProcOperatorList","glyphStream","parentOperatorList","StateManager","old","TextState","setTextLineMatrix","translateTextMatrix","translateTextLineMatrix","calcTextLineMatrixAdvance","txDiff","tyDiff","denominator","calcRenderMatrix","carriageReturn","EvalState","EvaluatorPreprocessor","getOPMap","numArgs","variableArgs","MAX_INVALID_PATH_OPS","cmd","opSpec","argsLength","nonProcessedArgs","partialMsg","preprocessCommand","BUILT_IN_CMAPS","builtInCMap","addCodespaceRange","mapCidRange","mapBfRange","dstLow","mapBfRangeToArray","mapOne","contains","charCodeOf","readCharCode","codespaceRanges","nn","codespaceRange","BinaryCMapReader","MAX_NUM_SIZE","MAX_ENCODED_NUM_SIZE","BinaryCMapStream","readByte","readNumber","readSigned","readHex","readHexNumber","sp","readHexSigned","readString","char","sequence","dataSize","ucs2DataSize","subitemsCount","addHex","hexToInt","incHex","hexToStr","extend","CMapFactory","expectString","strToInt","dst","expectInt","parseWMode","parseCMapName","previous","embeddedUseCMap","parseCodespaceRange","parseBfChar","parseCidChar","parseBfRange","parseCidRange","extendCMap","useCodespaceRanges","cMapData","compressionType","parseCMap","createBuiltInCMap","parsedCMap","PRIVATE_USE_AREAS","PDF_GLYPH_SPACE_UNITS","SEAC_ANALYSIS_ENABLED","FixedPitch","Serif","Symbolic","Script","Nonsymbolic","Italic","AllCap","SmallCap","ForceBold","MacStandardGlyphOrdering","builtInEncoding","Glyph","ToUnicodeMap","amend","IdentityToUnicodeMap","OpenTypeFileBuilder","maxPower2","searchRange","rangeShift","entrySize","OTF_HEADER_SIZE","OTF_TABLE_ENTRY_SIZE","toArray","sfnt","tables","tablesNames","numTables","tableOffsets","writeData","string32","writeInt16","searchParams","tableName","checksum","quad","writeInt32","addTable","getFontFileType","cff","adjustWidths","ID","isTrueTypeFile","isTrueTypeCollectionFile","fileType","isOpenTypeFile","isType1File","isCFFFile","fileSubtype","toFontChar","newMap","privateUseAreaIndex","nextAvailableFontCharCode","privateUseOffetEnd","originalCharCode","glyphId","charCodeToGlyphId","hasGlyph","fontCharCode","codeIndices","getRanges","string16","bmpLength","trailingRangesCount","segCount","startCount","endCount","idDeltas","idRangeOffsets","glyphsIds","bias","contiguous","startCode","format314","format31012","header31012","os2","selection","usWinAscent","override","unitsPerEm","yMax","yMin","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","firstCharIndex","lastCharIndex","getUnicodeRangeFor","typoAscent","typoDescent","winAscent","winDescent","angle","strings","stringsUnicode","strBufUnicode","platforms","encodings","languages","namesRecordCount","nameTable","strOffset","strs","nameRecord","mimetype","renderer","FontRendererFactory","exportData","fallbackToSystemFont","nonStdFontMap","isStandardFont","GlyphMapForStandardFonts","SupplementalGlyphMapForArialBlack","SupplementalGlyphMapForCalibri","isIdentityUnicode","buildToFontChar","unicodeCharCode","checkAndRepair","VALID_TABLES","readTableEntry","previousPosition","ttf","entrySelector","ttcTag","ttc","majorVersion","minorVersion","numFonts","offsetTable","readTrueTypeCollectionHeader","potentialHeader","readOpenTypeHeader","potentialTables","readTables","readNameTable","nameEntry","platformId","encodingId","mappings","hasShortCmap","canBreak","useTable","potentialTable","format","segIndex","offsetsCount","rangeOffset","offsetIndex","offsets","entryCount","numOfMetrics","numOfSidebearings","numGlyphs","numMissing","glyphProfile","sizeOfInstructions","sourceEnd","glyf","contoursCount","signedInt16","writeSignedInt16","flagsCount","endPoint","instructionsStart","instructionsLength","instructionsEnd","coordinatesLength","flag","xyLength","repeat","glyphDataLength","int32","indexToLocFormat","int16","numGlyphsPlusOne","locaLength","itemSize","itemDecode","itemEncode","numGlyphsOut","dupFirstEntry","locaData","loca","locaDataSize","oldGlyfData","oldGlyfDataLength","newGlyfData","writeOffset","missingGlyphs","sanitizeGlyph","maxSizeOfInstructions","simpleGlyph","firstEntryLength","post","valid","glyphNames","glyphNameIndexes","customNames","stringLength","FORMAT_0_HEADER_LENGTH","numRecords","stringsStart","records","NAME_RECORD_LENGTH","platform","language","nameIndex","TTOpsStackDeltas","lastEndf","lastDeff","callstack","functionsCalled","tooComplexToFollowFunctions","ttContext","inFDEF","ifLevel","inELSE","op","funcId","newStackLength","stackTop","stackDelta","foldTTTable","functionsDefined","functionsUsed","functionsStackDeltas","hintsValid","sanitizeTTProgram","checkInvalidFunctions","cvt","cvtData","ttcData","readTrueTypeCollectionData","isTrueType","isComposite","cffFile","maxFunctionDefs","maxZones","sanitizeTTPrograms","sanitizeMetrics","sanitizeHead","isGlyphLocationsLong","glyphsInfo","sanitizeGlyphLocations","metricsOverride","readPostScriptTable","createPostTable","isCidToGidMapEmpty","cmapTable","readCmapTable","cmapPlatformId","cmapEncodingId","cmapMappings","cmapMappingsLength","StandardEncoding","standardGlyphName","recoverGlyphName","unicodeOrCharCode","MacRomanEncoding","glyphZeroId","newMapping","adjustMapping","createCmapTable","validateOS2Table","createOS2Table","compiler","createNameTable","namePrototype","builder","convert","adjustToUnicode","charCodes","seacs","charset","seacMap","seac","baseGlyphName","accentGlyphName","baseGlyphId","accentGlyphId","accentOffset","getCharCodes","baseFontCharCode","createCharCode","accentFontCharCode","safeString16","charstrings","cffWidths","hmtx","charstring","possibleSpaceReplacements","charcode","charToGlyph","widthCode","isInFont","mapSpecialUnicodeValues","operatorListId","fontChar","charsToGlyphs","charsCache","charsCacheKey","chars","ErrorFont","Type1Font","streamBytesLength","streamBytes","EEXEC_SIGNATURE","streamStartPos","headerBytes","headerBytesLength","block","findBlock","suggestedLength","eexecBytes","PFB_HEADER_SIZE","headerBlockLength","eexecBlockLength","pfbHeader","pfbHeaderPresent","headerBlock","getHeaderBlock","headerBlockParser","eexecBlock","getEexecBlock","eexecBlockParser","type2Charstrings","subrs","getCharset","getGlyphMapping","type1FontGlyphMapping","hasGlyphId","getSeacs","getType2Charstrings","type1Charstrings","getType2Subrs","type1Subrs","type2Subrs","topDict","charsetArray","CFFStandardStrings","charStringsIndex","privateDict","field","subrIndex","CFFFont","charsets","MAX_SUBR_NESTING","CFFParser","CharstringValidationData","stackClearing","stem","resetStack","undefStack","CharstringValidationData12","stackFn","topDictIndex","stringIndex","globalSubrIndex","topDictParsed","charStringOffset","charStringIndex","fontBBox","fdArrayIndex","dictRaw","fontDict","charStringsAndSeacs","charStrings","localSubrIndex","fdSelect","fdArray","parseHeader","hdrSize","offSize","parseDict","operands","parseIndex","cffIndex","offsetSize","offsetStart","offsetEnd","parseNameIndex","parseStringIndex","cffDict","parseCharString","stackSize","validationCommand","subrsIndex","subrNumber","parseCharStrings","callDepth","firstStackClearing","localSubrToUse","privateDictToUse","fdIndex","nominalWidth","emptyPrivateDictionary","parentDict","parsePrivateDict","privateOffset","privateDictEnd","dictData","subrsOffset","relativeOffset","parseCharsets","CFFCharsetPredefinedTypes","raw","parseEncoding","predefined","supplementsCount","sid","dataStart","glyphsCount","rangesCount","gid","dataEnd","parseFDSelect","CFF","duplicateFirstGlyph","glyphZero","CFFHeader","CFFStrings","CFFIndex","CFFDict","setByKey","valueLength","setByName","hasName","getByName","removeByName","keyToNameMap","nameToKeyMap","defaults","types","opcodes","order","layout","CFFTopDict","CFFPrivateDict","ISO_ADOBE","EXPERT","EXPERT_SUBSET","CFFCharset","CFFEncoding","CFFFDSelect","getFDIndex","glyphIndex","CFFOffsetTracker","isTracking","track","setEntryLocation","offset1","offset2","offset3","offset4","CFFCompiler","compile","subDict","compiled","topDictTracker","fontDictTrackers","encodeNumber","encodeFloat","nibbles","encodeInteger","compileHeader","compileNameIndex","sanitizedName","compileTopDicts","dicts","fontDictTracker","fontDictData","trackers","compilePrivateDicts","privateDictTracker","privateDictData","compileDict","offsetTracker","compileStringIndex","compileGlobalSubrIndex","compileCharStrings","compileCharset","compileEncoding","compileFDSelect","lastFD","currentFD","numRanges","compileTypedArray","compileIndex","objects","lastOffset","ISOAdobeCharset","ExpertCharset","ExpertSubsetCharset","ExpertEncoding","MacExpertEncoding","WinAnsiEncoding","SymbolSetEncoding","ZapfDingbatsEncoding","getLookupTableFactory","getGlyphsUnicode","getDingbatsGlyphsUnicode","getStdFontMap","getNonStdFontMap","getSerifFonts","getSymbolsFonts","getGlyphMapForStandardFonts","getSupplementalGlyphMapForArialBlack","getSupplementalGlyphMapForCalibri","getSpecialPUASymbols","undefined","nameLen","hexStr","substring","toUpperCase","UnicodeRanges","isRTLRangeFor","getNormalizedUnicodes","charsLength","charCodeAt","getUshort","getLong","idOffset","groups","idDelta","gsubrs","isCFFCIDFont","cmds","numberOfContours","arg1","arg2","scale01","scale10","subglyph","compileGlyf","endPtsOfContours","instructionLength","numberOfPoints","points","startPoint","contour","quadraticCurveTo","stems","stackClean","xa","ya","xb","yb","bezierCurveTo","subrCode","numSubrs","y3","achar","bchar","lookupCmap","compileCharString","NOOP","getPathJs","compileGlyph","hasBuiltPath","compileGlyphImpl","cffInfo","glyphNameMap","parseCmap","parseCff","parseGlyfTable","HINTING_ENABLED","Type1CharString","COMMAND_MAP","encoded","dy","wx","sbx","sby","num2","num1","flexArgs","executeCommand","stackLength","howManyArgs","Type1Parser","EEXEC_ENCRYPT_KEY","CHAR_STRS_ENCRYPT_KEY","discardNumber","c1","c2","decrypted","digit1","isHexDigit","digit2","isBinary","decryptAscii","readNumberArray","readInt","readBoolean","getToken","isSpecial","readCharStrings","lenIV","extractFontProgram","privateData","program","blueArray","charString","lsb","extractFontHeader","encodingArg","ShadingType","FUNCTION_BASED","AXIAL","RADIAL","FREE_FORM_MESH","LATTICE_FORM_MESH","COONS_PATCH_MESH","TENSOR_PATCH_MESH","getPattern","Shadings","t0","domainArr","extendStart","extendEnd","extendArr","x1","r1","r2","distance","fnObj","colorStops","ratio","cssColor","background","RadialAxial","coordsArr","shadingType","r0","csNumComps","MeshStreamReader","align","readFlag","readCoordinate","bitsPerCoordinate","xi","yi","readComponents","ci","coords","mesh","operators","ps","verticesLeft","coord","MIN_SPLIT_PATCH_CHUNKS_AMOUNT","MAX_SPLIT_PATCH_CHUNKS_AMOUNT","TRIANGLE_DENSITY","getB","lut","t_","buildB","figure","figureMinX","figureMinY","figureMaxX","figureMaxY","splitXBy","splitYBy","verticesPerRow","figureCoords","figureColors","cl","cr","c0","c3","bRow","bCol","newColor","tmp4","coordsPacked","xy","colorsPacked","figures","decodeContext","bitsPerFlag","colorFn","patchMesh","decodeType4Shading","decodeType5Shading","decodeType6Shading","decodeType7Shading","updateBounds","buildFigureFromPatch","packData","Mesh","Dummy","xstep","ystep","paintType","tilingType","baseTypes","arabicTypes","isLTR","strLength","createBidiText","numBidi","charType","startLevel","levels","isOdd","sor","eor","lastType","findUnequal","before","after","setValues","isEven","highestLevel","lowestOddLevel","reverseValues","getMetrics","IsEvalSupportedCached","createFromArray","PDFFunction","CONSTRUCT_SAMPLED","CONSTRUCT_INTERPOLATED","CONSTRUCT_STICHED","CONSTRUCT_POSTSCRIPT","getSampleArray","sampleMul","strBytes","strIdx","typeFn","fromIR","parseArray","constructSampled","toNumberArray","inputSize","outputSize","toMultiArray","bps","encode","samples","constructSampledFromIR","ymin","cubeVertices","cubeN","cubeVertex","domain_2i","domain_2i_1","interpolate","size_i","e0","n0","n1","rj","constructInterpolated","constructInterpolatedFromIR","constructStiched","fnRefs","fns","constructStichedFromIR","dmin","dmax","rmin","rmax","constructPostScript","constructPostScriptFromIR","numOutputs","numInputs","MAX_CACHE_SIZE","cache_available","cachedValue","stackIndex","bound","fnDict","PostScriptStack","MAX_STACK_SIZE","pop","copy","roll","PostScriptEvaluator","execute","operator","PostScriptCompiler","AstNode","AstArgument","AstLiteral","AstBinaryOperation","AstMin","AstVariable","AstVariableDefinition","ExpressionBuilderVisitor","visitArgument","visitVariable","variable","visitLiteral","literal","visitBinaryOperation","visitVariableDefinition","definition","visitMin","instructions","lastRegister","buildAddOperation","buildMulOperation","buildSubOperation","ast1","ast2","tmpVar","buildMinOperation","statementBuilder","instruction","expr","PostScriptParser","nextToken","accept","expect","PostScriptTokenTypes","parseBlock","parseCondition","conditionLocation","jumpLocation","endOfTrue","LBRACE","RBRACE","NUMBER","OPERATOR","IF","IFELSE","PostScriptToken","opCache","opValue","PostScriptLexer","MurmurHash3_64","MASK_HIGH","MASK_LOW","SEED","seed","update","blockCounts","tailLength","dataUint32","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","addend","isMask","maskDict","imagePromise","handleImageData","smaskPromise","maskPromise","computedLength","haveFullData","decodeBuffer","decodeAddends","decodeCoefficients","decodeAndClamp","getComponents","bufferPos","rowComps","loop1End","loop2End","buf","remainingBits","fillOpacity","sw","sh","alphaBuf","resizeImageMask","opacity","imageOffset","maskOffset","rgbaBuf","undoPreblend","matte","matteRgb","matteR","matteG","matteB","createImageData","forceRGBA","drawWidth","drawHeight","newArray","imageLength","actualHeight","maybeUndoPreblend","fillGrayBuffer","getImageBytes","thisArg","callbacksCapabilities","ah","callbackId","wrapReason","sourceName","targetName","comObj","isReply","makeReasonSerializable","MessageHandler","on","sendWithPromise","sendWithStream","streamId","startCapability","startCall","isClosed","pullCapability","cancelCapability","_createStreamSink","sendStreamRequest","streamSink","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","resolveCall","success","_processStreamMessage","sendStreamResponse","deleteStreamController","resolveOrReject","postMessage","destroy"],"mappings":"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","file":"pdf.worker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__w_pdfjs_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__w_pdfjs_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __w_pdfjs_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__w_pdfjs_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __w_pdfjs_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 0);\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unused-vars */\n\n'use strict';\n\nvar pdfjsVersion = PDFJSDev.eval('BUNDLE_VERSION');\nvar pdfjsBuild = PDFJSDev.eval('BUNDLE_BUILD');\n\nvar pdfjsCoreWorker = require('./core/worker.js');\n\nexports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  arrayByteLength, arraysToBytes, assert, createPromiseCapability, info,\n  InvalidPDFException, MissingPDFException, PasswordException,\n  setVerbosityLevel, UnexpectedResponseException, UnknownErrorException,\n  UNSUPPORTED_FEATURES, warn, XRefParseException\n} from '../shared/util';\nimport { LocalPdfManager, NetworkPdfManager } from './pdf_manager';\nimport isNodeJS from '../shared/is_node';\nimport { MessageHandler } from '../shared/message_handler';\nimport { Ref } from './primitives';\n\nvar WorkerTask = (function WorkerTaskClosure() {\n  function WorkerTask(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = createPromiseCapability();\n  }\n\n  WorkerTask.prototype = {\n    get finished() {\n      return this._capability.promise;\n    },\n\n    finish() {\n      this._capability.resolve();\n    },\n\n    terminate() {\n      this.terminated = true;\n    },\n\n    ensureNotTerminated() {\n      if (this.terminated) {\n        throw new Error('Worker task was terminated');\n      }\n    },\n  };\n\n  return WorkerTask;\n})();\n\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n/**\n * Interface that represents PDF data transport. If possible, it allows\n * progressively load entire or fragment of the PDF binary data.\n *\n * @interface\n */\nfunction IPDFStream() {} // eslint-disable-line no-inner-declarations\nIPDFStream.prototype = {\n  /**\n   * Gets a reader for the entire PDF data.\n   * @returns {IPDFStreamReader}\n   */\n  getFullReader() {\n    return null;\n  },\n\n  /**\n   * Gets a reader for the range of the PDF data.\n   * @param {number} begin - the start offset of the data.\n   * @param {number} end - the end offset of the data.\n   * @returns {IPDFStreamRangeReader}\n   */\n  getRangeReader(begin, end) {\n    return null;\n  },\n\n  /**\n   * Cancels all opened reader and closes all their opened requests.\n   * @param {Object} reason - the reason for cancelling\n   */\n  cancelAllRequests(reason) {},\n};\n\n/**\n * Interface for a PDF binary data reader.\n *\n * @interface\n */\nfunction IPDFStreamReader() {} // eslint-disable-line no-inner-declarations\nIPDFStreamReader.prototype = {\n  /**\n   * Gets a promise that is resolved when the headers and other metadata of\n   * the PDF data stream are available.\n   * @returns {Promise}\n   */\n  get headersReady() {\n    return null;\n  },\n\n  /**\n   * Gets the Content-Disposition filename. It is defined after the headersReady\n   * promise is resolved.\n   * @returns {string|null} The filename, or `null` if the Content-Disposition\n   *                        header is missing/invalid.\n   */\n  get filename() {\n    return null;\n  },\n\n  /**\n   * Gets PDF binary data length. It is defined after the headersReady promise\n   * is resolved.\n   * @returns {number} The data length (or 0 if unknown).\n   */\n  get contentLength() {\n    return 0;\n  },\n\n  /**\n   * Gets ability of the stream to handle range requests. It is defined after\n   * the headersReady promise is resolved. Rejected when the reader is cancelled\n   * or an error occurs.\n   * @returns {boolean}\n   */\n  get isRangeSupported() {\n    return false;\n  },\n\n  /**\n   * Gets ability of the stream to progressively load binary data. It is defined\n   * after the headersReady promise is resolved.\n   * @returns {boolean}\n   */\n  get isStreamingSupported() {\n    return false;\n  },\n\n  /**\n   * Requests a chunk of the binary data. The method returns the promise, which\n   * is resolved into object with properties \"value\" and \"done\". If the done\n   * is set to true, then the stream has reached its end, otherwise the value\n   * contains binary data. Cancelled requests will be resolved with the done is\n   * set to true.\n   * @returns {Promise}\n   */\n  read() {},\n\n  /**\n   * Cancels all pending read requests and closes the stream.\n   * @param {Object} reason\n   */\n  cancel(reason) {},\n\n  /**\n   * Sets or gets the progress callback. The callback can be useful when the\n   * isStreamingSupported property of the object is defined as false.\n   * The callback is called with one parameter: an object with the loaded and\n   * total properties.\n   */\n  onProgress: null,\n};\n\n/**\n * Interface for a PDF binary data fragment reader.\n *\n * @interface\n */\nfunction IPDFStreamRangeReader() {} // eslint-disable-line no-inner-declarations\nIPDFStreamRangeReader.prototype = {\n  /**\n   * Gets ability of the stream to progressively load binary data.\n   * @returns {boolean}\n   */\n  get isStreamingSupported() {\n    return false;\n  },\n\n  /**\n   * Requests a chunk of the binary data. The method returns the promise, which\n   * is resolved into object with properties \"value\" and \"done\". If the done\n   * is set to true, then the stream has reached its end, otherwise the value\n   * contains binary data. Cancelled requests will be resolved with the done is\n   * set to true.\n   * @returns {Promise}\n   */\n  read() {},\n\n  /**\n   * Cancels all pending read requests and closes the stream.\n   * @param {Object} reason\n   */\n  cancel(reason) {},\n\n  /**\n   * Sets or gets the progress callback. The callback can be useful when the\n   * isStreamingSupported property of the object is defined as false.\n   * The callback is called with one parameter: an object with the loaded\n   * property.\n   */\n  onProgress: null,\n};\n}\n\n/** @implements {IPDFStream} */\nvar PDFWorkerStream = (function PDFWorkerStreamClosure() {\n  function PDFWorkerStream(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n  PDFWorkerStream.prototype = {\n    getFullReader() {\n      assert(!this._fullRequestReader);\n      this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n      return this._fullRequestReader;\n    },\n\n    getRangeReader(begin, end) {\n      let reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n      this._rangeRequestReaders.push(reader);\n      return reader;\n    },\n\n    cancelAllRequests(reason) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader.cancel(reason);\n      }\n      let readers = this._rangeRequestReaders.slice(0);\n      readers.forEach(function (reader) {\n        reader.cancel(reason);\n      });\n    },\n  };\n\n  /** @implements {IPDFStreamReader} */\n  function PDFWorkerStreamReader(msgHandler) {\n    this._msgHandler = msgHandler;\n\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n\n    let readableStream = this._msgHandler.sendWithStream('GetReader');\n\n    this._reader = readableStream.getReader();\n\n    this._headersReady = this._msgHandler.sendWithPromise('ReaderHeadersReady').\n        then((data) => {\n      this._isStreamingSupported = data.isStreamingSupported;\n      this._isRangeSupported = data.isRangeSupported;\n      this._contentLength = data.contentLength;\n    });\n  }\n  PDFWorkerStreamReader.prototype = {\n    get headersReady() {\n      return this._headersReady;\n    },\n\n    get contentLength() {\n      return this._contentLength;\n    },\n\n    get isStreamingSupported() {\n      return this._isStreamingSupported;\n    },\n\n    get isRangeSupported() {\n      return this._isRangeSupported;\n    },\n\n    read() {\n      return this._reader.read().then(function({ value, done, }) {\n        if (done) {\n          return { value: undefined, done: true, };\n        }\n        // `value` is wrapped into Uint8Array, we need to\n        // unwrap it to ArrayBuffer for further processing.\n        return { value: value.buffer, done: false, };\n      });\n    },\n\n    cancel(reason) {\n      this._reader.cancel(reason);\n    },\n  };\n\n  /** @implements {IPDFStreamRangeReader} */\n  function PDFWorkerStreamRangeReader(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    let readableStream = this._msgHandler.sendWithStream('GetRangeReader',\n                                                         { begin, end, });\n\n    this._reader = readableStream.getReader();\n  }\n  PDFWorkerStreamRangeReader.prototype = {\n    get isStreamingSupported() {\n      return false;\n    },\n\n    read() {\n      return this._reader.read().then(function({ value, done, }) {\n        if (done) {\n          return { value: undefined, done: true, };\n        }\n        return { value: value.buffer, done: false, };\n      });\n    },\n\n    cancel(reason) {\n      this._reader.cancel(reason);\n    },\n  };\n\n  return PDFWorkerStream;\n})();\n\nvar WorkerMessageHandler = {\n  setup(handler, port) {\n    var testMessageProcessed = false;\n    handler.on('test', function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return; // we already processed 'test' message once\n      }\n      testMessageProcessed = true;\n\n      // check if Uint8Array can be sent to worker\n      if (!(data instanceof Uint8Array)) {\n        handler.send('test', false);\n        return;\n      }\n      // making sure postMessage transfers are working\n      var supportTransfers = data[0] === 255;\n      handler.postMessageTransfers = supportTransfers;\n      // check if the response property is supported by xhr\n      var xhr = new XMLHttpRequest();\n      var responseExists = 'response' in xhr;\n      // check if the property is actually implemented\n      try {\n        xhr.responseType; // eslint-disable-line no-unused-expressions\n      } catch (e) {\n        responseExists = false;\n      }\n      if (!responseExists) {\n        handler.send('test', false);\n        return;\n      }\n      handler.send('test', {\n        supportTypedArray: true,\n        supportTransfers,\n      });\n    });\n\n    handler.on('configure', function wphConfigure(data) {\n      setVerbosityLevel(data.verbosity);\n    });\n\n    handler.on('GetDocRequest', function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  },\n  createDocumentHandler(docParams, port) {\n    // This context is actually holds references on pdfManager and handler,\n    // until the latter is destroyed.\n    var pdfManager;\n    var terminated = false;\n    var cancelXHRs = null;\n    var WorkerTasks = [];\n\n    let apiVersion = docParams.apiVersion;\n    let workerVersion =\n      typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_VERSION') : null;\n    if ((typeof PDFJSDev !== 'undefined' && PDFJSDev.test('TESTING')) &&\n        apiVersion === null) {\n      warn('Ignoring apiVersion/workerVersion check in TESTING builds.');\n    } else if (apiVersion !== workerVersion) {\n      throw new Error(`The API version \"${apiVersion}\" does not match ` +\n                      `the Worker version \"${workerVersion}\".`);\n    }\n\n    var docId = docParams.docId;\n    var docBaseUrl = docParams.docBaseUrl;\n    var workerHandlerName = docParams.docId + '_worker';\n    var handler = new MessageHandler(workerHandlerName, docId, port);\n\n    // Ensure that postMessage transfers are always correctly enabled/disabled,\n    // to prevent \"DataCloneError\" in browsers without transfers support.\n    handler.postMessageTransfers = docParams.postMessageTransfers;\n\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error('Worker was terminated');\n      }\n    }\n\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n\n    function finishWorkerTask(task) {\n      task.finish();\n      var i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n\n    function loadDocument(recoveryMode) {\n      var loadDocumentCapability = createPromiseCapability();\n\n      var parseSuccess = function parseSuccess() {\n        Promise.all([\n          pdfManager.ensureDoc('numPages'),\n          pdfManager.ensureDoc('fingerprint'),\n        ]).then(function([numPages, fingerprint]) {\n          loadDocumentCapability.resolve({\n            numPages,\n            fingerprint,\n          });\n        }, parseFailure);\n      };\n\n      var parseFailure = function parseFailure(e) {\n        loadDocumentCapability.reject(e);\n      };\n\n      pdfManager.ensureDoc('checkHeader', []).then(function() {\n        pdfManager.ensureDoc('parseStartXRef', []).then(function() {\n          pdfManager.ensureDoc('parse', [recoveryMode]).then(\n            parseSuccess, parseFailure);\n        }, parseFailure);\n      }, parseFailure);\n\n      return loadDocumentCapability.promise;\n    }\n\n    function getPdfManager(data, evaluatorOptions) {\n      var pdfManagerCapability = createPromiseCapability();\n      var pdfManager;\n\n      var source = data.source;\n      if (source.data) {\n        try {\n          pdfManager = new LocalPdfManager(docId, source.data, source.password,\n                                           evaluatorOptions, docBaseUrl);\n          pdfManagerCapability.resolve(pdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        return pdfManagerCapability.promise;\n      }\n\n      var pdfStream, cachedChunks = [];\n      try {\n        pdfStream = new PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n\n      var fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady.then(function () {\n        if (!fullRequest.isRangeSupported) {\n          return;\n        }\n\n        // We don't need auto-fetch when streaming is enabled.\n        var disableAutoFetch = source.disableAutoFetch ||\n                               fullRequest.isStreamingSupported;\n        pdfManager = new NetworkPdfManager(docId, pdfStream, {\n          msgHandler: handler,\n          url: source.url,\n          password: source.password,\n          length: fullRequest.contentLength,\n          disableAutoFetch,\n          rangeChunkSize: source.rangeChunkSize,\n        }, evaluatorOptions, docBaseUrl);\n        // There may be a chance that `pdfManager` is not initialized\n        // for first few runs of `readchunk` block of code. Be sure\n        // to send all cached chunks, if any, to chunked_stream via\n        // pdf_manager.\n        for (let i = 0; i < cachedChunks.length; i++) {\n          pdfManager.sendProgressiveData(cachedChunks[i]);\n        }\n\n        cachedChunks = [];\n        pdfManagerCapability.resolve(pdfManager);\n        cancelXHRs = null;\n      }).catch(function (reason) {\n        pdfManagerCapability.reject(reason);\n        cancelXHRs = null;\n      });\n\n      var loaded = 0;\n      var flushChunks = function () {\n        var pdfFile = arraysToBytes(cachedChunks);\n        if (source.length && pdfFile.length !== source.length) {\n          warn('reported HTTP length is different from actual');\n        }\n        // the data is array, instantiating directly from it\n        try {\n          pdfManager = new LocalPdfManager(docId, pdfFile, source.password,\n                                           evaluatorOptions, docBaseUrl);\n          pdfManagerCapability.resolve(pdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n        cachedChunks = [];\n      };\n      var readPromise = new Promise(function (resolve, reject) {\n        var readChunk = function (chunk) {\n          try {\n            ensureNotTerminated();\n            if (chunk.done) {\n              if (!pdfManager) {\n                flushChunks();\n              }\n              cancelXHRs = null;\n              return;\n            }\n\n            var data = chunk.value;\n            loaded += arrayByteLength(data);\n            if (!fullRequest.isStreamingSupported) {\n              handler.send('DocProgress', {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0),\n              });\n            }\n\n            if (pdfManager) {\n              pdfManager.sendProgressiveData(data);\n            } else {\n              cachedChunks.push(data);\n            }\n\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n\n      cancelXHRs = function () {\n        pdfStream.cancelAllRequests('abort');\n      };\n\n      return pdfManagerCapability.promise;\n    }\n\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send('GetDoc', { pdfInfo: doc, });\n      }\n\n      function onFailure(e) {\n        ensureNotTerminated();\n\n        if (e instanceof PasswordException) {\n          var task = new WorkerTask('PasswordException: response ' + e.code);\n          startWorkerTask(task);\n\n          handler.sendWithPromise('PasswordRequest', e).then(function (data) {\n            finishWorkerTask(task);\n            pdfManager.updatePassword(data.password);\n            pdfManagerReady();\n          }).catch(function (boundException) {\n            finishWorkerTask(task);\n            handler.send('PasswordException', boundException);\n          }.bind(null, e));\n        } else if (e instanceof InvalidPDFException) {\n          handler.send('InvalidPDF', e);\n        } else if (e instanceof MissingPDFException) {\n          handler.send('MissingPDF', e);\n        } else if (e instanceof UnexpectedResponseException) {\n          handler.send('UnexpectedResponse', e);\n        } else {\n          handler.send('UnknownError',\n                       new UnknownErrorException(e.message, e.toString()));\n        }\n      }\n\n      function pdfManagerReady() {\n        ensureNotTerminated();\n\n        loadDocument(false).then(onSuccess, function loadFailure(ex) {\n          ensureNotTerminated();\n\n          // Try again with recoveryMode == true\n          if (!(ex instanceof XRefParseException)) {\n            onFailure(ex);\n            return;\n          }\n          pdfManager.requestLoadedStream();\n          pdfManager.onLoadedStream().then(function() {\n            ensureNotTerminated();\n\n            loadDocument(true).then(onSuccess, onFailure);\n          });\n        }, onFailure);\n      }\n\n      ensureNotTerminated();\n\n      var evaluatorOptions = {\n        forceDataSchema: data.disableCreateObjectURL,\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        nativeImageDecoderSupport: data.nativeImageDecoderSupport,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported,\n      };\n\n      getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {\n        if (terminated) {\n          // We were in a process of setting up the manager, but it got\n          // terminated in the middle.\n          newPdfManager.terminate();\n          throw new Error('Worker was terminated');\n        }\n        pdfManager = newPdfManager;\n\n        pdfManager.onLoadedStream().then(function(stream) {\n          handler.send('DataLoaded', { length: stream.bytes.byteLength, });\n        });\n      }).then(pdfManagerReady, onFailure);\n    }\n\n    handler.on('GetPage', function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function(page) {\n        return Promise.all([\n          pdfManager.ensure(page, 'rotate'),\n          pdfManager.ensure(page, 'ref'),\n          pdfManager.ensure(page, 'userUnit'),\n          pdfManager.ensure(page, 'view'),\n        ]).then(function([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            userUnit,\n            view,\n          };\n        });\n      });\n    });\n\n    handler.on('GetPageIndex', function wphSetupGetPageIndex(data) {\n      var ref = new Ref(data.ref.num, data.ref.gen);\n      var catalog = pdfManager.pdfDocument.catalog;\n      return catalog.getPageIndex(ref);\n    });\n\n    handler.on('GetDestinations',\n      function wphSetupGetDestinations(data) {\n        return pdfManager.ensureCatalog('destinations');\n      }\n    );\n\n    handler.on('GetDestination',\n      function wphSetupGetDestination(data) {\n        return pdfManager.ensureCatalog('getDestination', [data.id]);\n      }\n    );\n\n    handler.on('GetPageLabels',\n      function wphSetupGetPageLabels(data) {\n        return pdfManager.ensureCatalog('pageLabels');\n      }\n    );\n\n    handler.on('GetPageMode', function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog('pageMode');\n    });\n\n    handler.on('GetAttachments',\n      function wphSetupGetAttachments(data) {\n        return pdfManager.ensureCatalog('attachments');\n      }\n    );\n\n    handler.on('GetJavaScript',\n      function wphSetupGetJavaScript(data) {\n        return pdfManager.ensureCatalog('javaScript');\n      }\n    );\n\n    handler.on('GetOutline',\n      function wphSetupGetOutline(data) {\n        return pdfManager.ensureCatalog('documentOutline');\n      }\n    );\n\n    handler.on('GetPermissions', function(data) {\n      return pdfManager.ensureCatalog('permissions');\n    });\n\n    handler.on('GetMetadata',\n      function wphSetupGetMetadata(data) {\n        return Promise.all([pdfManager.ensureDoc('documentInfo'),\n                            pdfManager.ensureCatalog('metadata')]);\n      }\n    );\n\n    handler.on('GetData', function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function(stream) {\n        return stream.bytes;\n      });\n    });\n\n    handler.on('GetStats',\n      function wphSetupGetStats(data) {\n        return pdfManager.pdfDocument.xref.stats;\n      }\n    );\n\n    handler.on('GetAnnotations', function({ pageIndex, intent, }) {\n      return pdfManager.getPage(pageIndex).then(function(page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n\n    handler.on('RenderPageRequest', function wphSetupRenderPage(data) {\n      var pageIndex = data.pageIndex;\n      pdfManager.getPage(pageIndex).then(function(page) {\n        var task = new WorkerTask('RenderPageRequest: page ' + pageIndex);\n        startWorkerTask(task);\n\n        var pageNum = pageIndex + 1;\n        var start = Date.now();\n        // Pre compile the pdf page and fetch the fonts/images.\n        page.getOperatorList({\n          handler,\n          task,\n          intent: data.intent,\n          renderInteractiveForms: data.renderInteractiveForms,\n        }).then(function(operatorList) {\n          finishWorkerTask(task);\n\n          info('page=' + pageNum + ' - getOperatorList: time=' +\n               (Date.now() - start) + 'ms, len=' + operatorList.totalLength);\n        }, function(e) {\n          finishWorkerTask(task);\n          if (task.terminated) {\n            return; // ignoring errors from the terminated thread\n          }\n\n          // For compatibility with older behavior, generating unknown\n          // unsupported feature notification on errors.\n          handler.send('UnsupportedFeature',\n                       { featureId: UNSUPPORTED_FEATURES.unknown, });\n\n          var minimumStackMessage =\n            'worker.js: while trying to getPage() and getOperatorList()';\n\n          var wrappedException;\n\n          // Turn the error into an obj that can be serialized\n          if (typeof e === 'string') {\n            wrappedException = {\n              message: e,\n              stack: minimumStackMessage,\n            };\n          } else if (typeof e === 'object') {\n            wrappedException = {\n              message: e.message || e.toString(),\n              stack: e.stack || minimumStackMessage,\n            };\n          } else {\n            wrappedException = {\n              message: 'Unknown exception type: ' + (typeof e),\n              stack: minimumStackMessage,\n            };\n          }\n\n          handler.send('PageError', {\n            pageNum,\n            error: wrappedException,\n            intent: data.intent,\n          });\n        });\n      });\n    }, this);\n\n    handler.on('GetTextContent', function wphExtractText(data, sink) {\n      var pageIndex = data.pageIndex;\n      sink.onPull = function (desiredSize) { };\n      sink.onCancel = function (reason) { };\n\n      pdfManager.getPage(pageIndex).then(function(page) {\n        var task = new WorkerTask('GetTextContent: page ' + pageIndex);\n        startWorkerTask(task);\n\n        var pageNum = pageIndex + 1;\n        var start = Date.now();\n        page.extractTextContent({\n          handler,\n          task,\n          sink,\n          normalizeWhitespace: data.normalizeWhitespace,\n          combineTextItems: data.combineTextItems,\n        }).then(function() {\n          finishWorkerTask(task);\n\n          info('text indexing: page=' + pageNum + ' - time=' +\n               (Date.now() - start) + 'ms');\n          sink.close();\n        }, function (reason) {\n          finishWorkerTask(task);\n          if (task.terminated) {\n            return; // ignoring errors from the terminated thread\n          }\n          sink.error(reason);\n          throw reason;\n        });\n      });\n    });\n\n    handler.on('Cleanup', function wphCleanup(data) {\n      return pdfManager.cleanup();\n    });\n\n    handler.on('Terminate', function wphTerminate(data) {\n      terminated = true;\n      if (pdfManager) {\n        pdfManager.terminate();\n        pdfManager = null;\n      }\n      if (cancelXHRs) {\n        cancelXHRs();\n      }\n\n      var waitOn = [];\n      WorkerTasks.forEach(function (task) {\n        waitOn.push(task.finished);\n        task.terminate();\n      });\n\n      return Promise.all(waitOn).then(function () {\n        // Notice that even if we destroying handler, resolved response promise\n        // must be sent back.\n        handler.destroy();\n        handler = null;\n      });\n    });\n\n    handler.on('Ready', function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null; // we don't need docParams anymore -- saving memory.\n    });\n    return workerHandlerName;\n  },\n  initializeFromPort(port) {\n    var handler = new MessageHandler('worker', 'main', port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send('ready', null);\n  },\n};\n\nfunction isMessagePort(maybePort) {\n  return typeof maybePort.postMessage === 'function' &&\n         ('onmessage' in maybePort);\n}\n\n// Worker thread (and not node.js)?\nif (typeof window === 'undefined' && !isNodeJS() &&\n    typeof self !== 'undefined' && isMessagePort(self)) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport {\n  WorkerTask,\n  WorkerMessageHandler,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport './compatibility';\nimport { ReadableStream } from './streams_polyfill';\nimport { URL } from './url_polyfill';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n  NONE: 'none',\n  DECODE: 'decode',\n  DISPLAY: 'display',\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst StreamType = {\n  UNKNOWN: 0,\n  FLATE: 1,\n  LZW: 2,\n  DCT: 3,\n  JPX: 4,\n  JBIG: 5,\n  A85: 6,\n  AHX: 7,\n  CCF: 8,\n  RL: 9,\n};\n\nconst FontType = {\n  UNKNOWN: 0,\n  TYPE1: 1,\n  TYPE1C: 2,\n  CIDFONTTYPE0: 3,\n  CIDFONTTYPE0C: 4,\n  TRUETYPE: 5,\n  CIDFONTTYPE2: 6,\n  TYPE3: 7,\n  OPENTYPE: 8,\n  TYPE0: 9,\n  MMTYPE1: 10,\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n  unknown: 'unknown',\n  forms: 'forms',\n  javaScript: 'javaScript',\n  smask: 'smask',\n  shadingPattern: 'shadingPattern',\n  font: 'font',\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log('Info: ' + msg);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log('Warning: ' + msg);\n  }\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n  console.log('Deprecated API usage: ' + details);\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n  try {\n    var base = new URL(baseUrl);\n    if (!base.origin || base.origin === 'null') {\n      return false; // non-HTTP url\n    }\n  } catch (e) {\n    return false;\n  }\n\n  var other = new URL(otherUrl, base);\n  return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n  switch (url.protocol) {\n    case 'http:':\n    case 'https:':\n    case 'ftp:':\n    case 'mailto:':\n    case 'tel:':\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n  if (!url) {\n    return null;\n  }\n  try {\n    var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) { /* `new URL()` will throw on incorrect data. */ }\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, { value,\n                                     enumerable: true,\n                                     configurable: true,\n                                     writable: false, });\n  return value;\n}\n\nfunction getLookupTableFactory(initializer) {\n  var lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n    return lookup;\n  };\n}\n\nvar PasswordException = (function PasswordExceptionClosure() {\n  function PasswordException(msg, code) {\n    this.name = 'PasswordException';\n    this.message = msg;\n    this.code = code;\n  }\n\n  PasswordException.prototype = new Error();\n  PasswordException.constructor = PasswordException;\n\n  return PasswordException;\n})();\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n  function UnknownErrorException(msg, details) {\n    this.name = 'UnknownErrorException';\n    this.message = msg;\n    this.details = details;\n  }\n\n  UnknownErrorException.prototype = new Error();\n  UnknownErrorException.constructor = UnknownErrorException;\n\n  return UnknownErrorException;\n})();\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n  function InvalidPDFException(msg) {\n    this.name = 'InvalidPDFException';\n    this.message = msg;\n  }\n\n  InvalidPDFException.prototype = new Error();\n  InvalidPDFException.constructor = InvalidPDFException;\n\n  return InvalidPDFException;\n})();\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n  function MissingPDFException(msg) {\n    this.name = 'MissingPDFException';\n    this.message = msg;\n  }\n\n  MissingPDFException.prototype = new Error();\n  MissingPDFException.constructor = MissingPDFException;\n\n  return MissingPDFException;\n})();\n\nvar UnexpectedResponseException =\n    (function UnexpectedResponseExceptionClosure() {\n  function UnexpectedResponseException(msg, status) {\n    this.name = 'UnexpectedResponseException';\n    this.message = msg;\n    this.status = status;\n  }\n\n  UnexpectedResponseException.prototype = new Error();\n  UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n  return UnexpectedResponseException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n  function MissingDataException(begin, end) {\n    this.begin = begin;\n    this.end = end;\n    this.message = 'Missing data [' + begin + ', ' + end + ')';\n  }\n\n  MissingDataException.prototype = new Error();\n  MissingDataException.prototype.name = 'MissingDataException';\n  MissingDataException.constructor = MissingDataException;\n\n  return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n  function XRefParseException(msg) {\n    this.message = msg;\n  }\n\n  XRefParseException.prototype = new Error();\n  XRefParseException.prototype.name = 'XRefParseException';\n  XRefParseException.constructor = XRefParseException;\n\n  return XRefParseException;\n})();\n\n/**\n * Error caused during parsing PDF data.\n */\nlet FormatError = (function FormatErrorClosure() {\n  function FormatError(msg) {\n    this.message = msg;\n  }\n\n  FormatError.prototype = new Error();\n  FormatError.prototype.name = 'FormatError';\n  FormatError.constructor = FormatError;\n\n  return FormatError;\n})();\n\n/**\n * Error used to indicate task cancellation.\n */\nlet AbortException = (function AbortExceptionClosure() {\n  function AbortException(msg) {\n    this.name = 'AbortException';\n    this.message = msg;\n  }\n\n  AbortException.prototype = new Error();\n  AbortException.constructor = AbortException;\n\n  return AbortException;\n})();\n\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n  if (typeof str !== 'string') {\n    warn('The argument for removeNullCharacters must be a string.');\n    return str;\n  }\n  return str.replace(NullCharactersRegExp, '');\n}\n\nfunction bytesToString(bytes) {\n  assert(bytes !== null && typeof bytes === 'object' &&\n         bytes.length !== undefined, 'Invalid argument for bytesToString');\n  var length = bytes.length;\n  var MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  var strBuf = [];\n  for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    var chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join('');\n}\n\nfunction stringToBytes(str) {\n  assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n  var length = str.length;\n  var bytes = new Uint8Array(length);\n  for (var i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xFF;\n  }\n  return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n  assert(arr.byteLength !== undefined);\n  return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n  // Shortcut: if first and only item is Uint8Array, return it.\n  if (arr.length === 1 && (arr[0] instanceof Uint8Array)) {\n    return arr[0];\n  }\n  var resultLength = 0;\n  var i, ii = arr.length;\n  var item, itemLength;\n  for (i = 0; i < ii; i++) {\n    item = arr[i];\n    itemLength = arrayByteLength(item);\n    resultLength += itemLength;\n  }\n  var pos = 0;\n  var data = new Uint8Array(resultLength);\n  for (i = 0; i < ii; i++) {\n    item = arr[i];\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === 'string') {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n    itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n  return data;\n}\n\nfunction string32(value) {\n  return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n                             (value >> 8) & 0xff, value & 0xff);\n}\n\n// Calculate the base 2 logarithm of the number `x`. This differs from the\n// native function in the sense that it returns the ceiling value and that it\n// returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0.\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, start) {\n  return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return ((data[offset] << 24) | (data[offset + 1] << 16) |\n         (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n  var buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return (view32[0] === 1);\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(''); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned. To avoid infinite loops, the traversal is stopped when\n * the loop limit is reached.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n *   array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n *   the key is found. If set to `false`, we always walk up the entire parent\n *   chain, for example to be able to find `\\Resources` placed on multiple\n *   levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({ dict, key, getArray = false,\n                                  stopWhenFound = true, }) {\n  const LOOP_LIMIT = 100;\n  let loopCount = 0;\n  let values;\n\n  while (dict) {\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n      if (!values) {\n        values = [];\n      }\n      values.push(value);\n    }\n    if (++loopCount > LOOP_LIMIT) {\n      warn(`getInheritableProperty: maximum loop count exceeded for \"${key}\"`);\n      break;\n    }\n    dict = dict.get('Parent');\n  }\n  return values;\n}\n\nvar Util = (function UtilClosure() {\n  function Util() {}\n\n  var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n  // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n  // creating many intermediate strings.\n  Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n    rgbBuf[1] = r;\n    rgbBuf[3] = g;\n    rgbBuf[5] = b;\n    return rgbBuf.join('');\n  };\n\n  // Concatenates two transformation matrices together and returns the result.\n  Util.transform = function Util_transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n    ];\n  };\n\n  // For 2d affine transforms\n  Util.applyTransform = function Util_applyTransform(p, m) {\n    var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  };\n\n  Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n    var d = m[0] * m[3] - m[1] * m[2];\n    var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  };\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  Util.getAxialAlignedBoundingBox =\n    function Util_getAxialAlignedBoundingBox(r, m) {\n\n    var p1 = Util.applyTransform(r, m);\n    var p2 = Util.applyTransform(r.slice(2, 4), m);\n    var p3 = Util.applyTransform([r[0], r[3]], m);\n    var p4 = Util.applyTransform([r[2], r[1]], m);\n    return [\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\n      Math.max(p1[1], p2[1], p3[1], p4[1])\n    ];\n  };\n\n  Util.inverseTransform = function Util_inverseTransform(m) {\n    var d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  };\n\n  // Apply a generic 3d matrix M on a 3-vector v:\n  //   | a b c |   | X |\n  //   | d e f | x | Y |\n  //   | g h i |   | Z |\n  // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n  // with v as [X,Y,Z]\n  Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n    return [\n      m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n      m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n      m[6] * v[0] + m[7] * v[1] + m[8] * v[2]\n    ];\n  };\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  Util.singularValueDecompose2dScale =\n    function Util_singularValueDecompose2dScale(m) {\n\n    var transpose = [m[0], m[2], m[1], m[3]];\n\n    // Multiply matrix m with its transpose.\n    var a = m[0] * transpose[0] + m[1] * transpose[2];\n    var b = m[0] * transpose[1] + m[1] * transpose[3];\n    var c = m[2] * transpose[0] + m[3] * transpose[2];\n    var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n    // Solve the second degree polynomial to get roots.\n    var first = (a + d) / 2;\n    var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n    var sx = first + second || 1;\n    var sy = first - second || 1;\n\n    // Scale values are the square roots of the eigenvalues.\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  };\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  Util.normalizeRect = function Util_normalizeRect(rect) {\n    var r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  };\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'false'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  Util.intersect = function Util_intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    // Order points along the axes\n    var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n        orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n        result = [];\n\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    // X: first and second points belong to different rectangles?\n    if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n        (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n      // Intersection must be between second and third points\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return false;\n    }\n\n    // Y: first and second points belong to different rectangles?\n    if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n        (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n      // Intersection must be between second and third points\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return false;\n    }\n\n    return result;\n  };\n\n  return Util;\n})();\n\nconst ROMAN_NUMBER_MAP = [\n  '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',\n  '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',\n  '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {integer} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n *   to lower case letters. The default value is `false`.\n * @return {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n  assert(Number.isInteger(number) && number > 0,\n         'The number should be a positive integer.');\n  let pos, romanBuf = [];\n  // Thousands\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push('M');\n  }\n  // Hundreds\n  pos = (number / 100) | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  // Tens\n  pos = (number / 10) | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  // Ones\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n  const romanStr = romanBuf.join('');\n  return (lowerCase ? romanStr.toLowerCase() : romanStr);\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n  0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n  0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n  0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n  var i, n = str.length, strBuf = [];\n  if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n    // UTF16BE BOM\n    for (i = 2; i < n; i += 2) {\n      strBuf.push(String.fromCharCode(\n        (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n    }\n  } else {\n    for (i = 0; i < n; ++i) {\n      var code = PDFStringTranslateTable[str.charCodeAt(i)];\n      strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n    }\n  }\n  return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n  for (var key in obj) {\n    return false;\n  }\n  return true;\n}\n\nfunction isBool(v) {\n  return typeof v === 'boolean';\n}\n\nfunction isNum(v) {\n  return typeof v === 'number';\n}\n\nfunction isString(v) {\n  return typeof v === 'string';\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isSpace(ch) {\n  return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A);\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\n * @property {function} resolve - Fulfills the promise.\n * @property {function} reject - Rejects the promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n  var capability = {};\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = resolve;\n    capability.reject = reject;\n  });\n  return capability;\n}\n\nvar createObjectURL = (function createObjectURLClosure() {\n  // Blob/createObjectURL is not available, falling back to data schema.\n  var digits =\n    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n  return function createObjectURL(data, contentType, forceDataSchema = false) {\n    if (!forceDataSchema && URL.createObjectURL) {\n      const blob = new Blob([data], { type: contentType, });\n      return URL.createObjectURL(blob);\n    }\n\n    var buffer = 'data:' + contentType + ';base64,';\n    for (var i = 0, ii = data.length; i < ii; i += 3) {\n      var b1 = data[i] & 0xFF;\n      var b2 = data[i + 1] & 0xFF;\n      var b3 = data[i + 2] & 0xFF;\n      var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n      var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n      var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n    return buffer;\n  };\n})();\n\nexport {\n  FONT_IDENTITY_MATRIX,\n  IDENTITY_MATRIX,\n  OPS,\n  VerbosityLevel,\n  UNSUPPORTED_FEATURES,\n  AnnotationBorderStyleType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationType,\n  FontType,\n  ImageKind,\n  CMapCompressionType,\n  AbortException,\n  InvalidPDFException,\n  MissingDataException,\n  MissingPDFException,\n  NativeImageDecoding,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  StreamType,\n  TextRenderingMode,\n  UnexpectedResponseException,\n  UnknownErrorException,\n  Util,\n  toRomanNumerals,\n  XRefParseException,\n  FormatError,\n  arrayByteLength,\n  arraysToBytes,\n  assert,\n  bytesToString,\n  createPromiseCapability,\n  createObjectURL,\n  deprecated,\n  getInheritableProperty,\n  getLookupTableFactory,\n  getVerbosityLevel,\n  info,\n  isArrayBuffer,\n  isBool,\n  isEmptyObj,\n  isNum,\n  isString,\n  isSpace,\n  isSameOrigin,\n  createValidAbsoluteUrl,\n  isLittleEndian,\n  isEvalSupported,\n  log2,\n  readInt8,\n  readUint16,\n  readUint32,\n  removeNullCharacters,\n  ReadableStream,\n  URL,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  utf8StringToString,\n  warn,\n  unreachable,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst globalScope = require('./global_scope');\n\n// Skip compatibility checks for the extensions and if we already ran\n// this module.\nif ((typeof PDFJSDev === 'undefined' ||\n     !PDFJSDev.test('FIREFOX || MOZCENTRAL')) &&\n    !globalScope._pdfjsCompatibilityChecked) {\n\nglobalScope._pdfjsCompatibilityChecked = true;\n\n// In the Chrome extension, most of the polyfills are unnecessary.\n// We support down to Chrome 49, because it's still commonly used by Windows XP\n// users - https://github.com/mozilla/pdf.js/issues/9397\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('CHROME')) {\n\nconst isNodeJS = require('./is_node');\n\nconst hasDOM = typeof window === 'object' && typeof document === 'object';\n\n// Support: Node.js\n(function checkNodeBtoa() {\n  if (globalScope.btoa || !isNodeJS()) {\n    return;\n  }\n  globalScope.btoa = function(chars) {\n    // eslint-disable-next-line no-undef\n    return Buffer.from(chars, 'binary').toString('base64');\n  };\n})();\n\n// Support: Node.js\n(function checkNodeAtob() {\n  if (globalScope.atob || !isNodeJS()) {\n    return;\n  }\n  globalScope.atob = function(input) {\n    // eslint-disable-next-line no-undef\n    return Buffer.from(input, 'base64').toString('binary');\n  };\n})();\n\n// Provides document.currentScript support\n// Support: IE, Chrome<29.\n(function checkCurrentScript() {\n  if (!hasDOM) {\n    return;\n  }\n  if ('currentScript' in document) {\n    return;\n  }\n  Object.defineProperty(document, 'currentScript', {\n    get() {\n      var scripts = document.getElementsByTagName('script');\n      return scripts[scripts.length - 1];\n    },\n    enumerable: true,\n    configurable: true,\n  });\n})();\n\n// Provides support for ChildNode.remove in legacy browsers.\n// Support: IE.\n(function checkChildNodeRemove() {\n  if (!hasDOM) {\n    return;\n  }\n  if (typeof Element.prototype.remove !== 'undefined') {\n    return;\n  }\n  Element.prototype.remove = function () {\n    if (this.parentNode) {\n      // eslint-disable-next-line mozilla/avoid-removeChild\n      this.parentNode.removeChild(this);\n    }\n  };\n})();\n\n// Provides support for DOMTokenList.prototype.toggle, with the optional\n// \"force\" parameter, in legacy browsers.\n// Support: IE\n(function checkDOMTokenListToggle() {\n  if (!hasDOM || isNodeJS()) {\n    return;\n  }\n  const div = document.createElement('div');\n  if (div.classList.toggle('test', 0) === false) {\n    return;\n  }\n  const originalDOMTokenListToggle = DOMTokenList.prototype.toggle;\n\n  DOMTokenList.prototype.toggle = function(token) {\n    if (arguments.length > 1) {\n      const force = !!arguments[1];\n      return (this[force ? 'add' : 'remove'](token), force);\n    }\n    return originalDOMTokenListToggle(token);\n  };\n})();\n\n// Provides support for String.prototype.includes in legacy browsers.\n// Support: IE, Chrome<41\n(function checkStringIncludes() {\n  if (String.prototype.includes) {\n    return;\n  }\n  require('core-js/fn/string/includes');\n})();\n\n// Provides support for Array.prototype.includes in legacy browsers.\n// Support: IE, Chrome<47\n(function checkArrayIncludes() {\n  if (Array.prototype.includes) {\n    return;\n  }\n  require('core-js/fn/array/includes');\n})();\n\n// Provides support for Object.assign in legacy browsers.\n// Support: IE\n(function checkObjectAssign() {\n  if (Object.assign) {\n    return;\n  }\n  require('core-js/fn/object/assign');\n})();\n\n// Provides support for Math.log2 in legacy browsers.\n// Support: IE, Chrome<38\n(function checkMathLog2() {\n  if (Math.log2) {\n    return;\n  }\n  Math.log2 = require('core-js/fn/math/log2');\n})();\n\n// Provides support for Number.isNaN in legacy browsers.\n// Support: IE.\n(function checkNumberIsNaN() {\n  if (Number.isNaN) {\n    return;\n  }\n  Number.isNaN = require('core-js/fn/number/is-nan');\n})();\n\n// Provides support for Number.isInteger in legacy browsers.\n// Support: IE, Chrome<34\n(function checkNumberIsInteger() {\n  if (Number.isInteger) {\n    return;\n  }\n  Number.isInteger = require('core-js/fn/number/is-integer');\n})();\n\n// Support: IE, Safari<8, Chrome<32\n(function checkPromise() {\n  if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n    // The current image decoders are synchronous, hence `Promise` shouldn't\n    // need to be polyfilled for the IMAGE_DECODERS build target.\n    return;\n  }\n  if (globalScope.Promise) {\n    return;\n  }\n  globalScope.Promise = require('core-js/fn/promise');\n})();\n\n// Support: IE<11, Safari<8, Chrome<36\n(function checkWeakMap() {\n  if (globalScope.WeakMap) {\n    return;\n  }\n  globalScope.WeakMap = require('core-js/fn/weak-map');\n})();\n\n// Provides support for String.codePointAt in legacy browsers.\n// Support: IE11.\n(function checkStringCodePointAt() {\n  if (String.codePointAt) {\n    return;\n  }\n  String.codePointAt = require('core-js/fn/string/code-point-at');\n})();\n\n// Provides support for String.fromCodePoint in legacy browsers.\n// Support: IE11.\n(function checkStringFromCodePoint() {\n  if (String.fromCodePoint) {\n    return;\n  }\n  String.fromCodePoint = require('core-js/fn/string/from-code-point');\n})();\n\n// Support: IE\n(function checkSymbol() {\n  if (globalScope.Symbol) {\n    return;\n  }\n  require('core-js/es6/symbol');\n})();\n\n} // End of !PDFJSDev.test('CHROME')\n\n// Provides support for Object.values in legacy browsers.\n// Support: IE, Chrome<54\n(function checkObjectValues() {\n  if (Object.values) {\n    return;\n  }\n  Object.values = require('core-js/fn/object/values');\n})();\n\n}\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module */\n\nmodule.exports =\n  (typeof window !== 'undefined' && window.Math === Math) ? window :\n  // eslint-disable-next-line no-undef\n  (typeof global !== 'undefined' && global.Math === Math) ? global :\n  (typeof self !== 'undefined' && self.Math === Math) ? self : {};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module, process */\n\nmodule.exports = function isNodeJS() {\n  return typeof process === 'object' && process + '' === '[object process]';\n};\n","require('../../modules/es6.string.includes');\nmodule.exports = require('../../modules/_core').String.includes;\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = false;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","exports.f = {}.propertyIsEnumerable;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n","require('../../modules/es6.math.log2');\nmodule.exports = require('../../modules/_core').Math.log2;\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n  log2: function log2(x) {\n    return Math.log(x) / Math.LN2;\n  }\n});\n","require('../../modules/es6.number.is-nan');\nmodule.exports = require('../../modules/_core').Number.isNaN;\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n  isNaN: function isNaN(number) {\n    // eslint-disable-next-line no-self-compare\n    return number != number;\n  }\n});\n","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  require('./_redefine')(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n","module.exports = {};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n  try {\n    // correct subclassing with @@species support\n    var promise = $Promise.resolve(1);\n    var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n      exec(empty, empty);\n    };\n    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n    return (isNode || typeof PromiseRejectionEvent == 'function')\n      && promise.then(empty) instanceof FakePromise\n      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n      // we can't detect it synchronously, so just check versions\n      && v8.indexOf('6.6') !== 0\n      && userAgent.indexOf('Chrome/66') === -1;\n  } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n  var then;\n  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n  if (promise._n) return;\n  promise._n = true;\n  var chain = promise._c;\n  microtask(function () {\n    var value = promise._v;\n    var ok = promise._s == 1;\n    var i = 0;\n    var run = function (reaction) {\n      var handler = ok ? reaction.ok : reaction.fail;\n      var resolve = reaction.resolve;\n      var reject = reaction.reject;\n      var domain = reaction.domain;\n      var result, then, exited;\n      try {\n        if (handler) {\n          if (!ok) {\n            if (promise._h == 2) onHandleUnhandled(promise);\n            promise._h = 1;\n          }\n          if (handler === true) result = value;\n          else {\n            if (domain) domain.enter();\n            result = handler(value); // may throw\n            if (domain) {\n              domain.exit();\n              exited = true;\n            }\n          }\n          if (result === reaction.promise) {\n            reject(TypeError('Promise-chain cycle'));\n          } else if (then = isThenable(result)) {\n            then.call(result, resolve, reject);\n          } else resolve(result);\n        } else reject(value);\n      } catch (e) {\n        if (domain && !exited) domain.exit();\n        reject(e);\n      }\n    };\n    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n    promise._c = [];\n    promise._n = false;\n    if (isReject && !promise._h) onUnhandled(promise);\n  });\n};\nvar onUnhandled = function (promise) {\n  task.call(global, function () {\n    var value = promise._v;\n    var unhandled = isUnhandled(promise);\n    var result, handler, console;\n    if (unhandled) {\n      result = perform(function () {\n        if (isNode) {\n          process.emit('unhandledRejection', value, promise);\n        } else if (handler = global.onunhandledrejection) {\n          handler({ promise: promise, reason: value });\n        } else if ((console = global.console) && console.error) {\n          console.error('Unhandled promise rejection', value);\n        }\n      });\n      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n      promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n    } promise._a = undefined;\n    if (unhandled && result.e) throw result.v;\n  });\n};\nvar isUnhandled = function (promise) {\n  return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n  task.call(global, function () {\n    var handler;\n    if (isNode) {\n      process.emit('rejectionHandled', promise);\n    } else if (handler = global.onrejectionhandled) {\n      handler({ promise: promise, reason: promise._v });\n    }\n  });\n};\nvar $reject = function (value) {\n  var promise = this;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  promise._v = value;\n  promise._s = 2;\n  if (!promise._a) promise._a = promise._c.slice();\n  notify(promise, true);\n};\nvar $resolve = function (value) {\n  var promise = this;\n  var then;\n  if (promise._d) return;\n  promise._d = true;\n  promise = promise._w || promise; // unwrap\n  try {\n    if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n    if (then = isThenable(value)) {\n      microtask(function () {\n        var wrapper = { _w: promise, _d: false }; // wrap\n        try {\n          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n        } catch (e) {\n          $reject.call(wrapper, e);\n        }\n      });\n    } else {\n      promise._v = value;\n      promise._s = 1;\n      notify(promise, false);\n    }\n  } catch (e) {\n    $reject.call({ _w: promise, _d: false }, e); // wrap\n  }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n  // 25.4.3.1 Promise(executor)\n  $Promise = function Promise(executor) {\n    anInstance(this, $Promise, PROMISE, '_h');\n    aFunction(executor);\n    Internal.call(this);\n    try {\n      executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n    } catch (err) {\n      $reject.call(this, err);\n    }\n  };\n  // eslint-disable-next-line no-unused-vars\n  Internal = function Promise(executor) {\n    this._c = [];             // <- awaiting reactions\n    this._a = undefined;      // <- checked in isUnhandled reactions\n    this._s = 0;              // <- state\n    this._d = false;          // <- done\n    this._v = undefined;      // <- value\n    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n    this._n = false;          // <- notify\n  };\n  Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n    then: function then(onFulfilled, onRejected) {\n      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n      reaction.fail = typeof onRejected == 'function' && onRejected;\n      reaction.domain = isNode ? process.domain : undefined;\n      this._c.push(reaction);\n      if (this._a) this._a.push(reaction);\n      if (this._s) notify(this, false);\n      return reaction.promise;\n    },\n    // 25.4.5.1 Promise.prototype.catch(onRejected)\n    'catch': function (onRejected) {\n      return this.then(undefined, onRejected);\n    }\n  });\n  OwnPromiseCapability = function () {\n    var promise = new Internal();\n    this.promise = promise;\n    this.resolve = ctx($resolve, promise, 1);\n    this.reject = ctx($reject, promise, 1);\n  };\n  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n    return C === $Promise || C === Wrapper\n      ? new OwnPromiseCapability(C)\n      : newGenericPromiseCapability(C);\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n  // 25.4.4.5 Promise.reject(r)\n  reject: function reject(r) {\n    var capability = newPromiseCapability(this);\n    var $$reject = capability.reject;\n    $$reject(r);\n    return capability.promise;\n  }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n  // 25.4.4.6 Promise.resolve(x)\n  resolve: function resolve(x) {\n    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n  }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n  $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n  // 25.4.4.1 Promise.all(iterable)\n  all: function all(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var resolve = capability.resolve;\n    var reject = capability.reject;\n    var result = perform(function () {\n      var values = [];\n      var index = 0;\n      var remaining = 1;\n      forOf(iterable, false, function (promise) {\n        var $index = index++;\n        var alreadyCalled = false;\n        values.push(undefined);\n        remaining++;\n        C.resolve(promise).then(function (value) {\n          if (alreadyCalled) return;\n          alreadyCalled = true;\n          values[$index] = value;\n          --remaining || resolve(values);\n        }, reject);\n      });\n      --remaining || resolve(values);\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  },\n  // 25.4.4.4 Promise.race(iterable)\n  race: function race(iterable) {\n    var C = this;\n    var capability = newPromiseCapability(C);\n    var reject = capability.reject;\n    var result = perform(function () {\n      forOf(iterable, false, function (promise) {\n        C.resolve(promise).then(capability.resolve, reject);\n      });\n    });\n    if (result.e) reject(result.v);\n    return capability.promise;\n  }\n});\n","module.exports = function (it, Constructor, name, forbiddenField) {\n  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n    throw TypeError(name + ': incorrect invocation!');\n  } return it;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n  var f = ctx(fn, that, entries ? 2 : 1);\n  var index = 0;\n  var length, step, iterator, result;\n  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n  // fast case for arrays with default iterator\n  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n    if (result === BREAK || result === RETURN) return result;\n  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n    result = call(iterator, f, step.value, entries);\n    if (result === BREAK || result === RETURN) return result;\n  }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n  var C = anObject(O).constructor;\n  var S;\n  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n  var id = +this;\n  // eslint-disable-next-line no-prototype-builtins\n  if (queue.hasOwnProperty(id)) {\n    var fn = queue[id];\n    delete queue[id];\n    fn();\n  }\n};\nvar listener = function (event) {\n  run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n  setTask = function setImmediate(fn) {\n    var args = [];\n    var i = 1;\n    while (arguments.length > i) args.push(arguments[i++]);\n    queue[++counter] = function () {\n      // eslint-disable-next-line no-new-func\n      invoke(typeof fn == 'function' ? fn : Function(fn), args);\n    };\n    defer(counter);\n    return counter;\n  };\n  clearTask = function clearImmediate(id) {\n    delete queue[id];\n  };\n  // Node.js 0.8-\n  if (require('./_cof')(process) == 'process') {\n    defer = function (id) {\n      process.nextTick(ctx(run, id, 1));\n    };\n  // Sphere (JS game engine) Dispatch API\n  } else if (Dispatch && Dispatch.now) {\n    defer = function (id) {\n      Dispatch.now(ctx(run, id, 1));\n    };\n  // Browsers with MessageChannel, includes WebWorkers\n  } else if (MessageChannel) {\n    channel = new MessageChannel();\n    port = channel.port2;\n    channel.port1.onmessage = listener;\n    defer = ctx(port.postMessage, port, 1);\n  // Browsers with postMessage, skip WebWorkers\n  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n    defer = function (id) {\n      global.postMessage(id + '', '*');\n    };\n    global.addEventListener('message', listener, false);\n  // IE8-\n  } else if (ONREADYSTATECHANGE in cel('script')) {\n    defer = function (id) {\n      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n        html.removeChild(this);\n        run.call(id);\n      };\n    };\n  // Rest old browsers\n  } else {\n    defer = function (id) {\n      setTimeout(ctx(run, id, 1), 0);\n    };\n  }\n}\nmodule.exports = {\n  set: setTask,\n  clear: clearTask\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n  var un = that === undefined;\n  switch (args.length) {\n    case 0: return un ? fn()\n                      : fn.call(that);\n    case 1: return un ? fn(args[0])\n                      : fn.call(that, args[0]);\n    case 2: return un ? fn(args[0], args[1])\n                      : fn.call(that, args[0], args[1]);\n    case 3: return un ? fn(args[0], args[1], args[2])\n                      : fn.call(that, args[0], args[1], args[2]);\n    case 4: return un ? fn(args[0], args[1], args[2], args[3])\n                      : fn.call(that, args[0], args[1], args[2], args[3]);\n  } return fn.apply(that, args);\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n  var head, last, notify;\n\n  var flush = function () {\n    var parent, fn;\n    if (isNode && (parent = process.domain)) parent.exit();\n    while (head) {\n      fn = head.fn;\n      head = head.next;\n      try {\n        fn();\n      } catch (e) {\n        if (head) notify();\n        else last = undefined;\n        throw e;\n      }\n    } last = undefined;\n    if (parent) parent.enter();\n  };\n\n  // Node.js\n  if (isNode) {\n    notify = function () {\n      process.nextTick(flush);\n    };\n  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n  } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n    var toggle = true;\n    var node = document.createTextNode('');\n    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n    notify = function () {\n      node.data = toggle = !toggle;\n    };\n  // environments with maybe non-completely correct, but existent Promise\n  } else if (Promise && Promise.resolve) {\n    // Promise.resolve without an argument throws an error in LG WebOS 2\n    var promise = Promise.resolve(undefined);\n    notify = function () {\n      promise.then(flush);\n    };\n  // for other environments - macrotask based on:\n  // - setImmediate\n  // - MessageChannel\n  // - window.postMessag\n  // - onreadystatechange\n  // - setTimeout\n  } else {\n    notify = function () {\n      // strange IE + webpack dev server bug - use .call(global)\n      macrotask.call(global, flush);\n    };\n  }\n\n  return function (fn) {\n    var task = { fn: fn, next: undefined };\n    if (last) last.next = task;\n    if (!head) {\n      head = task;\n      notify();\n    } last = task;\n  };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n  var resolve, reject;\n  this.promise = new C(function ($$resolve, $$reject) {\n    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n    resolve = $$resolve;\n    reject = $$reject;\n  });\n  this.resolve = aFunction(resolve);\n  this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n  return new PromiseCapability(C);\n};\n","module.exports = function (exec) {\n  try {\n    return { e: false, v: exec() };\n  } catch (e) {\n    return { e: true, v: e };\n  }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n  anObject(C);\n  if (isObject(x) && x.constructor === C) return x;\n  var promiseCapability = newPromiseCapability.f(C);\n  var resolve = promiseCapability.resolve;\n  resolve(x);\n  return promiseCapability.promise;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n  for (var key in src) redefine(target, key, src[key], safe);\n  return target;\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n  var C = global[KEY];\n  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n    configurable: true,\n    get: function () { return this; }\n  });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n  var C = speciesConstructor(this, core.Promise || global.Promise);\n  var isFunction = typeof onFinally == 'function';\n  return this.then(\n    isFunction ? function (x) {\n      return promiseResolve(C, onFinally()).then(function () { return x; });\n    } : onFinally,\n    isFunction ? function (e) {\n      return promiseResolve(C, onFinally()).then(function () { throw e; });\n    } : onFinally\n  );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n  var promiseCapability = newPromiseCapability.f(this);\n  var result = perform(callbackfn);\n  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n  return promiseCapability.promise;\n} });\n","require('../modules/es6.object.to-string');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es7.weak-map.of');\nrequire('../modules/es7.weak-map.from');\nmodule.exports = require('../modules/_core').WeakMap;\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n  return function WeakMap() {\n    return get(this, arguments.length > 0 ? arguments[0] : undefined);\n  };\n};\n\nvar methods = {\n  // 23.3.3.3 WeakMap.prototype.get(key)\n  get: function get(key) {\n    if (isObject(key)) {\n      var data = getWeak(key);\n      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n      return data ? data[this._i] : undefined;\n    }\n  },\n  // 23.3.3.5 WeakMap.prototype.set(key, value)\n  set: function set(key, value) {\n    return weak.def(validate(this, WEAK_MAP), key, value);\n  }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n  assign(InternalMap.prototype, methods);\n  meta.NEED = true;\n  each(['delete', 'has', 'get', 'set'], function (key) {\n    var proto = $WeakMap.prototype;\n    var method = proto[key];\n    redefine(proto, key, function (a, b) {\n      // store frozen objects on internal weakmap shim\n      if (isObject(a) && !isExtensible(a)) {\n        if (!this._f) this._f = new InternalMap();\n        var result = this._f[key](a, b);\n        return key == 'set' ? this : result;\n      // store all the rest on native weakmap\n      } return method.call(this, a, b);\n    });\n  });\n}\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n  return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n  this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n  return arrayFind(store.a, function (it) {\n    return it[0] === key;\n  });\n};\nUncaughtFrozenStore.prototype = {\n  get: function (key) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) return entry[1];\n  },\n  has: function (key) {\n    return !!findUncaughtFrozen(this, key);\n  },\n  set: function (key, value) {\n    var entry = findUncaughtFrozen(this, key);\n    if (entry) entry[1] = value;\n    else this.a.push([key, value]);\n  },\n  'delete': function (key) {\n    var index = arrayFindIndex(this.a, function (it) {\n      return it[0] === key;\n    });\n    if (~index) this.a.splice(index, 1);\n    return !!~index;\n  }\n};\n\nmodule.exports = {\n  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n    var C = wrapper(function (that, iterable) {\n      anInstance(that, C, NAME, '_i');\n      that._t = NAME;      // collection type\n      that._i = id++;      // collection id\n      that._l = undefined; // leak store for uncaught frozen objects\n      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n    });\n    redefineAll(C.prototype, {\n      // 23.3.3.2 WeakMap.prototype.delete(key)\n      // 23.4.3.3 WeakSet.prototype.delete(value)\n      'delete': function (key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n        return data && $has(data, this._i) && delete data[this._i];\n      },\n      // 23.3.3.4 WeakMap.prototype.has(key)\n      // 23.4.3.4 WeakSet.prototype.has(value)\n      has: function has(key) {\n        if (!isObject(key)) return false;\n        var data = getWeak(key);\n        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n        return data && $has(data, this._i);\n      }\n    });\n    return C;\n  },\n  def: function (that, key, value) {\n    var data = getWeak(anObject(key), true);\n    if (data === true) uncaughtFrozenStore(that).set(key, value);\n    else data[that._i] = value;\n    return that;\n  },\n  ufstore: uncaughtFrozenStore\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n  return it;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n  var Base = global[NAME];\n  var C = Base;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var proto = C && C.prototype;\n  var O = {};\n  var fixMethod = function (KEY) {\n    var fn = proto[KEY];\n    redefine(proto, KEY,\n      KEY == 'delete' ? function (a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'has' ? function has(a) {\n        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'get' ? function get(a) {\n        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n    );\n  };\n  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n    new C().entries().next();\n  }))) {\n    // create collection constructor\n    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n    redefineAll(C.prototype, methods);\n    meta.NEED = true;\n  } else {\n    var instance = new C();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new C();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n    if (!ACCEPT_ITERABLES) {\n      C = wrapper(function (target, iterable) {\n        anInstance(target, C, NAME);\n        var that = inheritIfRequired(new Base(), target, C);\n        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n        return that;\n      });\n      C.prototype = proto;\n      proto.constructor = C;\n    }\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n    // weak collections should not contains .clear method\n    if (IS_WEAK && proto.clear) delete proto.clear;\n  }\n\n  setToStringTag(C, NAME);\n\n  O[NAME] = C;\n  $export($export.G + $export.W + $export.F * (C != Base), O);\n\n  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n  return C;\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { of: function of() {\n    var length = arguments.length;\n    var A = new Array(length);\n    while (length--) A[length] = arguments[length];\n    return new this(A);\n  } });\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n    var mapFn = arguments[1];\n    var mapping, A, n, cb;\n    aFunction(this);\n    mapping = mapFn !== undefined;\n    if (mapping) aFunction(mapFn);\n    if (source == undefined) return new this();\n    A = [];\n    if (mapping) {\n      n = 0;\n      cb = ctx(mapFn, arguments[2], 2);\n      forOf(source, false, function (nextItem) {\n        A.push(cb(nextItem, n++));\n      });\n    } else {\n      forOf(source, false, A.push, A);\n    }\n    return new this(A);\n  } });\n};\n","require('../../modules/es6.string.code-point-at');\nmodule.exports = require('../../modules/_core').String.codePointAt;\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n  // 21.1.3.3 String.prototype.codePointAt(pos)\n  codePointAt: function codePointAt(pos) {\n    return $at(this, pos);\n  }\n});\n","require('../../modules/es6.string.from-code-point');\nmodule.exports = require('../../modules/_core').String.fromCodePoint;\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n  // 21.1.2.2 String.fromCodePoint(...codePoints)\n  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n    var res = [];\n    var aLen = arguments.length;\n    var i = 0;\n    var code;\n    while (aLen > i) {\n      code = +arguments[i++];\n      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n      res.push(code < 0x10000\n        ? fromCharCode(code)\n        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n      );\n    } return res.join('');\n  }\n});\n","require('../modules/es6.symbol');\nrequire('../modules/es6.object.to-string');\nmodule.exports = require('../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n  require('./_object-pie').f = $propertyIsEnumerable;\n  require('./_object-gops').f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !require('./_library')) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n  values: function values(it) {\n    return $values(it);\n  }\n});\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n  return function (it) {\n    var O = toIObject(it);\n    var keys = getKeys(O);\n    var length = keys.length;\n    var i = 0;\n    var result = [];\n    var key;\n    while (length > i) if (isEnum.call(O, key = keys[i++])) {\n      result.push(isEntries ? [key, O[key]] : O[key]);\n    } return result;\n  };\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-globals */\n\nlet isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n  // MS Edge may say it has ReadableStream but they are not up to spec yet.\n  try {\n    // eslint-disable-next-line no-new\n    new ReadableStream({\n      start(controller) {\n        controller.close();\n      },\n    });\n    isReadableStreamSupported = true;\n  } catch (e) {\n    // The ReadableStream constructor cannot be used.\n  }\n}\nif (isReadableStreamSupported) {\n  exports.ReadableStream = ReadableStream;\n} else {\n  if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n    class DummyReadableStream {\n      constructor() {\n        throw new Error('The current image decoders are synchronous, ' +\n                        'hence `ReadableStream` shouldn\\'t need to be ' +\n                        'polyfilled for the IMAGE_DECODERS build target.');\n      }\n    }\n    exports.ReadableStream = DummyReadableStream;\n  } else {\n    exports.ReadableStream =\n      require('../../external/streams/streams-lib').ReadableStream;\n  }\n}\n","/*\n * To the extent possible under law, the authors have dedicated all copyright\n * and related and neighboring rights to this software to the public\n * domain worldwide. This software is distributed without any warranty.\n *\n * You should have received a copy of the CC0 Public Domain Dedication along\n * with this software. If not, see https://creativecommons.org/publicdomain/zero/1.0/.\n */\n\n(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap\n/******/  // The module cache\n/******/  var installedModules = {};\n/******/\n/******/  // The require function\n/******/  function __w_pdfjs_require__(moduleId) {\n/******/\n/******/    // Check if module is in cache\n/******/    if(installedModules[moduleId])\n/******/      return installedModules[moduleId].exports;\n/******/\n/******/    // Create a new module (and put it into the cache)\n/******/    var module = installedModules[moduleId] = {\n/******/      i: moduleId,\n/******/      l: false,\n/******/      exports: {}\n/******/    };\n/******/\n/******/    // Execute the module function\n/******/    modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/    // Flag the module as loaded\n/******/    module.l = true;\n/******/\n/******/    // Return the exports of the module\n/******/    return module.exports;\n/******/  }\n/******/\n/******/\n/******/  // expose the modules object (__webpack_modules__)\n/******/  __w_pdfjs_require__.m = modules;\n/******/\n/******/  // expose the module cache\n/******/  __w_pdfjs_require__.c = installedModules;\n/******/\n/******/  // identity function for calling harmony imports with the correct context\n/******/  __w_pdfjs_require__.i = function(value) { return value; };\n/******/\n/******/  // define getter function for harmony exports\n/******/  __w_pdfjs_require__.d = function(exports, name, getter) {\n/******/    if(!__w_pdfjs_require__.o(exports, name)) {\n/******/      Object.defineProperty(exports, name, {\n/******/        configurable: false,\n/******/        enumerable: true,\n/******/        get: getter\n/******/      });\n/******/    }\n/******/  };\n/******/\n/******/  // getDefaultExport function for compatibility with non-harmony modules\n/******/  __w_pdfjs_require__.n = function(module) {\n/******/    var getter = module && module.__esModule ?\n/******/      function getDefault() { return module['default']; } :\n/******/      function getModuleExports() { return module; };\n/******/    __w_pdfjs_require__.d(getter, 'a', getter);\n/******/    return getter;\n/******/  };\n/******/\n/******/  // Object.prototype.hasOwnProperty.call\n/******/  __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/  // __webpack_public_path__\n/******/  __w_pdfjs_require__.p = \"\";\n/******/\n/******/  // Load entry module and return exports\n/******/  return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = __w_pdfjs_require__(1),\n    assert = _require.assert;\n\nfunction IsPropertyKey(argument) {\n  return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n}\n\nexports.typeIsObject = function (x) {\n  return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n};\n\nexports.createDataProperty = function (o, p, v) {\n  assert(exports.typeIsObject(o));\n  Object.defineProperty(o, p, { value: v, writable: true, enumerable: true, configurable: true });\n};\n\nexports.createArrayFromList = function (elements) {\n  // We use arrays to represent lists, so this is basically a no-op.\n  // Do a slice though just in case we happen to depend on the unique-ness.\n  return elements.slice();\n};\n\nexports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n  new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n};\n\nexports.CreateIterResultObject = function (value, done) {\n  assert(typeof done === 'boolean');\n  var obj = {};\n  Object.defineProperty(obj, 'value', { value: value, enumerable: true, writable: true, configurable: true });\n  Object.defineProperty(obj, 'done', { value: done, enumerable: true, writable: true, configurable: true });\n  return obj;\n};\n\nexports.IsFiniteNonNegativeNumber = function (v) {\n  if (Number.isNaN(v)) {\n    return false;\n  }\n  if (v === Infinity) {\n    return false;\n  }\n  if (v < 0) {\n    return false;\n  }\n\n  return true;\n};\n\nfunction Call(F, V, args) {\n  if (typeof F !== 'function') {\n    throw new TypeError('Argument is not a function');\n  }\n\n  return Function.prototype.apply.call(F, V, args);\n}\n\nexports.InvokeOrNoop = function (O, P, args) {\n  assert(O !== undefined);\n  assert(IsPropertyKey(P));\n  assert(Array.isArray(args));\n\n  var method = O[P];\n  if (method === undefined) {\n    return undefined;\n  }\n\n  return Call(method, O, args);\n};\n\nexports.PromiseInvokeOrNoop = function (O, P, args) {\n  assert(O !== undefined);\n  assert(IsPropertyKey(P));\n  assert(Array.isArray(args));\n  try {\n    return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n  } catch (returnValueE) {\n    return Promise.reject(returnValueE);\n  }\n};\n\nexports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n  assert(O !== undefined);\n  assert(IsPropertyKey(P));\n  assert(Array.isArray(args));\n  assert(Array.isArray(argsF));\n\n  var method = void 0;\n  try {\n    method = O[P];\n  } catch (methodE) {\n    return Promise.reject(methodE);\n  }\n\n  if (method === undefined) {\n    return F.apply(null, argsF);\n  }\n\n  try {\n    return Promise.resolve(Call(method, O, args));\n  } catch (e) {\n    return Promise.reject(e);\n  }\n};\n\n// Not implemented correctly\nexports.TransferArrayBuffer = function (O) {\n  return O.slice();\n};\n\nexports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n  highWaterMark = Number(highWaterMark);\n  if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n    throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n  }\n\n  return highWaterMark;\n};\n\nexports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n  if (size !== undefined && typeof size !== 'function') {\n    throw new TypeError('size property of a queuing strategy must be a function');\n  }\n\n  highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n  return { size: size, highWaterMark: highWaterMark };\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nfunction rethrowAssertionErrorRejection(e) {\n  // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n  // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n  // expect any errors, but assertion errors are always problematic.\n  if (e && e.constructor === AssertionError) {\n    setTimeout(function () {\n      throw e;\n    }, 0);\n  }\n};\n\nfunction AssertionError(message) {\n  this.name = 'AssertionError';\n  this.message = message || '';\n  this.stack = new Error().stack;\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.constructor = AssertionError;\n\nfunction assert(value, message) {\n  if (!value) {\n    throw new AssertionError(message);\n  }\n}\n\nmodule.exports = {\n  rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n  AssertionError: AssertionError,\n  assert: assert\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n    InvokeOrNoop = _require.InvokeOrNoop,\n    PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n    ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n    typeIsObject = _require.typeIsObject;\n\nvar _require2 = __w_pdfjs_require__(1),\n    assert = _require2.assert,\n    rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n\nvar _require3 = __w_pdfjs_require__(3),\n    DequeueValue = _require3.DequeueValue,\n    EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n    PeekQueueValue = _require3.PeekQueueValue,\n    ResetQueue = _require3.ResetQueue;\n\nvar WritableStream = function () {\n  function WritableStream() {\n    var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        size = _ref.size,\n        _ref$highWaterMark = _ref.highWaterMark,\n        highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n\n    _classCallCheck(this, WritableStream);\n\n    this._state = 'writable';\n\n    // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n    // 'erroring' or 'errored'. May be set to an undefined value.\n    this._storedError = undefined;\n\n    this._writer = undefined;\n\n    // Initialize to undefined first because the constructor of the controller checks this\n    // variable to validate the caller.\n    this._writableStreamController = undefined;\n\n    // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n    // producer without waiting for the queued writes to finish.\n    this._writeRequests = [];\n\n    // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n    // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n    this._inFlightWriteRequest = undefined;\n\n    // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n    // has been detached.\n    this._closeRequest = undefined;\n\n    // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n    // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n    this._inFlightCloseRequest = undefined;\n\n    // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n    this._pendingAbortRequest = undefined;\n\n    // The backpressure signal set by the controller.\n    this._backpressure = false;\n\n    var type = underlyingSink.type;\n\n    if (type !== undefined) {\n      throw new RangeError('Invalid type is specified');\n    }\n\n    this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n    this._writableStreamController.__startSteps();\n  }\n\n  _createClass(WritableStream, [{\n    key: 'abort',\n    value: function abort(reason) {\n      if (IsWritableStream(this) === false) {\n        return Promise.reject(streamBrandCheckException('abort'));\n      }\n\n      if (IsWritableStreamLocked(this) === true) {\n        return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n      }\n\n      return WritableStreamAbort(this, reason);\n    }\n  }, {\n    key: 'getWriter',\n    value: function getWriter() {\n      if (IsWritableStream(this) === false) {\n        throw streamBrandCheckException('getWriter');\n      }\n\n      return AcquireWritableStreamDefaultWriter(this);\n    }\n  }, {\n    key: 'locked',\n    get: function get() {\n      if (IsWritableStream(this) === false) {\n        throw streamBrandCheckException('locked');\n      }\n\n      return IsWritableStreamLocked(this);\n    }\n  }]);\n\n  return WritableStream;\n}();\n\nmodule.exports = {\n  AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n  IsWritableStream: IsWritableStream,\n  IsWritableStreamLocked: IsWritableStreamLocked,\n  WritableStream: WritableStream,\n  WritableStreamAbort: WritableStreamAbort,\n  WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n  WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n  WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n  WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n  WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter(stream) {\n  return new WritableStreamDefaultWriter(stream);\n}\n\nfunction IsWritableStream(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsWritableStreamLocked(stream) {\n  assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n\n  if (stream._writer === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamAbort(stream, reason) {\n  var state = stream._state;\n  if (state === 'closed') {\n    return Promise.resolve(undefined);\n  }\n  if (state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n  var error = new TypeError('Requested to abort');\n  if (stream._pendingAbortRequest !== undefined) {\n    return Promise.reject(error);\n  }\n\n  assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n\n  var wasAlreadyErroring = false;\n  if (state === 'erroring') {\n    wasAlreadyErroring = true;\n    // reason will not be used, so don't keep a reference to it.\n    reason = undefined;\n  }\n\n  var promise = new Promise(function (resolve, reject) {\n    stream._pendingAbortRequest = {\n      _resolve: resolve,\n      _reject: reject,\n      _reason: reason,\n      _wasAlreadyErroring: wasAlreadyErroring\n    };\n  });\n\n  if (wasAlreadyErroring === false) {\n    WritableStreamStartErroring(stream, error);\n  }\n\n  return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream) {\n  assert(IsWritableStreamLocked(stream) === true);\n  assert(stream._state === 'writable');\n\n  var promise = new Promise(function (resolve, reject) {\n    var writeRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._writeRequests.push(writeRequest);\n  });\n\n  return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream, error) {\n  var state = stream._state;\n\n  if (state === 'writable') {\n    WritableStreamStartErroring(stream, error);\n    return;\n  }\n\n  assert(state === 'erroring');\n  WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream, reason) {\n  assert(stream._storedError === undefined, 'stream._storedError === undefined');\n  assert(stream._state === 'writable', 'state must be writable');\n\n  var controller = stream._writableStreamController;\n  assert(controller !== undefined, 'controller must not be undefined');\n\n  stream._state = 'erroring';\n  stream._storedError = reason;\n  var writer = stream._writer;\n  if (writer !== undefined) {\n    WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n  }\n\n  if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n    WritableStreamFinishErroring(stream);\n  }\n}\n\nfunction WritableStreamFinishErroring(stream) {\n  assert(stream._state === 'erroring', 'stream._state === erroring');\n  assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n  stream._state = 'errored';\n  stream._writableStreamController.__errorSteps();\n\n  var storedError = stream._storedError;\n  for (var i = 0; i < stream._writeRequests.length; i++) {\n    var writeRequest = stream._writeRequests[i];\n    writeRequest._reject(storedError);\n  }\n  stream._writeRequests = [];\n\n  if (stream._pendingAbortRequest === undefined) {\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    return;\n  }\n\n  var abortRequest = stream._pendingAbortRequest;\n  stream._pendingAbortRequest = undefined;\n\n  if (abortRequest._wasAlreadyErroring === true) {\n    abortRequest._reject(storedError);\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n    return;\n  }\n\n  var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n  promise.then(function () {\n    abortRequest._resolve();\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n  }, function (reason) {\n    abortRequest._reject(reason);\n    WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n  });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream) {\n  assert(stream._inFlightWriteRequest !== undefined);\n  stream._inFlightWriteRequest._resolve(undefined);\n  stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream, error) {\n  assert(stream._inFlightWriteRequest !== undefined);\n  stream._inFlightWriteRequest._reject(error);\n  stream._inFlightWriteRequest = undefined;\n\n  assert(stream._state === 'writable' || stream._state === 'erroring');\n\n  WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream) {\n  assert(stream._inFlightCloseRequest !== undefined);\n  stream._inFlightCloseRequest._resolve(undefined);\n  stream._inFlightCloseRequest = undefined;\n\n  var state = stream._state;\n\n  assert(state === 'writable' || state === 'erroring');\n\n  if (state === 'erroring') {\n    // The error was too late to do anything, so it is ignored.\n    stream._storedError = undefined;\n    if (stream._pendingAbortRequest !== undefined) {\n      stream._pendingAbortRequest._resolve();\n      stream._pendingAbortRequest = undefined;\n    }\n  }\n\n  stream._state = 'closed';\n\n  var writer = stream._writer;\n  if (writer !== undefined) {\n    defaultWriterClosedPromiseResolve(writer);\n  }\n\n  assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n  assert(stream._storedError === undefined, 'stream._storedError === undefined');\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream, error) {\n  assert(stream._inFlightCloseRequest !== undefined);\n  stream._inFlightCloseRequest._reject(error);\n  stream._inFlightCloseRequest = undefined;\n\n  assert(stream._state === 'writable' || stream._state === 'erroring');\n\n  // Never execute sink abort() after sink close().\n  if (stream._pendingAbortRequest !== undefined) {\n    stream._pendingAbortRequest._reject(error);\n    stream._pendingAbortRequest = undefined;\n  }\n  WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream) {\n  if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream) {\n  if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream) {\n  assert(stream._inFlightCloseRequest === undefined);\n  assert(stream._closeRequest !== undefined);\n  stream._inFlightCloseRequest = stream._closeRequest;\n  stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream) {\n  assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n  assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n  stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n  assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n  if (stream._closeRequest !== undefined) {\n    assert(stream._inFlightCloseRequest === undefined);\n\n    stream._closeRequest._reject(stream._storedError);\n    stream._closeRequest = undefined;\n  }\n  var writer = stream._writer;\n  if (writer !== undefined) {\n    defaultWriterClosedPromiseReject(writer, stream._storedError);\n    writer._closedPromise.catch(function () {});\n  }\n}\n\nfunction WritableStreamUpdateBackpressure(stream, backpressure) {\n  assert(stream._state === 'writable');\n  assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n  var writer = stream._writer;\n  if (writer !== undefined && backpressure !== stream._backpressure) {\n    if (backpressure === true) {\n      defaultWriterReadyPromiseReset(writer);\n    } else {\n      assert(backpressure === false);\n\n      defaultWriterReadyPromiseResolve(writer);\n    }\n  }\n\n  stream._backpressure = backpressure;\n}\n\nvar WritableStreamDefaultWriter = function () {\n  function WritableStreamDefaultWriter(stream) {\n    _classCallCheck(this, WritableStreamDefaultWriter);\n\n    if (IsWritableStream(stream) === false) {\n      throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n    }\n    if (IsWritableStreamLocked(stream) === true) {\n      throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n    }\n\n    this._ownerWritableStream = stream;\n    stream._writer = this;\n\n    var state = stream._state;\n\n    if (state === 'writable') {\n      if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n        defaultWriterReadyPromiseInitialize(this);\n      } else {\n        defaultWriterReadyPromiseInitializeAsResolved(this);\n      }\n\n      defaultWriterClosedPromiseInitialize(this);\n    } else if (state === 'erroring') {\n      defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n      this._readyPromise.catch(function () {});\n      defaultWriterClosedPromiseInitialize(this);\n    } else if (state === 'closed') {\n      defaultWriterReadyPromiseInitializeAsResolved(this);\n      defaultWriterClosedPromiseInitializeAsResolved(this);\n    } else {\n      assert(state === 'errored', 'state must be errored');\n\n      var storedError = stream._storedError;\n      defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n      this._readyPromise.catch(function () {});\n      defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n      this._closedPromise.catch(function () {});\n    }\n  }\n\n  _createClass(WritableStreamDefaultWriter, [{\n    key: 'abort',\n    value: function abort(reason) {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('abort'));\n      }\n\n      if (this._ownerWritableStream === undefined) {\n        return Promise.reject(defaultWriterLockException('abort'));\n      }\n\n      return WritableStreamDefaultWriterAbort(this, reason);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('close'));\n      }\n\n      var stream = this._ownerWritableStream;\n\n      if (stream === undefined) {\n        return Promise.reject(defaultWriterLockException('close'));\n      }\n\n      if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n        return Promise.reject(new TypeError('cannot close an already-closing stream'));\n      }\n\n      return WritableStreamDefaultWriterClose(this);\n    }\n  }, {\n    key: 'releaseLock',\n    value: function releaseLock() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        throw defaultWriterBrandCheckException('releaseLock');\n      }\n\n      var stream = this._ownerWritableStream;\n\n      if (stream === undefined) {\n        return;\n      }\n\n      assert(stream._writer !== undefined);\n\n      WritableStreamDefaultWriterRelease(this);\n    }\n  }, {\n    key: 'write',\n    value: function write(chunk) {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('write'));\n      }\n\n      if (this._ownerWritableStream === undefined) {\n        return Promise.reject(defaultWriterLockException('write to'));\n      }\n\n      return WritableStreamDefaultWriterWrite(this, chunk);\n    }\n  }, {\n    key: 'closed',\n    get: function get() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('closed'));\n      }\n\n      return this._closedPromise;\n    }\n  }, {\n    key: 'desiredSize',\n    get: function get() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        throw defaultWriterBrandCheckException('desiredSize');\n      }\n\n      if (this._ownerWritableStream === undefined) {\n        throw defaultWriterLockException('desiredSize');\n      }\n\n      return WritableStreamDefaultWriterGetDesiredSize(this);\n    }\n  }, {\n    key: 'ready',\n    get: function get() {\n      if (IsWritableStreamDefaultWriter(this) === false) {\n        return Promise.reject(defaultWriterBrandCheckException('ready'));\n      }\n\n      return this._readyPromise;\n    }\n  }]);\n\n  return WritableStreamDefaultWriter;\n}();\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n    return false;\n  }\n\n  return true;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer, reason) {\n  var stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer) {\n  var stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  var state = stream._state;\n  if (state === 'closed' || state === 'errored') {\n    return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n  assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n  var promise = new Promise(function (resolve, reject) {\n    var closeRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._closeRequest = closeRequest;\n  });\n\n  if (stream._backpressure === true && state === 'writable') {\n    defaultWriterReadyPromiseResolve(writer);\n  }\n\n  WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n  return promise;\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n  var stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  var state = stream._state;\n  if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n    return Promise.resolve();\n  }\n\n  if (state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n\n  assert(state === 'writable' || state === 'erroring');\n\n  return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n  if (writer._closedPromiseState === 'pending') {\n    defaultWriterClosedPromiseReject(writer, error);\n  } else {\n    defaultWriterClosedPromiseResetToRejected(writer, error);\n  }\n  writer._closedPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n  if (writer._readyPromiseState === 'pending') {\n    defaultWriterReadyPromiseReject(writer, error);\n  } else {\n    defaultWriterReadyPromiseResetToRejected(writer, error);\n  }\n  writer._readyPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer) {\n  var stream = writer._ownerWritableStream;\n  var state = stream._state;\n\n  if (state === 'errored' || state === 'erroring') {\n    return null;\n  }\n\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer) {\n  var stream = writer._ownerWritableStream;\n  assert(stream !== undefined);\n  assert(stream._writer === writer);\n\n  var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n\n  WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n  // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n  // rejected until afterwards. This means that simply testing state will not work.\n  WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n  stream._writer = undefined;\n  writer._ownerWritableStream = undefined;\n}\n\nfunction WritableStreamDefaultWriterWrite(writer, chunk) {\n  var stream = writer._ownerWritableStream;\n\n  assert(stream !== undefined);\n\n  var controller = stream._writableStreamController;\n\n  var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n  if (stream !== writer._ownerWritableStream) {\n    return Promise.reject(defaultWriterLockException('write to'));\n  }\n\n  var state = stream._state;\n  if (state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n  if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n    return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n  }\n  if (state === 'erroring') {\n    return Promise.reject(stream._storedError);\n  }\n\n  assert(state === 'writable');\n\n  var promise = WritableStreamAddWriteRequest(stream);\n\n  WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n  return promise;\n}\n\nvar WritableStreamDefaultController = function () {\n  function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n    _classCallCheck(this, WritableStreamDefaultController);\n\n    if (IsWritableStream(stream) === false) {\n      throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n    }\n\n    if (stream._writableStreamController !== undefined) {\n      throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n    }\n\n    this._controlledWritableStream = stream;\n\n    this._underlyingSink = underlyingSink;\n\n    // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n    this._queue = undefined;\n    this._queueTotalSize = undefined;\n    ResetQueue(this);\n\n    this._started = false;\n\n    var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n    this._strategySize = normalizedStrategy.size;\n    this._strategyHWM = normalizedStrategy.highWaterMark;\n\n    var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n    WritableStreamUpdateBackpressure(stream, backpressure);\n  }\n\n  _createClass(WritableStreamDefaultController, [{\n    key: 'error',\n    value: function error(e) {\n      if (IsWritableStreamDefaultController(this) === false) {\n        throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n      }\n      var state = this._controlledWritableStream._state;\n      if (state !== 'writable') {\n        // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n        // just treat it as a no-op.\n        return;\n      }\n\n      WritableStreamDefaultControllerError(this, e);\n    }\n  }, {\n    key: '__abortSteps',\n    value: function __abortSteps(reason) {\n      return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n    }\n  }, {\n    key: '__errorSteps',\n    value: function __errorSteps() {\n      ResetQueue(this);\n    }\n  }, {\n    key: '__startSteps',\n    value: function __startSteps() {\n      var _this = this;\n\n      var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n      var stream = this._controlledWritableStream;\n\n      Promise.resolve(startResult).then(function () {\n        assert(stream._state === 'writable' || stream._state === 'erroring');\n        _this._started = true;\n        WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n      }, function (r) {\n        assert(stream._state === 'writable' || stream._state === 'erroring');\n        _this._started = true;\n        WritableStreamDealWithRejection(stream, r);\n      }).catch(rethrowAssertionErrorRejection);\n    }\n  }]);\n\n  return WritableStreamDefaultController;\n}();\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction WritableStreamDefaultControllerClose(controller) {\n  EnqueueValueWithSize(controller, 'close', 0);\n  WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n  var strategySize = controller._strategySize;\n\n  if (strategySize === undefined) {\n    return 1;\n  }\n\n  try {\n    return strategySize(chunk);\n  } catch (chunkSizeE) {\n    WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n    return 1;\n  }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller) {\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n  var writeRecord = { chunk: chunk };\n\n  try {\n    EnqueueValueWithSize(controller, writeRecord, chunkSize);\n  } catch (enqueueE) {\n    WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n    return;\n  }\n\n  var stream = controller._controlledWritableStream;\n  if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n    var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n    WritableStreamUpdateBackpressure(stream, backpressure);\n  }\n\n  WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction IsWritableStreamDefaultController(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n  var stream = controller._controlledWritableStream;\n\n  if (controller._started === false) {\n    return;\n  }\n\n  if (stream._inFlightWriteRequest !== undefined) {\n    return;\n  }\n\n  var state = stream._state;\n  if (state === 'closed' || state === 'errored') {\n    return;\n  }\n  if (state === 'erroring') {\n    WritableStreamFinishErroring(stream);\n    return;\n  }\n\n  if (controller._queue.length === 0) {\n    return;\n  }\n\n  var writeRecord = PeekQueueValue(controller);\n  if (writeRecord === 'close') {\n    WritableStreamDefaultControllerProcessClose(controller);\n  } else {\n    WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n  }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n  if (controller._controlledWritableStream._state === 'writable') {\n    WritableStreamDefaultControllerError(controller, error);\n  }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller) {\n  var stream = controller._controlledWritableStream;\n\n  WritableStreamMarkCloseRequestInFlight(stream);\n\n  DequeueValue(controller);\n  assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n\n  var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n  sinkClosePromise.then(function () {\n    WritableStreamFinishInFlightClose(stream);\n  }, function (reason) {\n    WritableStreamFinishInFlightCloseWithError(stream, reason);\n  }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n  var stream = controller._controlledWritableStream;\n\n  WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n  var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n  sinkWritePromise.then(function () {\n    WritableStreamFinishInFlightWrite(stream);\n\n    var state = stream._state;\n    assert(state === 'writable' || state === 'erroring');\n\n    DequeueValue(controller);\n\n    if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n      var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n      WritableStreamUpdateBackpressure(stream, backpressure);\n    }\n\n    WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n  }, function (reason) {\n    WritableStreamFinishInFlightWriteWithError(stream, reason);\n  }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller) {\n  var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n  return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller, error) {\n  var stream = controller._controlledWritableStream;\n\n  assert(stream._state === 'writable');\n\n  WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name) {\n  return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n}\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name) {\n  return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n}\n\nfunction defaultWriterLockException(name) {\n  return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer) {\n  writer._closedPromise = new Promise(function (resolve, reject) {\n    writer._closedPromise_resolve = resolve;\n    writer._closedPromise_reject = reject;\n    writer._closedPromiseState = 'pending';\n  });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n  writer._closedPromise = Promise.reject(reason);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer) {\n  writer._closedPromise = Promise.resolve(undefined);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterClosedPromiseReject(writer, reason) {\n  assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n  assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n  assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n  writer._closedPromise_reject(reason);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer, reason) {\n  assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n  assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n  assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n\n  writer._closedPromise = Promise.reject(reason);\n  writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResolve(writer) {\n  assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n  assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n  assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n  writer._closedPromise_resolve(undefined);\n  writer._closedPromise_resolve = undefined;\n  writer._closedPromise_reject = undefined;\n  writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer) {\n  writer._readyPromise = new Promise(function (resolve, reject) {\n    writer._readyPromise_resolve = resolve;\n    writer._readyPromise_reject = reject;\n  });\n  writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n  writer._readyPromise = Promise.reject(reason);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer) {\n  writer._readyPromise = Promise.resolve(undefined);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'fulfilled';\n}\n\nfunction defaultWriterReadyPromiseReject(writer, reason) {\n  assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n  assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n  writer._readyPromise_reject(reason);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer) {\n  assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n  assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n  writer._readyPromise = new Promise(function (resolve, reject) {\n    writer._readyPromise_resolve = resolve;\n    writer._readyPromise_reject = reject;\n  });\n  writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer, reason) {\n  assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n  assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n  writer._readyPromise = Promise.reject(reason);\n  writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseResolve(writer) {\n  assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n  assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n  writer._readyPromise_resolve(undefined);\n  writer._readyPromise_resolve = undefined;\n  writer._readyPromise_reject = undefined;\n  writer._readyPromiseState = 'fulfilled';\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _require = __w_pdfjs_require__(0),\n    IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n\nvar _require2 = __w_pdfjs_require__(1),\n    assert = _require2.assert;\n\nexports.DequeueValue = function (container) {\n  assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n  assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n\n  var pair = container._queue.shift();\n  container._queueTotalSize -= pair.size;\n  if (container._queueTotalSize < 0) {\n    container._queueTotalSize = 0;\n  }\n\n  return pair.value;\n};\n\nexports.EnqueueValueWithSize = function (container, value, size) {\n  assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n\n  size = Number(size);\n  if (!IsFiniteNonNegativeNumber(size)) {\n    throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n  }\n\n  container._queue.push({ value: value, size: size });\n  container._queueTotalSize += size;\n};\n\nexports.PeekQueueValue = function (container) {\n  assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n  assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n\n  var pair = container._queue[0];\n  return pair.value;\n};\n\nexports.ResetQueue = function (container) {\n  assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n\n  container._queue = [];\n  container._queueTotalSize = 0;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n    ArrayBufferCopy = _require.ArrayBufferCopy,\n    CreateIterResultObject = _require.CreateIterResultObject,\n    IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n    InvokeOrNoop = _require.InvokeOrNoop,\n    PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n    TransferArrayBuffer = _require.TransferArrayBuffer,\n    ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n    ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n\nvar _require2 = __w_pdfjs_require__(0),\n    createArrayFromList = _require2.createArrayFromList,\n    createDataProperty = _require2.createDataProperty,\n    typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(1),\n    assert = _require3.assert,\n    rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n\nvar _require4 = __w_pdfjs_require__(3),\n    DequeueValue = _require4.DequeueValue,\n    EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n    ResetQueue = _require4.ResetQueue;\n\nvar _require5 = __w_pdfjs_require__(2),\n    AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n    IsWritableStream = _require5.IsWritableStream,\n    IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n    WritableStreamAbort = _require5.WritableStreamAbort,\n    WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n    WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n    WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n    WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n\nvar ReadableStream = function () {\n  function ReadableStream() {\n    var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        size = _ref.size,\n        highWaterMark = _ref.highWaterMark;\n\n    _classCallCheck(this, ReadableStream);\n\n    // Exposed to controllers.\n    this._state = 'readable';\n\n    this._reader = undefined;\n    this._storedError = undefined;\n\n    this._disturbed = false;\n\n    // Initialize to undefined first because the constructor of the controller checks this\n    // variable to validate the caller.\n    this._readableStreamController = undefined;\n    var type = underlyingSource.type;\n    var typeString = String(type);\n    if (typeString === 'bytes') {\n      if (highWaterMark === undefined) {\n        highWaterMark = 0;\n      }\n      this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n    } else if (type === undefined) {\n      if (highWaterMark === undefined) {\n        highWaterMark = 1;\n      }\n      this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n    } else {\n      throw new RangeError('Invalid type is specified');\n    }\n  }\n\n  _createClass(ReadableStream, [{\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (IsReadableStream(this) === false) {\n        return Promise.reject(streamBrandCheckException('cancel'));\n      }\n\n      if (IsReadableStreamLocked(this) === true) {\n        return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n      }\n\n      return ReadableStreamCancel(this, reason);\n    }\n  }, {\n    key: 'getReader',\n    value: function getReader() {\n      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n          mode = _ref2.mode;\n\n      if (IsReadableStream(this) === false) {\n        throw streamBrandCheckException('getReader');\n      }\n\n      if (mode === undefined) {\n        return AcquireReadableStreamDefaultReader(this);\n      }\n\n      mode = String(mode);\n\n      if (mode === 'byob') {\n        return AcquireReadableStreamBYOBReader(this);\n      }\n\n      throw new RangeError('Invalid mode is specified');\n    }\n  }, {\n    key: 'pipeThrough',\n    value: function pipeThrough(_ref3, options) {\n      var writable = _ref3.writable,\n          readable = _ref3.readable;\n\n      var promise = this.pipeTo(writable, options);\n\n      ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n\n      return readable;\n    }\n  }, {\n    key: 'pipeTo',\n    value: function pipeTo(dest) {\n      var _this = this;\n\n      var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          preventClose = _ref4.preventClose,\n          preventAbort = _ref4.preventAbort,\n          preventCancel = _ref4.preventCancel;\n\n      if (IsReadableStream(this) === false) {\n        return Promise.reject(streamBrandCheckException('pipeTo'));\n      }\n      if (IsWritableStream(dest) === false) {\n        return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n      }\n\n      preventClose = Boolean(preventClose);\n      preventAbort = Boolean(preventAbort);\n      preventCancel = Boolean(preventCancel);\n\n      if (IsReadableStreamLocked(this) === true) {\n        return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n      }\n      if (IsWritableStreamLocked(dest) === true) {\n        return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n      }\n\n      var reader = AcquireReadableStreamDefaultReader(this);\n      var writer = AcquireWritableStreamDefaultWriter(dest);\n\n      var shuttingDown = false;\n\n      // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n      var currentWrite = Promise.resolve();\n\n      return new Promise(function (resolve, reject) {\n        // Using reader and writer, read all chunks from this and write them to dest\n        // - Backpressure must be enforced\n        // - Shutdown must stop all activity\n        function pipeLoop() {\n          currentWrite = Promise.resolve();\n\n          if (shuttingDown === true) {\n            return Promise.resolve();\n          }\n\n          return writer._readyPromise.then(function () {\n            return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n              var value = _ref5.value,\n                  done = _ref5.done;\n\n              if (done === true) {\n                return;\n              }\n\n              currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n            });\n          }).then(pipeLoop);\n        }\n\n        // Errors must be propagated forward\n        isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n          if (preventAbort === false) {\n            shutdownWithAction(function () {\n              return WritableStreamAbort(dest, storedError);\n            }, true, storedError);\n          } else {\n            shutdown(true, storedError);\n          }\n        });\n\n        // Errors must be propagated backward\n        isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n          if (preventCancel === false) {\n            shutdownWithAction(function () {\n              return ReadableStreamCancel(_this, storedError);\n            }, true, storedError);\n          } else {\n            shutdown(true, storedError);\n          }\n        });\n\n        // Closing must be propagated forward\n        isOrBecomesClosed(_this, reader._closedPromise, function () {\n          if (preventClose === false) {\n            shutdownWithAction(function () {\n              return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n            });\n          } else {\n            shutdown();\n          }\n        });\n\n        // Closing must be propagated backward\n        if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n          var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n          if (preventCancel === false) {\n            shutdownWithAction(function () {\n              return ReadableStreamCancel(_this, destClosed);\n            }, true, destClosed);\n          } else {\n            shutdown(true, destClosed);\n          }\n        }\n\n        pipeLoop().catch(function (err) {\n          currentWrite = Promise.resolve();\n          rethrowAssertionErrorRejection(err);\n        });\n\n        function waitForWritesToFinish() {\n          // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n          // for that too.\n          var oldCurrentWrite = currentWrite;\n          return currentWrite.then(function () {\n            return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n          });\n        }\n\n        function isOrBecomesErrored(stream, promise, action) {\n          if (stream._state === 'errored') {\n            action(stream._storedError);\n          } else {\n            promise.catch(action).catch(rethrowAssertionErrorRejection);\n          }\n        }\n\n        function isOrBecomesClosed(stream, promise, action) {\n          if (stream._state === 'closed') {\n            action();\n          } else {\n            promise.then(action).catch(rethrowAssertionErrorRejection);\n          }\n        }\n\n        function shutdownWithAction(action, originalIsError, originalError) {\n          if (shuttingDown === true) {\n            return;\n          }\n          shuttingDown = true;\n\n          if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n            waitForWritesToFinish().then(doTheRest);\n          } else {\n            doTheRest();\n          }\n\n          function doTheRest() {\n            action().then(function () {\n              return finalize(originalIsError, originalError);\n            }, function (newError) {\n              return finalize(true, newError);\n            }).catch(rethrowAssertionErrorRejection);\n          }\n        }\n\n        function shutdown(isError, error) {\n          if (shuttingDown === true) {\n            return;\n          }\n          shuttingDown = true;\n\n          if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n            waitForWritesToFinish().then(function () {\n              return finalize(isError, error);\n            }).catch(rethrowAssertionErrorRejection);\n          } else {\n            finalize(isError, error);\n          }\n        }\n\n        function finalize(isError, error) {\n          WritableStreamDefaultWriterRelease(writer);\n          ReadableStreamReaderGenericRelease(reader);\n\n          if (isError) {\n            reject(error);\n          } else {\n            resolve(undefined);\n          }\n        }\n      });\n    }\n  }, {\n    key: 'tee',\n    value: function tee() {\n      if (IsReadableStream(this) === false) {\n        throw streamBrandCheckException('tee');\n      }\n\n      var branches = ReadableStreamTee(this, false);\n      return createArrayFromList(branches);\n    }\n  }, {\n    key: 'locked',\n    get: function get() {\n      if (IsReadableStream(this) === false) {\n        throw streamBrandCheckException('locked');\n      }\n\n      return IsReadableStreamLocked(this);\n    }\n  }]);\n\n  return ReadableStream;\n}();\n\nmodule.exports = {\n  ReadableStream: ReadableStream,\n  IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n  ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n  ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n  ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n  ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n};\n\n// Abstract operations for the ReadableStream.\n\nfunction AcquireReadableStreamBYOBReader(stream) {\n  return new ReadableStreamBYOBReader(stream);\n}\n\nfunction AcquireReadableStreamDefaultReader(stream) {\n  return new ReadableStreamDefaultReader(stream);\n}\n\nfunction IsReadableStream(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsReadableStreamDisturbed(stream) {\n  assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n\n  return stream._disturbed;\n}\n\nfunction IsReadableStreamLocked(stream) {\n  assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n\n  if (stream._reader === undefined) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableStreamTee(stream, cloneForBranch2) {\n  assert(IsReadableStream(stream) === true);\n  assert(typeof cloneForBranch2 === 'boolean');\n\n  var reader = AcquireReadableStreamDefaultReader(stream);\n\n  var teeState = {\n    closedOrErrored: false,\n    canceled1: false,\n    canceled2: false,\n    reason1: undefined,\n    reason2: undefined\n  };\n  teeState.promise = new Promise(function (resolve) {\n    teeState._resolve = resolve;\n  });\n\n  var pull = create_ReadableStreamTeePullFunction();\n  pull._reader = reader;\n  pull._teeState = teeState;\n  pull._cloneForBranch2 = cloneForBranch2;\n\n  var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n  cancel1._stream = stream;\n  cancel1._teeState = teeState;\n\n  var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n  cancel2._stream = stream;\n  cancel2._teeState = teeState;\n\n  var underlyingSource1 = Object.create(Object.prototype);\n  createDataProperty(underlyingSource1, 'pull', pull);\n  createDataProperty(underlyingSource1, 'cancel', cancel1);\n  var branch1Stream = new ReadableStream(underlyingSource1);\n\n  var underlyingSource2 = Object.create(Object.prototype);\n  createDataProperty(underlyingSource2, 'pull', pull);\n  createDataProperty(underlyingSource2, 'cancel', cancel2);\n  var branch2Stream = new ReadableStream(underlyingSource2);\n\n  pull._branch1 = branch1Stream._readableStreamController;\n  pull._branch2 = branch2Stream._readableStreamController;\n\n  reader._closedPromise.catch(function (r) {\n    if (teeState.closedOrErrored === true) {\n      return;\n    }\n\n    ReadableStreamDefaultControllerError(pull._branch1, r);\n    ReadableStreamDefaultControllerError(pull._branch2, r);\n    teeState.closedOrErrored = true;\n  });\n\n  return [branch1Stream, branch2Stream];\n}\n\nfunction create_ReadableStreamTeePullFunction() {\n  function f() {\n    var reader = f._reader,\n        branch1 = f._branch1,\n        branch2 = f._branch2,\n        teeState = f._teeState;\n\n\n    return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n      assert(typeIsObject(result));\n      var value = result.value;\n      var done = result.done;\n      assert(typeof done === 'boolean');\n\n      if (done === true && teeState.closedOrErrored === false) {\n        if (teeState.canceled1 === false) {\n          ReadableStreamDefaultControllerClose(branch1);\n        }\n        if (teeState.canceled2 === false) {\n          ReadableStreamDefaultControllerClose(branch2);\n        }\n        teeState.closedOrErrored = true;\n      }\n\n      if (teeState.closedOrErrored === true) {\n        return;\n      }\n\n      var value1 = value;\n      var value2 = value;\n\n      // There is no way to access the cloning code right now in the reference implementation.\n      // If we add one then we'll need an implementation for serializable objects.\n      // if (teeState.canceled2 === false && cloneForBranch2 === true) {\n      //   value2 = StructuredDeserialize(StructuredSerialize(value2));\n      // }\n\n      if (teeState.canceled1 === false) {\n        ReadableStreamDefaultControllerEnqueue(branch1, value1);\n      }\n\n      if (teeState.canceled2 === false) {\n        ReadableStreamDefaultControllerEnqueue(branch2, value2);\n      }\n    });\n  }\n  return f;\n}\n\nfunction create_ReadableStreamTeeBranch1CancelFunction() {\n  function f(reason) {\n    var stream = f._stream,\n        teeState = f._teeState;\n\n\n    teeState.canceled1 = true;\n    teeState.reason1 = reason;\n    if (teeState.canceled2 === true) {\n      var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n      var cancelResult = ReadableStreamCancel(stream, compositeReason);\n      teeState._resolve(cancelResult);\n    }\n    return teeState.promise;\n  }\n  return f;\n}\n\nfunction create_ReadableStreamTeeBranch2CancelFunction() {\n  function f(reason) {\n    var stream = f._stream,\n        teeState = f._teeState;\n\n\n    teeState.canceled2 = true;\n    teeState.reason2 = reason;\n    if (teeState.canceled1 === true) {\n      var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n      var cancelResult = ReadableStreamCancel(stream, compositeReason);\n      teeState._resolve(cancelResult);\n    }\n    return teeState.promise;\n  }\n  return f;\n}\n\n// ReadableStream API exposed for controllers.\n\nfunction ReadableStreamAddReadIntoRequest(stream) {\n  assert(IsReadableStreamBYOBReader(stream._reader) === true);\n  assert(stream._state === 'readable' || stream._state === 'closed');\n\n  var promise = new Promise(function (resolve, reject) {\n    var readIntoRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._reader._readIntoRequests.push(readIntoRequest);\n  });\n\n  return promise;\n}\n\nfunction ReadableStreamAddReadRequest(stream) {\n  assert(IsReadableStreamDefaultReader(stream._reader) === true);\n  assert(stream._state === 'readable');\n\n  var promise = new Promise(function (resolve, reject) {\n    var readRequest = {\n      _resolve: resolve,\n      _reject: reject\n    };\n\n    stream._reader._readRequests.push(readRequest);\n  });\n\n  return promise;\n}\n\nfunction ReadableStreamCancel(stream, reason) {\n  stream._disturbed = true;\n\n  if (stream._state === 'closed') {\n    return Promise.resolve(undefined);\n  }\n  if (stream._state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n\n  ReadableStreamClose(stream);\n\n  var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n  return sourceCancelPromise.then(function () {\n    return undefined;\n  });\n}\n\nfunction ReadableStreamClose(stream) {\n  assert(stream._state === 'readable');\n\n  stream._state = 'closed';\n\n  var reader = stream._reader;\n\n  if (reader === undefined) {\n    return undefined;\n  }\n\n  if (IsReadableStreamDefaultReader(reader) === true) {\n    for (var i = 0; i < reader._readRequests.length; i++) {\n      var _resolve = reader._readRequests[i]._resolve;\n\n      _resolve(CreateIterResultObject(undefined, true));\n    }\n    reader._readRequests = [];\n  }\n\n  defaultReaderClosedPromiseResolve(reader);\n\n  return undefined;\n}\n\nfunction ReadableStreamError(stream, e) {\n  assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n  assert(stream._state === 'readable', 'state must be readable');\n\n  stream._state = 'errored';\n  stream._storedError = e;\n\n  var reader = stream._reader;\n\n  if (reader === undefined) {\n    return undefined;\n  }\n\n  if (IsReadableStreamDefaultReader(reader) === true) {\n    for (var i = 0; i < reader._readRequests.length; i++) {\n      var readRequest = reader._readRequests[i];\n      readRequest._reject(e);\n    }\n\n    reader._readRequests = [];\n  } else {\n    assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n\n    for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n      var readIntoRequest = reader._readIntoRequests[_i];\n      readIntoRequest._reject(e);\n    }\n\n    reader._readIntoRequests = [];\n  }\n\n  defaultReaderClosedPromiseReject(reader, e);\n  reader._closedPromise.catch(function () {});\n}\n\nfunction ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n  var reader = stream._reader;\n\n  assert(reader._readIntoRequests.length > 0);\n\n  var readIntoRequest = reader._readIntoRequests.shift();\n  readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamFulfillReadRequest(stream, chunk, done) {\n  var reader = stream._reader;\n\n  assert(reader._readRequests.length > 0);\n\n  var readRequest = reader._readRequests.shift();\n  readRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamGetNumReadIntoRequests(stream) {\n  return stream._reader._readIntoRequests.length;\n}\n\nfunction ReadableStreamGetNumReadRequests(stream) {\n  return stream._reader._readRequests.length;\n}\n\nfunction ReadableStreamHasBYOBReader(stream) {\n  var reader = stream._reader;\n\n  if (reader === undefined) {\n    return false;\n  }\n\n  if (IsReadableStreamBYOBReader(reader) === false) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableStreamHasDefaultReader(stream) {\n  var reader = stream._reader;\n\n  if (reader === undefined) {\n    return false;\n  }\n\n  if (IsReadableStreamDefaultReader(reader) === false) {\n    return false;\n  }\n\n  return true;\n}\n\n// Readers\n\nvar ReadableStreamDefaultReader = function () {\n  function ReadableStreamDefaultReader(stream) {\n    _classCallCheck(this, ReadableStreamDefaultReader);\n\n    if (IsReadableStream(stream) === false) {\n      throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n    }\n    if (IsReadableStreamLocked(stream) === true) {\n      throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n    }\n\n    ReadableStreamReaderGenericInitialize(this, stream);\n\n    this._readRequests = [];\n  }\n\n  _createClass(ReadableStreamDefaultReader, [{\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (IsReadableStreamDefaultReader(this) === false) {\n        return Promise.reject(defaultReaderBrandCheckException('cancel'));\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return Promise.reject(readerLockException('cancel'));\n      }\n\n      return ReadableStreamReaderGenericCancel(this, reason);\n    }\n  }, {\n    key: 'read',\n    value: function read() {\n      if (IsReadableStreamDefaultReader(this) === false) {\n        return Promise.reject(defaultReaderBrandCheckException('read'));\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return Promise.reject(readerLockException('read from'));\n      }\n\n      return ReadableStreamDefaultReaderRead(this);\n    }\n  }, {\n    key: 'releaseLock',\n    value: function releaseLock() {\n      if (IsReadableStreamDefaultReader(this) === false) {\n        throw defaultReaderBrandCheckException('releaseLock');\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return;\n      }\n\n      if (this._readRequests.length > 0) {\n        throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n      }\n\n      ReadableStreamReaderGenericRelease(this);\n    }\n  }, {\n    key: 'closed',\n    get: function get() {\n      if (IsReadableStreamDefaultReader(this) === false) {\n        return Promise.reject(defaultReaderBrandCheckException('closed'));\n      }\n\n      return this._closedPromise;\n    }\n  }]);\n\n  return ReadableStreamDefaultReader;\n}();\n\nvar ReadableStreamBYOBReader = function () {\n  function ReadableStreamBYOBReader(stream) {\n    _classCallCheck(this, ReadableStreamBYOBReader);\n\n    if (!IsReadableStream(stream)) {\n      throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n    }\n    if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n      throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n    }\n    if (IsReadableStreamLocked(stream)) {\n      throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n    }\n\n    ReadableStreamReaderGenericInitialize(this, stream);\n\n    this._readIntoRequests = [];\n  }\n\n  _createClass(ReadableStreamBYOBReader, [{\n    key: 'cancel',\n    value: function cancel(reason) {\n      if (!IsReadableStreamBYOBReader(this)) {\n        return Promise.reject(byobReaderBrandCheckException('cancel'));\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return Promise.reject(readerLockException('cancel'));\n      }\n\n      return ReadableStreamReaderGenericCancel(this, reason);\n    }\n  }, {\n    key: 'read',\n    value: function read(view) {\n      if (!IsReadableStreamBYOBReader(this)) {\n        return Promise.reject(byobReaderBrandCheckException('read'));\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return Promise.reject(readerLockException('read from'));\n      }\n\n      if (!ArrayBuffer.isView(view)) {\n        return Promise.reject(new TypeError('view must be an array buffer view'));\n      }\n\n      if (view.byteLength === 0) {\n        return Promise.reject(new TypeError('view must have non-zero byteLength'));\n      }\n\n      return ReadableStreamBYOBReaderRead(this, view);\n    }\n  }, {\n    key: 'releaseLock',\n    value: function releaseLock() {\n      if (!IsReadableStreamBYOBReader(this)) {\n        throw byobReaderBrandCheckException('releaseLock');\n      }\n\n      if (this._ownerReadableStream === undefined) {\n        return;\n      }\n\n      if (this._readIntoRequests.length > 0) {\n        throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n      }\n\n      ReadableStreamReaderGenericRelease(this);\n    }\n  }, {\n    key: 'closed',\n    get: function get() {\n      if (!IsReadableStreamBYOBReader(this)) {\n        return Promise.reject(byobReaderBrandCheckException('closed'));\n      }\n\n      return this._closedPromise;\n    }\n  }]);\n\n  return ReadableStreamBYOBReader;\n}();\n\n// Abstract operations for the readers.\n\nfunction IsReadableStreamBYOBReader(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsReadableStreamDefaultReader(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableStreamReaderGenericInitialize(reader, stream) {\n  reader._ownerReadableStream = stream;\n  stream._reader = reader;\n\n  if (stream._state === 'readable') {\n    defaultReaderClosedPromiseInitialize(reader);\n  } else if (stream._state === 'closed') {\n    defaultReaderClosedPromiseInitializeAsResolved(reader);\n  } else {\n    assert(stream._state === 'errored', 'state must be errored');\n\n    defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n    reader._closedPromise.catch(function () {});\n  }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nfunction ReadableStreamReaderGenericCancel(reader, reason) {\n  var stream = reader._ownerReadableStream;\n  assert(stream !== undefined);\n  return ReadableStreamCancel(stream, reason);\n}\n\nfunction ReadableStreamReaderGenericRelease(reader) {\n  assert(reader._ownerReadableStream !== undefined);\n  assert(reader._ownerReadableStream._reader === reader);\n\n  if (reader._ownerReadableStream._state === 'readable') {\n    defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n  } else {\n    defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n  }\n  reader._closedPromise.catch(function () {});\n\n  reader._ownerReadableStream._reader = undefined;\n  reader._ownerReadableStream = undefined;\n}\n\nfunction ReadableStreamBYOBReaderRead(reader, view) {\n  var stream = reader._ownerReadableStream;\n\n  assert(stream !== undefined);\n\n  stream._disturbed = true;\n\n  if (stream._state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n\n  // Controllers must implement this.\n  return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n}\n\nfunction ReadableStreamDefaultReaderRead(reader) {\n  var stream = reader._ownerReadableStream;\n\n  assert(stream !== undefined);\n\n  stream._disturbed = true;\n\n  if (stream._state === 'closed') {\n    return Promise.resolve(CreateIterResultObject(undefined, true));\n  }\n\n  if (stream._state === 'errored') {\n    return Promise.reject(stream._storedError);\n  }\n\n  assert(stream._state === 'readable');\n\n  return stream._readableStreamController.__pullSteps();\n}\n\n// Controllers\n\nvar ReadableStreamDefaultController = function () {\n  function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n    _classCallCheck(this, ReadableStreamDefaultController);\n\n    if (IsReadableStream(stream) === false) {\n      throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n    }\n\n    if (stream._readableStreamController !== undefined) {\n      throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n    }\n\n    this._controlledReadableStream = stream;\n\n    this._underlyingSource = underlyingSource;\n\n    // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n    this._queue = undefined;\n    this._queueTotalSize = undefined;\n    ResetQueue(this);\n\n    this._started = false;\n    this._closeRequested = false;\n    this._pullAgain = false;\n    this._pulling = false;\n\n    var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n    this._strategySize = normalizedStrategy.size;\n    this._strategyHWM = normalizedStrategy.highWaterMark;\n\n    var controller = this;\n\n    var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n    Promise.resolve(startResult).then(function () {\n      controller._started = true;\n\n      assert(controller._pulling === false);\n      assert(controller._pullAgain === false);\n\n      ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n    }, function (r) {\n      ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n    }).catch(rethrowAssertionErrorRejection);\n  }\n\n  _createClass(ReadableStreamDefaultController, [{\n    key: 'close',\n    value: function close() {\n      if (IsReadableStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('close');\n      }\n\n      if (this._closeRequested === true) {\n        throw new TypeError('The stream has already been closed; do not close it again!');\n      }\n\n      var state = this._controlledReadableStream._state;\n      if (state !== 'readable') {\n        throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n      }\n\n      ReadableStreamDefaultControllerClose(this);\n    }\n  }, {\n    key: 'enqueue',\n    value: function enqueue(chunk) {\n      if (IsReadableStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('enqueue');\n      }\n\n      if (this._closeRequested === true) {\n        throw new TypeError('stream is closed or draining');\n      }\n\n      var state = this._controlledReadableStream._state;\n      if (state !== 'readable') {\n        throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n      }\n\n      return ReadableStreamDefaultControllerEnqueue(this, chunk);\n    }\n  }, {\n    key: 'error',\n    value: function error(e) {\n      if (IsReadableStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('error');\n      }\n\n      var stream = this._controlledReadableStream;\n      if (stream._state !== 'readable') {\n        throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n      }\n\n      ReadableStreamDefaultControllerError(this, e);\n    }\n  }, {\n    key: '__cancelSteps',\n    value: function __cancelSteps(reason) {\n      ResetQueue(this);\n      return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n    }\n  }, {\n    key: '__pullSteps',\n    value: function __pullSteps() {\n      var stream = this._controlledReadableStream;\n\n      if (this._queue.length > 0) {\n        var chunk = DequeueValue(this);\n\n        if (this._closeRequested === true && this._queue.length === 0) {\n          ReadableStreamClose(stream);\n        } else {\n          ReadableStreamDefaultControllerCallPullIfNeeded(this);\n        }\n\n        return Promise.resolve(CreateIterResultObject(chunk, false));\n      }\n\n      var pendingPromise = ReadableStreamAddReadRequest(stream);\n      ReadableStreamDefaultControllerCallPullIfNeeded(this);\n      return pendingPromise;\n    }\n  }, {\n    key: 'desiredSize',\n    get: function get() {\n      if (IsReadableStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('desiredSize');\n      }\n\n      return ReadableStreamDefaultControllerGetDesiredSize(this);\n    }\n  }]);\n\n  return ReadableStreamDefaultController;\n}();\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n  var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n  if (shouldPull === false) {\n    return undefined;\n  }\n\n  if (controller._pulling === true) {\n    controller._pullAgain = true;\n    return undefined;\n  }\n\n  assert(controller._pullAgain === false);\n\n  controller._pulling = true;\n\n  var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n  pullPromise.then(function () {\n    controller._pulling = false;\n\n    if (controller._pullAgain === true) {\n      controller._pullAgain = false;\n      return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n    }\n    return undefined;\n  }, function (e) {\n    ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n  }).catch(rethrowAssertionErrorRejection);\n\n  return undefined;\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller) {\n  var stream = controller._controlledReadableStream;\n\n  if (stream._state === 'closed' || stream._state === 'errored') {\n    return false;\n  }\n\n  if (controller._closeRequested === true) {\n    return false;\n  }\n\n  if (controller._started === false) {\n    return false;\n  }\n\n  if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n    return true;\n  }\n\n  var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n  if (desiredSize > 0) {\n    return true;\n  }\n\n  return false;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction ReadableStreamDefaultControllerClose(controller) {\n  var stream = controller._controlledReadableStream;\n\n  assert(controller._closeRequested === false);\n  assert(stream._state === 'readable');\n\n  controller._closeRequested = true;\n\n  if (controller._queue.length === 0) {\n    ReadableStreamClose(stream);\n  }\n}\n\nfunction ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n  var stream = controller._controlledReadableStream;\n\n  assert(controller._closeRequested === false);\n  assert(stream._state === 'readable');\n\n  if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n    ReadableStreamFulfillReadRequest(stream, chunk, false);\n  } else {\n    var chunkSize = 1;\n\n    if (controller._strategySize !== undefined) {\n      var strategySize = controller._strategySize;\n      try {\n        chunkSize = strategySize(chunk);\n      } catch (chunkSizeE) {\n        ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n        throw chunkSizeE;\n      }\n    }\n\n    try {\n      EnqueueValueWithSize(controller, chunk, chunkSize);\n    } catch (enqueueE) {\n      ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n      throw enqueueE;\n    }\n  }\n\n  ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n\n  return undefined;\n}\n\nfunction ReadableStreamDefaultControllerError(controller, e) {\n  var stream = controller._controlledReadableStream;\n\n  assert(stream._state === 'readable');\n\n  ResetQueue(controller);\n\n  ReadableStreamError(stream, e);\n}\n\nfunction ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n  if (controller._controlledReadableStream._state === 'readable') {\n    ReadableStreamDefaultControllerError(controller, e);\n  }\n}\n\nfunction ReadableStreamDefaultControllerGetDesiredSize(controller) {\n  var stream = controller._controlledReadableStream;\n  var state = stream._state;\n\n  if (state === 'errored') {\n    return null;\n  }\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nvar ReadableStreamBYOBRequest = function () {\n  function ReadableStreamBYOBRequest(controller, view) {\n    _classCallCheck(this, ReadableStreamBYOBRequest);\n\n    this._associatedReadableByteStreamController = controller;\n    this._view = view;\n  }\n\n  _createClass(ReadableStreamBYOBRequest, [{\n    key: 'respond',\n    value: function respond(bytesWritten) {\n      if (IsReadableStreamBYOBRequest(this) === false) {\n        throw byobRequestBrandCheckException('respond');\n      }\n\n      if (this._associatedReadableByteStreamController === undefined) {\n        throw new TypeError('This BYOB request has been invalidated');\n      }\n\n      ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n    }\n  }, {\n    key: 'respondWithNewView',\n    value: function respondWithNewView(view) {\n      if (IsReadableStreamBYOBRequest(this) === false) {\n        throw byobRequestBrandCheckException('respond');\n      }\n\n      if (this._associatedReadableByteStreamController === undefined) {\n        throw new TypeError('This BYOB request has been invalidated');\n      }\n\n      if (!ArrayBuffer.isView(view)) {\n        throw new TypeError('You can only respond with array buffer views');\n      }\n\n      ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n    }\n  }, {\n    key: 'view',\n    get: function get() {\n      return this._view;\n    }\n  }]);\n\n  return ReadableStreamBYOBRequest;\n}();\n\nvar ReadableByteStreamController = function () {\n  function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n    _classCallCheck(this, ReadableByteStreamController);\n\n    if (IsReadableStream(stream) === false) {\n      throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n    }\n\n    if (stream._readableStreamController !== undefined) {\n      throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n    }\n\n    this._controlledReadableStream = stream;\n\n    this._underlyingByteSource = underlyingByteSource;\n\n    this._pullAgain = false;\n    this._pulling = false;\n\n    ReadableByteStreamControllerClearPendingPullIntos(this);\n\n    // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n    this._queue = this._queueTotalSize = undefined;\n    ResetQueue(this);\n\n    this._closeRequested = false;\n    this._started = false;\n\n    this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n    var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n    if (autoAllocateChunkSize !== undefined) {\n      if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n        throw new RangeError('autoAllocateChunkSize must be a positive integer');\n      }\n    }\n    this._autoAllocateChunkSize = autoAllocateChunkSize;\n\n    this._pendingPullIntos = [];\n\n    var controller = this;\n\n    var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n    Promise.resolve(startResult).then(function () {\n      controller._started = true;\n\n      assert(controller._pulling === false);\n      assert(controller._pullAgain === false);\n\n      ReadableByteStreamControllerCallPullIfNeeded(controller);\n    }, function (r) {\n      if (stream._state === 'readable') {\n        ReadableByteStreamControllerError(controller, r);\n      }\n    }).catch(rethrowAssertionErrorRejection);\n  }\n\n  _createClass(ReadableByteStreamController, [{\n    key: 'close',\n    value: function close() {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('close');\n      }\n\n      if (this._closeRequested === true) {\n        throw new TypeError('The stream has already been closed; do not close it again!');\n      }\n\n      var state = this._controlledReadableStream._state;\n      if (state !== 'readable') {\n        throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n      }\n\n      ReadableByteStreamControllerClose(this);\n    }\n  }, {\n    key: 'enqueue',\n    value: function enqueue(chunk) {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('enqueue');\n      }\n\n      if (this._closeRequested === true) {\n        throw new TypeError('stream is closed or draining');\n      }\n\n      var state = this._controlledReadableStream._state;\n      if (state !== 'readable') {\n        throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n      }\n\n      if (!ArrayBuffer.isView(chunk)) {\n        throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n      }\n\n      ReadableByteStreamControllerEnqueue(this, chunk);\n    }\n  }, {\n    key: 'error',\n    value: function error(e) {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('error');\n      }\n\n      var stream = this._controlledReadableStream;\n      if (stream._state !== 'readable') {\n        throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n      }\n\n      ReadableByteStreamControllerError(this, e);\n    }\n  }, {\n    key: '__cancelSteps',\n    value: function __cancelSteps(reason) {\n      if (this._pendingPullIntos.length > 0) {\n        var firstDescriptor = this._pendingPullIntos[0];\n        firstDescriptor.bytesFilled = 0;\n      }\n\n      ResetQueue(this);\n\n      return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n    }\n  }, {\n    key: '__pullSteps',\n    value: function __pullSteps() {\n      var stream = this._controlledReadableStream;\n      assert(ReadableStreamHasDefaultReader(stream) === true);\n\n      if (this._queueTotalSize > 0) {\n        assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n        var entry = this._queue.shift();\n        this._queueTotalSize -= entry.byteLength;\n\n        ReadableByteStreamControllerHandleQueueDrain(this);\n\n        var view = void 0;\n        try {\n          view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n        } catch (viewE) {\n          return Promise.reject(viewE);\n        }\n\n        return Promise.resolve(CreateIterResultObject(view, false));\n      }\n\n      var autoAllocateChunkSize = this._autoAllocateChunkSize;\n      if (autoAllocateChunkSize !== undefined) {\n        var buffer = void 0;\n        try {\n          buffer = new ArrayBuffer(autoAllocateChunkSize);\n        } catch (bufferE) {\n          return Promise.reject(bufferE);\n        }\n\n        var pullIntoDescriptor = {\n          buffer: buffer,\n          byteOffset: 0,\n          byteLength: autoAllocateChunkSize,\n          bytesFilled: 0,\n          elementSize: 1,\n          ctor: Uint8Array,\n          readerType: 'default'\n        };\n\n        this._pendingPullIntos.push(pullIntoDescriptor);\n      }\n\n      var promise = ReadableStreamAddReadRequest(stream);\n\n      ReadableByteStreamControllerCallPullIfNeeded(this);\n\n      return promise;\n    }\n  }, {\n    key: 'byobRequest',\n    get: function get() {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('byobRequest');\n      }\n\n      if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n        var firstDescriptor = this._pendingPullIntos[0];\n        var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n        this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n      }\n\n      return this._byobRequest;\n    }\n  }, {\n    key: 'desiredSize',\n    get: function get() {\n      if (IsReadableByteStreamController(this) === false) {\n        throw byteStreamControllerBrandCheckException('desiredSize');\n      }\n\n      return ReadableByteStreamControllerGetDesiredSize(this);\n    }\n  }]);\n\n  return ReadableByteStreamController;\n}();\n\n// Abstract operations for the ReadableByteStreamController.\n\nfunction IsReadableByteStreamController(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsReadableStreamBYOBRequest(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller) {\n  var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n  if (shouldPull === false) {\n    return undefined;\n  }\n\n  if (controller._pulling === true) {\n    controller._pullAgain = true;\n    return undefined;\n  }\n\n  assert(controller._pullAgain === false);\n\n  controller._pulling = true;\n\n  // TODO: Test controller argument\n  var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n  pullPromise.then(function () {\n    controller._pulling = false;\n\n    if (controller._pullAgain === true) {\n      controller._pullAgain = false;\n      ReadableByteStreamControllerCallPullIfNeeded(controller);\n    }\n  }, function (e) {\n    if (controller._controlledReadableStream._state === 'readable') {\n      ReadableByteStreamControllerError(controller, e);\n    }\n  }).catch(rethrowAssertionErrorRejection);\n\n  return undefined;\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller) {\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n  controller._pendingPullIntos = [];\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n  assert(stream._state !== 'errored', 'state must not be errored');\n\n  var done = false;\n  if (stream._state === 'closed') {\n    assert(pullIntoDescriptor.bytesFilled === 0);\n    done = true;\n  }\n\n  var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n  if (pullIntoDescriptor.readerType === 'default') {\n    ReadableStreamFulfillReadRequest(stream, filledView, done);\n  } else {\n    assert(pullIntoDescriptor.readerType === 'byob');\n    ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n  }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n  var bytesFilled = pullIntoDescriptor.bytesFilled;\n  var elementSize = pullIntoDescriptor.elementSize;\n\n  assert(bytesFilled <= pullIntoDescriptor.byteLength);\n  assert(bytesFilled % elementSize === 0);\n\n  return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n  controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n  controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n  var elementSize = pullIntoDescriptor.elementSize;\n\n  var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n\n  var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n  var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n  var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n\n  var totalBytesToCopyRemaining = maxBytesToCopy;\n  var ready = false;\n  if (maxAlignedBytes > currentAlignedBytes) {\n    totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n    ready = true;\n  }\n\n  var queue = controller._queue;\n\n  while (totalBytesToCopyRemaining > 0) {\n    var headOfQueue = queue[0];\n\n    var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n    var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n    ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n    if (headOfQueue.byteLength === bytesToCopy) {\n      queue.shift();\n    } else {\n      headOfQueue.byteOffset += bytesToCopy;\n      headOfQueue.byteLength -= bytesToCopy;\n    }\n    controller._queueTotalSize -= bytesToCopy;\n\n    ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n    totalBytesToCopyRemaining -= bytesToCopy;\n  }\n\n  if (ready === false) {\n    assert(controller._queueTotalSize === 0, 'queue must be empty');\n    assert(pullIntoDescriptor.bytesFilled > 0);\n    assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n  }\n\n  return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n  assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n  pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller) {\n  assert(controller._controlledReadableStream._state === 'readable');\n\n  if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n    ReadableStreamClose(controller._controlledReadableStream);\n  } else {\n    ReadableByteStreamControllerCallPullIfNeeded(controller);\n  }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n  if (controller._byobRequest === undefined) {\n    return;\n  }\n\n  controller._byobRequest._associatedReadableByteStreamController = undefined;\n  controller._byobRequest._view = undefined;\n  controller._byobRequest = undefined;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n  assert(controller._closeRequested === false);\n\n  while (controller._pendingPullIntos.length > 0) {\n    if (controller._queueTotalSize === 0) {\n      return;\n    }\n\n    var pullIntoDescriptor = controller._pendingPullIntos[0];\n\n    if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n      ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n      ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n    }\n  }\n}\n\nfunction ReadableByteStreamControllerPullInto(controller, view) {\n  var stream = controller._controlledReadableStream;\n\n  var elementSize = 1;\n  if (view.constructor !== DataView) {\n    elementSize = view.constructor.BYTES_PER_ELEMENT;\n  }\n\n  var ctor = view.constructor;\n\n  var pullIntoDescriptor = {\n    buffer: view.buffer,\n    byteOffset: view.byteOffset,\n    byteLength: view.byteLength,\n    bytesFilled: 0,\n    elementSize: elementSize,\n    ctor: ctor,\n    readerType: 'byob'\n  };\n\n  if (controller._pendingPullIntos.length > 0) {\n    pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n    controller._pendingPullIntos.push(pullIntoDescriptor);\n\n    // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n    // - No change happens on desiredSize\n    // - The source has already been notified of that there's at least 1 pending read(view)\n\n    return ReadableStreamAddReadIntoRequest(stream);\n  }\n\n  if (stream._state === 'closed') {\n    var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n    return Promise.resolve(CreateIterResultObject(emptyView, true));\n  }\n\n  if (controller._queueTotalSize > 0) {\n    if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n      var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n\n      ReadableByteStreamControllerHandleQueueDrain(controller);\n\n      return Promise.resolve(CreateIterResultObject(filledView, false));\n    }\n\n    if (controller._closeRequested === true) {\n      var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n      ReadableByteStreamControllerError(controller, e);\n\n      return Promise.reject(e);\n    }\n  }\n\n  pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n  controller._pendingPullIntos.push(pullIntoDescriptor);\n\n  var promise = ReadableStreamAddReadIntoRequest(stream);\n\n  ReadableByteStreamControllerCallPullIfNeeded(controller);\n\n  return promise;\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n  firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n  assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n\n  var stream = controller._controlledReadableStream;\n  if (ReadableStreamHasBYOBReader(stream) === true) {\n    while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n      var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n      ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n    }\n  }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n  if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n    throw new RangeError('bytesWritten out of range');\n  }\n\n  ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n  if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n    // TODO: Figure out whether we should detach the buffer or not here.\n    return;\n  }\n\n  ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n  var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n  if (remainderSize > 0) {\n    var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n    var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n  }\n\n  pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n  pullIntoDescriptor.bytesFilled -= remainderSize;\n  ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n\n  ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n  var firstDescriptor = controller._pendingPullIntos[0];\n\n  var stream = controller._controlledReadableStream;\n\n  if (stream._state === 'closed') {\n    if (bytesWritten !== 0) {\n      throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n    }\n\n    ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n  } else {\n    assert(stream._state === 'readable');\n\n    ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n  }\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(controller) {\n  var descriptor = controller._pendingPullIntos.shift();\n  ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n  return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller) {\n  var stream = controller._controlledReadableStream;\n\n  if (stream._state !== 'readable') {\n    return false;\n  }\n\n  if (controller._closeRequested === true) {\n    return false;\n  }\n\n  if (controller._started === false) {\n    return false;\n  }\n\n  if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n    return true;\n  }\n\n  if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n    return true;\n  }\n\n  if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n    return true;\n  }\n\n  return false;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nfunction ReadableByteStreamControllerClose(controller) {\n  var stream = controller._controlledReadableStream;\n\n  assert(controller._closeRequested === false);\n  assert(stream._state === 'readable');\n\n  if (controller._queueTotalSize > 0) {\n    controller._closeRequested = true;\n\n    return;\n  }\n\n  if (controller._pendingPullIntos.length > 0) {\n    var firstPendingPullInto = controller._pendingPullIntos[0];\n    if (firstPendingPullInto.bytesFilled > 0) {\n      var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n      ReadableByteStreamControllerError(controller, e);\n\n      throw e;\n    }\n  }\n\n  ReadableStreamClose(stream);\n}\n\nfunction ReadableByteStreamControllerEnqueue(controller, chunk) {\n  var stream = controller._controlledReadableStream;\n\n  assert(controller._closeRequested === false);\n  assert(stream._state === 'readable');\n\n  var buffer = chunk.buffer;\n  var byteOffset = chunk.byteOffset;\n  var byteLength = chunk.byteLength;\n  var transferredBuffer = TransferArrayBuffer(buffer);\n\n  if (ReadableStreamHasDefaultReader(stream) === true) {\n    if (ReadableStreamGetNumReadRequests(stream) === 0) {\n      ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    } else {\n      assert(controller._queue.length === 0);\n\n      var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n      ReadableStreamFulfillReadRequest(stream, transferredView, false);\n    }\n  } else if (ReadableStreamHasBYOBReader(stream) === true) {\n    // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n    ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n  } else {\n    assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n    ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n  }\n}\n\nfunction ReadableByteStreamControllerError(controller, e) {\n  var stream = controller._controlledReadableStream;\n\n  assert(stream._state === 'readable');\n\n  ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n  ResetQueue(controller);\n  ReadableStreamError(stream, e);\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller) {\n  var stream = controller._controlledReadableStream;\n  var state = stream._state;\n\n  if (state === 'errored') {\n    return null;\n  }\n  if (state === 'closed') {\n    return 0;\n  }\n\n  return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction ReadableByteStreamControllerRespond(controller, bytesWritten) {\n  bytesWritten = Number(bytesWritten);\n  if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n    throw new RangeError('bytesWritten must be a finite');\n  }\n\n  assert(controller._pendingPullIntos.length > 0);\n\n  ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nfunction ReadableByteStreamControllerRespondWithNewView(controller, view) {\n  assert(controller._pendingPullIntos.length > 0);\n\n  var firstDescriptor = controller._pendingPullIntos[0];\n\n  if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n    throw new RangeError('The region specified by view does not match byobRequest');\n  }\n  if (firstDescriptor.byteLength !== view.byteLength) {\n    throw new RangeError('The buffer of view has different capacity than byobRequest');\n  }\n\n  firstDescriptor.buffer = view.buffer;\n\n  ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name) {\n  return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n}\n\n// Helper functions for the readers.\n\nfunction readerLockException(name) {\n  return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name) {\n  return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n}\n\nfunction defaultReaderClosedPromiseInitialize(reader) {\n  reader._closedPromise = new Promise(function (resolve, reject) {\n    reader._closedPromise_resolve = resolve;\n    reader._closedPromise_reject = reject;\n  });\n}\n\nfunction defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n  reader._closedPromise = Promise.reject(reason);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseInitializeAsResolved(reader) {\n  reader._closedPromise = Promise.resolve(undefined);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseReject(reader, reason) {\n  assert(reader._closedPromise_resolve !== undefined);\n  assert(reader._closedPromise_reject !== undefined);\n\n  reader._closedPromise_reject(reason);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseResetToRejected(reader, reason) {\n  assert(reader._closedPromise_resolve === undefined);\n  assert(reader._closedPromise_reject === undefined);\n\n  reader._closedPromise = Promise.reject(reason);\n}\n\nfunction defaultReaderClosedPromiseResolve(reader) {\n  assert(reader._closedPromise_resolve !== undefined);\n  assert(reader._closedPromise_reject !== undefined);\n\n  reader._closedPromise_resolve(undefined);\n  reader._closedPromise_resolve = undefined;\n  reader._closedPromise_reject = undefined;\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction byobReaderBrandCheckException(name) {\n  return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n  return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name) {\n  return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name) {\n  return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n}\n\n// Helper function for ReadableStream pipeThrough\n\nfunction ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n  try {\n    // This relies on the brand-check that is enforced by Promise.prototype.then(). As with the rest of the reference\n    // implementation, it doesn't attempt to do the right thing if someone has modified the global environment.\n    Promise.prototype.then.call(promise, undefined, function () {});\n  } catch (e) {\n    // The brand check failed, therefore the internal slot is not present and there's nothing further to do.\n  }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar transformStream = __w_pdfjs_require__(6);\nvar readableStream = __w_pdfjs_require__(4);\nvar writableStream = __w_pdfjs_require__(2);\n\nexports.TransformStream = transformStream.TransformStream;\nexports.ReadableStream = readableStream.ReadableStream;\nexports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\nexports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\nexports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\nexports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\nexports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\nexports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\nexports.IsWritableStream = writableStream.IsWritableStream;\nexports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\nexports.WritableStream = writableStream.WritableStream;\nexports.WritableStreamAbort = writableStream.WritableStreamAbort;\nexports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\nexports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\nexports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\nexports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(1),\n    assert = _require.assert;\n\nvar _require2 = __w_pdfjs_require__(0),\n    InvokeOrNoop = _require2.InvokeOrNoop,\n    PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n    PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n    typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(4),\n    ReadableStream = _require3.ReadableStream,\n    ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n    ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n    ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n    ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n\nvar _require4 = __w_pdfjs_require__(2),\n    WritableStream = _require4.WritableStream,\n    WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n\n// Methods on the transform stream controller object\n\nfunction TransformStreamCloseReadable(transformStream) {\n  // console.log('TransformStreamCloseReadable()');\n\n  if (transformStream._errored === true) {\n    throw new TypeError('TransformStream is already errored');\n  }\n\n  if (transformStream._readableClosed === true) {\n    throw new TypeError('Readable side is already closed');\n  }\n\n  TransformStreamCloseReadableInternal(transformStream);\n}\n\nfunction TransformStreamEnqueueToReadable(transformStream, chunk) {\n  // console.log('TransformStreamEnqueueToReadable()');\n\n  if (transformStream._errored === true) {\n    throw new TypeError('TransformStream is already errored');\n  }\n\n  if (transformStream._readableClosed === true) {\n    throw new TypeError('Readable side is already closed');\n  }\n\n  // We throttle transformer.transform invocation based on the backpressure of the ReadableStream, but we still\n  // accept TransformStreamEnqueueToReadable() calls.\n\n  var controller = transformStream._readableController;\n\n  try {\n    ReadableStreamDefaultControllerEnqueue(controller, chunk);\n  } catch (e) {\n    // This happens when readableStrategy.size() throws.\n    // The ReadableStream has already errored itself.\n    transformStream._readableClosed = true;\n    TransformStreamErrorIfNeeded(transformStream, e);\n\n    throw transformStream._storedError;\n  }\n\n  var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n  var maybeBackpressure = desiredSize <= 0;\n\n  if (maybeBackpressure === true && transformStream._backpressure === false) {\n    // This allows pull() again. When desiredSize is 0, it's possible that a pull() will happen immediately (but\n    // asynchronously) after this because of pending read()s and set _backpressure back to false.\n    //\n    // If pull() could be called from inside enqueue(), then this logic would be wrong. This cannot happen\n    // because there is always a promise pending from start() or pull() when _backpressure is false.\n    TransformStreamSetBackpressure(transformStream, true);\n  }\n}\n\nfunction TransformStreamError(transformStream, e) {\n  if (transformStream._errored === true) {\n    throw new TypeError('TransformStream is already errored');\n  }\n\n  TransformStreamErrorInternal(transformStream, e);\n}\n\n// Abstract operations.\n\nfunction TransformStreamCloseReadableInternal(transformStream) {\n  assert(transformStream._errored === false);\n  assert(transformStream._readableClosed === false);\n\n  try {\n    ReadableStreamDefaultControllerClose(transformStream._readableController);\n  } catch (e) {\n    assert(false);\n  }\n\n  transformStream._readableClosed = true;\n}\n\nfunction TransformStreamErrorIfNeeded(transformStream, e) {\n  if (transformStream._errored === false) {\n    TransformStreamErrorInternal(transformStream, e);\n  }\n}\n\nfunction TransformStreamErrorInternal(transformStream, e) {\n  // console.log('TransformStreamErrorInternal()');\n\n  assert(transformStream._errored === false);\n\n  transformStream._errored = true;\n  transformStream._storedError = e;\n\n  if (transformStream._writableDone === false) {\n    WritableStreamDefaultControllerError(transformStream._writableController, e);\n  }\n  if (transformStream._readableClosed === false) {\n    ReadableStreamDefaultControllerError(transformStream._readableController, e);\n  }\n}\n\n// Used for preventing the next write() call on TransformStreamSink until there\n// is no longer backpressure.\nfunction TransformStreamReadableReadyPromise(transformStream) {\n  assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n  if (transformStream._backpressure === false) {\n    return Promise.resolve();\n  }\n\n  assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n\n  return transformStream._backpressureChangePromise;\n}\n\nfunction TransformStreamSetBackpressure(transformStream, backpressure) {\n  // console.log(`TransformStreamSetBackpressure(${backpressure})`);\n\n  // Passes also when called during construction.\n  assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n\n  if (transformStream._backpressureChangePromise !== undefined) {\n    // The fulfillment value is just for a sanity check.\n    transformStream._backpressureChangePromise_resolve(backpressure);\n  }\n\n  transformStream._backpressureChangePromise = new Promise(function (resolve) {\n    transformStream._backpressureChangePromise_resolve = resolve;\n  });\n\n  transformStream._backpressureChangePromise.then(function (resolution) {\n    assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n  });\n\n  transformStream._backpressure = backpressure;\n}\n\nfunction TransformStreamDefaultTransform(chunk, transformStreamController) {\n  var transformStream = transformStreamController._controlledTransformStream;\n  TransformStreamEnqueueToReadable(transformStream, chunk);\n  return Promise.resolve();\n}\n\nfunction TransformStreamTransform(transformStream, chunk) {\n  // console.log('TransformStreamTransform()');\n\n  assert(transformStream._errored === false);\n  assert(transformStream._transforming === false);\n  assert(transformStream._backpressure === false);\n\n  transformStream._transforming = true;\n\n  var transformer = transformStream._transformer;\n  var controller = transformStream._transformStreamController;\n\n  var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n\n  return transformPromise.then(function () {\n    transformStream._transforming = false;\n\n    return TransformStreamReadableReadyPromise(transformStream);\n  }, function (e) {\n    TransformStreamErrorIfNeeded(transformStream, e);\n    return Promise.reject(e);\n  });\n}\n\nfunction IsTransformStreamDefaultController(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction IsTransformStream(x) {\n  if (!typeIsObject(x)) {\n    return false;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n    return false;\n  }\n\n  return true;\n}\n\nvar TransformStreamSink = function () {\n  function TransformStreamSink(transformStream, startPromise) {\n    _classCallCheck(this, TransformStreamSink);\n\n    this._transformStream = transformStream;\n    this._startPromise = startPromise;\n  }\n\n  _createClass(TransformStreamSink, [{\n    key: 'start',\n    value: function start(c) {\n      var transformStream = this._transformStream;\n\n      transformStream._writableController = c;\n\n      return this._startPromise.then(function () {\n        return TransformStreamReadableReadyPromise(transformStream);\n      });\n    }\n  }, {\n    key: 'write',\n    value: function write(chunk) {\n      // console.log('TransformStreamSink.write()');\n\n      var transformStream = this._transformStream;\n\n      return TransformStreamTransform(transformStream, chunk);\n    }\n  }, {\n    key: 'abort',\n    value: function abort() {\n      var transformStream = this._transformStream;\n      transformStream._writableDone = true;\n      TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      // console.log('TransformStreamSink.close()');\n\n      var transformStream = this._transformStream;\n\n      assert(transformStream._transforming === false);\n\n      transformStream._writableDone = true;\n\n      var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n      // Return a promise that is fulfilled with undefined on success.\n      return flushPromise.then(function () {\n        if (transformStream._errored === true) {\n          return Promise.reject(transformStream._storedError);\n        }\n        if (transformStream._readableClosed === false) {\n          TransformStreamCloseReadableInternal(transformStream);\n        }\n        return Promise.resolve();\n      }).catch(function (r) {\n        TransformStreamErrorIfNeeded(transformStream, r);\n        return Promise.reject(transformStream._storedError);\n      });\n    }\n  }]);\n\n  return TransformStreamSink;\n}();\n\nvar TransformStreamSource = function () {\n  function TransformStreamSource(transformStream, startPromise) {\n    _classCallCheck(this, TransformStreamSource);\n\n    this._transformStream = transformStream;\n    this._startPromise = startPromise;\n  }\n\n  _createClass(TransformStreamSource, [{\n    key: 'start',\n    value: function start(c) {\n      var transformStream = this._transformStream;\n\n      transformStream._readableController = c;\n\n      return this._startPromise.then(function () {\n        // Prevent the first pull() call until there is backpressure.\n\n        assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n        if (transformStream._backpressure === true) {\n          return Promise.resolve();\n        }\n\n        assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n\n        return transformStream._backpressureChangePromise;\n      });\n    }\n  }, {\n    key: 'pull',\n    value: function pull() {\n      // console.log('TransformStreamSource.pull()');\n\n      var transformStream = this._transformStream;\n\n      // Invariant. Enforced by the promises returned by start() and pull().\n      assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n\n      assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n      TransformStreamSetBackpressure(transformStream, false);\n\n      // Prevent the next pull() call until there is backpressure.\n      return transformStream._backpressureChangePromise;\n    }\n  }, {\n    key: 'cancel',\n    value: function cancel() {\n      var transformStream = this._transformStream;\n      transformStream._readableClosed = true;\n      TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n    }\n  }]);\n\n  return TransformStreamSource;\n}();\n\nvar TransformStreamDefaultController = function () {\n  function TransformStreamDefaultController(transformStream) {\n    _classCallCheck(this, TransformStreamDefaultController);\n\n    if (IsTransformStream(transformStream) === false) {\n      throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n    }\n\n    if (transformStream._transformStreamController !== undefined) {\n      throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n    }\n\n    this._controlledTransformStream = transformStream;\n  }\n\n  _createClass(TransformStreamDefaultController, [{\n    key: 'enqueue',\n    value: function enqueue(chunk) {\n      if (IsTransformStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('enqueue');\n      }\n\n      TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n    }\n  }, {\n    key: 'close',\n    value: function close() {\n      if (IsTransformStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('close');\n      }\n\n      TransformStreamCloseReadable(this._controlledTransformStream);\n    }\n  }, {\n    key: 'error',\n    value: function error(reason) {\n      if (IsTransformStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('error');\n      }\n\n      TransformStreamError(this._controlledTransformStream, reason);\n    }\n  }, {\n    key: 'desiredSize',\n    get: function get() {\n      if (IsTransformStreamDefaultController(this) === false) {\n        throw defaultControllerBrandCheckException('desiredSize');\n      }\n\n      var transformStream = this._controlledTransformStream;\n      var readableController = transformStream._readableController;\n\n      return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n    }\n  }]);\n\n  return TransformStreamDefaultController;\n}();\n\nvar TransformStream = function () {\n  function TransformStream() {\n    var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, TransformStream);\n\n    this._transformer = transformer;\n    var readableStrategy = transformer.readableStrategy,\n        writableStrategy = transformer.writableStrategy;\n\n\n    this._transforming = false;\n    this._errored = false;\n    this._storedError = undefined;\n\n    this._writableController = undefined;\n    this._readableController = undefined;\n    this._transformStreamController = undefined;\n\n    this._writableDone = false;\n    this._readableClosed = false;\n\n    this._backpressure = undefined;\n    this._backpressureChangePromise = undefined;\n    this._backpressureChangePromise_resolve = undefined;\n\n    this._transformStreamController = new TransformStreamDefaultController(this);\n\n    var startPromise_resolve = void 0;\n    var startPromise = new Promise(function (resolve) {\n      startPromise_resolve = resolve;\n    });\n\n    var source = new TransformStreamSource(this, startPromise);\n\n    this._readable = new ReadableStream(source, readableStrategy);\n\n    var sink = new TransformStreamSink(this, startPromise);\n\n    this._writable = new WritableStream(sink, writableStrategy);\n\n    assert(this._writableController !== undefined);\n    assert(this._readableController !== undefined);\n\n    var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n    // Set _backpressure based on desiredSize. As there is no read() at this point, we can just interpret\n    // desiredSize being non-positive as backpressure.\n    TransformStreamSetBackpressure(this, desiredSize <= 0);\n\n    var transformStream = this;\n    var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n    startPromise_resolve(startResult);\n    startPromise.catch(function (e) {\n      // The underlyingSink and underlyingSource will error the readable and writable ends on their own.\n      if (transformStream._errored === false) {\n        transformStream._errored = true;\n        transformStream._storedError = e;\n      }\n    });\n  }\n\n  _createClass(TransformStream, [{\n    key: 'readable',\n    get: function get() {\n      if (IsTransformStream(this) === false) {\n        throw streamBrandCheckException('readable');\n      }\n\n      return this._readable;\n    }\n  }, {\n    key: 'writable',\n    get: function get() {\n      if (IsTransformStream(this) === false) {\n        throw streamBrandCheckException('writable');\n      }\n\n      return this._writable;\n    }\n  }]);\n\n  return TransformStream;\n}();\n\nmodule.exports = { TransformStream: TransformStream };\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n  return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name) {\n  return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nmodule.exports = __w_pdfjs_require__(5);\n\n\n/***/ })\n/******/ ])));","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-restricted-globals */\n\nif (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('GENERIC')) {\n  // The `URL` constructor is assumed to be available in the extension builds.\n  exports.URL = URL;\n} else {\n  let isURLSupported = false;\n  try {\n    if (typeof URL === 'function' && typeof URL.prototype === 'object' &&\n        ('origin' in URL.prototype)) {\n      const u = new URL('b', 'http://a');\n      u.pathname = 'c%20d';\n      isURLSupported = (u.href === 'http://a/c%20d');\n    }\n  } catch (ex) {\n    // The `URL` constructor cannot be used.\n  }\n\n  if (isURLSupported) {\n    exports.URL = URL;\n  } else {\n    if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('IMAGE_DECODERS')) {\n      class DummyURL {\n        constructor() {\n          throw new Error('The current image decoders doesn\\'t utilize the ' +\n                          '`URL` constructor, hence it shouldn\\'t need to be ' +\n                          'polyfilled for the IMAGE_DECODERS build target.');\n        }\n      }\n      exports.URL = DummyURL;\n    } else {\n      const PolyfillURL = require('../../external/url/url-lib').URL;\n\n      // Attempt to copy over the static methods.\n      const OriginalURL = require('./global_scope').URL;\n      if (OriginalURL) {\n        PolyfillURL.createObjectURL = function(blob) {\n          // IE extension allows a second optional options argument, see\n          // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx\n          return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n        };\n        PolyfillURL.revokeObjectURL = function(url) {\n          OriginalURL.revokeObjectURL(url);\n        };\n      }\n      exports.URL = PolyfillURL;\n    }\n  }\n}\n","/* Any copyright is dedicated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/\n */\n\n// Polyfill obtained from: https://github.com/Polymer/URL\n\n(function URLConstructorClosure() {\n  'use strict';\n\n  var relative = Object.create(null);\n  relative['ftp'] = 21;\n  relative['file'] = 0;\n  relative['gopher'] = 70;\n  relative['http'] = 80;\n  relative['https'] = 443;\n  relative['ws'] = 80;\n  relative['wss'] = 443;\n\n  var relativePathDotMapping = Object.create(null);\n  relativePathDotMapping['%2e'] = '.';\n  relativePathDotMapping['.%2e'] = '..';\n  relativePathDotMapping['%2e.'] = '..';\n  relativePathDotMapping['%2e%2e'] = '..';\n\n  function isRelativeScheme(scheme) {\n    return relative[scheme] !== undefined;\n  }\n\n  function invalid() {\n    clear.call(this);\n    this._isInvalid = true;\n  }\n\n  function IDNAToASCII(h) {\n    if (h === '') {\n      invalid.call(this);\n    }\n    // XXX\n    return h.toLowerCase();\n  }\n\n  function percentEscape(c) {\n    var unicode = c.charCodeAt(0);\n    if (unicode > 0x20 &&\n       unicode < 0x7F &&\n       // \" # < > ? `\n       [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1\n      ) {\n      return c;\n    }\n    return encodeURIComponent(c);\n  }\n\n  function percentEscapeQuery(c) {\n    // XXX This actually needs to encode c using encoding and then\n    // convert the bytes one-by-one.\n\n    var unicode = c.charCodeAt(0);\n    if (unicode > 0x20 &&\n       unicode < 0x7F &&\n       // \" # < > ` (do not escape '?')\n       [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1\n      ) {\n      return c;\n    }\n    return encodeURIComponent(c);\n  }\n\n  var EOF, ALPHA = /[a-zA-Z]/,\n      ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\n  function parse(input, stateOverride, base) {\n    function err(message) {\n      errors.push(message);\n    }\n\n    var state = stateOverride || 'scheme start',\n        cursor = 0,\n        buffer = '',\n        seenAt = false,\n        seenBracket = false,\n        errors = [];\n\n    loop: while ((input[cursor - 1] !== EOF || cursor === 0) &&\n                 !this._isInvalid) {\n      var c = input[cursor];\n      switch (state) {\n        case 'scheme start':\n          if (c && ALPHA.test(c)) {\n            buffer += c.toLowerCase(); // ASCII-safe\n            state = 'scheme';\n          } else if (!stateOverride) {\n            buffer = '';\n            state = 'no scheme';\n            continue;\n          } else {\n            err('Invalid scheme.');\n            break loop;\n          }\n          break;\n\n        case 'scheme':\n          if (c && ALPHANUMERIC.test(c)) {\n            buffer += c.toLowerCase(); // ASCII-safe\n          } else if (c === ':') {\n            this._scheme = buffer;\n            buffer = '';\n            if (stateOverride) {\n              break loop;\n            }\n            if (isRelativeScheme(this._scheme)) {\n              this._isRelative = true;\n            }\n            if (this._scheme === 'file') {\n              state = 'relative';\n            } else if (this._isRelative && base &&\n                       base._scheme === this._scheme) {\n              state = 'relative or authority';\n            } else if (this._isRelative) {\n              state = 'authority first slash';\n            } else {\n              state = 'scheme data';\n            }\n          } else if (!stateOverride) {\n            buffer = '';\n            cursor = 0;\n            state = 'no scheme';\n            continue;\n          } else if (c === EOF) {\n            break loop;\n          } else {\n            err('Code point not allowed in scheme: ' + c);\n            break loop;\n          }\n          break;\n\n        case 'scheme data':\n          if (c === '?') {\n            this._query = '?';\n            state = 'query';\n          } else if (c === '#') {\n            this._fragment = '#';\n            state = 'fragment';\n          } else {\n            // XXX error handling\n            if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n              this._schemeData += percentEscape(c);\n            }\n          }\n          break;\n\n        case 'no scheme':\n          if (!base || !(isRelativeScheme(base._scheme))) {\n            err('Missing scheme.');\n            invalid.call(this);\n          } else {\n            state = 'relative';\n            continue;\n          }\n          break;\n\n        case 'relative or authority':\n          if (c === '/' && input[cursor + 1] === '/') {\n            state = 'authority ignore slashes';\n          } else {\n            err('Expected /, got: ' + c);\n            state = 'relative';\n            continue;\n          }\n          break;\n\n        case 'relative':\n          this._isRelative = true;\n          if (this._scheme !== 'file') {\n            this._scheme = base._scheme;\n          }\n          if (c === EOF) {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = base._query;\n            this._username = base._username;\n            this._password = base._password;\n            break loop;\n          } else if (c === '/' || c === '\\\\') {\n            if (c === '\\\\') {\n              err('\\\\ is an invalid code point.');\n            }\n            state = 'relative slash';\n          } else if (c === '?') {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = '?';\n            this._username = base._username;\n            this._password = base._password;\n            state = 'query';\n          } else if (c === '#') {\n            this._host = base._host;\n            this._port = base._port;\n            this._path = base._path.slice();\n            this._query = base._query;\n            this._fragment = '#';\n            this._username = base._username;\n            this._password = base._password;\n            state = 'fragment';\n          } else {\n            var nextC = input[cursor + 1];\n            var nextNextC = input[cursor + 2];\n            if (this._scheme !== 'file' || !ALPHA.test(c) ||\n                (nextC !== ':' && nextC !== '|') ||\n                (nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' &&\n                 nextNextC !== '?' && nextNextC !== '#')) {\n              this._host = base._host;\n              this._port = base._port;\n              this._username = base._username;\n              this._password = base._password;\n              this._path = base._path.slice();\n              this._path.pop();\n            }\n            state = 'relative path';\n            continue;\n          }\n          break;\n\n        case 'relative slash':\n          if (c === '/' || c === '\\\\') {\n            if (c === '\\\\') {\n              err('\\\\ is an invalid code point.');\n            }\n            if (this._scheme === 'file') {\n              state = 'file host';\n            } else {\n              state = 'authority ignore slashes';\n            }\n          } else {\n            if (this._scheme !== 'file') {\n              this._host = base._host;\n              this._port = base._port;\n              this._username = base._username;\n              this._password = base._password;\n            }\n            state = 'relative path';\n            continue;\n          }\n          break;\n\n        case 'authority first slash':\n          if (c === '/') {\n            state = 'authority second slash';\n          } else {\n            err('Expected \\'/\\', got: ' + c);\n            state = 'authority ignore slashes';\n            continue;\n          }\n          break;\n\n        case 'authority second slash':\n          state = 'authority ignore slashes';\n          if (c !== '/') {\n            err('Expected \\'/\\', got: ' + c);\n            continue;\n          }\n          break;\n\n        case 'authority ignore slashes':\n          if (c !== '/' && c !== '\\\\') {\n            state = 'authority';\n            continue;\n          } else {\n            err('Expected authority, got: ' + c);\n          }\n          break;\n\n        case 'authority':\n          if (c === '@') {\n            if (seenAt) {\n              err('@ already seen.');\n              buffer += '%40';\n            }\n            seenAt = true;\n            for (var i = 0; i < buffer.length; i++) {\n              var cp = buffer[i];\n              if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n                err('Invalid whitespace in authority.');\n                continue;\n              }\n              // XXX check URL code points\n              if (cp === ':' && this._password === null) {\n                this._password = '';\n                continue;\n              }\n              var tempC = percentEscape(cp);\n              if (this._password !== null) {\n                this._password += tempC;\n              } else {\n                this._username += tempC;\n              }\n            }\n            buffer = '';\n          } else if (c === EOF || c === '/' || c === '\\\\' ||\n                     c === '?' || c === '#') {\n            cursor -= buffer.length;\n            buffer = '';\n            state = 'host';\n            continue;\n          } else {\n            buffer += c;\n          }\n          break;\n\n        case 'file host':\n          if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n            if (buffer.length === 2 && ALPHA.test(buffer[0]) &&\n                (buffer[1] === ':' || buffer[1] === '|')) {\n              state = 'relative path';\n            } else if (buffer.length === 0) {\n              state = 'relative path start';\n            } else {\n              this._host = IDNAToASCII.call(this, buffer);\n              buffer = '';\n              state = 'relative path start';\n            }\n            continue;\n          } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n            err('Invalid whitespace in file host.');\n          } else {\n            buffer += c;\n          }\n          break;\n\n        case 'host':\n        case 'hostname':\n          if (c === ':' && !seenBracket) {\n            // XXX host parsing\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'port';\n            if (stateOverride === 'hostname') {\n              break loop;\n            }\n          } else if (c === EOF || c === '/' ||\n                     c === '\\\\' || c === '?' || c === '#') {\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'relative path start';\n            if (stateOverride) {\n              break loop;\n            }\n            continue;\n          } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            if (c === '[') {\n              seenBracket = true;\n            } else if (c === ']') {\n              seenBracket = false;\n            }\n            buffer += c;\n          } else {\n            err('Invalid code point in host/hostname: ' + c);\n          }\n          break;\n\n        case 'port':\n          if (/[0-9]/.test(c)) {\n            buffer += c;\n          } else if (c === EOF || c === '/' || c === '\\\\' ||\n                     c === '?' || c === '#' || stateOverride) {\n            if (buffer !== '') {\n              var temp = parseInt(buffer, 10);\n              if (temp !== relative[this._scheme]) {\n                this._port = temp + '';\n              }\n              buffer = '';\n            }\n            if (stateOverride) {\n              break loop;\n            }\n            state = 'relative path start';\n            continue;\n          } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n            err('Invalid code point in port: ' + c);\n          } else {\n            invalid.call(this);\n          }\n          break;\n\n        case 'relative path start':\n          if (c === '\\\\') {\n            err('\\'\\\\\\' not allowed in path.');\n          }\n          state = 'relative path';\n          if (c !== '/' && c !== '\\\\') {\n            continue;\n          }\n          break;\n\n        case 'relative path':\n          if (c === EOF || c === '/' || c === '\\\\' ||\n              (!stateOverride && (c === '?' || c === '#'))) {\n            if (c === '\\\\') {\n              err('\\\\ not allowed in relative path.');\n            }\n            var tmp;\n            if ((tmp = relativePathDotMapping[buffer.toLowerCase()])) {\n              buffer = tmp;\n            }\n            if (buffer === '..') {\n              this._path.pop();\n              if (c !== '/' && c !== '\\\\') {\n                this._path.push('');\n              }\n            } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n              this._path.push('');\n            } else if (buffer !== '.') {\n              if (this._scheme === 'file' && this._path.length === 0 &&\n                  buffer.length === 2 && ALPHA.test(buffer[0]) &&\n                  buffer[1] === '|') {\n                buffer = buffer[0] + ':';\n              }\n              this._path.push(buffer);\n            }\n            buffer = '';\n            if (c === '?') {\n              this._query = '?';\n              state = 'query';\n            } else if (c === '#') {\n              this._fragment = '#';\n              state = 'fragment';\n            }\n          } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            buffer += percentEscape(c);\n          }\n          break;\n\n        case 'query':\n          if (!stateOverride && c === '#') {\n            this._fragment = '#';\n            state = 'fragment';\n          } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            this._query += percentEscapeQuery(c);\n          }\n          break;\n\n        case 'fragment':\n          if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n            this._fragment += c;\n          }\n          break;\n      }\n\n      cursor++;\n    }\n  }\n\n  function clear() {\n    this._scheme = '';\n    this._schemeData = '';\n    this._username = '';\n    this._password = null;\n    this._host = '';\n    this._port = '';\n    this._path = [];\n    this._query = '';\n    this._fragment = '';\n    this._isInvalid = false;\n    this._isRelative = false;\n  }\n\n  // Does not process domain names or IP addresses.\n  // Does not handle encoding for the query parameter.\n  function JURL(url, base /* , encoding */) {\n    if (base !== undefined && !(base instanceof JURL)) {\n      base = new JURL(String(base));\n    }\n\n    this._url = url;\n    clear.call(this);\n\n    var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n    // encoding = encoding || 'utf-8'\n\n    parse.call(this, input, null, base);\n  }\n\n  JURL.prototype = {\n    toString() {\n      return this.href;\n    },\n    get href() {\n      if (this._isInvalid) {\n        return this._url;\n      }\n      var authority = '';\n      if (this._username !== '' || this._password !== null) {\n        authority = this._username +\n          (this._password !== null ? ':' + this._password : '') + '@';\n      }\n\n      return this.protocol +\n          (this._isRelative ? '//' + authority + this.host : '') +\n          this.pathname + this._query + this._fragment;\n    },\n    // The named parameter should be different from the setter's function name.\n    // Otherwise Safari 5 will throw an error (see issue 8541)\n    set href(value) {\n      clear.call(this);\n      parse.call(this, value);\n    },\n\n    get protocol() {\n      return this._scheme + ':';\n    },\n    set protocol(value) {\n      if (this._isInvalid) {\n        return;\n      }\n      parse.call(this, value + ':', 'scheme start');\n    },\n\n    get host() {\n      return this._isInvalid ? '' : this._port ?\n          this._host + ':' + this._port : this._host;\n    },\n    set host(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'host');\n    },\n\n    get hostname() {\n      return this._host;\n    },\n    set hostname(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'hostname');\n    },\n\n    get port() {\n      return this._port;\n    },\n    set port(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      parse.call(this, value, 'port');\n    },\n\n    get pathname() {\n      return this._isInvalid ? '' : this._isRelative ?\n          '/' + this._path.join('/') : this._schemeData;\n    },\n    set pathname(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      this._path = [];\n      parse.call(this, value, 'relative path start');\n    },\n\n    get search() {\n      return this._isInvalid || !this._query || this._query === '?' ?\n          '' : this._query;\n    },\n    set search(value) {\n      if (this._isInvalid || !this._isRelative) {\n        return;\n      }\n      this._query = '?';\n      if (value[0] === '?') {\n        value = value.slice(1);\n      }\n      parse.call(this, value, 'query');\n    },\n\n    get hash() {\n      return this._isInvalid || !this._fragment || this._fragment === '#' ?\n          '' : this._fragment;\n    },\n    set hash(value) {\n      if (this._isInvalid) {\n        return;\n      }\n      this._fragment = '#';\n      if (value[0] === '#') {\n        value = value.slice(1);\n      }\n      parse.call(this, value, 'fragment');\n    },\n\n    get origin() {\n      var host;\n      if (this._isInvalid || !this._scheme) {\n        return '';\n      }\n      // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n      // Gecko throws error for \"data://\"\n      // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n      // Gecko returns String(\"\") for file: mailto:\n      // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n      switch (this._scheme) {\n        case 'data':\n        case 'file':\n        case 'javascript':\n        case 'mailto':\n          return 'null';\n        case 'blob':\n          // Special case of blob: -- returns valid origin of _schemeData.\n          try {\n            return new JURL(this._schemeData).origin || 'null';\n          } catch (_) {\n            // Invalid _schemeData origin -- ignoring errors.\n          }\n          return 'null';\n      }\n      host = this.host;\n      if (!host) {\n        return '';\n      }\n      return this._scheme + '://' + host;\n    },\n  };\n\n  exports.URL = JURL;\n})();\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  createValidAbsoluteUrl, MissingDataException, shadow, unreachable, warn\n} from '../shared/util';\nimport { ChunkedStreamManager } from './chunked_stream';\nimport { PDFDocument } from './document';\nimport { Stream } from './stream';\n\nclass BasePdfManager {\n  constructor() {\n    if (this.constructor === BasePdfManager) {\n      unreachable('Cannot initialize BasePdfManager.');\n    }\n  }\n\n  get docId() {\n    return this._docId;\n  }\n\n  get password() {\n    return this._password;\n  }\n\n  get docBaseUrl() {\n    let docBaseUrl = null;\n    if (this._docBaseUrl) {\n      const absoluteUrl = createValidAbsoluteUrl(this._docBaseUrl);\n      if (absoluteUrl) {\n        docBaseUrl = absoluteUrl.href;\n      } else {\n        warn(`Invalid absolute docBaseUrl: \"${this._docBaseUrl}\".`);\n      }\n    }\n    return shadow(this, 'docBaseUrl', docBaseUrl);\n  }\n\n  onLoadedStream() {\n    unreachable('Abstract method `onLoadedStream` called');\n  }\n\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n\n  cleanup() {\n    return this.pdfDocument.cleanup();\n  }\n\n  async ensure(obj, prop, args) {\n    unreachable('Abstract method `ensure` called');\n  }\n\n  requestRange(begin, end) {\n    unreachable('Abstract method `requestRange` called');\n  }\n\n  requestLoadedStream() {\n    unreachable('Abstract method `requestLoadedStream` called');\n  }\n\n  sendProgressiveData(chunk) {\n    unreachable('Abstract method `sendProgressiveData` called');\n  }\n\n  updatePassword(password) {\n    this._password = password;\n  }\n\n  terminate() {\n    unreachable('Abstract method `terminate` called');\n  }\n}\n\nclass LocalPdfManager extends BasePdfManager {\n  constructor(docId, data, password, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = password;\n    this._docBaseUrl = docBaseUrl;\n    this.evaluatorOptions = evaluatorOptions;\n\n    const stream = new Stream(data);\n    this.pdfDocument = new PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n    if (typeof value === 'function') {\n      return value.apply(obj, args);\n    }\n    return value;\n  }\n\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n\n  requestLoadedStream() {}\n\n  onLoadedStream() {\n    return this._loadedStreamPromise;\n  }\n\n  terminate() {}\n}\n\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {\n    super();\n\n    this._docId = docId;\n    this._password = args.password;\n    this._docBaseUrl = docBaseUrl;\n    this.msgHandler = args.msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n\n    this.streamManager = new ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      url: args.url,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize,\n    });\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n  }\n\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n      if (typeof value === 'function') {\n        return value.apply(obj, args);\n      }\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof MissingDataException)) {\n        throw ex;\n      }\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n\n  requestLoadedStream() {\n    this.streamManager.requestAllChunks();\n  }\n\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({ chunk, });\n  }\n\n  onLoadedStream() {\n    return this.streamManager.onLoadedStream();\n  }\n\n  terminate() {\n    this.streamManager.abort();\n  }\n}\n\nexport {\n  LocalPdfManager,\n  NetworkPdfManager,\n};\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n  Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n  // Restore the original runtime.\n  g.regeneratorRuntime = oldRuntime;\n} else {\n  // Remove the global property added by runtime.js.\n  try {\n    delete g.regeneratorRuntime;\n  } catch(e) {\n    g.regeneratorRuntime = undefined;\n  }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  var inModule = typeof module === \"object\";\n  var runtime = global.regeneratorRuntime;\n  if (runtime) {\n    if (inModule) {\n      // If regeneratorRuntime is defined globally and we're in a module,\n      // make the exports object identical to regeneratorRuntime.\n      module.exports = runtime;\n    }\n    // Don't bother evaluating the rest of this file if the runtime was\n    // already defined globally.\n    return;\n  }\n\n  // Define the runtime globally (as expected by generated code) as either\n  // module.exports (if we're in a module) or a new, empty object.\n  runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  runtime.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunctionPrototype[toStringTagSymbol] =\n    GeneratorFunction.displayName = \"GeneratorFunction\";\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      prototype[method] = function(arg) {\n        return this._invoke(method, arg);\n      };\n    });\n  }\n\n  runtime.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  runtime.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      if (!(toStringTagSymbol in genFun)) {\n        genFun[toStringTagSymbol] = \"GeneratorFunction\";\n      }\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  runtime.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return Promise.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return Promise.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration. If the Promise is rejected, however, the\n          // result for this iteration will be rejected with the same\n          // reason. Note that rejections of yielded Promises are not\n          // thrown back into the generator function, as is the case\n          // when an awaited Promise is rejected. This difference in\n          // behavior between yield and await is important, because it\n          // allows the consumer to decide what to do with the yielded\n          // rejection (swallow it and continue, manually .throw it back\n          // into the generator, abandon iteration, whatever). With\n          // await, by contrast, there is no opportunity to examine the\n          // rejection reason outside the generator function, so the\n          // only option is to throw it from the await expression, and\n          // let the generator function handle the exception.\n          result.value = unwrapped;\n          resolve(result);\n        }, reject);\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new Promise(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  runtime.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList)\n    );\n\n    return runtime.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        if (delegate.iterator.return) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  Gp[toStringTagSymbol] = \"Generator\";\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  runtime.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  runtime.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n})(\n  // In sloppy mode, unbound `this` refers to the global object, fallback to\n  // Function constructor if we're in global strict mode. That is sadly a form\n  // of indirect eval which violates Content Security Policy.\n  (function() { return this })() || Function(\"return this\")()\n);\n","module.exports = function(module) {\r\n\tif (!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  arrayByteLength, arraysToBytes, createPromiseCapability, isEmptyObj,\n  MissingDataException\n} from '../shared/util';\n\nvar ChunkedStream = (function ChunkedStreamClosure() {\n  function ChunkedStream(length, chunkSize, manager) {\n    this.bytes = new Uint8Array(length);\n    this.start = 0;\n    this.pos = 0;\n    this.end = length;\n    this.chunkSize = chunkSize;\n    this.loadedChunks = [];\n    this.numChunksLoaded = 0;\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1;  // a single-entry cache\n  }\n\n  // required methods for a stream. if a particular stream does not\n  // implement these, an error should be thrown\n  ChunkedStream.prototype = {\n\n    getMissingChunks: function ChunkedStream_getMissingChunks() {\n      var chunks = [];\n      for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n        if (!this.loadedChunks[chunk]) {\n          chunks.push(chunk);\n        }\n      }\n      return chunks;\n    },\n\n    getBaseStreams: function ChunkedStream_getBaseStreams() {\n      return [this];\n    },\n\n    allChunksLoaded: function ChunkedStream_allChunksLoaded() {\n      return this.numChunksLoaded === this.numChunks;\n    },\n\n    onReceiveData: function ChunkedStream_onReceiveData(begin, chunk) {\n      var end = begin + chunk.byteLength;\n\n      if (begin % this.chunkSize !== 0) {\n        throw new Error(`Bad begin offset: ${begin}`);\n      }\n      // Using this.length is inaccurate here since this.start can be moved\n      // See ChunkedStream.moveStart()\n      var length = this.bytes.length;\n      if (end % this.chunkSize !== 0 && end !== length) {\n        throw new Error(`Bad end offset: ${end}`);\n      }\n\n      this.bytes.set(new Uint8Array(chunk), begin);\n      var chunkSize = this.chunkSize;\n      var beginChunk = Math.floor(begin / chunkSize);\n      var endChunk = Math.floor((end - 1) / chunkSize) + 1;\n      var curChunk;\n\n      for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n        if (!this.loadedChunks[curChunk]) {\n          this.loadedChunks[curChunk] = true;\n          ++this.numChunksLoaded;\n        }\n      }\n    },\n\n    onReceiveProgressiveData:\n        function ChunkedStream_onReceiveProgressiveData(data) {\n      var position = this.progressiveDataLength;\n      var beginChunk = Math.floor(position / this.chunkSize);\n\n      this.bytes.set(new Uint8Array(data), position);\n      position += data.byteLength;\n      this.progressiveDataLength = position;\n      var endChunk = position >= this.end ? this.numChunks :\n                     Math.floor(position / this.chunkSize);\n      var curChunk;\n      for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n        if (!this.loadedChunks[curChunk]) {\n          this.loadedChunks[curChunk] = true;\n          ++this.numChunksLoaded;\n        }\n      }\n    },\n\n    ensureByte: function ChunkedStream_ensureByte(pos) {\n      var chunk = Math.floor(pos / this.chunkSize);\n      if (chunk === this.lastSuccessfulEnsureByteChunk) {\n        return;\n      }\n\n      if (!this.loadedChunks[chunk]) {\n        throw new MissingDataException(pos, pos + 1);\n      }\n      this.lastSuccessfulEnsureByteChunk = chunk;\n    },\n\n    ensureRange: function ChunkedStream_ensureRange(begin, end) {\n      if (begin >= end) {\n        return;\n      }\n\n      if (end <= this.progressiveDataLength) {\n        return;\n      }\n\n      var chunkSize = this.chunkSize;\n      var beginChunk = Math.floor(begin / chunkSize);\n      var endChunk = Math.floor((end - 1) / chunkSize) + 1;\n      for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this.loadedChunks[chunk]) {\n          throw new MissingDataException(begin, end);\n        }\n      }\n    },\n\n    nextEmptyChunk: function ChunkedStream_nextEmptyChunk(beginChunk) {\n      var chunk, numChunks = this.numChunks;\n      for (var i = 0; i < numChunks; ++i) {\n        chunk = (beginChunk + i) % numChunks; // Wrap around to beginning\n        if (!this.loadedChunks[chunk]) {\n          return chunk;\n        }\n      }\n      return null;\n    },\n\n    hasChunk: function ChunkedStream_hasChunk(chunk) {\n      return !!this.loadedChunks[chunk];\n    },\n\n    get length() {\n      return this.end - this.start;\n    },\n\n    get isEmpty() {\n      return this.length === 0;\n    },\n\n    getByte: function ChunkedStream_getByte() {\n      var pos = this.pos;\n      if (pos >= this.end) {\n        return -1;\n      }\n      this.ensureByte(pos);\n      return this.bytes[this.pos++];\n    },\n\n    getUint16: function ChunkedStream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n\n    getInt32: function ChunkedStream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n\n    // Returns subarray of original buffer, should only be read.\n    getBytes(length, forceClamped = false) {\n      var bytes = this.bytes;\n      var pos = this.pos;\n      var strEnd = this.end;\n\n      if (!length) {\n        this.ensureRange(pos, strEnd);\n        let subarray = bytes.subarray(pos, strEnd);\n        // `this.bytes` is always a `Uint8Array` here.\n        return (forceClamped ? new Uint8ClampedArray(subarray) : subarray);\n      }\n\n      var end = pos + length;\n      if (end > strEnd) {\n        end = strEnd;\n      }\n      this.ensureRange(pos, end);\n\n      this.pos = end;\n      let subarray = bytes.subarray(pos, end);\n      // `this.bytes` is always a `Uint8Array` here.\n      return (forceClamped ? new Uint8ClampedArray(subarray) : subarray);\n    },\n\n    peekByte: function ChunkedStream_peekByte() {\n      var peekedByte = this.getByte();\n      this.pos--;\n      return peekedByte;\n    },\n\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n\n    getByteRange: function ChunkedStream_getBytes(begin, end) {\n      this.ensureRange(begin, end);\n      return this.bytes.subarray(begin, end);\n    },\n\n    skip: function ChunkedStream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n\n    reset: function ChunkedStream_reset() {\n      this.pos = this.start;\n    },\n\n    moveStart: function ChunkedStream_moveStart() {\n      this.start = this.pos;\n    },\n\n    makeSubStream: function ChunkedStream_makeSubStream(start, length, dict) {\n      this.ensureRange(start, start + length);\n\n      function ChunkedStreamSubstream() {}\n      ChunkedStreamSubstream.prototype = Object.create(this);\n      ChunkedStreamSubstream.prototype.getMissingChunks = function() {\n        var chunkSize = this.chunkSize;\n        var beginChunk = Math.floor(this.start / chunkSize);\n        var endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n        var missingChunks = [];\n        for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n          if (!this.loadedChunks[chunk]) {\n            missingChunks.push(chunk);\n          }\n        }\n        return missingChunks;\n      };\n      var subStream = new ChunkedStreamSubstream();\n      subStream.pos = subStream.start = start;\n      subStream.end = start + length || this.end;\n      subStream.dict = dict;\n      return subStream;\n    },\n  };\n\n  return ChunkedStream;\n})();\n\nvar ChunkedStreamManager = (function ChunkedStreamManagerClosure() {\n\n  function ChunkedStreamManager(pdfNetworkStream, args) {\n    var chunkSize = args.rangeChunkSize;\n    var length = args.length;\n    this.stream = new ChunkedStream(length, chunkSize, this);\n    this.length = length;\n    this.chunkSize = chunkSize;\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.url = args.url;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n\n    this.currRequestId = 0;\n\n    this.chunksNeededByRequest = Object.create(null);\n    this.requestsByChunk = Object.create(null);\n    this.promisesByRequest = Object.create(null);\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n\n    this._loadedStreamCapability = createPromiseCapability();\n  }\n\n  ChunkedStreamManager.prototype = {\n    onLoadedStream: function ChunkedStreamManager_getLoadedStream() {\n      return this._loadedStreamCapability.promise;\n    },\n\n    sendRequest: function ChunkedStreamManager_sendRequest(begin, end) {\n      var rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n      if (!rangeReader.isStreamingSupported) {\n        rangeReader.onProgress = this.onProgress.bind(this);\n      }\n      var chunks = [], loaded = 0;\n      var manager = this;\n      var promise = new Promise(function (resolve, reject) {\n        var readChunk = function (chunk) {\n          try {\n            if (!chunk.done) {\n              var data = chunk.value;\n              chunks.push(data);\n              loaded += arrayByteLength(data);\n              if (rangeReader.isStreamingSupported) {\n                manager.onProgress({ loaded, });\n              }\n              rangeReader.read().then(readChunk, reject);\n              return;\n            }\n            var chunkData = arraysToBytes(chunks);\n            chunks = null;\n            resolve(chunkData);\n          } catch (e) {\n            reject(e);\n          }\n        };\n        rangeReader.read().then(readChunk, reject);\n      });\n      promise.then((data) => {\n        if (this.aborted) {\n          return; // ignoring any data after abort\n        }\n        this.onReceiveData({ chunk: data, begin, });\n      });\n      // TODO check errors\n    },\n\n    // Get all the chunks that are not yet loaded and groups them into\n    // contiguous ranges to load in as few requests as possible\n    requestAllChunks: function ChunkedStreamManager_requestAllChunks() {\n      var missingChunks = this.stream.getMissingChunks();\n      this._requestChunks(missingChunks);\n      return this._loadedStreamCapability.promise;\n    },\n\n    _requestChunks: function ChunkedStreamManager_requestChunks(chunks) {\n      var requestId = this.currRequestId++;\n\n      var i, ii;\n      var chunksNeeded = Object.create(null);\n      this.chunksNeededByRequest[requestId] = chunksNeeded;\n      for (i = 0, ii = chunks.length; i < ii; i++) {\n        if (!this.stream.hasChunk(chunks[i])) {\n          chunksNeeded[chunks[i]] = true;\n        }\n      }\n\n      if (isEmptyObj(chunksNeeded)) {\n        return Promise.resolve();\n      }\n\n      var capability = createPromiseCapability();\n      this.promisesByRequest[requestId] = capability;\n\n      var chunksToRequest = [];\n      for (var chunk in chunksNeeded) {\n        chunk = chunk | 0;\n        if (!(chunk in this.requestsByChunk)) {\n          this.requestsByChunk[chunk] = [];\n          chunksToRequest.push(chunk);\n        }\n        this.requestsByChunk[chunk].push(requestId);\n      }\n\n      if (!chunksToRequest.length) {\n        return capability.promise;\n      }\n\n      var groupedChunksToRequest = this.groupChunks(chunksToRequest);\n\n      for (i = 0; i < groupedChunksToRequest.length; ++i) {\n        var groupedChunk = groupedChunksToRequest[i];\n        var begin = groupedChunk.beginChunk * this.chunkSize;\n        var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n        this.sendRequest(begin, end);\n      }\n\n      return capability.promise;\n    },\n\n    getStream: function ChunkedStreamManager_getStream() {\n      return this.stream;\n    },\n\n    // Loads any chunks in the requested range that are not yet loaded\n    requestRange: function ChunkedStreamManager_requestRange(begin, end) {\n\n      end = Math.min(end, this.length);\n\n      var beginChunk = this.getBeginChunk(begin);\n      var endChunk = this.getEndChunk(end);\n\n      var chunks = [];\n      for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n        chunks.push(chunk);\n      }\n\n      return this._requestChunks(chunks);\n    },\n\n    requestRanges: function ChunkedStreamManager_requestRanges(ranges) {\n      ranges = ranges || [];\n      var chunksToRequest = [];\n\n      for (var i = 0; i < ranges.length; i++) {\n        var beginChunk = this.getBeginChunk(ranges[i].begin);\n        var endChunk = this.getEndChunk(ranges[i].end);\n        for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n          if (!chunksToRequest.includes(chunk)) {\n            chunksToRequest.push(chunk);\n          }\n        }\n      }\n\n      chunksToRequest.sort(function(a, b) {\n        return a - b;\n      });\n      return this._requestChunks(chunksToRequest);\n    },\n\n    // Groups a sorted array of chunks into as few contiguous larger\n    // chunks as possible\n    groupChunks: function ChunkedStreamManager_groupChunks(chunks) {\n      var groupedChunks = [];\n      var beginChunk = -1;\n      var prevChunk = -1;\n      for (var i = 0; i < chunks.length; ++i) {\n        var chunk = chunks[i];\n\n        if (beginChunk < 0) {\n          beginChunk = chunk;\n        }\n\n        if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n          groupedChunks.push({ beginChunk,\n                               endChunk: prevChunk + 1, });\n          beginChunk = chunk;\n        }\n        if (i + 1 === chunks.length) {\n          groupedChunks.push({ beginChunk,\n                               endChunk: chunk + 1, });\n        }\n\n        prevChunk = chunk;\n      }\n      return groupedChunks;\n    },\n\n    onProgress: function ChunkedStreamManager_onProgress(args) {\n      var bytesLoaded = (this.stream.numChunksLoaded * this.chunkSize +\n                         args.loaded);\n      this.msgHandler.send('DocProgress', {\n        loaded: bytesLoaded,\n        total: this.length,\n      });\n    },\n\n    onReceiveData: function ChunkedStreamManager_onReceiveData(args) {\n      var chunk = args.chunk;\n      var isProgressive = args.begin === undefined;\n      var begin = isProgressive ? this.progressiveDataLength : args.begin;\n      var end = begin + chunk.byteLength;\n\n      var beginChunk = Math.floor(begin / this.chunkSize);\n      var endChunk = end < this.length ? Math.floor(end / this.chunkSize) :\n                                         Math.ceil(end / this.chunkSize);\n\n      if (isProgressive) {\n        this.stream.onReceiveProgressiveData(chunk);\n        this.progressiveDataLength = end;\n      } else {\n        this.stream.onReceiveData(begin, chunk);\n      }\n\n      if (this.stream.allChunksLoaded()) {\n        this._loadedStreamCapability.resolve(this.stream);\n      }\n\n      var loadedRequests = [];\n      var i, requestId;\n      for (chunk = beginChunk; chunk < endChunk; ++chunk) {\n        // The server might return more chunks than requested\n        var requestIds = this.requestsByChunk[chunk] || [];\n        delete this.requestsByChunk[chunk];\n\n        for (i = 0; i < requestIds.length; ++i) {\n          requestId = requestIds[i];\n          var chunksNeeded = this.chunksNeededByRequest[requestId];\n          if (chunk in chunksNeeded) {\n            delete chunksNeeded[chunk];\n          }\n\n          if (!isEmptyObj(chunksNeeded)) {\n            continue;\n          }\n\n          loadedRequests.push(requestId);\n        }\n      }\n\n      // If there are no pending requests, automatically fetch the next\n      // unfetched chunk of the PDF\n      if (!this.disableAutoFetch && isEmptyObj(this.requestsByChunk)) {\n        var nextEmptyChunk;\n        if (this.stream.numChunksLoaded === 1) {\n          // This is a special optimization so that after fetching the first\n          // chunk, rather than fetching the second chunk, we fetch the last\n          // chunk.\n          var lastChunk = this.stream.numChunks - 1;\n          if (!this.stream.hasChunk(lastChunk)) {\n            nextEmptyChunk = lastChunk;\n          }\n        } else {\n          nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n        }\n        if (Number.isInteger(nextEmptyChunk)) {\n          this._requestChunks([nextEmptyChunk]);\n        }\n      }\n\n      for (i = 0; i < loadedRequests.length; ++i) {\n        requestId = loadedRequests[i];\n        var capability = this.promisesByRequest[requestId];\n        delete this.promisesByRequest[requestId];\n        capability.resolve();\n      }\n\n      this.msgHandler.send('DocProgress', {\n        loaded: this.stream.numChunksLoaded * this.chunkSize,\n        total: this.length,\n      });\n    },\n\n    onError: function ChunkedStreamManager_onError(err) {\n      this._loadedStreamCapability.reject(err);\n    },\n\n    getBeginChunk: function ChunkedStreamManager_getBeginChunk(begin) {\n      var chunk = Math.floor(begin / this.chunkSize);\n      return chunk;\n    },\n\n    getEndChunk: function ChunkedStreamManager_getEndChunk(end) {\n      var chunk = Math.floor((end - 1) / this.chunkSize) + 1;\n      return chunk;\n    },\n\n    abort: function ChunkedStreamManager_abort() {\n      this.aborted = true;\n      if (this.pdfNetworkStream) {\n        this.pdfNetworkStream.cancelAllRequests('abort');\n      }\n      for (var requestId in this.promisesByRequest) {\n        var capability = this.promisesByRequest[requestId];\n        capability.reject(new Error('Request was aborted'));\n      }\n    },\n  };\n\n  return ChunkedStreamManager;\n})();\n\nexport {\n  ChunkedStream,\n  ChunkedStreamManager,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert, FormatError, getInheritableProperty, info, isArrayBuffer, isNum,\n  isSpace, isString, MissingDataException, OPS, shadow, stringToBytes,\n  stringToPDFString, Util, warn\n} from '../shared/util';\nimport { Catalog, ObjectLoader, XRef } from './obj';\nimport { Dict, isDict, isName, isStream, Ref } from './primitives';\nimport { NullStream, Stream, StreamsSequenceStream } from './stream';\nimport { AnnotationFactory } from './annotation';\nimport { calculateMD5 } from './crypto';\nimport { Linearization } from './parser';\nimport { OperatorList } from './operator_list';\nimport { PartialEvaluator } from './evaluator';\nimport { PDFFunctionFactory } from './function';\n\nvar Page = (function PageClosure() {\n\n  var DEFAULT_USER_UNIT = 1.0;\n  var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\n  function isAnnotationRenderable(annotation, intent) {\n    return (intent === 'display' && annotation.viewable) ||\n           (intent === 'print' && annotation.printable);\n  }\n\n  function Page({ pdfManager, xref, pageIndex, pageDict, ref, fontCache,\n                  builtInCMapCache, pdfFunctionFactory, }) {\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n\n    var uniquePrefix = 'p' + this.pageIndex + '_';\n    var idCounters = {\n      obj: 0,\n    };\n    this.idFactory = {\n      createObjId() {\n        return uniquePrefix + (++idCounters.obj);\n      },\n    };\n  }\n\n  Page.prototype = {\n    /**\n     * @private\n     */\n    _getInheritableProperty(key, getArray = false) {\n      let value = getInheritableProperty({ dict: this.pageDict, key, getArray,\n                                           stopWhenFound: false, });\n      if (!Array.isArray(value)) {\n        return value;\n      }\n      if (value.length === 1 || !isDict(value[0])) {\n        return value[0];\n      }\n      return Dict.merge(this.xref, value);\n    },\n\n    get content() {\n      return this.pageDict.get('Contents');\n    },\n\n    get resources() {\n      // For robustness: The spec states that a \\Resources entry has to be\n      // present, but can be empty. Some document omit it still, in this case\n      // we return an empty dictionary.\n      return shadow(this, 'resources',\n                    this._getInheritableProperty('Resources') || Dict.empty);\n    },\n\n    get mediaBox() {\n      var mediaBox = this._getInheritableProperty('MediaBox',\n                                                  /* getArray = */ true);\n      // Reset invalid media box to letter size.\n      if (!Array.isArray(mediaBox) || mediaBox.length !== 4) {\n        return shadow(this, 'mediaBox', LETTER_SIZE_MEDIABOX);\n      }\n      return shadow(this, 'mediaBox', mediaBox);\n    },\n\n    get cropBox() {\n      var cropBox = this._getInheritableProperty('CropBox',\n                                                 /* getArray = */ true);\n      // Reset invalid crop box to media box.\n      if (!Array.isArray(cropBox) || cropBox.length !== 4) {\n        return shadow(this, 'cropBox', this.mediaBox);\n      }\n      return shadow(this, 'cropBox', cropBox);\n    },\n\n    get userUnit() {\n      var obj = this.pageDict.get('UserUnit');\n      if (!isNum(obj) || obj <= 0) {\n        obj = DEFAULT_USER_UNIT;\n      }\n      return shadow(this, 'userUnit', obj);\n    },\n\n    get view() {\n      // From the spec, 6th ed., p.963:\n      // \"The crop, bleed, trim, and art boxes should not ordinarily\n      // extend beyond the boundaries of the media box. If they do, they are\n      // effectively reduced to their intersection with the media box.\"\n      var mediaBox = this.mediaBox, cropBox = this.cropBox;\n      if (mediaBox === cropBox) {\n        return shadow(this, 'view', mediaBox);\n      }\n      var intersection = Util.intersect(cropBox, mediaBox);\n      return shadow(this, 'view', intersection || mediaBox);\n    },\n\n    get rotate() {\n      var rotate = this._getInheritableProperty('Rotate') || 0;\n      // Normalize rotation so it's a multiple of 90 and between 0 and 270\n      if (rotate % 90 !== 0) {\n        rotate = 0;\n      } else if (rotate >= 360) {\n        rotate = rotate % 360;\n      } else if (rotate < 0) {\n        // The spec doesn't cover negatives, assume its counterclockwise\n        // rotation. The following is the other implementation of modulo.\n        rotate = ((rotate % 360) + 360) % 360;\n      }\n      return shadow(this, 'rotate', rotate);\n    },\n\n    getContentStream: function Page_getContentStream() {\n      var content = this.content;\n      var stream;\n      if (Array.isArray(content)) {\n        // fetching items\n        var xref = this.xref;\n        var i, n = content.length;\n        var streams = [];\n        for (i = 0; i < n; ++i) {\n          streams.push(xref.fetchIfRef(content[i]));\n        }\n        stream = new StreamsSequenceStream(streams);\n      } else if (isStream(content)) {\n        stream = content;\n      } else {\n        // replacing non-existent page content with empty one\n        stream = new NullStream();\n      }\n      return stream;\n    },\n\n    loadResources: function Page_loadResources(keys) {\n      if (!this.resourcesPromise) {\n        // TODO: add async `_getInheritableProperty` and remove this.\n        this.resourcesPromise = this.pdfManager.ensure(this, 'resources');\n      }\n      return this.resourcesPromise.then(() => {\n        let objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n\n        return objectLoader.load();\n      });\n    },\n\n    getOperatorList({ handler, task, intent, renderInteractiveForms, }) {\n      var contentStreamPromise = this.pdfManager.ensure(this,\n                                                        'getContentStream');\n      var resourcesPromise = this.loadResources([\n        'ExtGState',\n        'ColorSpace',\n        'Pattern',\n        'Shading',\n        'XObject',\n        'Font'\n        // ProcSet\n        // Properties\n      ]);\n\n      var partialEvaluator = new PartialEvaluator({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        handler,\n        pageIndex: this.pageIndex,\n        idFactory: this.idFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        options: this.evaluatorOptions,\n        pdfFunctionFactory: this.pdfFunctionFactory,\n      });\n\n      var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n      var pageListPromise = dataPromises.then(([contentStream]) => {\n        var opList = new OperatorList(intent, handler, this.pageIndex);\n\n        handler.send('StartRenderPage', {\n          transparency: partialEvaluator.hasBlendModes(this.resources),\n          pageIndex: this.pageIndex,\n          intent,\n        });\n        return partialEvaluator.getOperatorList({\n          stream: contentStream,\n          task,\n          resources: this.resources,\n          operatorList: opList,\n        }).then(function () {\n          return opList;\n        });\n      });\n\n      // Fetch the page's annotations and add their operator lists to the\n      // page's operator list to render them.\n      return Promise.all([pageListPromise, this._parsedAnnotations]).then(\n          function ([pageOpList, annotations]) {\n        if (annotations.length === 0) {\n          pageOpList.flush(true);\n          return pageOpList;\n        }\n\n        // Collect the operator list promises for the annotations. Each promise\n        // is resolved with the complete operator list for a single annotation.\n        var i, ii, opListPromises = [];\n        for (i = 0, ii = annotations.length; i < ii; i++) {\n          if (isAnnotationRenderable(annotations[i], intent)) {\n            opListPromises.push(annotations[i].getOperatorList(\n              partialEvaluator, task, renderInteractiveForms));\n          }\n        }\n\n        return Promise.all(opListPromises).then(function(opLists) {\n          pageOpList.addOp(OPS.beginAnnotations, []);\n          for (i = 0, ii = opLists.length; i < ii; i++) {\n            pageOpList.addOpList(opLists[i]);\n          }\n          pageOpList.addOp(OPS.endAnnotations, []);\n\n          pageOpList.flush(true);\n          return pageOpList;\n        });\n      });\n    },\n\n    extractTextContent({ handler, task, normalizeWhitespace,\n                         sink, combineTextItems, }) {\n      var contentStreamPromise = this.pdfManager.ensure(this,\n                                                        'getContentStream');\n      var resourcesPromise = this.loadResources([\n        'ExtGState',\n        'XObject',\n        'Font'\n      ]);\n\n      var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n      return dataPromises.then(([contentStream]) => {\n        var partialEvaluator = new PartialEvaluator({\n          pdfManager: this.pdfManager,\n          xref: this.xref,\n          handler,\n          pageIndex: this.pageIndex,\n          idFactory: this.idFactory,\n          fontCache: this.fontCache,\n          builtInCMapCache: this.builtInCMapCache,\n          options: this.evaluatorOptions,\n          pdfFunctionFactory: this.pdfFunctionFactory,\n        });\n\n        return partialEvaluator.getTextContent({\n          stream: contentStream,\n          task,\n          resources: this.resources,\n          normalizeWhitespace,\n          combineTextItems,\n          sink,\n        });\n      });\n    },\n\n    getAnnotationsData(intent) {\n      return this._parsedAnnotations.then(function(annotations) {\n        let annotationsData = [];\n        for (let i = 0, ii = annotations.length; i < ii; i++) {\n          if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n            annotationsData.push(annotations[i].data);\n          }\n        }\n        return annotationsData;\n      });\n    },\n\n    get annotations() {\n      return shadow(this, 'annotations',\n                    this._getInheritableProperty('Annots') || []);\n    },\n\n    get _parsedAnnotations() {\n      const parsedAnnotations =\n        this.pdfManager.ensure(this, 'annotations').then(() => {\n          const annotationRefs = this.annotations;\n          const annotationPromises = [];\n          for (let i = 0, ii = annotationRefs.length; i < ii; i++) {\n            annotationPromises.push(AnnotationFactory.create(\n              this.xref, annotationRefs[i], this.pdfManager, this.idFactory));\n          }\n\n          return Promise.all(annotationPromises).then(function(annotations) {\n            return annotations.filter(function isDefined(annotation) {\n              return !!annotation;\n            });\n          }, function(reason) {\n            warn(`_parsedAnnotations: \"${reason}\".`);\n            return [];\n          });\n        });\n\n      return shadow(this, '_parsedAnnotations', parsedAnnotations);\n    },\n  };\n\n  return Page;\n})();\n\n/**\n * The `PDFDocument` holds all the data of the PDF file. Compared to the\n * `PDFDoc`, this one doesn't have any job management code.\n * Right now there exists one PDFDocument on the main thread + one object\n * for each worker. If there is no worker support enabled, there are two\n * `PDFDocument` objects on the main thread created.\n */\nvar PDFDocument = (function PDFDocumentClosure() {\n  var FINGERPRINT_FIRST_BYTES = 1024;\n  var EMPTY_FINGERPRINT = '\\x00\\x00\\x00\\x00\\x00\\x00\\x00' +\n    '\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00';\n\n  function PDFDocument(pdfManager, arg) {\n    var stream;\n    if (isStream(arg)) {\n      stream = arg;\n    } else if (isArrayBuffer(arg)) {\n      stream = new Stream(arg);\n    } else {\n      throw new Error('PDFDocument: Unknown argument type');\n    }\n    if (stream.length <= 0) {\n      throw new Error('PDFDocument: stream must have data');\n    }\n\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new XRef(stream, pdfManager);\n\n    let evaluatorOptions = pdfManager.evaluatorOptions;\n    this.pdfFunctionFactory = new PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: evaluatorOptions.isEvalSupported,\n    });\n    this._pagePromises = [];\n  }\n\n  function find(stream, needle, limit, backwards) {\n    var pos = stream.pos;\n    var end = stream.end;\n    var strBuf = [];\n    if (pos + limit > end) {\n      limit = end - pos;\n    }\n    for (var n = 0; n < limit; ++n) {\n      strBuf.push(String.fromCharCode(stream.getByte()));\n    }\n    var str = strBuf.join('');\n    stream.pos = pos;\n    var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);\n    if (index === -1) {\n      return false; /* not found */\n    }\n    stream.pos += index;\n    return true; /* found */\n  }\n\n  const DocumentInfoValidators = {\n    Title: isString,\n    Author: isString,\n    Subject: isString,\n    Keywords: isString,\n    Creator: isString,\n    Producer: isString,\n    CreationDate: isString,\n    ModDate: isString,\n    Trapped: isName,\n  };\n\n  PDFDocument.prototype = {\n    parse: function PDFDocument_parse(recoveryMode) {\n      this.setup(recoveryMode);\n      var version = this.catalog.catDict.get('Version');\n      if (isName(version)) {\n        this.pdfFormatVersion = version.name;\n      }\n      try {\n        // checking if AcroForm is present\n        this.acroForm = this.catalog.catDict.get('AcroForm');\n        if (this.acroForm) {\n          this.xfa = this.acroForm.get('XFA');\n          var fields = this.acroForm.get('Fields');\n          if ((!fields || !Array.isArray(fields) || fields.length === 0) &&\n              !this.xfa) {\n            // no fields and no XFA -- not a form (?)\n            this.acroForm = null;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        info('Something wrong with AcroForm entry');\n        this.acroForm = null;\n      }\n    },\n\n    get linearization() {\n      let linearization = null;\n      try {\n        linearization = Linearization.create(this.stream);\n      } catch (err) {\n        if (err instanceof MissingDataException) {\n          throw err;\n        }\n        info(err);\n      }\n      // shadow the prototype getter with a data property\n      return shadow(this, 'linearization', linearization);\n    },\n    get startXRef() {\n      var stream = this.stream;\n      var startXRef = 0;\n      var linearization = this.linearization;\n      if (linearization) {\n        // Find end of first obj.\n        stream.reset();\n        if (find(stream, 'endobj', 1024)) {\n          startXRef = stream.pos + 6;\n        }\n      } else {\n        // Find startxref by jumping backward from the end of the file.\n        var step = 1024;\n        var found = false, pos = stream.end;\n        while (!found && pos > 0) {\n          pos -= step - 'startxref'.length;\n          if (pos < 0) {\n            pos = 0;\n          }\n          stream.pos = pos;\n          found = find(stream, 'startxref', step, true);\n        }\n        if (found) {\n          stream.skip(9);\n          var ch;\n          do {\n            ch = stream.getByte();\n          } while (isSpace(ch));\n          var str = '';\n          while (ch >= 0x20 && ch <= 0x39) { // < '9'\n            str += String.fromCharCode(ch);\n            ch = stream.getByte();\n          }\n          startXRef = parseInt(str, 10);\n          if (isNaN(startXRef)) {\n            startXRef = 0;\n          }\n        }\n      }\n      // shadow the prototype getter with a data property\n      return shadow(this, 'startXRef', startXRef);\n    },\n\n    // Find the header, remove leading garbage and setup the stream\n    // starting from the header.\n    checkHeader: function PDFDocument_checkHeader() {\n      var stream = this.stream;\n      stream.reset();\n      if (find(stream, '%PDF-', 1024)) {\n        // Found the header, trim off any garbage before it.\n        stream.moveStart();\n        // Reading file format version\n        var MAX_VERSION_LENGTH = 12;\n        var version = '', ch;\n        while ((ch = stream.getByte()) > 0x20) { // SPACE\n          if (version.length >= MAX_VERSION_LENGTH) {\n            break;\n          }\n          version += String.fromCharCode(ch);\n        }\n        if (!this.pdfFormatVersion) {\n          // removing \"%PDF-\"-prefix\n          this.pdfFormatVersion = version.substring(5);\n        }\n        return;\n      }\n      // May not be a PDF file, continue anyway.\n    },\n    parseStartXRef: function PDFDocument_parseStartXRef() {\n      var startXRef = this.startXRef;\n      this.xref.setStartXRef(startXRef);\n    },\n    setup: function PDFDocument_setup(recoveryMode) {\n      this.xref.parse(recoveryMode);\n      this.catalog = new Catalog(this.pdfManager, this.xref);\n    },\n    get numPages() {\n      var linearization = this.linearization;\n      var num = linearization ? linearization.numPages : this.catalog.numPages;\n      // shadow the prototype getter\n      return shadow(this, 'numPages', num);\n    },\n    get documentInfo() {\n      const docInfo = {\n        PDFFormatVersion: this.pdfFormatVersion,\n        IsLinearized: !!this.linearization,\n        IsAcroFormPresent: !!this.acroForm,\n        IsXFAPresent: !!this.xfa,\n      };\n      let infoDict;\n      try {\n        infoDict = this.xref.trailer.get('Info');\n      } catch (err) {\n        if (err instanceof MissingDataException) {\n          throw err;\n        }\n        info('The document information dictionary is invalid.');\n      }\n      if (isDict(infoDict)) {\n        // Only fill the document info with valid entries from the spec.\n        for (let key in DocumentInfoValidators) {\n          if (infoDict.has(key)) {\n            const value = infoDict.get(key);\n            // Make sure the value conforms to the spec.\n            if (DocumentInfoValidators[key](value)) {\n              docInfo[key] = (typeof value !== 'string' ?\n                              value : stringToPDFString(value));\n            } else {\n              info('Bad value in document info for \"' + key + '\"');\n            }\n          }\n        }\n      }\n      return shadow(this, 'documentInfo', docInfo);\n    },\n    get fingerprint() {\n      var xref = this.xref, hash, fileID = '';\n      var idArray = xref.trailer.get('ID');\n\n      if (Array.isArray(idArray) && idArray[0] && isString(idArray[0]) &&\n          idArray[0] !== EMPTY_FINGERPRINT) {\n        hash = stringToBytes(idArray[0]);\n      } else {\n        if (this.stream.ensureRange) {\n          this.stream.ensureRange(0,\n            Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end));\n        }\n        hash = calculateMD5(this.stream.bytes.subarray(0,\n          FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n      }\n\n      for (var i = 0, n = hash.length; i < n; i++) {\n        var hex = hash[i].toString(16);\n        fileID += hex.length === 1 ? '0' + hex : hex;\n      }\n\n      return shadow(this, 'fingerprint', fileID);\n    },\n\n    _getLinearizationPage(pageIndex) {\n      const { catalog, linearization, } = this;\n      assert(linearization && linearization.pageFirst === pageIndex);\n\n      const ref = new Ref(linearization.objectNumberFirst, 0);\n      return this.xref.fetchAsync(ref).then((obj) => {\n        // Ensure that the object that was found is actually a Page dictionary.\n        if (isDict(obj, 'Page') ||\n            (isDict(obj) && !obj.has('Type') && obj.has('Contents'))) {\n          if (ref && !catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1); // Cache the Page reference.\n          }\n          return [obj, ref];\n        }\n        throw new FormatError('The Linearization dictionary doesn\\'t point ' +\n                              'to a valid Page dictionary.');\n      }).catch((reason) => {\n        info(reason);\n        return catalog.getPageDict(pageIndex);\n      });\n    },\n\n    getPage(pageIndex) {\n      if (this._pagePromises[pageIndex] !== undefined) {\n        return this._pagePromises[pageIndex];\n      }\n      const { catalog, linearization, } = this;\n\n      const promise = (linearization && linearization.pageFirst === pageIndex) ?\n        this._getLinearizationPage(pageIndex) : catalog.getPageDict(pageIndex);\n\n      return this._pagePromises[pageIndex] = promise.then(([pageDict, ref]) => {\n        return new Page({\n          pdfManager: this.pdfManager,\n          xref: this.xref,\n          pageIndex,\n          pageDict,\n          ref,\n          fontCache: catalog.fontCache,\n          builtInCMapCache: catalog.builtInCMapCache,\n          pdfFunctionFactory: this.pdfFunctionFactory,\n        });\n      });\n    },\n\n    cleanup: function PDFDocument_cleanup() {\n      return this.catalog.cleanup();\n    },\n  };\n\n  return PDFDocument;\n})();\n\nexport {\n  Page,\n  PDFDocument,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString, createPromiseCapability, createValidAbsoluteUrl, FormatError,\n  info, InvalidPDFException, isBool, isNum, isString, MissingDataException,\n  PermissionFlag, shadow, stringToPDFString, stringToUTF8String,\n  toRomanNumerals, unreachable, warn, XRefParseException\n} from '../shared/util';\nimport {\n  Dict, isCmd, isDict, isName, isRef, isRefsEqual, isStream, Ref, RefSet,\n  RefSetCache\n} from './primitives';\nimport { Lexer, Parser } from './parser';\nimport { ChunkedStream } from './chunked_stream';\nimport { CipherTransformFactory } from './crypto';\nimport { ColorSpace } from './colorspace';\n\nfunction fetchDestination(dest) {\n  return isDict(dest) ? dest.get('D') : dest;\n}\n\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n\n    this.catDict = xref.getCatalogObj();\n    if (!isDict(this.catDict)) {\n      throw new FormatError('Catalog object is not a dictionary.');\n    }\n\n    this.fontCache = new RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.pageKidsCountCache = new RefSetCache();\n  }\n\n  get metadata() {\n    const streamRef = this.catDict.getRaw('Metadata');\n    if (!isRef(streamRef)) {\n      return shadow(this, 'metadata', null);\n    }\n\n    const suppressEncryption = !(this.xref.encrypt &&\n                                 this.xref.encrypt.encryptMetadata);\n    const stream = this.xref.fetch(streamRef, suppressEncryption);\n    let metadata;\n\n    if (stream && isDict(stream.dict)) {\n      const type = stream.dict.get('Type');\n      const subtype = stream.dict.get('Subtype');\n\n      if (isName(type, 'Metadata') && isName(subtype, 'XML')) {\n        // XXX: This should examine the charset the XML document defines,\n        // however since there are currently no real means to decode\n        // arbitrary charsets, let's just hope that the author of the PDF\n        // was reasonable enough to stick with the XML default charset,\n        // which is UTF-8.\n        try {\n          metadata = stringToUTF8String(bytesToString(stream.getBytes()));\n        } catch (e) {\n          if (e instanceof MissingDataException) {\n            throw e;\n          }\n          info('Skipping invalid metadata.');\n        }\n      }\n    }\n    return shadow(this, 'metadata', metadata);\n  }\n\n  get toplevelPagesDict() {\n    const pagesObj = this.catDict.get('Pages');\n    if (!isDict(pagesObj)) {\n      throw new FormatError('Invalid top-level pages dictionary.');\n    }\n    return shadow(this, 'toplevelPagesDict', pagesObj);\n  }\n\n  get documentOutline() {\n    let obj = null;\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn('Unable to read document outline.');\n    }\n    return shadow(this, 'documentOutline', obj);\n  }\n\n  /**\n   * @private\n   */\n  _readDocumentOutline() {\n    let obj = this.catDict.get('Outlines');\n    if (!isDict(obj)) {\n      return null;\n    }\n    obj = obj.getRaw('First');\n    if (!isRef(obj)) {\n      return null;\n    }\n\n    const root = { items: [], };\n    const queue = [{ obj, parent: root, }];\n    // To avoid recursion, keep track of the already processed items.\n    const processed = new RefSet();\n    processed.put(obj);\n    const xref = this.xref, blackColor = new Uint8ClampedArray(3);\n\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n      if (outlineDict === null) {\n        continue;\n      }\n      if (!outlineDict.has('Title')) {\n        throw new FormatError('Invalid outline item encountered.');\n      }\n\n      const data = { url: null, dest: null, };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.pdfManager.docBaseUrl,\n      });\n      const title = outlineDict.get('Title');\n      const flags = outlineDict.get('F') || 0;\n      const color = outlineDict.getArray('C');\n      let rgbColor = blackColor;\n\n      // We only need to parse the color when it's valid, and non-default.\n      if (Array.isArray(color) && color.length === 3 &&\n          (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n\n      const outlineItem = {\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        title: stringToPDFString(title),\n        color: rgbColor,\n        count: outlineDict.get('Count'),\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: [],\n      };\n\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw('First');\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: outlineItem, });\n        processed.put(obj);\n      }\n      obj = outlineDict.getRaw('Next');\n      if (isRef(obj) && !processed.has(obj)) {\n        queue.push({ obj, parent: i.parent, });\n        processed.put(obj);\n      }\n    }\n    return (root.items.length > 0 ? root.items : null);\n  }\n\n  get permissions() {\n    let permissions = null;\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn('Unable to read permissions.');\n    }\n    return shadow(this, 'permissions', permissions);\n  }\n\n  /**\n   * @private\n   */\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get('Encrypt');\n    if (!isDict(encrypt)) {\n      return null;\n    }\n\n    let flags = encrypt.get('P');\n    if (!isNum(flags)) {\n      return null;\n    }\n\n    // PDF integer objects are represented internally in signed 2's complement\n    // form. Therefore, convert the signed decimal integer to a signed 2's\n    // complement binary integer so we can use regular bitwise operations on it.\n    flags += 2 ** 32;\n\n    const permissions = [];\n    for (const key in PermissionFlag) {\n      const value = PermissionFlag[key];\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n    return permissions;\n  }\n\n  get numPages() {\n    const obj = this.toplevelPagesDict.get('Count');\n    if (!Number.isInteger(obj)) {\n      throw new FormatError(\n        'Page count in top-level pages dictionary is not an integer.');\n    }\n    return shadow(this, 'numPages', obj);\n  }\n\n  get destinations() {\n    const obj = this._readDests(), dests = Object.create(null);\n    if (obj instanceof NameTree) {\n      const names = obj.getAll();\n      for (let name in names) {\n        dests[name] = fetchDestination(names[name]);\n      }\n    } else if (obj instanceof Dict) {\n      obj.forEach(function(key, value) {\n        if (value) {\n          dests[key] = fetchDestination(value);\n        }\n      });\n    }\n    return shadow(this, 'destinations', dests);\n  }\n\n  getDestination(destinationId) {\n    const obj = this._readDests();\n    if (obj instanceof NameTree || obj instanceof Dict) {\n      return fetchDestination(obj.get(destinationId) || null);\n    }\n    return null;\n  }\n\n  /**\n   * @private\n   */\n  _readDests() {\n    const obj = this.catDict.get('Names');\n    if (obj && obj.has('Dests')) {\n      return new NameTree(obj.getRaw('Dests'), this.xref);\n    } else if (this.catDict.has('Dests')) { // Simple destination dictionary.\n      return this.catDict.get('Dests');\n    }\n  }\n\n  get pageLabels() {\n    let obj = null;\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      warn('Unable to read page labels.');\n    }\n    return shadow(this, 'pageLabels', obj);\n  }\n\n  /**\n   * @private\n   */\n  _readPageLabels() {\n    const obj = this.catDict.getRaw('PageLabels');\n    if (!obj) {\n      return null;\n    }\n\n    const pageLabels = new Array(this.numPages);\n    let style = null, prefix = '';\n\n    const numberTree = new NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = '', currentIndex = 1;\n\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      if (i in nums) {\n        const labelDict = nums[i];\n        if (!isDict(labelDict)) {\n          throw new FormatError('PageLabel is not a dictionary.');\n        }\n\n        if (labelDict.has('Type') &&\n            !isName(labelDict.get('Type'), 'PageLabel')) {\n          throw new FormatError('Invalid type in PageLabel dictionary.');\n        }\n\n        if (labelDict.has('S')) {\n          const s = labelDict.get('S');\n          if (!isName(s)) {\n            throw new FormatError('Invalid style in PageLabel dictionary.');\n          }\n          style = s.name;\n        } else {\n          style = null;\n        }\n\n        if (labelDict.has('P')) {\n          const p = labelDict.get('P');\n          if (!isString(p)) {\n            throw new FormatError('Invalid prefix in PageLabel dictionary.');\n          }\n          prefix = stringToPDFString(p);\n        } else {\n          prefix = '';\n        }\n\n        if (labelDict.has('St')) {\n          const st = labelDict.get('St');\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new FormatError('Invalid start in PageLabel dictionary.');\n          }\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n\n      switch (style) {\n        case 'D':\n          currentLabel = currentIndex;\n          break;\n        case 'R':\n        case 'r':\n          currentLabel = toRomanNumerals(currentIndex, style === 'r');\n          break;\n        case 'A':\n        case 'a':\n          const LIMIT = 26; // Use only the characters A-Z, or a-z.\n          const A_UPPER_CASE = 0x41, A_LOWER_CASE = 0x61;\n\n          const baseCharCode = (style === 'a' ? A_LOWER_CASE : A_UPPER_CASE);\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(baseCharCode +\n                                                (letterIndex % LIMIT));\n          const charBuf = [];\n          for (let j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n            charBuf.push(character);\n          }\n          currentLabel = charBuf.join('');\n          break;\n        default:\n          if (style) {\n            throw new FormatError(\n              `Invalid style \"${style}\" in PageLabel dictionary.`);\n          }\n          currentLabel = '';\n      }\n\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n    return pageLabels;\n  }\n\n  get pageMode() {\n    const obj = this.catDict.get('PageMode');\n    let pageMode = 'UseNone'; // Default value.\n\n    if (isName(obj)) {\n      switch (obj.name) {\n        case 'UseNone':\n        case 'UseOutlines':\n        case 'UseThumbs':\n        case 'FullScreen':\n        case 'UseOC':\n        case 'UseAttachments':\n          pageMode = obj.name;\n      }\n    }\n    return shadow(this, 'pageMode', pageMode);\n  }\n\n  get attachments() {\n    const obj = this.catDict.get('Names');\n    let attachments = null;\n\n    if (obj && obj.has('EmbeddedFiles')) {\n      const nameTree = new NameTree(obj.getRaw('EmbeddedFiles'), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        const fs = new FileSpec(names[name], this.xref);\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n        attachments[stringToPDFString(name)] = fs.serializable;\n      }\n    }\n    return shadow(this, 'attachments', attachments);\n  }\n\n  get javaScript() {\n    const obj = this.catDict.get('Names');\n\n    let javaScript = null;\n    function appendIfJavaScriptDict(jsDict) {\n      const type = jsDict.get('S');\n      if (!isName(type, 'JavaScript')) {\n        return;\n      }\n\n      let js = jsDict.get('JS');\n      if (isStream(js)) {\n        js = bytesToString(js.getBytes());\n      } else if (!isString(js)) {\n        return;\n      }\n\n      if (!javaScript) {\n        javaScript = [];\n      }\n      javaScript.push(stringToPDFString(js));\n    }\n\n    if (obj && obj.has('JavaScript')) {\n      const nameTree = new NameTree(obj.getRaw('JavaScript'), this.xref);\n      const names = nameTree.getAll();\n      for (const name in names) {\n        // We don't use most JavaScript in PDF documents. This code is\n        // defensive so we don't cause errors on document load.\n        const jsDict = names[name];\n        if (isDict(jsDict)) {\n          appendIfJavaScriptDict(jsDict);\n        }\n      }\n    }\n\n    // Append OpenAction actions to the JavaScript array.\n    const openActionDict = this.catDict.get('OpenAction');\n    if (isDict(openActionDict, 'Action')) {\n      const actionType = openActionDict.get('S');\n      if (isName(actionType, 'Named')) {\n        // The named Print action is not a part of the PDF 1.7 specification,\n        // but is supported by many PDF readers/writers (including Adobe's).\n        const action = openActionDict.get('N');\n        if (isName(action, 'Print')) {\n          if (!javaScript) {\n            javaScript = [];\n          }\n          javaScript.push('print({});');\n        }\n      } else {\n        appendIfJavaScriptDict(openActionDict);\n      }\n    }\n\n    return shadow(this, 'javaScript', javaScript);\n  }\n\n  cleanup() {\n    this.pageKidsCountCache.clear();\n\n    const promises = [];\n    this.fontCache.forEach(function(promise) {\n      promises.push(promise);\n    });\n\n    return Promise.all(promises).then((translatedFonts) => {\n      for (let i = 0, ii = translatedFonts.length; i < ii; i++) {\n        const font = translatedFonts[i].dict;\n        delete font.translated;\n      }\n      this.fontCache.clear();\n      this.builtInCMapCache.clear();\n    });\n  }\n\n  getPageDict(pageIndex) {\n    const capability = createPromiseCapability();\n    const nodesToVisit = [this.catDict.getRaw('Pages')];\n    const xref = this.xref, pageKidsCountCache = this.pageKidsCountCache;\n    let count, currentPageIndex = 0;\n\n    function next() {\n      while (nodesToVisit.length) {\n        const currentNode = nodesToVisit.pop();\n\n        if (isRef(currentNode)) {\n          count = pageKidsCountCache.get(currentNode);\n          // Skip nodes where the page can't be.\n          if (count > 0 && currentPageIndex + count < pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n\n          xref.fetchAsync(currentNode).then(function(obj) {\n            if (isDict(obj, 'Page') || (isDict(obj) && !obj.has('Kids'))) {\n              if (pageIndex === currentPageIndex) {\n                // Cache the Page reference, since it can *greatly* improve\n                // performance by reducing redundant lookups in long documents\n                // where all nodes are found at *one* level of the tree.\n                if (currentNode && !pageKidsCountCache.has(currentNode)) {\n                  pageKidsCountCache.put(currentNode, 1);\n                }\n                capability.resolve([obj, currentNode]);\n              } else {\n                currentPageIndex++;\n                next();\n              }\n              return;\n            }\n            nodesToVisit.push(obj);\n            next();\n          }, capability.reject);\n          return;\n        }\n\n        // Must be a child page dictionary.\n        if (!isDict(currentNode)) {\n          capability.reject(new FormatError(\n            'Page dictionary kid reference points to wrong type of object.'));\n          return;\n        }\n\n        count = currentNode.get('Count');\n        if (Number.isInteger(count) && count >= 0) {\n          // Cache the Kids count, since it can reduce redundant lookups in\n          // documents where all nodes are found at *one* level of the tree.\n          const objId = currentNode.objId;\n          if (objId && !pageKidsCountCache.has(objId)) {\n            pageKidsCountCache.put(objId, count);\n          }\n          // Skip nodes where the page can't be.\n          if (currentPageIndex + count <= pageIndex) {\n            currentPageIndex += count;\n            continue;\n          }\n        }\n\n        const kids = currentNode.get('Kids');\n        if (!Array.isArray(kids)) {\n          // Prevent errors in corrupt PDF documents that violate the\n          // specification by *inlining* Page dicts directly in the Kids\n          // array, rather than using indirect objects (fixes issue9540.pdf).\n          if (isName(currentNode.get('Type'), 'Page') ||\n              (!currentNode.has('Type') && currentNode.has('Contents'))) {\n            if (currentPageIndex === pageIndex) {\n              capability.resolve([currentNode, null]);\n              return;\n            }\n            currentPageIndex++;\n            continue;\n          }\n\n          capability.reject(new FormatError(\n            'Page dictionary kids object is not an array.'));\n          return;\n        }\n\n        // Always check all `Kids` nodes, to avoid getting stuck in an empty\n        // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n        // and to ensure that we actually find the correct `Page` dict.\n        for (let last = kids.length - 1; last >= 0; last--) {\n          nodesToVisit.push(kids[last]);\n        }\n      }\n      capability.reject(new Error(`Page index ${pageIndex} not found.`));\n    }\n    next();\n    return capability.promise;\n  }\n\n  getPageIndex(pageRef) {\n    // The page tree nodes have the count of all the leaves below them. To get\n    // how many pages are before we just have to walk up the tree and keep\n    // adding the count of siblings to the left of the node.\n    const xref = this.xref;\n\n    function pagesBeforeRef(kidRef) {\n      let total = 0, parentRef;\n\n      return xref.fetchAsync(kidRef).then(function(node) {\n        if (isRefsEqual(kidRef, pageRef) && !isDict(node, 'Page') &&\n            !(isDict(node) && !node.has('Type') && node.has('Contents'))) {\n          throw new FormatError(\n            'The reference does not point to a /Page dictionary.');\n        }\n        if (!node) {\n          return null;\n        }\n        if (!isDict(node)) {\n          throw new FormatError('Node must be a dictionary.');\n        }\n        parentRef = node.getRaw('Parent');\n        return node.getAsync('Parent');\n      }).then(function(parent) {\n        if (!parent) {\n          return null;\n        }\n        if (!isDict(parent)) {\n          throw new FormatError('Parent must be a dictionary.');\n        }\n        return parent.getAsync('Kids');\n      }).then(function(kids) {\n        if (!kids) {\n          return null;\n        }\n\n        const kidPromises = [];\n        let found = false;\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n          if (!isRef(kid)) {\n            throw new FormatError('Kid must be a reference.');\n          }\n          if (isRefsEqual(kid, kidRef)) {\n            found = true;\n            break;\n          }\n          kidPromises.push(xref.fetchAsync(kid).then(function(kid) {\n            if (!isDict(kid)) {\n              throw new FormatError('Kid node must be a dictionary.');\n            }\n            if (kid.has('Count')) {\n              total += kid.get('Count');\n            } else { // Page leaf node.\n              total++;\n            }\n          }));\n        }\n        if (!found) {\n          throw new FormatError('Kid reference not found in parent\\'s kids.');\n        }\n        return Promise.all(kidPromises).then(function() {\n          return [total, parentRef];\n        });\n      });\n    }\n\n    let total = 0;\n    function next(ref) {\n      return pagesBeforeRef(ref).then(function(args) {\n        if (!args) {\n          return total;\n        }\n        const [count, parentRef] = args;\n        total += count;\n        return next(parentRef);\n      });\n    }\n\n    return next(pageRef);\n  }\n\n  /**\n   * @typedef ParseDestDictionaryParameters\n   * @property {Dict} destDict - The dictionary containing the destination.\n   * @property {Object} resultObj - The object where the parsed destination\n   *   properties will be placed.\n   * @property {string} docBaseUrl - (optional) The document base URL that is\n   *   used when attempting to recover valid absolute URLs from relative ones.\n   */\n\n  /**\n   * Helper function used to parse the contents of destination dictionaries.\n   * @param {ParseDestDictionaryParameters} params\n   */\n  static parseDestDictionary(params) {\n    // Lets URLs beginning with 'www.' default to using the 'http://' protocol.\n    function addDefaultProtocolToUrl(url) {\n      if (url.indexOf('www.') === 0) {\n        return `http://${url}`;\n      }\n      return url;\n    }\n\n    // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n    // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see Bugzilla 1122280.\n    function tryConvertUrlEncoding(url) {\n      try {\n        return stringToUTF8String(url);\n      } catch (e) {\n        return url;\n      }\n    }\n\n    const destDict = params.destDict;\n    if (!isDict(destDict)) {\n      warn('parseDestDictionary: `destDict` must be a dictionary.');\n      return;\n    }\n    const resultObj = params.resultObj;\n    if (typeof resultObj !== 'object') {\n      warn('parseDestDictionary: `resultObj` must be an object.');\n      return;\n    }\n    const docBaseUrl = params.docBaseUrl || null;\n\n    let action = destDict.get('A'), url, dest;\n    if (!isDict(action) && destDict.has('Dest')) {\n      // A /Dest entry should *only* contain a Name or an Array, but some bad\n      // PDF generators ignore that and treat it as an /A entry.\n      action = destDict.get('Dest');\n    }\n\n    if (isDict(action)) {\n      const actionType = action.get('S');\n      if (!isName(actionType)) {\n        warn('parseDestDictionary: Invalid type in Action dictionary.');\n        return;\n      }\n      const actionName = actionType.name;\n\n      switch (actionName) {\n        case 'URI':\n          url = action.get('URI');\n          if (isName(url)) {\n            // Some bad PDFs do not put parentheses around relative URLs.\n            url = '/' + url.name;\n          } else if (isString(url)) {\n            url = addDefaultProtocolToUrl(url);\n          }\n          // TODO: pdf spec mentions urls can be relative to a Base\n          // entry in the dictionary.\n          break;\n\n        case 'GoTo':\n          dest = action.get('D');\n          break;\n\n        case 'Launch':\n          // We neither want, nor can, support arbitrary 'Launch' actions.\n          // However, in practice they are mostly used for linking to other PDF\n          // files, which we thus attempt to support (utilizing `docBaseUrl`).\n          /* falls through */\n\n        case 'GoToR':\n          const urlDict = action.get('F');\n          if (isDict(urlDict)) {\n            // We assume that we found a FileSpec dictionary\n            // and fetch the URL without checking any further.\n            url = urlDict.get('F') || null;\n          } else if (isString(urlDict)) {\n            url = urlDict;\n          }\n\n          // NOTE: the destination is relative to the *remote* document.\n          let remoteDest = action.get('D');\n          if (remoteDest) {\n            if (isName(remoteDest)) {\n              remoteDest = remoteDest.name;\n            }\n            if (isString(url)) {\n              const baseUrl = url.split('#')[0];\n              if (isString(remoteDest)) {\n                url = baseUrl + '#' + remoteDest;\n              } else if (Array.isArray(remoteDest)) {\n                url = baseUrl + '#' + JSON.stringify(remoteDest);\n              }\n            }\n          }\n          // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n          const newWindow = action.get('NewWindow');\n          if (isBool(newWindow)) {\n            resultObj.newWindow = newWindow;\n          }\n          break;\n\n        case 'Named':\n          const namedAction = action.get('N');\n          if (isName(namedAction)) {\n            resultObj.action = namedAction.name;\n          }\n          break;\n\n        case 'JavaScript':\n          const jsAction = action.get('JS');\n          let js;\n\n          if (isStream(jsAction)) {\n            js = bytesToString(jsAction.getBytes());\n          } else if (isString(jsAction)) {\n            js = jsAction;\n          }\n\n          if (js) {\n            // Attempt to recover valid URLs from `JS` entries with certain\n            // white-listed formats:\n            //  - window.open('http://example.com')\n            //  - app.launchURL('http://example.com', true)\n            const URL_OPEN_METHODS = [\n              'app.launchURL',\n              'window.open'\n            ];\n            const regex = new RegExp(\n              '^\\\\s*(' + URL_OPEN_METHODS.join('|').split('.').join('\\\\.') +\n              ')\\\\((?:\\'|\\\")([^\\'\\\"]*)(?:\\'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))', 'i');\n\n            const jsUrl = regex.exec(stringToPDFString(js));\n            if (jsUrl && jsUrl[2]) {\n              url = jsUrl[2];\n\n              if (jsUrl[3] === 'true' && jsUrl[1] === 'app.launchURL') {\n                resultObj.newWindow = true;\n              }\n              break;\n            }\n          }\n          /* falls through */\n        default:\n          warn(`parseDestDictionary: unsupported action type \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has('Dest')) { // Simple destination.\n      dest = destDict.get('Dest');\n    }\n\n    if (isString(url)) {\n      url = tryConvertUrlEncoding(url);\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl);\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n      resultObj.unsafeUrl = url;\n    }\n    if (dest) {\n      if (isName(dest)) {\n        dest = dest.name;\n      }\n      if (isString(dest) || Array.isArray(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n}\n\nvar XRef = (function XRefClosure() {\n  function XRef(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    // prepare the XRef cache\n    this.cache = [];\n    this.stats = {\n      streamTypes: [],\n      fontTypes: [],\n    };\n  }\n\n  XRef.prototype = {\n    setStartXRef: function XRef_setStartXRef(startXRef) {\n      // Store the starting positions of xref tables as we process them\n      // so we can recover from missing data errors\n      this.startXRefQueue = [startXRef];\n    },\n\n    parse: function XRef_parse(recoveryMode) {\n      var trailerDict;\n      if (!recoveryMode) {\n        trailerDict = this.readXRef();\n      } else {\n        warn('Indexing all PDF objects');\n        trailerDict = this.indexObjects();\n      }\n      trailerDict.assignXref(this);\n      this.trailer = trailerDict;\n\n      let encrypt;\n      try {\n        encrypt = trailerDict.get('Encrypt');\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n      }\n      if (isDict(encrypt)) {\n        var ids = trailerDict.get('ID');\n        var fileId = (ids && ids.length) ? ids[0] : '';\n        // The 'Encrypt' dictionary itself should not be encrypted, and by\n        // setting `suppressEncryption` we can prevent an infinite loop inside\n        // of `XRef_fetchUncompressed` if the dictionary contains indirect\n        // objects (fixes issue7665.pdf).\n        encrypt.suppressEncryption = true;\n        this.encrypt = new CipherTransformFactory(encrypt, fileId,\n                                                  this.pdfManager.password);\n      }\n\n      // Get the root dictionary (catalog) object, and do some basic validation.\n      let root;\n      try {\n        root = trailerDict.get('Root');\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n      }\n      if (isDict(root) && root.has('Pages')) {\n        this.root = root;\n      } else {\n        if (!recoveryMode) {\n          throw new XRefParseException();\n        }\n        throw new FormatError('Invalid root reference');\n      }\n    },\n\n    processXRefTable: function XRef_processXRefTable(parser) {\n      if (!('tableState' in this)) {\n        // Stores state of the table as we process it so we can resume\n        // from middle of table in case of missing data error\n        this.tableState = {\n          entryNum: 0,\n          streamPos: parser.lexer.stream.pos,\n          parserBuf1: parser.buf1,\n          parserBuf2: parser.buf2,\n        };\n      }\n\n      var obj = this.readXRefTable(parser);\n\n      // Sanity check\n      if (!isCmd(obj, 'trailer')) {\n        throw new FormatError(\n          'Invalid XRef table: could not find trailer dictionary');\n      }\n      // Read trailer dictionary, e.g.\n      // trailer\n      //    << /Size 22\n      //      /Root 20R\n      //      /Info 10R\n      //      /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n      //    >>\n      // The parser goes through the entire stream << ... >> and provides\n      // a getter interface for the key-value table\n      var dict = parser.getObj();\n\n      // The pdflib PDF generator can generate a nested trailer dictionary\n      if (!isDict(dict) && dict.dict) {\n        dict = dict.dict;\n      }\n      if (!isDict(dict)) {\n        throw new FormatError(\n          'Invalid XRef table: could not parse trailer dictionary');\n      }\n      delete this.tableState;\n\n      return dict;\n    },\n\n    readXRefTable: function XRef_readXRefTable(parser) {\n      // Example of cross-reference table:\n      // xref\n      // 0 1                    <-- subsection header (first obj #, obj count)\n      // 0000000000 65535 f     <-- actual object (offset, generation #, f/n)\n      // 23 2                   <-- subsection header ... and so on ...\n      // 0000025518 00002 n\n      // 0000025635 00000 n\n      // trailer\n      // ...\n\n      var stream = parser.lexer.stream;\n      var tableState = this.tableState;\n      stream.pos = tableState.streamPos;\n      parser.buf1 = tableState.parserBuf1;\n      parser.buf2 = tableState.parserBuf2;\n\n      // Outer loop is over subsection headers\n      var obj;\n\n      while (true) {\n        if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) {\n          if (isCmd(obj = parser.getObj(), 'trailer')) {\n            break;\n          }\n          tableState.firstEntryNum = obj;\n          tableState.entryCount = parser.getObj();\n        }\n\n        var first = tableState.firstEntryNum;\n        var count = tableState.entryCount;\n        if (!Number.isInteger(first) || !Number.isInteger(count)) {\n          throw new FormatError(\n            'Invalid XRef table: wrong types in subsection header');\n        }\n        // Inner loop is over objects themselves\n        for (var i = tableState.entryNum; i < count; i++) {\n          tableState.streamPos = stream.pos;\n          tableState.entryNum = i;\n          tableState.parserBuf1 = parser.buf1;\n          tableState.parserBuf2 = parser.buf2;\n\n          var entry = {};\n          entry.offset = parser.getObj();\n          entry.gen = parser.getObj();\n          var type = parser.getObj();\n\n          if (isCmd(type, 'f')) {\n            entry.free = true;\n          } else if (isCmd(type, 'n')) {\n            entry.uncompressed = true;\n          }\n\n          // Validate entry obj\n          if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) ||\n              !(entry.free || entry.uncompressed)) {\n            throw new FormatError(\n              `Invalid entry in XRef subsection: ${first}, ${count}`);\n          }\n\n          // The first xref table entry, i.e. obj 0, should be free. Attempting\n          // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n          if (i === 0 && entry.free && first === 1) {\n            first = 0;\n          }\n\n          if (!this.entries[i + first]) {\n            this.entries[i + first] = entry;\n          }\n        }\n\n        tableState.entryNum = 0;\n        tableState.streamPos = stream.pos;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n        delete tableState.firstEntryNum;\n        delete tableState.entryCount;\n      }\n\n      // Sanity check: as per spec, first object must be free\n      if (this.entries[0] && !this.entries[0].free) {\n        throw new FormatError(\n          'Invalid XRef table: unexpected first object');\n      }\n      return obj;\n    },\n\n    processXRefStream: function XRef_processXRefStream(stream) {\n      if (!('streamState' in this)) {\n        // Stores state of the stream as we process it so we can resume\n        // from middle of stream in case of missing data error\n        var streamParameters = stream.dict;\n        var byteWidths = streamParameters.get('W');\n        var range = streamParameters.get('Index');\n        if (!range) {\n          range = [0, streamParameters.get('Size')];\n        }\n\n        this.streamState = {\n          entryRanges: range,\n          byteWidths,\n          entryNum: 0,\n          streamPos: stream.pos,\n        };\n      }\n      this.readXRefStream(stream);\n      delete this.streamState;\n\n      return stream.dict;\n    },\n\n    readXRefStream: function XRef_readXRefStream(stream) {\n      var i, j;\n      var streamState = this.streamState;\n      stream.pos = streamState.streamPos;\n\n      var byteWidths = streamState.byteWidths;\n      var typeFieldWidth = byteWidths[0];\n      var offsetFieldWidth = byteWidths[1];\n      var generationFieldWidth = byteWidths[2];\n\n      var entryRanges = streamState.entryRanges;\n      while (entryRanges.length > 0) {\n        var first = entryRanges[0];\n        var n = entryRanges[1];\n\n        if (!Number.isInteger(first) || !Number.isInteger(n)) {\n          throw new FormatError(\n            `Invalid XRef range fields: ${first}, ${n}`);\n        }\n        if (!Number.isInteger(typeFieldWidth) ||\n            !Number.isInteger(offsetFieldWidth) ||\n            !Number.isInteger(generationFieldWidth)) {\n          throw new FormatError(\n            `Invalid XRef entry fields length: ${first}, ${n}`);\n        }\n        for (i = streamState.entryNum; i < n; ++i) {\n          streamState.entryNum = i;\n          streamState.streamPos = stream.pos;\n\n          var type = 0, offset = 0, generation = 0;\n          for (j = 0; j < typeFieldWidth; ++j) {\n            type = (type << 8) | stream.getByte();\n          }\n          // if type field is absent, its default value is 1\n          if (typeFieldWidth === 0) {\n            type = 1;\n          }\n          for (j = 0; j < offsetFieldWidth; ++j) {\n            offset = (offset << 8) | stream.getByte();\n          }\n          for (j = 0; j < generationFieldWidth; ++j) {\n            generation = (generation << 8) | stream.getByte();\n          }\n          var entry = {};\n          entry.offset = offset;\n          entry.gen = generation;\n          switch (type) {\n            case 0:\n              entry.free = true;\n              break;\n            case 1:\n              entry.uncompressed = true;\n              break;\n            case 2:\n              break;\n            default:\n              throw new FormatError(`Invalid XRef entry type: ${type}`);\n          }\n          if (!this.entries[first + i]) {\n            this.entries[first + i] = entry;\n          }\n        }\n\n        streamState.entryNum = 0;\n        streamState.streamPos = stream.pos;\n        entryRanges.splice(0, 2);\n      }\n    },\n\n    indexObjects: function XRef_indexObjects() {\n      // Simple scan through the PDF content to find objects,\n      // trailers and XRef streams.\n      var TAB = 0x9, LF = 0xA, CR = 0xD, SPACE = 0x20;\n      var PERCENT = 0x25, LT = 0x3C;\n\n      function readToken(data, offset) {\n        var token = '', ch = data[offset];\n        while (ch !== LF && ch !== CR && ch !== LT) {\n          if (++offset >= data.length) {\n            break;\n          }\n          token += String.fromCharCode(ch);\n          ch = data[offset];\n        }\n        return token;\n      }\n      function skipUntil(data, offset, what) {\n        var length = what.length, dataLength = data.length;\n        var skipped = 0;\n        // finding byte sequence\n        while (offset < dataLength) {\n          var i = 0;\n          while (i < length && data[offset + i] === what[i]) {\n            ++i;\n          }\n          if (i >= length) {\n            break; // sequence found\n          }\n          offset++;\n          skipped++;\n        }\n        return skipped;\n      }\n      var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n      const endobjRegExp = /\\bendobj[\\b\\s]$/;\n      const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s])$/;\n      const CHECK_CONTENT_LENGTH = 25;\n\n      var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n      var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,\n                                          101, 102]);\n      const objBytes = new Uint8Array([111, 98, 106]);\n      var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n      // Clear out any existing entries, since they may be bogus.\n      this.entries.length = 0;\n\n      var stream = this.stream;\n      stream.pos = 0;\n      var buffer = stream.getBytes();\n      var position = stream.start, length = buffer.length;\n      var trailers = [], xrefStms = [];\n      while (position < length) {\n        var ch = buffer[position];\n        if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n          ++position;\n          continue;\n        }\n        if (ch === PERCENT) { // %-comment\n          do {\n            ++position;\n            if (position >= length) {\n              break;\n            }\n            ch = buffer[position];\n          } while (ch !== LF && ch !== CR);\n          continue;\n        }\n        var token = readToken(buffer, position);\n        var m;\n        if (token.indexOf('xref') === 0 &&\n            (token.length === 4 || /\\s/.test(token[4]))) {\n          position += skipUntil(buffer, position, trailerBytes);\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else if ((m = objRegExp.exec(token))) {\n          if (typeof this.entries[m[1]] === 'undefined') {\n            this.entries[m[1]] = {\n              offset: position - stream.start,\n              gen: m[2] | 0,\n              uncompressed: true,\n            };\n          }\n          let contentLength, startPos = position + token.length;\n\n          // Find the next \"obj\" string, rather than \"endobj\", to ensure that\n          // we won't skip over a new 'obj' operator in corrupt files where\n          // 'endobj' operators are missing (fixes issue9105_reduced.pdf).\n          while (startPos < buffer.length) {\n            let endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n            contentLength = endPos - position;\n\n            let checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n            let tokenStr = bytesToString(buffer.subarray(checkPos, endPos));\n\n            // Check if the current object ends with an 'endobj' operator.\n            if (endobjRegExp.test(tokenStr)) {\n              break;\n            } else {\n              // Check if an \"obj\" occurrence is actually a new object,\n              // i.e. the current object is missing the 'endobj' operator.\n              let objToken = nestedObjRegExp.exec(tokenStr);\n\n              if (objToken && objToken[1]) {\n                warn('indexObjects: Found new \"obj\" inside of another \"obj\", ' +\n                     'caused by missing \"endobj\" -- trying to recover.');\n                contentLength -= objToken[1].length;\n                break;\n              }\n            }\n            startPos = endPos;\n          }\n          let content = buffer.subarray(position, position + contentLength);\n\n          // checking XRef stream suspect\n          // (it shall have '/XRef' and next char is not a letter)\n          var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n          if (xrefTagOffset < contentLength &&\n              content[xrefTagOffset + 5] < 64) {\n            xrefStms.push(position - stream.start);\n            this.xrefstms[position - stream.start] = 1; // Avoid recursion\n          }\n\n          position += contentLength;\n        } else if (token.indexOf('trailer') === 0 &&\n                   (token.length === 7 || /\\s/.test(token[7]))) {\n          trailers.push(position);\n          position += skipUntil(buffer, position, startxrefBytes);\n        } else {\n          position += token.length + 1;\n        }\n      }\n      // reading XRef streams\n      var i, ii;\n      for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n        this.startXRefQueue.push(xrefStms[i]);\n        this.readXRef(/* recoveryMode */ true);\n      }\n      // finding main trailer\n      let trailerDict;\n      for (i = 0, ii = trailers.length; i < ii; ++i) {\n        stream.pos = trailers[i];\n        var parser = new Parser(new Lexer(stream), /* allowStreams = */ true,\n                                /* xref = */ this, /* recoveryMode = */ true);\n        var obj = parser.getObj();\n        if (!isCmd(obj, 'trailer')) {\n          continue;\n        }\n        // read the trailer dictionary\n        let dict = parser.getObj();\n        if (!isDict(dict)) {\n          continue;\n        }\n        // Do some basic validation of the trailer/root dictionary candidate.\n        let rootDict;\n        try {\n          rootDict = dict.get('Root');\n        } catch (ex) {\n          if (ex instanceof MissingDataException) {\n            throw ex;\n          }\n          continue;\n        }\n        if (!isDict(rootDict) || !rootDict.has('Pages')) {\n          continue;\n        }\n        // taking the first one with 'ID'\n        if (dict.has('ID')) {\n          return dict;\n        }\n        // The current dictionary is a candidate, but continue searching.\n        trailerDict = dict;\n      }\n      // No trailer with 'ID', taking last one (if exists).\n      if (trailerDict) {\n        return trailerDict;\n      }\n      // nothing helps\n      throw new InvalidPDFException('Invalid PDF structure');\n    },\n\n    readXRef: function XRef_readXRef(recoveryMode) {\n      var stream = this.stream;\n      // Keep track of already parsed XRef tables, to prevent an infinite loop\n      // when parsing corrupt PDF files where e.g. the /Prev entries create a\n      // circular dependency between tables (fixes bug1393476.pdf).\n      let startXRefParsedCache = Object.create(null);\n\n      try {\n        while (this.startXRefQueue.length) {\n          var startXRef = this.startXRefQueue[0];\n\n          if (startXRefParsedCache[startXRef]) {\n            warn('readXRef - skipping XRef table since it was already parsed.');\n            this.startXRefQueue.shift();\n            continue;\n          }\n          startXRefParsedCache[startXRef] = true;\n\n          stream.pos = startXRef + stream.start;\n\n          var parser = new Parser(new Lexer(stream), true, this);\n          var obj = parser.getObj();\n          var dict;\n\n          // Get dictionary\n          if (isCmd(obj, 'xref')) {\n            // Parse end-of-file XRef\n            dict = this.processXRefTable(parser);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n\n            // Recursively get other XRefs 'XRefStm', if any\n            obj = dict.get('XRefStm');\n            if (Number.isInteger(obj)) {\n              var pos = obj;\n              // ignore previously loaded xref streams\n              // (possible infinite recursion)\n              if (!(pos in this.xrefstms)) {\n                this.xrefstms[pos] = 1;\n                this.startXRefQueue.push(pos);\n              }\n            }\n          } else if (Number.isInteger(obj)) {\n            // Parse in-stream XRef\n            if (!Number.isInteger(parser.getObj()) ||\n                !isCmd(parser.getObj(), 'obj') ||\n                !isStream(obj = parser.getObj())) {\n              throw new FormatError('Invalid XRef stream');\n            }\n            dict = this.processXRefStream(obj);\n            if (!this.topDict) {\n              this.topDict = dict;\n            }\n            if (!dict) {\n              throw new FormatError('Failed to read XRef stream');\n            }\n          } else {\n            throw new FormatError('Invalid XRef stream header');\n          }\n\n          // Recursively get previous dictionary, if any\n          obj = dict.get('Prev');\n          if (Number.isInteger(obj)) {\n            this.startXRefQueue.push(obj);\n          } else if (isRef(obj)) {\n            // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n            // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n            this.startXRefQueue.push(obj.num);\n          }\n\n          this.startXRefQueue.shift();\n        }\n\n        return this.topDict;\n      } catch (e) {\n        if (e instanceof MissingDataException) {\n          throw e;\n        }\n        info('(while reading XRef): ' + e);\n      }\n\n      if (recoveryMode) {\n        return;\n      }\n      throw new XRefParseException();\n    },\n\n    getEntry: function XRef_getEntry(i) {\n      var xrefEntry = this.entries[i];\n      if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n        return xrefEntry;\n      }\n      return null;\n    },\n\n    fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n      if (!isRef(obj)) {\n        return obj;\n      }\n      return this.fetch(obj, suppressEncryption);\n    },\n\n    fetch: function XRef_fetch(ref, suppressEncryption) {\n      if (!isRef(ref)) {\n        throw new Error('ref object is not a reference');\n      }\n      var num = ref.num;\n      if (num in this.cache) {\n        var cacheEntry = this.cache[num];\n        // In documents with Object Streams, it's possible that cached `Dict`s\n        // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n        if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n          cacheEntry.objId = ref.toString();\n        }\n        return cacheEntry;\n      }\n\n      var xrefEntry = this.getEntry(num);\n\n      // the referenced entry can be free\n      if (xrefEntry === null) {\n        return (this.cache[num] = null);\n      }\n\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(xrefEntry, suppressEncryption);\n      }\n      if (isDict(xrefEntry)) {\n        xrefEntry.objId = ref.toString();\n      } else if (isStream(xrefEntry)) {\n        xrefEntry.dict.objId = ref.toString();\n      }\n      return xrefEntry;\n    },\n\n    fetchUncompressed: function XRef_fetchUncompressed(ref, xrefEntry,\n                                                       suppressEncryption) {\n      var gen = ref.gen;\n      var num = ref.num;\n      if (xrefEntry.gen !== gen) {\n        throw new FormatError('inconsistent generation in XRef');\n      }\n      var stream = this.stream.makeSubStream(xrefEntry.offset +\n                                             this.stream.start);\n      var parser = new Parser(new Lexer(stream), true, this);\n      var obj1 = parser.getObj();\n      var obj2 = parser.getObj();\n      var obj3 = parser.getObj();\n\n      if (!Number.isInteger(obj1)) {\n        obj1 = parseInt(obj1, 10);\n      }\n      if (!Number.isInteger(obj2)) {\n        obj2 = parseInt(obj2, 10);\n      }\n      if (obj1 !== num || obj2 !== gen || !isCmd(obj3)) {\n        throw new FormatError('bad XRef entry');\n      }\n      if (obj3.cmd !== 'obj') {\n        // some bad PDFs use \"obj1234\" and really mean 1234\n        if (obj3.cmd.indexOf('obj') === 0) {\n          num = parseInt(obj3.cmd.substring(3), 10);\n          if (!Number.isNaN(num)) {\n            return num;\n          }\n        }\n        throw new FormatError('bad XRef entry');\n      }\n      if (this.encrypt && !suppressEncryption) {\n        xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n      } else {\n        xrefEntry = parser.getObj();\n      }\n      if (!isStream(xrefEntry)) {\n        this.cache[num] = xrefEntry;\n      }\n      return xrefEntry;\n    },\n\n    fetchCompressed: function XRef_fetchCompressed(xrefEntry,\n                                                   suppressEncryption) {\n      var tableOffset = xrefEntry.offset;\n      var stream = this.fetch(new Ref(tableOffset, 0));\n      if (!isStream(stream)) {\n        throw new FormatError('bad ObjStm stream');\n      }\n      var first = stream.dict.get('First');\n      var n = stream.dict.get('N');\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new FormatError(\n          'invalid first and n parameters for ObjStm stream');\n      }\n      var parser = new Parser(new Lexer(stream), false, this);\n      parser.allowStreams = true;\n      var i, entries = [], num, nums = [];\n      // read the object numbers to populate cache\n      for (i = 0; i < n; ++i) {\n        num = parser.getObj();\n        if (!Number.isInteger(num)) {\n          throw new FormatError(\n            `invalid object number in the ObjStm stream: ${num}`);\n        }\n        nums.push(num);\n        var offset = parser.getObj();\n        if (!Number.isInteger(offset)) {\n          throw new FormatError(\n            `invalid object offset in the ObjStm stream: ${offset}`);\n        }\n      }\n      // read stream objects for cache\n      for (i = 0; i < n; ++i) {\n        entries.push(parser.getObj());\n        // The ObjStm should not contain 'endobj'. If it's present, skip over it\n        // to support corrupt PDFs (fixes issue 5241, bug 898610, bug 1037816).\n        if (isCmd(parser.buf1, 'endobj')) {\n          parser.shift();\n        }\n        num = nums[i];\n        var entry = this.entries[num];\n        if (entry && entry.offset === tableOffset && entry.gen === i) {\n          this.cache[num] = entries[i];\n        }\n      }\n      xrefEntry = entries[xrefEntry.gen];\n      if (xrefEntry === undefined) {\n        throw new FormatError('bad XRef entry for compressed object');\n      }\n      return xrefEntry;\n    },\n\n    async fetchIfRefAsync(obj, suppressEncryption) {\n      if (!isRef(obj)) {\n        return obj;\n      }\n      return this.fetchAsync(obj, suppressEncryption);\n    },\n\n    async fetchAsync(ref, suppressEncryption) {\n      try {\n        return this.fetch(ref, suppressEncryption);\n      } catch (ex) {\n        if (!(ex instanceof MissingDataException)) {\n          throw ex;\n        }\n        await this.pdfManager.requestRange(ex.begin, ex.end);\n        return this.fetchAsync(ref, suppressEncryption);\n      }\n    },\n\n    getCatalogObj: function XRef_getCatalogObj() {\n      return this.root;\n    },\n  };\n\n  return XRef;\n})();\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    if (this.constructor === NameOrNumberTree) {\n      unreachable('Cannot initialize NameOrNumberTree.');\n    }\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  getAll() {\n    const dict = Object.create(null);\n    if (!this.root) {\n      return dict;\n    }\n    const xref = this.xref;\n    // Reading Name/Number tree.\n    const processed = new RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n      if (!isDict(obj)) {\n        continue;\n      }\n      if (obj.has('Kids')) {\n        const kids = obj.get('Kids');\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n          if (processed.has(kid)) {\n            throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n          queue.push(kid);\n          processed.put(kid);\n        }\n        continue;\n      }\n      const entries = obj.get(this._type);\n      if (Array.isArray(entries)) {\n        for (let i = 0, ii = entries.length; i < ii; i += 2) {\n          dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]);\n        }\n      }\n    }\n    return dict;\n  }\n\n  get(key) {\n    if (!this.root) {\n      return null;\n    }\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n\n    // Perform a binary search to quickly find the entry that\n    // contains the key we are looking for.\n    while (kidsOrEntries.has('Kids')) {\n      if (++loopCount > MAX_LEVELS) {\n        warn('Search depth limit reached for \"' + this._type + '\" tree.');\n        return null;\n      }\n\n      const kids = kidsOrEntries.get('Kids');\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n\n      let l = 0, r = kids.length - 1;\n      while (l <= r) {\n        const m = (l + r) >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get('Limits');\n\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = xref.fetchIfRef(kids[m]);\n          break;\n        }\n      }\n      if (l > r) {\n        return null;\n      }\n    }\n\n    // If we get here, then we have found the right entry. Now go through the\n    // entries in the dictionary until we find the key we're looking for.\n    const entries = kidsOrEntries.get(this._type);\n    if (Array.isArray(entries)) {\n      // Perform a binary search to reduce the lookup time.\n      let l = 0, r = entries.length - 2;\n      while (l <= r) {\n        // Check only even indices (0, 2, 4, ...) because the\n        // odd indices contain the actual data.\n        const m = (l + r) & ~1;\n        const currentKey = xref.fetchIfRef(entries[m]);\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n    }\n    return null;\n  }\n}\n\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, 'Names');\n  }\n}\n\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, 'Nums');\n  }\n}\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nvar FileSpec = (function FileSpecClosure() {\n  function FileSpec(root, xref) {\n    if (!root || !isDict(root)) {\n      return;\n    }\n    this.xref = xref;\n    this.root = root;\n    if (root.has('FS')) {\n      this.fs = root.get('FS');\n    }\n    this.description = root.has('Desc') ?\n                         stringToPDFString(root.get('Desc')) :\n                         '';\n    if (root.has('RF')) {\n      warn('Related file specifications are not supported');\n    }\n    this.contentAvailable = true;\n    if (!root.has('EF')) {\n      this.contentAvailable = false;\n      warn('Non-embedded file specifications are not supported');\n    }\n  }\n\n  function pickPlatformItem(dict) {\n    // Look for the filename in this order:\n    // UF, F, Unix, Mac, DOS\n    if (dict.has('UF')) {\n      return dict.get('UF');\n    } else if (dict.has('F')) {\n      return dict.get('F');\n    } else if (dict.has('Unix')) {\n      return dict.get('Unix');\n    } else if (dict.has('Mac')) {\n      return dict.get('Mac');\n    } else if (dict.has('DOS')) {\n      return dict.get('DOS');\n    }\n    return null;\n  }\n\n  FileSpec.prototype = {\n    get filename() {\n      if (!this._filename && this.root) {\n        var filename = pickPlatformItem(this.root) || 'unnamed';\n        this._filename = stringToPDFString(filename).\n          replace(/\\\\\\\\/g, '\\\\').\n          replace(/\\\\\\//g, '/').\n          replace(/\\\\/g, '/');\n      }\n      return this._filename;\n    },\n    get content() {\n      if (!this.contentAvailable) {\n        return null;\n      }\n      if (!this.contentRef && this.root) {\n        this.contentRef = pickPlatformItem(this.root.get('EF'));\n      }\n      var content = null;\n      if (this.contentRef) {\n        var xref = this.xref;\n        var fileObj = xref.fetchIfRef(this.contentRef);\n        if (fileObj && isStream(fileObj)) {\n          content = fileObj.getBytes();\n        } else {\n          warn('Embedded file specification points to non-existing/invalid ' +\n            'content');\n        }\n      } else {\n        warn('Embedded file specification does not have a content');\n      }\n      return content;\n    },\n    get serializable() {\n      return {\n        filename: this.filename,\n        content: this.content,\n      };\n    },\n  };\n  return FileSpec;\n})();\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nlet ObjectLoader = (function() {\n  function mayHaveChildren(value) {\n    return isRef(value) || isDict(value) || Array.isArray(value) ||\n           isStream(value);\n  }\n\n  function addChildren(node, nodesToVisit) {\n    if (isDict(node) || isStream(node)) {\n      let dict = isDict(node) ? node : node.dict;\n      let dictKeys = dict.getKeys();\n      for (let i = 0, ii = dictKeys.length; i < ii; i++) {\n        let rawValue = dict.getRaw(dictKeys[i]);\n        if (mayHaveChildren(rawValue)) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n    } else if (Array.isArray(node)) {\n      for (let i = 0, ii = node.length; i < ii; i++) {\n        let value = node[i];\n        if (mayHaveChildren(value)) {\n          nodesToVisit.push(value);\n        }\n      }\n    }\n  }\n\n  function ObjectLoader(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n    this.capability = null;\n  }\n\n  ObjectLoader.prototype = {\n    load() {\n      this.capability = createPromiseCapability();\n      // Don't walk the graph if all the data is already loaded.\n      if (!(this.xref.stream instanceof ChunkedStream) ||\n          this.xref.stream.getMissingChunks().length === 0) {\n        this.capability.resolve();\n        return this.capability.promise;\n      }\n\n      let { keys, dict, } = this;\n      this.refSet = new RefSet();\n      // Setup the initial nodes to visit.\n      let nodesToVisit = [];\n      for (let i = 0, ii = keys.length; i < ii; i++) {\n        let rawValue = dict.getRaw(keys[i]);\n        // Skip nodes that are guaranteed to be empty.\n        if (rawValue !== undefined) {\n          nodesToVisit.push(rawValue);\n        }\n      }\n\n      this._walk(nodesToVisit);\n      return this.capability.promise;\n    },\n\n    _walk(nodesToVisit) {\n      let nodesToRevisit = [];\n      let pendingRequests = [];\n      // DFS walk of the object graph.\n      while (nodesToVisit.length) {\n        let currentNode = nodesToVisit.pop();\n\n        // Only references or chunked streams can cause missing data exceptions.\n        if (isRef(currentNode)) {\n          // Skip nodes that have already been visited.\n          if (this.refSet.has(currentNode)) {\n            continue;\n          }\n          try {\n            this.refSet.put(currentNode);\n            currentNode = this.xref.fetch(currentNode);\n          } catch (ex) {\n            if (!(ex instanceof MissingDataException)) {\n              throw ex;\n            }\n            nodesToRevisit.push(currentNode);\n            pendingRequests.push({ begin: ex.begin, end: ex.end, });\n          }\n        }\n        if (currentNode && currentNode.getBaseStreams) {\n          let baseStreams = currentNode.getBaseStreams();\n          let foundMissingData = false;\n          for (let i = 0, ii = baseStreams.length; i < ii; i++) {\n            let stream = baseStreams[i];\n            if (stream.getMissingChunks && stream.getMissingChunks().length) {\n              foundMissingData = true;\n              pendingRequests.push({ begin: stream.start, end: stream.end, });\n            }\n          }\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n\n        addChildren(currentNode, nodesToVisit);\n      }\n\n      if (pendingRequests.length) {\n        this.xref.stream.manager.requestRanges(pendingRequests).then(() => {\n          for (let i = 0, ii = nodesToRevisit.length; i < ii; i++) {\n            let node = nodesToRevisit[i];\n            // Remove any reference nodes from the current `RefSet` so they\n            // aren't skipped when we revist them.\n            if (isRef(node)) {\n              this.refSet.remove(node);\n            }\n          }\n          this._walk(nodesToRevisit);\n        }, this.capability.reject);\n        return;\n      }\n      // Everything is loaded.\n      this.refSet = null;\n      this.capability.resolve();\n    },\n  };\n\n  return ObjectLoader;\n})();\n\nexport {\n  Catalog,\n  ObjectLoader,\n  XRef,\n  FileSpec,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* uses XRef */\n\nvar EOF = {};\n\nvar Name = (function NameClosure() {\n  function Name(name) {\n    this.name = name;\n  }\n\n  Name.prototype = {};\n\n  var nameCache = Object.create(null);\n\n  Name.get = function Name_get(name) {\n    var nameValue = nameCache[name];\n    return (nameValue ? nameValue : (nameCache[name] = new Name(name)));\n  };\n\n  return Name;\n})();\n\nvar Cmd = (function CmdClosure() {\n  function Cmd(cmd) {\n    this.cmd = cmd;\n  }\n\n  Cmd.prototype = {};\n\n  var cmdCache = Object.create(null);\n\n  Cmd.get = function Cmd_get(cmd) {\n    var cmdValue = cmdCache[cmd];\n    return (cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd)));\n  };\n\n  return Cmd;\n})();\n\nvar Dict = (function DictClosure() {\n  var nonSerializable = function nonSerializableClosure() {\n    return nonSerializable; // creating closure on some variable\n  };\n\n  // xref is optional\n  function Dict(xref) {\n    // Map should only be used internally, use functions below to access.\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict\n  }\n\n  Dict.prototype = {\n    assignXref: function Dict_assignXref(newXref) {\n      this.xref = newXref;\n    },\n\n    // automatically dereferences Ref objects\n    get: function Dict_get(key1, key2, key3) {\n      var value;\n      var xref = this.xref, suppressEncryption = this.suppressEncryption;\n      if (typeof (value = this._map[key1]) !== 'undefined' ||\n          key1 in this._map || typeof key2 === 'undefined') {\n        return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n      }\n      if (typeof (value = this._map[key2]) !== 'undefined' ||\n          key2 in this._map || typeof key3 === 'undefined') {\n        return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n      }\n      value = this._map[key3] || null;\n      return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n    },\n\n    // Same as get(), but returns a promise and uses fetchIfRefAsync().\n    getAsync: function Dict_getAsync(key1, key2, key3) {\n      var value;\n      var xref = this.xref, suppressEncryption = this.suppressEncryption;\n      if (typeof (value = this._map[key1]) !== 'undefined' ||\n          key1 in this._map || typeof key2 === 'undefined') {\n        if (xref) {\n          return xref.fetchIfRefAsync(value, suppressEncryption);\n        }\n        return Promise.resolve(value);\n      }\n      if (typeof (value = this._map[key2]) !== 'undefined' ||\n          key2 in this._map || typeof key3 === 'undefined') {\n        if (xref) {\n          return xref.fetchIfRefAsync(value, suppressEncryption);\n        }\n        return Promise.resolve(value);\n      }\n      value = this._map[key3] || null;\n      if (xref) {\n        return xref.fetchIfRefAsync(value, suppressEncryption);\n      }\n      return Promise.resolve(value);\n    },\n\n    // Same as get(), but dereferences all elements if the result is an Array.\n    getArray: function Dict_getArray(key1, key2, key3) {\n      var value = this.get(key1, key2, key3);\n      var xref = this.xref, suppressEncryption = this.suppressEncryption;\n      if (!Array.isArray(value) || !xref) {\n        return value;\n      }\n      value = value.slice(); // Ensure that we don't modify the Dict data.\n      for (var i = 0, ii = value.length; i < ii; i++) {\n        if (!isRef(value[i])) {\n          continue;\n        }\n        value[i] = xref.fetch(value[i], suppressEncryption);\n      }\n      return value;\n    },\n\n    // no dereferencing\n    getRaw: function Dict_getRaw(key) {\n      return this._map[key];\n    },\n\n    getKeys: function Dict_getKeys() {\n      return Object.keys(this._map);\n    },\n\n    set: function Dict_set(key, value) {\n      this._map[key] = value;\n    },\n\n    has: function Dict_has(key) {\n      return key in this._map;\n    },\n\n    forEach: function Dict_forEach(callback) {\n      for (var key in this._map) {\n        callback(key, this.get(key));\n      }\n    },\n  };\n\n  Dict.empty = new Dict(null);\n\n  Dict.merge = function(xref, dictArray) {\n    let mergedDict = new Dict(xref);\n\n    for (let i = 0, ii = dictArray.length; i < ii; i++) {\n      let dict = dictArray[i];\n      if (!isDict(dict)) {\n        continue;\n      }\n      for (let keyName in dict._map) {\n        if (mergedDict._map[keyName] !== undefined) {\n          continue;\n        }\n        mergedDict._map[keyName] = dict._map[keyName];\n      }\n    }\n    return mergedDict;\n  };\n\n  return Dict;\n})();\n\nvar Ref = (function RefClosure() {\n  function Ref(num, gen) {\n    this.num = num;\n    this.gen = gen;\n  }\n\n  Ref.prototype = {\n    toString: function Ref_toString() {\n      // This function is hot, so we make the string as compact as possible.\n      // |this.gen| is almost always zero, so we treat that case specially.\n      var str = this.num + 'R';\n      if (this.gen !== 0) {\n        str += this.gen;\n      }\n      return str;\n    },\n  };\n\n  return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nvar RefSet = (function RefSetClosure() {\n  function RefSet() {\n    this.dict = Object.create(null);\n  }\n\n  RefSet.prototype = {\n    has: function RefSet_has(ref) {\n      return ref.toString() in this.dict;\n    },\n\n    put: function RefSet_put(ref) {\n      this.dict[ref.toString()] = true;\n    },\n\n    remove: function RefSet_remove(ref) {\n      delete this.dict[ref.toString()];\n    },\n  };\n\n  return RefSet;\n})();\n\nvar RefSetCache = (function RefSetCacheClosure() {\n  function RefSetCache() {\n    this.dict = Object.create(null);\n  }\n\n  RefSetCache.prototype = {\n    get: function RefSetCache_get(ref) {\n      return this.dict[ref.toString()];\n    },\n\n    has: function RefSetCache_has(ref) {\n      return ref.toString() in this.dict;\n    },\n\n    put: function RefSetCache_put(ref, obj) {\n      this.dict[ref.toString()] = obj;\n    },\n\n    putAlias: function RefSetCache_putAlias(ref, aliasRef) {\n      this.dict[ref.toString()] = this.get(aliasRef);\n    },\n\n    forEach: function RefSetCache_forEach(fn, thisArg) {\n      for (var i in this.dict) {\n        fn.call(thisArg, this.dict[i]);\n      }\n    },\n\n    clear: function RefSetCache_clear() {\n      this.dict = Object.create(null);\n    },\n  };\n\n  return RefSetCache;\n})();\n\nfunction isEOF(v) {\n  return (v === EOF);\n}\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return v instanceof Dict &&\n         (type === undefined || isName(v.get('Type'), type));\n}\n\nfunction isRef(v) {\n  return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n  return typeof v === 'object' && v !== null && v.getBytes !== undefined;\n}\n\nexport {\n  EOF,\n  Cmd,\n  Dict,\n  Name,\n  Ref,\n  RefSet,\n  RefSetCache,\n  isEOF,\n  isCmd,\n  isDict,\n  isName,\n  isRef,\n  isRefsEqual,\n  isStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  Ascii85Stream, AsciiHexStream, FlateStream, LZWStream, NullStream,\n  PredictorStream, RunLengthStream\n} from './stream';\nimport {\n  assert, bytesToString, FormatError, info, isNum, isSpace, isString,\n  MissingDataException, StreamType, warn\n} from '../shared/util';\nimport {\n  Cmd, Dict, EOF, isCmd, isDict, isEOF, isName, Name, Ref\n} from './primitives';\nimport { CCITTFaxStream } from './ccitt_stream';\nimport { Jbig2Stream } from './jbig2_stream';\nimport { JpegStream } from './jpeg_stream';\nimport { JpxStream } from './jpx_stream';\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n  let bytesLength = bytes.length;\n  if (typeof PDFJSDev === 'undefined' ||\n      PDFJSDev.test('!PRODUCTION || TESTING')) {\n    assert(bytesLength < MAX_ADLER32_LENGTH,\n           'computeAdler32: Unsupported \"bytes\" length.');\n  }\n  let a = 1, b = 0;\n  for (let i = 0; i < bytesLength; ++i) {\n    // No modulo required in the loop if `bytesLength < 5552`.\n    a += bytes[i] & 0xFF;\n    b += a;\n  }\n  return ((b % 65521) << 16) | (a % 65521);\n}\n\nvar Parser = (function ParserClosure() {\n  function Parser(lexer, allowStreams, xref, recoveryMode) {\n    this.lexer = lexer;\n    this.allowStreams = allowStreams;\n    this.xref = xref;\n    this.recoveryMode = recoveryMode || false;\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n\n  Parser.prototype = {\n    refill: function Parser_refill() {\n      this.buf1 = this.lexer.getObj();\n      this.buf2 = this.lexer.getObj();\n    },\n    shift: function Parser_shift() {\n      if (isCmd(this.buf2, 'ID')) {\n        this.buf1 = this.buf2;\n        this.buf2 = null;\n      } else {\n        this.buf1 = this.buf2;\n        this.buf2 = this.lexer.getObj();\n      }\n    },\n    tryShift: function Parser_tryShift() {\n      try {\n        this.shift();\n        return true;\n      } catch (e) {\n        if (e instanceof MissingDataException) {\n          throw e;\n        }\n        // Upon failure, the caller should reset this.lexer.pos to a known good\n        // state and call this.shift() twice to reset the buffers.\n        return false;\n      }\n    },\n    getObj: function Parser_getObj(cipherTransform) {\n      var buf1 = this.buf1;\n      this.shift();\n\n      if (buf1 instanceof Cmd) {\n        switch (buf1.cmd) {\n          case 'BI': // inline image\n            return this.makeInlineImage(cipherTransform);\n          case '[': // array\n            var array = [];\n            while (!isCmd(this.buf1, ']') && !isEOF(this.buf1)) {\n              array.push(this.getObj(cipherTransform));\n            }\n            if (isEOF(this.buf1)) {\n              if (!this.recoveryMode) {\n                throw new FormatError('End of file inside array');\n              }\n              return array;\n            }\n            this.shift();\n            return array;\n          case '<<': // dictionary or stream\n            var dict = new Dict(this.xref);\n            while (!isCmd(this.buf1, '>>') && !isEOF(this.buf1)) {\n              if (!isName(this.buf1)) {\n                info('Malformed dictionary: key must be a name object');\n                this.shift();\n                continue;\n              }\n\n              var key = this.buf1.name;\n              this.shift();\n              if (isEOF(this.buf1)) {\n                break;\n              }\n              dict.set(key, this.getObj(cipherTransform));\n            }\n            if (isEOF(this.buf1)) {\n              if (!this.recoveryMode) {\n                throw new FormatError('End of file inside dictionary');\n              }\n              return dict;\n            }\n\n            // Stream objects are not allowed inside content streams or\n            // object streams.\n            if (isCmd(this.buf2, 'stream')) {\n              return (this.allowStreams ?\n                      this.makeStream(dict, cipherTransform) : dict);\n            }\n            this.shift();\n            return dict;\n          default: // simple object\n            return buf1;\n        }\n      }\n\n      if (Number.isInteger(buf1)) { // indirect reference or integer\n        var num = buf1;\n        if (Number.isInteger(this.buf1) && isCmd(this.buf2, 'R')) {\n          var ref = new Ref(num, this.buf1);\n          this.shift();\n          this.shift();\n          return ref;\n        }\n        return num;\n      }\n\n      if (isString(buf1)) { // string\n        var str = buf1;\n        if (cipherTransform) {\n          str = cipherTransform.decryptString(str);\n        }\n        return str;\n      }\n\n      // simple object\n      return buf1;\n    },\n    /**\n     * Find the end of the stream by searching for the /EI\\s/.\n     * @returns {number} The inline stream length.\n     */\n    findDefaultInlineStreamEnd(stream) {\n      const E = 0x45, I = 0x49, SPACE = 0x20, LF = 0xA, CR = 0xD;\n      const n = 10, NUL = 0x0;\n      let startPos = stream.pos, state = 0, ch, maybeEIPos;\n      while ((ch = stream.getByte()) !== -1) {\n        if (state === 0) {\n          state = (ch === E) ? 1 : 0;\n        } else if (state === 1) {\n          state = (ch === I) ? 2 : 0;\n        } else {\n          assert(state === 2);\n          if (ch === SPACE || ch === LF || ch === CR) {\n            maybeEIPos = stream.pos;\n            // Let's check that the next `n` bytes are ASCII... just to be sure.\n            let followingBytes = stream.peekBytes(n);\n            for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n              ch = followingBytes[i];\n              if (ch === NUL && followingBytes[i + 1] !== NUL) {\n                // NUL bytes are not supposed to occur *outside* of inline\n                // images, but some PDF generators violate that assumption,\n                // thus breaking the EI detection heuristics used below.\n                //\n                // However, we can't unconditionally treat NUL bytes as \"ASCII\",\n                // since that *could* result in inline images being truncated.\n                //\n                // To attempt to address this, we'll still treat any *sequence*\n                // of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\n                // continue checking the `followingBytes` (fixes issue8823.pdf).\n                continue;\n              }\n              if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) {\n                // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n                // it's binary stuff. Resetting the state.\n                state = 0;\n                break;\n              }\n            }\n            if (state === 2) {\n              break;  // Finished!\n            }\n          } else {\n            state = 0;\n          }\n        }\n      }\n\n      if (ch === -1) {\n        warn('findDefaultInlineStreamEnd: ' +\n             'Reached the end of the stream without finding a valid EI marker');\n        if (maybeEIPos) {\n          warn('... trying to recover by using the last \"EI\" occurrence.');\n          stream.skip(-(stream.pos - maybeEIPos)); // Reset the stream position.\n        }\n      }\n      return ((stream.pos - 4) - startPos);\n    },\n    /**\n     * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n     * @returns {number} The inline stream length.\n     */\n    findDCTDecodeInlineStreamEnd:\n        function Parser_findDCTDecodeInlineStreamEnd(stream) {\n      var startPos = stream.pos, foundEOI = false, b, markerLength, length;\n      while ((b = stream.getByte()) !== -1) {\n        if (b !== 0xFF) { // Not a valid marker.\n          continue;\n        }\n        switch (stream.getByte()) {\n          case 0x00: // Byte stuffing.\n            // 0xFF00 appears to be a very common byte sequence in JPEG images.\n            break;\n\n          case 0xFF: // Fill byte.\n            // Avoid skipping a valid marker, resetting the stream position.\n            stream.skip(-1);\n            break;\n\n          case 0xD9: // EOI\n            foundEOI = true;\n            break;\n\n          case 0xC0: // SOF0\n          case 0xC1: // SOF1\n          case 0xC2: // SOF2\n          case 0xC3: // SOF3\n            /* falls through */\n          case 0xC5: // SOF5\n          case 0xC6: // SOF6\n          case 0xC7: // SOF7\n            /* falls through */\n          case 0xC9: // SOF9\n          case 0xCA: // SOF10\n          case 0xCB: // SOF11\n            /* falls through */\n          case 0xCD: // SOF13\n          case 0xCE: // SOF14\n          case 0xCF: // SOF15\n            /* falls through */\n          case 0xC4: // DHT\n          case 0xCC: // DAC\n            /* falls through */\n          case 0xDA: // SOS\n          case 0xDB: // DQT\n          case 0xDC: // DNL\n          case 0xDD: // DRI\n          case 0xDE: // DHP\n          case 0xDF: // EXP\n            /* falls through */\n          case 0xE0: // APP0\n          case 0xE1: // APP1\n          case 0xE2: // APP2\n          case 0xE3: // APP3\n          case 0xE4: // APP4\n          case 0xE5: // APP5\n          case 0xE6: // APP6\n          case 0xE7: // APP7\n          case 0xE8: // APP8\n          case 0xE9: // APP9\n          case 0xEA: // APP10\n          case 0xEB: // APP11\n          case 0xEC: // APP12\n          case 0xED: // APP13\n          case 0xEE: // APP14\n          case 0xEF: // APP15\n            /* falls through */\n          case 0xFE: // COM\n            // The marker should be followed by the length of the segment.\n            markerLength = stream.getUint16();\n            if (markerLength > 2) {\n              // |markerLength| contains the byte length of the marker segment,\n              // including its own length (2 bytes) and excluding the marker.\n              stream.skip(markerLength - 2); // Jump to the next marker.\n            } else {\n              // The marker length is invalid, resetting the stream position.\n              stream.skip(-2);\n            }\n            break;\n        }\n        if (foundEOI) {\n          break;\n        }\n      }\n      length = stream.pos - startPos;\n      if (b === -1) {\n        warn('Inline DCTDecode image stream: ' +\n             'EOI marker not found, searching for /EI/ instead.');\n        stream.skip(-length); // Reset the stream position.\n        return this.findDefaultInlineStreamEnd(stream);\n      }\n      this.inlineStreamSkipEI(stream);\n      return length;\n    },\n    /**\n     * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n     * @returns {number} The inline stream length.\n     */\n    findASCII85DecodeInlineStreamEnd:\n        function Parser_findASCII85DecodeInlineStreamEnd(stream) {\n      var TILDE = 0x7E, GT = 0x3E;\n      var startPos = stream.pos, ch, length;\n      while ((ch = stream.getByte()) !== -1) {\n        if (ch === TILDE && stream.peekByte() === GT) {\n          stream.skip();\n          break;\n        }\n      }\n      length = stream.pos - startPos;\n      if (ch === -1) {\n        warn('Inline ASCII85Decode image stream: ' +\n             'EOD marker not found, searching for /EI/ instead.');\n        stream.skip(-length); // Reset the stream position.\n        return this.findDefaultInlineStreamEnd(stream);\n      }\n      this.inlineStreamSkipEI(stream);\n      return length;\n    },\n    /**\n     * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n     * @returns {number} The inline stream length.\n     */\n    findASCIIHexDecodeInlineStreamEnd:\n        function Parser_findASCIIHexDecodeInlineStreamEnd(stream) {\n      var GT = 0x3E;\n      var startPos = stream.pos, ch, length;\n      while ((ch = stream.getByte()) !== -1) {\n        if (ch === GT) {\n          break;\n        }\n      }\n      length = stream.pos - startPos;\n      if (ch === -1) {\n        warn('Inline ASCIIHexDecode image stream: ' +\n             'EOD marker not found, searching for /EI/ instead.');\n        stream.skip(-length); // Reset the stream position.\n        return this.findDefaultInlineStreamEnd(stream);\n      }\n      this.inlineStreamSkipEI(stream);\n      return length;\n    },\n    /**\n     * Skip over the /EI/ for streams where we search for an EOD marker.\n     */\n    inlineStreamSkipEI: function Parser_inlineStreamSkipEI(stream) {\n      var E = 0x45, I = 0x49;\n      var state = 0, ch;\n      while ((ch = stream.getByte()) !== -1) {\n        if (state === 0) {\n          state = (ch === E) ? 1 : 0;\n        } else if (state === 1) {\n          state = (ch === I) ? 2 : 0;\n        } else if (state === 2) {\n          break;\n        }\n      }\n    },\n    makeInlineImage: function Parser_makeInlineImage(cipherTransform) {\n      var lexer = this.lexer;\n      var stream = lexer.stream;\n\n      // Parse dictionary.\n      let dict = new Dict(this.xref), dictLength;\n      while (!isCmd(this.buf1, 'ID') && !isEOF(this.buf1)) {\n        if (!isName(this.buf1)) {\n          throw new FormatError('Dictionary key must be a name object');\n        }\n        var key = this.buf1.name;\n        this.shift();\n        if (isEOF(this.buf1)) {\n          break;\n        }\n        dict.set(key, this.getObj(cipherTransform));\n      }\n      if (lexer.beginInlineImagePos !== -1) {\n        dictLength = stream.pos - lexer.beginInlineImagePos;\n      }\n\n      // Extract the name of the first (i.e. the current) image filter.\n      var filter = dict.get('Filter', 'F'), filterName;\n      if (isName(filter)) {\n        filterName = filter.name;\n      } else if (Array.isArray(filter)) {\n        var filterZero = this.xref.fetchIfRef(filter[0]);\n        if (isName(filterZero)) {\n          filterName = filterZero.name;\n        }\n      }\n\n      // Parse image stream.\n      let startPos = stream.pos, length;\n      if (filterName === 'DCTDecode' || filterName === 'DCT') {\n        length = this.findDCTDecodeInlineStreamEnd(stream);\n      } else if (filterName === 'ASCII85Decode' || filterName === 'A85') {\n        length = this.findASCII85DecodeInlineStreamEnd(stream);\n      } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') {\n        length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n      } else {\n        length = this.findDefaultInlineStreamEnd(stream);\n      }\n      var imageStream = stream.makeSubStream(startPos, length, dict);\n\n      // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n      // adler32 checksum.\n      let cacheKey;\n      if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n        var imageBytes = imageStream.getBytes();\n        imageStream.reset();\n\n        const initialStreamPos = stream.pos;\n        // Set the stream position to the beginning of the dictionary data...\n        stream.pos = lexer.beginInlineImagePos;\n        // ... and fetch the bytes of the *entire* dictionary.\n        let dictBytes = stream.getBytes(dictLength);\n        // Finally, don't forget to reset the stream position.\n        stream.pos = initialStreamPos;\n\n        cacheKey = computeAdler32(imageBytes) + '_' + computeAdler32(dictBytes);\n\n        let cacheEntry = this.imageCache[cacheKey];\n        if (cacheEntry !== undefined) {\n          this.buf2 = Cmd.get('EI');\n          this.shift();\n\n          cacheEntry.reset();\n          return cacheEntry;\n        }\n      }\n\n      if (cipherTransform) {\n        imageStream = cipherTransform.createStream(imageStream, length);\n      }\n\n      imageStream = this.filter(imageStream, dict, length);\n      imageStream.dict = dict;\n      if (cacheKey !== undefined) {\n        imageStream.cacheKey = 'inline_' + length + '_' + cacheKey;\n        this.imageCache[cacheKey] = imageStream;\n      }\n\n      this.buf2 = Cmd.get('EI');\n      this.shift();\n\n      return imageStream;\n    },\n\n    _findStreamLength(startPos, signature) {\n      const { stream, } = this.lexer;\n      stream.pos = startPos;\n\n      const SCAN_BLOCK_LENGTH = 2048;\n      const signatureLength = signature.length;\n\n      while (stream.pos < stream.end) {\n        const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n        const scanLength = scanBytes.length - signatureLength;\n\n        if (scanLength <= 0) {\n          break;\n        }\n        let pos = 0;\n        while (pos < scanLength) {\n          let j = 0;\n          while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n            j++;\n          }\n          if (j >= signatureLength) { // `signature` found.\n            stream.pos += pos;\n            return (stream.pos - startPos);\n          }\n          pos++;\n        }\n        stream.pos += scanLength;\n      }\n      return -1;\n    },\n\n    makeStream: function Parser_makeStream(dict, cipherTransform) {\n      var lexer = this.lexer;\n      var stream = lexer.stream;\n\n      // get stream start position\n      lexer.skipToNextLine();\n      const startPos = stream.pos - 1;\n\n      // get length\n      var length = dict.get('Length');\n      if (!Number.isInteger(length)) {\n        info('Bad ' + length + ' attribute in stream');\n        length = 0;\n      }\n\n      // skip over the stream data\n      stream.pos = startPos + length;\n      lexer.nextChar();\n\n      // Shift '>>' and check whether the new object marks the end of the stream\n      if (this.tryShift() && isCmd(this.buf2, 'endstream')) {\n        this.shift(); // 'stream'\n      } else {\n        // Bad stream length, scanning for endstream command.\n        const ENDSTREAM_SIGNATURE = new Uint8Array([\n          0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]);\n        let actualLength = this._findStreamLength(startPos,\n                                                  ENDSTREAM_SIGNATURE);\n        if (actualLength < 0) {\n          // Only allow limited truncation of the endstream signature,\n          // to prevent false positives.\n          const MAX_TRUNCATION = 1;\n          // Check if the PDF generator included truncated endstream commands,\n          // such as e.g. \"endstrea\" (fixes issue10004.pdf).\n          for (let i = 1; i <= MAX_TRUNCATION; i++) {\n            const end = ENDSTREAM_SIGNATURE.length - i;\n            const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n            let maybeLength = this._findStreamLength(startPos,\n                                                     TRUNCATED_SIGNATURE);\n            if (maybeLength >= 0) {\n              // Ensure that the byte immediately following the truncated\n              // endstream command is a space, to prevent false positives.\n              const lastByte = stream.peekBytes(end + 1)[end];\n              if (!isSpace(lastByte)) {\n                break;\n              }\n              info(`Found \"${bytesToString(TRUNCATED_SIGNATURE)}\" when ` +\n                   'searching for endstream command.');\n              actualLength = maybeLength;\n              break;\n            }\n          }\n\n          if (actualLength < 0) {\n            throw new FormatError('Missing endstream command.');\n          }\n        }\n        length = actualLength;\n\n        lexer.nextChar();\n        this.shift();\n        this.shift();\n      }\n      this.shift(); // 'endstream'\n\n      stream = stream.makeSubStream(startPos, length, dict);\n      if (cipherTransform) {\n        stream = cipherTransform.createStream(stream, length);\n      }\n      stream = this.filter(stream, dict, length);\n      stream.dict = dict;\n      return stream;\n    },\n    filter: function Parser_filter(stream, dict, length) {\n      var filter = dict.get('Filter', 'F');\n      var params = dict.get('DecodeParms', 'DP');\n      if (isName(filter)) {\n        if (Array.isArray(params)) {\n          warn('/DecodeParms should not contain an Array, ' +\n               'when /Filter contains a Name.');\n        }\n        return this.makeFilter(stream, filter.name, length, params);\n      }\n\n      var maybeLength = length;\n      if (Array.isArray(filter)) {\n        var filterArray = filter;\n        var paramsArray = params;\n        for (var i = 0, ii = filterArray.length; i < ii; ++i) {\n          filter = this.xref.fetchIfRef(filterArray[i]);\n          if (!isName(filter)) {\n            throw new FormatError('Bad filter name: ' + filter);\n          }\n\n          params = null;\n          if (Array.isArray(paramsArray) && (i in paramsArray)) {\n            params = this.xref.fetchIfRef(paramsArray[i]);\n          }\n          stream = this.makeFilter(stream, filter.name, maybeLength, params);\n          // after the first stream the length variable is invalid\n          maybeLength = null;\n        }\n      }\n      return stream;\n    },\n    makeFilter: function Parser_makeFilter(stream, name, maybeLength, params) {\n      // Since the 'Length' entry in the stream dictionary can be completely\n      // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n      // when we can be absolutely certain that it actually is empty.\n      if (maybeLength === 0) {\n        warn('Empty \"' + name + '\" stream.');\n        return new NullStream();\n      }\n      try {\n        var xrefStreamStats = this.xref.stats.streamTypes;\n        if (name === 'FlateDecode' || name === 'Fl') {\n          xrefStreamStats[StreamType.FLATE] = true;\n          if (params) {\n            return new PredictorStream(new FlateStream(stream, maybeLength),\n                                       maybeLength, params);\n          }\n          return new FlateStream(stream, maybeLength);\n        }\n        if (name === 'LZWDecode' || name === 'LZW') {\n          xrefStreamStats[StreamType.LZW] = true;\n          var earlyChange = 1;\n          if (params) {\n            if (params.has('EarlyChange')) {\n              earlyChange = params.get('EarlyChange');\n            }\n            return new PredictorStream(\n              new LZWStream(stream, maybeLength, earlyChange),\n              maybeLength, params);\n          }\n          return new LZWStream(stream, maybeLength, earlyChange);\n        }\n        if (name === 'DCTDecode' || name === 'DCT') {\n          xrefStreamStats[StreamType.DCT] = true;\n          return new JpegStream(stream, maybeLength, stream.dict, params);\n        }\n        if (name === 'JPXDecode' || name === 'JPX') {\n          xrefStreamStats[StreamType.JPX] = true;\n          return new JpxStream(stream, maybeLength, stream.dict, params);\n        }\n        if (name === 'ASCII85Decode' || name === 'A85') {\n          xrefStreamStats[StreamType.A85] = true;\n          return new Ascii85Stream(stream, maybeLength);\n        }\n        if (name === 'ASCIIHexDecode' || name === 'AHx') {\n          xrefStreamStats[StreamType.AHX] = true;\n          return new AsciiHexStream(stream, maybeLength);\n        }\n        if (name === 'CCITTFaxDecode' || name === 'CCF') {\n          xrefStreamStats[StreamType.CCF] = true;\n          return new CCITTFaxStream(stream, maybeLength, params);\n        }\n        if (name === 'RunLengthDecode' || name === 'RL') {\n          xrefStreamStats[StreamType.RL] = true;\n          return new RunLengthStream(stream, maybeLength);\n        }\n        if (name === 'JBIG2Decode') {\n          xrefStreamStats[StreamType.JBIG] = true;\n          return new Jbig2Stream(stream, maybeLength, stream.dict, params);\n        }\n        warn('filter \"' + name + '\" not supported yet');\n        return stream;\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn('Invalid stream: \\\"' + ex + '\\\"');\n        return new NullStream();\n      }\n    },\n  };\n\n  return Parser;\n})();\n\nvar Lexer = (function LexerClosure() {\n  function Lexer(stream, knownCommands) {\n    this.stream = stream;\n    this.nextChar();\n\n    // While lexing, we build up many strings one char at a time. Using += for\n    // this can result in lots of garbage strings. It's better to build an\n    // array of single-char strings and then join() them together at the end.\n    // And reusing a single array (i.e. |this.strBuf|) over and over for this\n    // purpose uses less memory than using a new array for each string.\n    this.strBuf = [];\n\n    // The PDFs might have \"glued\" commands with other commands, operands or\n    // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n    // commands and their prefixes. The prefixes are built the following way:\n    // if there a command that is a prefix of the other valid command or\n    // literal (e.g. 'f' and 'false') the following prefixes must be included,\n    // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n    // other commands or literals as a prefix. The knowCommands is optional.\n    this.knownCommands = knownCommands;\n\n    this.beginInlineImagePos = -1;\n  }\n\n  // A '1' in this array means the character is white space. A '1' or\n  // '2' means the character ends a name or command.\n  var specialChars = [\n    1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n    1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  // fx\n  ];\n\n  function toHexDigit(ch) {\n    if (ch >= 0x30 && ch <= 0x39) { // '0'-'9'\n      return ch & 0x0F;\n    }\n    if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {\n      // 'A'-'F', 'a'-'f'\n      return (ch & 0x0F) + 9;\n    }\n    return -1;\n  }\n\n  Lexer.prototype = {\n    nextChar: function Lexer_nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    },\n    peekChar: function Lexer_peekChar() {\n      return this.stream.peekByte();\n    },\n    getNumber: function Lexer_getNumber() {\n      var ch = this.currentChar;\n      var eNotation = false;\n      var divideBy = 0; // different from 0 if it's a floating point value\n      var sign = 0;\n\n      if (ch === 0x2D) { // '-'\n        sign = -1;\n        ch = this.nextChar();\n\n        if (ch === 0x2D) { // '-'\n          // Ignore double negative (this is consistent with Adobe Reader).\n          ch = this.nextChar();\n        }\n      } else if (ch === 0x2B) { // '+'\n        sign = 1;\n        ch = this.nextChar();\n      }\n      if (ch === 0x0A || ch === 0x0D) { // LF, CR\n        // Ignore line-breaks (this is consistent with Adobe Reader).\n        do {\n          ch = this.nextChar();\n        } while (ch === 0x0A || ch === 0x0D);\n      }\n      if (ch === 0x2E) { // '.'\n        divideBy = 10;\n        ch = this.nextChar();\n      }\n      if (ch < 0x30 || ch > 0x39) { // '0' - '9'\n        if (divideBy === 10 && sign === 0 &&\n            (isSpace(ch) || ch === /* EOF = */ -1)) {\n          // This is consistent with Adobe Reader (fixes issue9252.pdf).\n          warn('Lexer.getNumber - treating a single decimal point as zero.');\n          return 0;\n        }\n        throw new FormatError(\n          `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`);\n      }\n\n      sign = sign || 1;\n      var baseValue = ch - 0x30; // '0'\n      var powerValue = 0;\n      var powerValueSign = 1;\n\n      while ((ch = this.nextChar()) >= 0) {\n        if (0x30 <= ch && ch <= 0x39) { // '0' - '9'\n          var currentDigit = ch - 0x30; // '0'\n          if (eNotation) { // We are after an 'e' or 'E'\n            powerValue = powerValue * 10 + currentDigit;\n          } else {\n            if (divideBy !== 0) { // We are after a point\n              divideBy *= 10;\n            }\n            baseValue = baseValue * 10 + currentDigit;\n          }\n        } else if (ch === 0x2E) { // '.'\n          if (divideBy === 0) {\n            divideBy = 1;\n          } else {\n            // A number can have only one '.'\n            break;\n          }\n        } else if (ch === 0x2D) { // '-'\n          // ignore minus signs in the middle of numbers to match\n          // Adobe's behavior\n          warn('Badly formatted number');\n        } else if (ch === 0x45 || ch === 0x65) { // 'E', 'e'\n          // 'E' can be either a scientific notation or the beginning of a new\n          // operator\n          ch = this.peekChar();\n          if (ch === 0x2B || ch === 0x2D) { // '+', '-'\n            powerValueSign = (ch === 0x2D) ? -1 : 1;\n            this.nextChar(); // Consume the sign character\n          } else if (ch < 0x30 || ch > 0x39) { // '0' - '9'\n            // The 'E' must be the beginning of a new operator\n            break;\n          }\n          eNotation = true;\n        } else {\n          // the last character doesn't belong to us\n          break;\n        }\n      }\n\n      if (divideBy !== 0) {\n        baseValue /= divideBy;\n      }\n      if (eNotation) {\n        baseValue *= Math.pow(10, powerValueSign * powerValue);\n      }\n      return sign * baseValue;\n    },\n    getString: function Lexer_getString() {\n      var numParen = 1;\n      var done = false;\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n\n      var ch = this.nextChar();\n      while (true) {\n        var charBuffered = false;\n        switch (ch | 0) {\n          case -1:\n            warn('Unterminated string');\n            done = true;\n            break;\n          case 0x28: // '('\n            ++numParen;\n            strBuf.push('(');\n            break;\n          case 0x29: // ')'\n            if (--numParen === 0) {\n              this.nextChar(); // consume strings ')'\n              done = true;\n            } else {\n              strBuf.push(')');\n            }\n            break;\n          case 0x5C: // '\\\\'\n            ch = this.nextChar();\n            switch (ch) {\n              case -1:\n                warn('Unterminated string');\n                done = true;\n                break;\n              case 0x6E: // 'n'\n                strBuf.push('\\n');\n                break;\n              case 0x72: // 'r'\n                strBuf.push('\\r');\n                break;\n              case 0x74: // 't'\n                strBuf.push('\\t');\n                break;\n              case 0x62: // 'b'\n                strBuf.push('\\b');\n                break;\n              case 0x66: // 'f'\n                strBuf.push('\\f');\n                break;\n              case 0x5C: // '\\'\n              case 0x28: // '('\n              case 0x29: // ')'\n                strBuf.push(String.fromCharCode(ch));\n                break;\n              case 0x30: case 0x31: case 0x32: case 0x33: // '0'-'3'\n              case 0x34: case 0x35: case 0x36: case 0x37: // '4'-'7'\n                var x = ch & 0x0F;\n                ch = this.nextChar();\n                charBuffered = true;\n                if (ch >= 0x30 && ch <= 0x37) { // '0'-'7'\n                  x = (x << 3) + (ch & 0x0F);\n                  ch = this.nextChar();\n                  if (ch >= 0x30 && ch <= 0x37) {  // '0'-'7'\n                    charBuffered = false;\n                    x = (x << 3) + (ch & 0x0F);\n                  }\n                }\n                strBuf.push(String.fromCharCode(x));\n                break;\n              case 0x0D: // CR\n                if (this.peekChar() === 0x0A) { // LF\n                  this.nextChar();\n                }\n                break;\n              case 0x0A: // LF\n                break;\n              default:\n                strBuf.push(String.fromCharCode(ch));\n                break;\n            }\n            break;\n          default:\n            strBuf.push(String.fromCharCode(ch));\n            break;\n        }\n        if (done) {\n          break;\n        }\n        if (!charBuffered) {\n          ch = this.nextChar();\n        }\n      }\n      return strBuf.join('');\n    },\n    getName: function Lexer_getName() {\n      var ch, previousCh;\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n        if (ch === 0x23) { // '#'\n          ch = this.nextChar();\n          if (specialChars[ch]) {\n            warn('Lexer_getName: ' +\n                 'NUMBER SIGN (#) should be followed by a hexadecimal number.');\n            strBuf.push('#');\n            break;\n          }\n          var x = toHexDigit(ch);\n          if (x !== -1) {\n            previousCh = ch;\n            ch = this.nextChar();\n            var x2 = toHexDigit(ch);\n            if (x2 === -1) {\n              warn('Lexer_getName: Illegal digit (' +\n                   String.fromCharCode(ch) + ') in hexadecimal number.');\n              strBuf.push('#', String.fromCharCode(previousCh));\n              if (specialChars[ch]) {\n                break;\n              }\n              strBuf.push(String.fromCharCode(ch));\n              continue;\n            }\n            strBuf.push(String.fromCharCode((x << 4) | x2));\n          } else {\n            strBuf.push('#', String.fromCharCode(ch));\n          }\n        } else {\n          strBuf.push(String.fromCharCode(ch));\n        }\n      }\n      if (strBuf.length > 127) {\n        warn('name token is longer than allowed by the spec: ' + strBuf.length);\n      }\n      return Name.get(strBuf.join(''));\n    },\n    getHexString: function Lexer_getHexString() {\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      var ch = this.currentChar;\n      var isFirstHex = true;\n      var firstDigit;\n      var secondDigit;\n      while (true) {\n        if (ch < 0) {\n          warn('Unterminated hex string');\n          break;\n        } else if (ch === 0x3E) { // '>'\n          this.nextChar();\n          break;\n        } else if (specialChars[ch] === 1) {\n          ch = this.nextChar();\n          continue;\n        } else {\n          if (isFirstHex) {\n            firstDigit = toHexDigit(ch);\n            if (firstDigit === -1) {\n              warn('Ignoring invalid character \"' + ch + '\" in hex string');\n              ch = this.nextChar();\n              continue;\n            }\n          } else {\n            secondDigit = toHexDigit(ch);\n            if (secondDigit === -1) {\n              warn('Ignoring invalid character \"' + ch + '\" in hex string');\n              ch = this.nextChar();\n              continue;\n            }\n            strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n          }\n          isFirstHex = !isFirstHex;\n          ch = this.nextChar();\n        }\n      }\n      return strBuf.join('');\n    },\n    getObj: function Lexer_getObj() {\n      // skip whitespace and comments\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch < 0) {\n          return EOF;\n        }\n        if (comment) {\n          if (ch === 0x0A || ch === 0x0D) { // LF, CR\n            comment = false;\n          }\n        } else if (ch === 0x25) { // '%'\n          comment = true;\n        } else if (specialChars[ch] !== 1) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n\n      // start reading token\n      switch (ch | 0) {\n        case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4'\n        case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9'\n        case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.'\n          return this.getNumber();\n        case 0x28: // '('\n          return this.getString();\n        case 0x2F: // '/'\n          return this.getName();\n        // array punctuation\n        case 0x5B: // '['\n          this.nextChar();\n          return Cmd.get('[');\n        case 0x5D: // ']'\n          this.nextChar();\n          return Cmd.get(']');\n        // hex string or dict punctuation\n        case 0x3C: // '<'\n          ch = this.nextChar();\n          if (ch === 0x3C) {\n            // dict punctuation\n            this.nextChar();\n            return Cmd.get('<<');\n          }\n          return this.getHexString();\n        // dict punctuation\n        case 0x3E: // '>'\n          ch = this.nextChar();\n          if (ch === 0x3E) {\n            this.nextChar();\n            return Cmd.get('>>');\n          }\n          return Cmd.get('>');\n        case 0x7B: // '{'\n          this.nextChar();\n          return Cmd.get('{');\n        case 0x7D: // '}'\n          this.nextChar();\n          return Cmd.get('}');\n        case 0x29: // ')'\n          // Consume the current character in order to avoid permanently hanging\n          // the worker thread if `Lexer.getObject` is called from within a loop\n          // containing try-catch statements, since we would otherwise attempt\n          // to parse the *same* character over and over (fixes issue8061.pdf).\n          this.nextChar();\n          throw new FormatError(`Illegal character: ${ch}`);\n      }\n\n      // command\n      var str = String.fromCharCode(ch);\n      var knownCommands = this.knownCommands;\n      var knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n      while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n        // stop if known command is found and next character does not make\n        // the str a command\n        var possibleCommand = str + String.fromCharCode(ch);\n        if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n          break;\n        }\n        if (str.length === 128) {\n          throw new FormatError(`Command token too long: ${str.length}`);\n        }\n        str = possibleCommand;\n        knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n      }\n      if (str === 'true') {\n        return true;\n      }\n      if (str === 'false') {\n        return false;\n      }\n      if (str === 'null') {\n        return null;\n      }\n\n      if (str === 'BI') {\n        // Keep track of the current stream position, since it's needed in order\n        // to correctly cache inline images; see `Parser.makeInlineImage`.\n        this.beginInlineImagePos = this.stream.pos;\n      }\n\n      return Cmd.get(str);\n    },\n    skipToNextLine: function Lexer_skipToNextLine() {\n      var ch = this.currentChar;\n      while (ch >= 0) {\n        if (ch === 0x0D) { // CR\n          ch = this.nextChar();\n          if (ch === 0x0A) { // LF\n            this.nextChar();\n          }\n          break;\n        } else if (ch === 0x0A) { // LF\n          this.nextChar();\n          break;\n        }\n        ch = this.nextChar();\n      }\n    },\n  };\n\n  return Lexer;\n})();\n\nvar Linearization = {\n  create: function LinearizationCreate(stream) {\n    function getInt(name, allowZeroValue) {\n      var obj = linDict.get(name);\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n      throw new Error('The \"' + name + '\" parameter in the linearization ' +\n                      'dictionary is invalid.');\n    }\n    function getHints() {\n      var hints = linDict.get('H'), hintsLength, item;\n      if (Array.isArray(hints) &&\n          ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n        for (var index = 0; index < hintsLength; index++) {\n          if (!(Number.isInteger(item = hints[index]) && item > 0)) {\n            throw new Error('Hint (' + index +\n                            ') in the linearization dictionary is invalid.');\n          }\n        }\n        return hints;\n      }\n      throw new Error('Hint array in the linearization dictionary is invalid.');\n    }\n    var parser = new Parser(new Lexer(stream), false, null);\n    var obj1 = parser.getObj();\n    var obj2 = parser.getObj();\n    var obj3 = parser.getObj();\n    var linDict = parser.getObj();\n    var obj, length;\n    if (!(Number.isInteger(obj1) && Number.isInteger(obj2) &&\n          isCmd(obj3, 'obj') && isDict(linDict) &&\n          isNum(obj = linDict.get('Linearized')) && obj > 0)) {\n      return null; // No valid linearization dictionary found.\n    } else if ((length = getInt('L')) !== stream.length) {\n      throw new Error('The \"L\" parameter in the linearization dictionary ' +\n                      'does not equal the stream length.');\n    }\n    return {\n      length,\n      hints: getHints(),\n      objectNumberFirst: getInt('O'),\n      endFirst: getInt('E'),\n      numPages: getInt('N'),\n      mainXRefEntriesOffset: getInt('T'),\n      pageFirst: (linDict.has('P') ? getInt('P', true) : 0),\n    };\n  },\n};\n\nexport {\n  Lexer,\n  Linearization,\n  Parser,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\nimport { FormatError, isSpace, stringToBytes } from '../shared/util';\nimport { isDict } from './primitives';\n\nvar Stream = (function StreamClosure() {\n  function Stream(arrayBuffer, start, length, dict) {\n    this.bytes = (arrayBuffer instanceof Uint8Array ?\n                  arrayBuffer : new Uint8Array(arrayBuffer));\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = (start + length) || this.bytes.length;\n    this.dict = dict;\n  }\n\n  // required methods for a stream. if a particular stream does not\n  // implement these, an error should be thrown\n  Stream.prototype = {\n    get length() {\n      return this.end - this.start;\n    },\n    get isEmpty() {\n      return this.length === 0;\n    },\n    getByte: function Stream_getByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.bytes[this.pos++];\n    },\n    getUint16: function Stream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function Stream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    // Returns subarray of original buffer, should only be read.\n    getBytes(length, forceClamped = false) {\n      var bytes = this.bytes;\n      var pos = this.pos;\n      var strEnd = this.end;\n\n      if (!length) {\n        let subarray = bytes.subarray(pos, strEnd);\n        // `this.bytes` is always a `Uint8Array` here.\n        return (forceClamped ? new Uint8ClampedArray(subarray) : subarray);\n      }\n      var end = pos + length;\n      if (end > strEnd) {\n        end = strEnd;\n      }\n      this.pos = end;\n      let subarray = bytes.subarray(pos, end);\n      // `this.bytes` is always a `Uint8Array` here.\n      return (forceClamped ? new Uint8ClampedArray(subarray) : subarray);\n    },\n    peekByte: function Stream_peekByte() {\n      var peekedByte = this.getByte();\n      this.pos--;\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n    skip: function Stream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function Stream_reset() {\n      this.pos = this.start;\n    },\n    moveStart: function Stream_moveStart() {\n      this.start = this.pos;\n    },\n    makeSubStream: function Stream_makeSubStream(start, length, dict) {\n      return new Stream(this.bytes.buffer, start, length, dict);\n    },\n  };\n\n  return Stream;\n})();\n\nvar StringStream = (function StringStreamClosure() {\n  function StringStream(str) {\n    let bytes = stringToBytes(str);\n    Stream.call(this, bytes);\n  }\n\n  StringStream.prototype = Stream.prototype;\n\n  return StringStream;\n})();\n\n// super class for the decoding streams\nvar DecodeStream = (function DecodeStreamClosure() {\n  // Lots of DecodeStreams are created whose buffers are never used.  For these\n  // we share a single empty buffer. This is (a) space-efficient and (b) avoids\n  // having special cases that would be required if we used |null| for an empty\n  // buffer.\n  var emptyBuffer = new Uint8Array(0);\n\n  function DecodeStream(maybeMinBufferLength) {\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n    if (maybeMinBufferLength) {\n      // Compute the first power of two that is as big as maybeMinBufferLength.\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n\n  DecodeStream.prototype = {\n    get isEmpty() {\n      while (!this.eof && this.bufferLength === 0) {\n        this.readBlock();\n      }\n      return this.bufferLength === 0;\n    },\n    ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n      var buffer = this.buffer;\n      if (requested <= buffer.byteLength) {\n        return buffer;\n      }\n      var size = this.minBufferLength;\n      while (size < requested) {\n        size *= 2;\n      }\n      var buffer2 = new Uint8Array(size);\n      buffer2.set(buffer);\n      return (this.buffer = buffer2);\n    },\n    getByte: function DecodeStream_getByte() {\n      var pos = this.pos;\n      while (this.bufferLength <= pos) {\n        if (this.eof) {\n          return -1;\n        }\n        this.readBlock();\n      }\n      return this.buffer[this.pos++];\n    },\n    getUint16: function DecodeStream_getUint16() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      if (b0 === -1 || b1 === -1) {\n        return -1;\n      }\n      return (b0 << 8) + b1;\n    },\n    getInt32: function DecodeStream_getInt32() {\n      var b0 = this.getByte();\n      var b1 = this.getByte();\n      var b2 = this.getByte();\n      var b3 = this.getByte();\n      return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n    },\n    getBytes(length, forceClamped = false) {\n      var end, pos = this.pos;\n\n      if (length) {\n        this.ensureBuffer(pos + length);\n        end = pos + length;\n\n        while (!this.eof && this.bufferLength < end) {\n          this.readBlock();\n        }\n        var bufEnd = this.bufferLength;\n        if (end > bufEnd) {\n          end = bufEnd;\n        }\n      } else {\n        while (!this.eof) {\n          this.readBlock();\n        }\n        end = this.bufferLength;\n      }\n\n      this.pos = end;\n      let subarray = this.buffer.subarray(pos, end);\n      // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n      return (forceClamped && !(subarray instanceof Uint8ClampedArray) ?\n              new Uint8ClampedArray(subarray) : subarray);\n    },\n    peekByte: function DecodeStream_peekByte() {\n      var peekedByte = this.getByte();\n      this.pos--;\n      return peekedByte;\n    },\n    peekBytes(length, forceClamped = false) {\n      var bytes = this.getBytes(length, forceClamped);\n      this.pos -= bytes.length;\n      return bytes;\n    },\n    makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n      var end = start + length;\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n      return new Stream(this.buffer, start, length, dict);\n    },\n    skip: function DecodeStream_skip(n) {\n      if (!n) {\n        n = 1;\n      }\n      this.pos += n;\n    },\n    reset: function DecodeStream_reset() {\n      this.pos = 0;\n    },\n    getBaseStreams: function DecodeStream_getBaseStreams() {\n      if (this.str && this.str.getBaseStreams) {\n        return this.str.getBaseStreams();\n      }\n      return [];\n    },\n  };\n\n  return DecodeStream;\n})();\n\nvar StreamsSequenceStream = (function StreamsSequenceStreamClosure() {\n  function StreamsSequenceStream(streams) {\n    this.streams = streams;\n\n    let maybeLength = 0;\n    for (let i = 0, ii = streams.length; i < ii; i++) {\n      const stream = streams[i];\n      if (stream instanceof DecodeStream) {\n        maybeLength += stream._rawMinBufferLength;\n      } else {\n        maybeLength += stream.length;\n      }\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n\n  StreamsSequenceStream.prototype.readBlock =\n      function streamSequenceStreamReadBlock() {\n\n    var streams = this.streams;\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n    var stream = streams.shift();\n    var chunk = stream.getBytes();\n    var bufferLength = this.bufferLength;\n    var newLength = bufferLength + chunk.length;\n    var buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  };\n\n  StreamsSequenceStream.prototype.getBaseStreams =\n    function StreamsSequenceStream_getBaseStreams() {\n\n    var baseStreams = [];\n    for (var i = 0, ii = this.streams.length; i < ii; i++) {\n      var stream = this.streams[i];\n      if (stream.getBaseStreams) {\n        baseStreams.push(...stream.getBaseStreams());\n      }\n    }\n    return baseStreams;\n  };\n\n  return StreamsSequenceStream;\n})();\n\nvar FlateStream = (function FlateStreamClosure() {\n  var codeLenCodeMap = new Int32Array([\n    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15\n  ]);\n\n  var lengthDecode = new Int32Array([\n    0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n    0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n    0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n    0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102\n  ]);\n\n  var distDecode = new Int32Array([\n    0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n    0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n    0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n    0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001\n  ]);\n\n  var fixedLitCodeTab = [new Int32Array([\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n  ]), 9];\n\n  var fixedDistCodeTab = [new Int32Array([\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n  ]), 5];\n\n  function FlateStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    var cmf = str.getByte();\n    var flg = str.getByte();\n    if (cmf === -1 || flg === -1) {\n      throw new FormatError(\n        `Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new FormatError(\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`);\n    }\n    if ((((cmf << 8) + flg) % 31) !== 0) {\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n    if (flg & 0x20) {\n      throw new FormatError(\n        `FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n\n    this.codeSize = 0;\n    this.codeBuf = 0;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  FlateStream.prototype = Object.create(DecodeStream.prototype);\n\n  FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n    var str = this.str;\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError('Bad encoding in flate stream');\n      }\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n    b = codeBuf & ((1 << bits) - 1);\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n\n    return b;\n  };\n\n  FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n    var str = this.str;\n    var codes = table[0];\n    var maxLen = table[1];\n    var codeSize = this.codeSize;\n    var codeBuf = this.codeBuf;\n\n    var b;\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        // premature end of stream. code might however still be valid.\n        // codeSize < codeLen check below guards against incomplete codeVal.\n        break;\n      }\n      codeBuf |= (b << codeSize);\n      codeSize += 8;\n    }\n    var code = codes[codeBuf & ((1 << maxLen) - 1)];\n    var codeLen = code >> 16;\n    var codeVal = code & 0xffff;\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new FormatError('Bad encoding in flate stream');\n    }\n    this.codeBuf = (codeBuf >> codeLen);\n    this.codeSize = (codeSize - codeLen);\n    return codeVal;\n  };\n\n  FlateStream.prototype.generateHuffmanTable =\n      function flateStreamGenerateHuffmanTable(lengths) {\n    var n = lengths.length;\n\n    // find max code length\n    var maxLen = 0;\n    var i;\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n\n    // build the table\n    var size = 1 << maxLen;\n    var codes = new Int32Array(size);\n    for (var len = 1, code = 0, skip = 2;\n         len <= maxLen;\n         ++len, code <<= 1, skip <<= 1) {\n      for (var val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          // bit-reverse the code\n          var code2 = 0;\n          var t = code;\n          for (i = 0; i < len; ++i) {\n            code2 = (code2 << 1) | (t & 1);\n            t >>= 1;\n          }\n\n          // fill the table entries\n          for (i = code2; i < size; i += skip) {\n            codes[i] = (len << 16) | val;\n          }\n          ++code;\n        }\n      }\n    }\n\n    return [codes, maxLen];\n  };\n\n  FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n    var buffer, len;\n    var str = this.str;\n    // read block header\n    var hdr = this.getBits(3);\n    if (hdr & 1) {\n      this.eof = true;\n    }\n    hdr >>= 1;\n\n    if (hdr === 0) { // uncompressed block\n      var b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError('Bad block header in flate stream');\n      }\n      var blockLen = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError('Bad block header in flate stream');\n      }\n      blockLen |= (b << 8);\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError('Bad block header in flate stream');\n      }\n      var check = b;\n      if ((b = str.getByte()) === -1) {\n        throw new FormatError('Bad block header in flate stream');\n      }\n      check |= (b << 8);\n      if (check !== (~blockLen & 0xffff) &&\n          (blockLen !== 0 || check !== 0)) {\n        // Ignoring error for bad \"empty\" block (see issue 1277)\n        throw new FormatError(\n          'Bad uncompressed block length in flate stream');\n      }\n\n      this.codeBuf = 0;\n      this.codeSize = 0;\n\n      var bufferLength = this.bufferLength;\n      buffer = this.ensureBuffer(bufferLength + blockLen);\n      var end = bufferLength + blockLen;\n      this.bufferLength = end;\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        for (var n = bufferLength; n < end; ++n) {\n          if ((b = str.getByte()) === -1) {\n            this.eof = true;\n            break;\n          }\n          buffer[n] = b;\n        }\n      }\n      return;\n    }\n\n    var litCodeTable;\n    var distCodeTable;\n    if (hdr === 1) { // compressed block, fixed codes\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) { // compressed block, dynamic codes\n      var numLitCodes = this.getBits(5) + 257;\n      var numDistCodes = this.getBits(5) + 1;\n      var numCodeLenCodes = this.getBits(4) + 4;\n\n      // build the code lengths code table\n      var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n      var i;\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n      var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n      // build the literal and distance code tables\n      len = 0;\n      i = 0;\n      var codes = numLitCodes + numDistCodes;\n      var codeLengths = new Uint8Array(codes);\n      var bitsLength, bitsOffset, what;\n      while (i < codes) {\n        var code = this.getCode(codeLenCodeTab);\n        if (code === 16) {\n          bitsLength = 2; bitsOffset = 3; what = len;\n        } else if (code === 17) {\n          bitsLength = 3; bitsOffset = 3; what = (len = 0);\n        } else if (code === 18) {\n          bitsLength = 7; bitsOffset = 11; what = (len = 0);\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n\n        var repeatLength = this.getBits(bitsLength) + bitsOffset;\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n\n      litCodeTable =\n        this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n      distCodeTable =\n        this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n    } else {\n      throw new FormatError('Unknown block type in flate stream');\n    }\n\n    buffer = this.buffer;\n    var limit = buffer ? buffer.length : 0;\n    var pos = this.bufferLength;\n    while (true) {\n      var code1 = this.getCode(litCodeTable);\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n        buffer[pos++] = code1;\n        continue;\n      }\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      var code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n      var dist = (code1 & 0xffff) + code2;\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n      for (var k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  };\n\n  return FlateStream;\n})();\n\nvar PredictorStream = (function PredictorStreamClosure() {\n  function PredictorStream(str, maybeLength, params) {\n    if (!isDict(params)) {\n      return str; // no prediction\n    }\n    var predictor = this.predictor = params.get('Predictor') || 1;\n\n    if (predictor <= 1) {\n      return str; // no prediction\n    }\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n\n    this.str = str;\n    this.dict = str.dict;\n\n    var colors = this.colors = params.get('Colors') || 1;\n    var bits = this.bits = params.get('BitsPerComponent') || 8;\n    var columns = this.columns = params.get('Columns') || 1;\n\n    this.pixBytes = (colors * bits + 7) >> 3;\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n    DecodeStream.call(this, maybeLength);\n    return this;\n  }\n\n  PredictorStream.prototype = Object.create(DecodeStream.prototype);\n\n  PredictorStream.prototype.readBlockTiff =\n      function predictorStreamReadBlockTiff() {\n    var rowBytes = this.rowBytes;\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var bits = this.bits;\n    var colors = this.colors;\n\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var inbuf = 0, outbuf = 0;\n    var inbits = 0, outbits = 0;\n    var pos = bufferLength;\n    var i;\n\n    if (bits === 1 && colors === 1) {\n      // Optimized version of the loop in the \"else\"-branch\n      // for 1 bit-per-component and 1 color TIFF images.\n      for (i = 0; i < rowBytes; ++i) {\n        var c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      var bytesPerPixel = colors * 2;\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n      for (; i < rowBytes; i += 2) {\n        var sum = ((rawBytes[i] & 0xFF) << 8) +\n                  (rawBytes[i + 1] & 0xFF) +\n                  ((buffer[pos - bytesPerPixel] & 0xFF) << 8) +\n                  (buffer[pos - bytesPerPixel + 1] & 0xFF);\n        buffer[pos++] = ((sum >> 8) & 0xFF);\n        buffer[pos++] = (sum & 0xFF);\n      }\n    } else {\n      var compArray = new Uint8Array(colors + 1);\n      var bitMask = (1 << bits) - 1;\n      var j = 0, k = bufferLength;\n      var columns = this.columns;\n      for (i = 0; i < columns; ++i) {\n        for (var kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = (inbuf << 8) | (rawBytes[j++] & 0xFF);\n            inbits += 8;\n          }\n          compArray[kk] = (compArray[kk] +\n                           (inbuf >> (inbits - bits))) & bitMask;\n          inbits -= bits;\n          outbuf = (outbuf << bits) | compArray[kk];\n          outbits += bits;\n          if (outbits >= 8) {\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xFF;\n            outbits -= 8;\n          }\n        }\n      }\n      if (outbits > 0) {\n        buffer[k++] = (outbuf << (8 - outbits)) +\n                      (inbuf & ((1 << (8 - outbits)) - 1));\n      }\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  PredictorStream.prototype.readBlockPng =\n      function predictorStreamReadBlockPng() {\n\n    var rowBytes = this.rowBytes;\n    var pixBytes = this.pixBytes;\n\n    var predictor = this.str.getByte();\n    var rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n    if (this.eof) {\n      return;\n    }\n\n    var bufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n    var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n\n    var i, j = bufferLength, up, c;\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        break;\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xFF;\n          j++;\n        }\n        break;\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xFF;\n        }\n        break;\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (((prevRow[i] + buffer[j - pixBytes]) >> 1) +\n                           rawBytes[i]) & 0xFF;\n          j++;\n        }\n        break;\n      case 4:\n        // we need to save the up left pixels values. the simplest way\n        // is to create a new buffer\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          var upLeft = prevRow[i - pixBytes];\n          var left = buffer[j - pixBytes];\n          var p = left + up - upLeft;\n\n          var pa = p - left;\n          if (pa < 0) {\n            pa = -pa;\n          }\n          var pb = p - up;\n          if (pb < 0) {\n            pb = -pb;\n          }\n          var pc = p - upLeft;\n          if (pc < 0) {\n            pc = -pc;\n          }\n\n          c = rawBytes[i];\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n        break;\n      default:\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\n    }\n    this.bufferLength += rowBytes;\n  };\n\n  return PredictorStream;\n})();\n\nvar DecryptStream = (function DecryptStreamClosure() {\n  function DecryptStream(str, maybeLength, decrypt) {\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  var chunkSize = 512;\n\n  DecryptStream.prototype = Object.create(DecodeStream.prototype);\n\n  DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n    var chunk;\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n    this.nextChunk = this.str.getBytes(chunkSize);\n    var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n    var decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n\n    var bufferLength = this.bufferLength;\n    var i, n = chunk.length;\n    var buffer = this.ensureBuffer(bufferLength + n);\n    for (i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return DecryptStream;\n})();\n\nvar Ascii85Stream = (function Ascii85StreamClosure() {\n  function Ascii85Stream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n\n    // Most streams increase in size when decoded, but Ascii85 streams\n    // typically shrink by ~20%.\n    if (maybeLength) {\n      maybeLength = 0.8 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n    var TILDA_CHAR = 0x7E; // '~'\n    var Z_LOWER_CHAR = 0x7A; // 'z'\n    var EOF = -1;\n\n    var str = this.str;\n\n    var c = str.getByte();\n    while (isSpace(c)) {\n      c = str.getByte();\n    }\n\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n\n    var bufferLength = this.bufferLength, buffer;\n    var i;\n\n    // special code for z\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n      this.bufferLength += 4;\n    } else {\n      var input = this.input;\n      input[0] = c;\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n        while (isSpace(c)) {\n          c = str.getByte();\n        }\n\n        input[i] = c;\n\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n\n      // partial ending;\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n        this.eof = true;\n      }\n      var t = 0;\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xFF;\n        t >>= 8;\n      }\n    }\n  };\n\n  return Ascii85Stream;\n})();\n\nvar AsciiHexStream = (function AsciiHexStreamClosure() {\n  function AsciiHexStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    this.firstDigit = -1;\n\n    // Most streams increase in size when decoded, but AsciiHex streams shrink\n    // by 50%.\n    if (maybeLength) {\n      maybeLength = 0.5 * maybeLength;\n    }\n    DecodeStream.call(this, maybeLength);\n  }\n\n  AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n\n  AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n    var UPSTREAM_BLOCK_SIZE = 8000;\n    var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n\n    var maxDecodeLength = (bytes.length + 1) >> 1;\n    var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    var bufferLength = this.bufferLength;\n\n    var firstDigit = this.firstDigit;\n    for (var i = 0, ii = bytes.length; i < ii; i++) {\n      var ch = bytes[i], digit;\n      if (ch >= 0x30 && ch <= 0x39) { // '0'-'9'\n        digit = ch & 0x0F;\n      } else if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {\n        // 'A'-'Z', 'a'-'z'\n        digit = (ch & 0x0F) + 9;\n      } else if (ch === 0x3E) { // '>'\n        this.eof = true;\n        break;\n      } else { // probably whitespace\n        continue; // ignoring\n      }\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = (firstDigit << 4) | digit;\n        firstDigit = -1;\n      }\n    }\n    if (firstDigit >= 0 && this.eof) {\n      // incomplete byte\n      buffer[bufferLength++] = (firstDigit << 4);\n      firstDigit = -1;\n    }\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  };\n\n  return AsciiHexStream;\n})();\n\nvar RunLengthStream = (function RunLengthStreamClosure() {\n  function RunLengthStream(str, maybeLength) {\n    this.str = str;\n    this.dict = str.dict;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n\n  RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n    // The repeatHeader has following format. The first byte defines type of run\n    // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n    // (in addition to the second byte from the header), n = 129 through 255 -\n    // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n    var repeatHeader = this.str.getBytes(2);\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n\n    var buffer;\n    var bufferLength = this.bufferLength;\n    var n = repeatHeader[0];\n    if (n < 128) {\n      // copy n bytes\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n      if (n > 0) {\n        var source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      var b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      for (var i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n    this.bufferLength = bufferLength;\n  };\n\n  return RunLengthStream;\n})();\n\nvar LZWStream = (function LZWStreamClosure() {\n  function LZWStream(str, maybeLength, earlyChange) {\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n\n    var maxLzwDictionarySize = 4096;\n    var lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0,\n    };\n    for (var i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n    this.lzwState = lzwState;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  LZWStream.prototype = Object.create(DecodeStream.prototype);\n\n  LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n    var bitsCached = this.bitsCached;\n    var cachedData = this.cachedData;\n    while (bitsCached < n) {\n      var c = this.str.getByte();\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n      cachedData = (cachedData << 8) | c;\n      bitsCached += 8;\n    }\n    this.bitsCached = (bitsCached -= n);\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return (cachedData >>> bitsCached) & ((1 << n) - 1);\n  };\n\n  LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n    var blockSize = 512;\n    var estimatedDecodedSize = blockSize * 2, decodedSizeDelta = blockSize;\n    var i, j, q;\n\n    var lzwState = this.lzwState;\n    if (!lzwState) {\n      return; // eof was found\n    }\n\n    var earlyChange = lzwState.earlyChange;\n    var nextCode = lzwState.nextCode;\n    var dictionaryValues = lzwState.dictionaryValues;\n    var dictionaryLengths = lzwState.dictionaryLengths;\n    var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    var codeLength = lzwState.codeLength;\n    var prevCode = lzwState.prevCode;\n    var currentSequence = lzwState.currentSequence;\n    var currentSequenceLength = lzwState.currentSequenceLength;\n\n    var decodedLength = 0;\n    var currentBufferLength = this.bufferLength;\n    var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n    for (i = 0; i < blockSize; i++) {\n      var code = this.readBits(codeLength);\n      var hasPrev = currentSequenceLength > 0;\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength = (nextCode + earlyChange) & (nextCode + earlyChange - 1) ?\n          codeLength : Math.min(Math.log(nextCode + earlyChange) /\n          0.6931471805599453 + 1, 12) | 0;\n      }\n      prevCode = code;\n\n      decodedLength += currentSequenceLength;\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n\n    this.bufferLength = currentBufferLength;\n  };\n\n  return LZWStream;\n})();\n\nvar NullStream = (function NullStreamClosure() {\n  function NullStream() {\n    Stream.call(this, new Uint8Array(0));\n  }\n\n  NullStream.prototype = Stream.prototype;\n\n  return NullStream;\n})();\n\nexport {\n  Ascii85Stream,\n  AsciiHexStream,\n  DecryptStream,\n  DecodeStream,\n  FlateStream,\n  NullStream,\n  PredictorStream,\n  RunLengthStream,\n  Stream,\n  StreamsSequenceStream,\n  StringStream,\n  LZWStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Dict, isDict } from './primitives';\nimport { CCITTFaxDecoder } from './ccitt';\nimport { DecodeStream } from './stream';\n\nvar CCITTFaxStream = (function CCITTFaxStreamClosure() {\n  function CCITTFaxStream(str, maybeLength, params) {\n    this.str = str;\n    this.dict = str.dict;\n\n    if (!isDict(params)) {\n      params = Dict.empty;\n    }\n\n    const source = {\n      next() {\n        return str.getByte();\n      },\n    };\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\n      K: params.get('K'),\n      EndOfLine: params.get('EndOfLine'),\n      EncodedByteAlign: params.get('EncodedByteAlign'),\n      Columns: params.get('Columns'),\n      Rows: params.get('Rows'),\n      EndOfBlock: params.get('EndOfBlock'),\n      BlackIs1: params.get('BlackIs1'),\n    });\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);\n\n  CCITTFaxStream.prototype.readBlock = function() {\n    while (!this.eof) {\n      let c = this.ccittFaxDecoder.readNextChar();\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  };\n\n  return CCITTFaxStream;\n})();\n\nexport {\n  CCITTFaxStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The CCITT stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\n\n/**\n * @typedef {Object} CCITTFaxDecoderSource\n * @property {function} next - Method that return one byte of data for decoding,\n *   or -1 when EOF is reached.\n */\n\nimport { info } from '../shared/util';\n\nlet CCITTFaxDecoder = (function CCITTFaxDecoder() {\n\n  const ccittEOL = -2;\n  const ccittEOF = -1;\n  const twoDimPass = 0;\n  const twoDimHoriz = 1;\n  const twoDimVert0 = 2;\n  const twoDimVertR1 = 3;\n  const twoDimVertL1 = 4;\n  const twoDimVertR2 = 5;\n  const twoDimVertL2 = 6;\n  const twoDimVertR3 = 7;\n  const twoDimVertL3 = 8;\n\n  const twoDimTable = [\n    [-1, -1], [-1, -1],                   // 000000x\n    [7, twoDimVertL3],                    // 0000010\n    [7, twoDimVertR3],                    // 0000011\n    [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n    [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n    [4, twoDimPass], [4, twoDimPass],     // 0001xxx\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [4, twoDimPass], [4, twoDimPass],\n    [3, twoDimHoriz], [3, twoDimHoriz],   // 001xxxx\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimHoriz], [3, twoDimHoriz],\n    [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertL1], [3, twoDimVertL1],\n    [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [3, twoDimVertR1], [3, twoDimVertR1],\n    [1, twoDimVert0], [1, twoDimVert0],   // 1xxxxxx\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0],\n    [1, twoDimVert0], [1, twoDimVert0]\n  ];\n\n  const whiteTable1 = [\n    [-1, -1],                               // 00000\n    [12, ccittEOL],                         // 00001\n    [-1, -1], [-1, -1],                     // 0001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n    [11, 1792], [11, 1792],                 // 1000x\n    [12, 1984],                             // 10010\n    [12, 2048],                             // 10011\n    [12, 2112],                             // 10100\n    [12, 2176],                             // 10101\n    [12, 2240],                             // 10110\n    [12, 2304],                             // 10111\n    [11, 1856], [11, 1856],                 // 1100x\n    [11, 1920], [11, 1920],                 // 1101x\n    [12, 2368],                             // 11100\n    [12, 2432],                             // 11101\n    [12, 2496],                             // 11110\n    [12, 2560]                              // 11111\n  ];\n\n  const whiteTable2 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],     // 0000000xx\n    [8, 29], [8, 29],                           // 00000010x\n    [8, 30], [8, 30],                           // 00000011x\n    [8, 45], [8, 45],                           // 00000100x\n    [8, 46], [8, 46],                           // 00000101x\n    [7, 22], [7, 22], [7, 22], [7, 22],         // 0000011xx\n    [7, 23], [7, 23], [7, 23], [7, 23],         // 0000100xx\n    [8, 47], [8, 47],                           // 00001010x\n    [8, 48], [8, 48],                           // 00001011x\n    [6, 13], [6, 13], [6, 13], [6, 13],         // 000011xxx\n    [6, 13], [6, 13], [6, 13], [6, 13],\n    [7, 20], [7, 20], [7, 20], [7, 20],         // 0001000xx\n    [8, 33], [8, 33],                           // 00010010x\n    [8, 34], [8, 34],                           // 00010011x\n    [8, 35], [8, 35],                           // 00010100x\n    [8, 36], [8, 36],                           // 00010101x\n    [8, 37], [8, 37],                           // 00010110x\n    [8, 38], [8, 38],                           // 00010111x\n    [7, 19], [7, 19], [7, 19], [7, 19],         // 0001100xx\n    [8, 31], [8, 31],                           // 00011010x\n    [8, 32], [8, 32],                           // 00011011x\n    [6, 1], [6, 1], [6, 1], [6, 1],             // 000111xxx\n    [6, 1], [6, 1], [6, 1], [6, 1],\n    [6, 12], [6, 12], [6, 12], [6, 12],         // 001000xxx\n    [6, 12], [6, 12], [6, 12], [6, 12],\n    [8, 53], [8, 53],                           // 00100100x\n    [8, 54], [8, 54],                           // 00100101x\n    [7, 26], [7, 26], [7, 26], [7, 26],         // 0010011xx\n    [8, 39], [8, 39],                           // 00101000x\n    [8, 40], [8, 40],                           // 00101001x\n    [8, 41], [8, 41],                           // 00101010x\n    [8, 42], [8, 42],                           // 00101011x\n    [8, 43], [8, 43],                           // 00101100x\n    [8, 44], [8, 44],                           // 00101101x\n    [7, 21], [7, 21], [7, 21], [7, 21],         // 0010111xx\n    [7, 28], [7, 28], [7, 28], [7, 28],         // 0011000xx\n    [8, 61], [8, 61],                           // 00110010x\n    [8, 62], [8, 62],                           // 00110011x\n    [8, 63], [8, 63],                           // 00110100x\n    [8, 0], [8, 0],                             // 00110101x\n    [8, 320], [8, 320],                         // 00110110x\n    [8, 384], [8, 384],                         // 00110111x\n    [5, 10], [5, 10], [5, 10], [5, 10],         // 00111xxxx\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 10], [5, 10], [5, 10], [5, 10],\n    [5, 11], [5, 11], [5, 11], [5, 11],         // 01000xxxx\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [5, 11], [5, 11], [5, 11], [5, 11],\n    [7, 27], [7, 27], [7, 27], [7, 27],         // 0100100xx\n    [8, 59], [8, 59],                           // 01001010x\n    [8, 60], [8, 60],                           // 01001011x\n    [9, 1472],                                  // 010011000\n    [9, 1536],                                  // 010011001\n    [9, 1600],                                  // 010011010\n    [9, 1728],                                  // 010011011\n    [7, 18], [7, 18], [7, 18], [7, 18],         // 0100111xx\n    [7, 24], [7, 24], [7, 24], [7, 24],         // 0101000xx\n    [8, 49], [8, 49],                           // 01010010x\n    [8, 50], [8, 50],                           // 01010011x\n    [8, 51], [8, 51],                           // 01010100x\n    [8, 52], [8, 52],                           // 01010101x\n    [7, 25], [7, 25], [7, 25], [7, 25],         // 0101011xx\n    [8, 55], [8, 55],                           // 01011000x\n    [8, 56], [8, 56],                           // 01011001x\n    [8, 57], [8, 57],                           // 01011010x\n    [8, 58], [8, 58],                           // 01011011x\n    [6, 192], [6, 192], [6, 192], [6, 192],     // 010111xxx\n    [6, 192], [6, 192], [6, 192], [6, 192],\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n    [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n    [8, 448], [8, 448],                         // 01100100x\n    [8, 512], [8, 512],                         // 01100101x\n    [9, 704],                                   // 011001100\n    [9, 768],                                   // 011001101\n    [8, 640], [8, 640],                         // 01100111x\n    [8, 576], [8, 576],                         // 01101000x\n    [9, 832],                                   // 011010010\n    [9, 896],                                   // 011010011\n    [9, 960],                                   // 011010100\n    [9, 1024],                                  // 011010101\n    [9, 1088],                                  // 011010110\n    [9, 1152],                                  // 011010111\n    [9, 1216],                                  // 011011000\n    [9, 1280],                                  // 011011001\n    [9, 1344],                                  // 011011010\n    [9, 1408],                                  // 011011011\n    [7, 256], [7, 256], [7, 256], [7, 256],     // 0110111xx\n    [4, 2], [4, 2], [4, 2], [4, 2],             // 0111xxxxx\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 2], [4, 2], [4, 2], [4, 2],\n    [4, 3], [4, 3], [4, 3], [4, 3],             // 1000xxxxx\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [4, 3], [4, 3], [4, 3], [4, 3],\n    [5, 128], [5, 128], [5, 128], [5, 128],     // 10010xxxx\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 128], [5, 128], [5, 128], [5, 128],\n    [5, 8], [5, 8], [5, 8], [5, 8],             // 10011xxxx\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 8], [5, 8], [5, 8], [5, 8],\n    [5, 9], [5, 9], [5, 9], [5, 9],             // 10100xxxx\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [5, 9], [5, 9], [5, 9], [5, 9],\n    [6, 16], [6, 16], [6, 16], [6, 16],         // 101010xxx\n    [6, 16], [6, 16], [6, 16], [6, 16],\n    [6, 17], [6, 17], [6, 17], [6, 17],         // 101011xxx\n    [6, 17], [6, 17], [6, 17], [6, 17],\n    [4, 4], [4, 4], [4, 4], [4, 4],             // 1011xxxxx\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 4], [4, 4], [4, 4], [4, 4],\n    [4, 5], [4, 5], [4, 5], [4, 5],             // 1100xxxxx\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [4, 5], [4, 5], [4, 5], [4, 5],\n    [6, 14], [6, 14], [6, 14], [6, 14],         // 110100xxx\n    [6, 14], [6, 14], [6, 14], [6, 14],\n    [6, 15], [6, 15], [6, 15], [6, 15],         // 110101xxx\n    [6, 15], [6, 15], [6, 15], [6, 15],\n    [5, 64], [5, 64], [5, 64], [5, 64],         // 11011xxxx\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [5, 64], [5, 64], [5, 64], [5, 64],\n    [4, 6], [4, 6], [4, 6], [4, 6],             // 1110xxxxx\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 6], [4, 6], [4, 6], [4, 6],\n    [4, 7], [4, 7], [4, 7], [4, 7],             // 1111xxxxx\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7],\n    [4, 7], [4, 7], [4, 7], [4, 7]\n  ];\n\n  const blackTable1 = [\n    [-1, -1], [-1, -1],                             // 000000000000x\n    [12, ccittEOL], [12, ccittEOL],                 // 000000000001x\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000001xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000010xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000011xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000100xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000101xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000110xx\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1],         // 00000000111xx\n    [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n    [12, 1984], [12, 1984],                         // 000000010010x\n    [12, 2048], [12, 2048],                         // 000000010011x\n    [12, 2112], [12, 2112],                         // 000000010100x\n    [12, 2176], [12, 2176],                         // 000000010101x\n    [12, 2240], [12, 2240],                         // 000000010110x\n    [12, 2304], [12, 2304],                         // 000000010111x\n    [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n    [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n    [12, 2368], [12, 2368],                         // 000000011100x\n    [12, 2432], [12, 2432],                         // 000000011101x\n    [12, 2496], [12, 2496],                         // 000000011110x\n    [12, 2560], [12, 2560],                         // 000000011111x\n    [10, 18], [10, 18], [10, 18], [10, 18],         // 0000001000xxx\n    [10, 18], [10, 18], [10, 18], [10, 18],\n    [12, 52], [12, 52],                             // 000000100100x\n    [13, 640],                                      // 0000001001010\n    [13, 704],                                      // 0000001001011\n    [13, 768],                                      // 0000001001100\n    [13, 832],                                      // 0000001001101\n    [12, 55], [12, 55],                             // 000000100111x\n    [12, 56], [12, 56],                             // 000000101000x\n    [13, 1280],                                     // 0000001010010\n    [13, 1344],                                     // 0000001010011\n    [13, 1408],                                     // 0000001010100\n    [13, 1472],                                     // 0000001010101\n    [12, 59], [12, 59],                             // 000000101011x\n    [12, 60], [12, 60],                             // 000000101100x\n    [13, 1536],                                     // 0000001011010\n    [13, 1600],                                     // 0000001011011\n    [11, 24], [11, 24], [11, 24], [11, 24],         // 00000010111xx\n    [11, 25], [11, 25], [11, 25], [11, 25],         // 00000011000xx\n    [13, 1664],                                     // 0000001100100\n    [13, 1728],                                     // 0000001100101\n    [12, 320], [12, 320],                           // 000000110011x\n    [12, 384], [12, 384],                           // 000000110100x\n    [12, 448], [12, 448],                           // 000000110101x\n    [13, 512],                                      // 0000001101100\n    [13, 576],                                      // 0000001101101\n    [12, 53], [12, 53],                             // 000000110111x\n    [12, 54], [12, 54],                             // 000000111000x\n    [13, 896],                                      // 0000001110010\n    [13, 960],                                      // 0000001110011\n    [13, 1024],                                     // 0000001110100\n    [13, 1088],                                     // 0000001110101\n    [13, 1152],                                     // 0000001110110\n    [13, 1216],                                     // 0000001110111\n    [10, 64], [10, 64], [10, 64], [10, 64],         // 0000001111xxx\n    [10, 64], [10, 64], [10, 64], [10, 64]\n  ];\n\n  const blackTable2 = [\n    [8, 13], [8, 13], [8, 13], [8, 13],     // 00000100xxxx\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [8, 13], [8, 13], [8, 13], [8, 13],\n    [11, 23], [11, 23],                     // 00000101000x\n    [12, 50],                               // 000001010010\n    [12, 51],                               // 000001010011\n    [12, 44],                               // 000001010100\n    [12, 45],                               // 000001010101\n    [12, 46],                               // 000001010110\n    [12, 47],                               // 000001010111\n    [12, 57],                               // 000001011000\n    [12, 58],                               // 000001011001\n    [12, 61],                               // 000001011010\n    [12, 256],                              // 000001011011\n    [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n    [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n    [12, 48],                               // 000001100100\n    [12, 49],                               // 000001100101\n    [12, 62],                               // 000001100110\n    [12, 63],                               // 000001100111\n    [12, 30],                               // 000001101000\n    [12, 31],                               // 000001101001\n    [12, 32],                               // 000001101010\n    [12, 33],                               // 000001101011\n    [12, 40],                               // 000001101100\n    [12, 41],                               // 000001101101\n    [11, 22], [11, 22],                     // 00000110111x\n    [8, 14], [8, 14], [8, 14], [8, 14],     // 00000111xxxx\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [8, 14], [8, 14], [8, 14], [8, 14],\n    [7, 10], [7, 10], [7, 10], [7, 10],     // 0000100xxxxx\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 10], [7, 10], [7, 10], [7, 10],\n    [7, 11], [7, 11], [7, 11], [7, 11],     // 0000101xxxxx\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [7, 11], [7, 11], [7, 11], [7, 11],\n    [9, 15], [9, 15], [9, 15], [9, 15],     // 000011000xxx\n    [9, 15], [9, 15], [9, 15], [9, 15],\n    [12, 128],                              // 000011001000\n    [12, 192],                              // 000011001001\n    [12, 26],                               // 000011001010\n    [12, 27],                               // 000011001011\n    [12, 28],                               // 000011001100\n    [12, 29],                               // 000011001101\n    [11, 19], [11, 19],                     // 00001100111x\n    [11, 20], [11, 20],                     // 00001101000x\n    [12, 34],                               // 000011010010\n    [12, 35],                               // 000011010011\n    [12, 36],                               // 000011010100\n    [12, 37],                               // 000011010101\n    [12, 38],                               // 000011010110\n    [12, 39],                               // 000011010111\n    [11, 21], [11, 21],                     // 00001101100x\n    [12, 42],                               // 000011011010\n    [12, 43],                               // 000011011011\n    [10, 0], [10, 0], [10, 0], [10, 0],     // 0000110111xx\n    [7, 12], [7, 12], [7, 12], [7, 12],     // 0000111xxxxx\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12],\n    [7, 12], [7, 12], [7, 12], [7, 12]\n  ];\n\n  const blackTable3 = [\n    [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n    [6, 9],                                 // 000100\n    [6, 8],                                 // 000101\n    [5, 7], [5, 7],                         // 00011x\n    [4, 6], [4, 6], [4, 6], [4, 6],         // 0010xx\n    [4, 5], [4, 5], [4, 5], [4, 5],         // 0011xx\n    [3, 1], [3, 1], [3, 1], [3, 1],         // 010xxx\n    [3, 1], [3, 1], [3, 1], [3, 1],\n    [3, 4], [3, 4], [3, 4], [3, 4],         // 011xxx\n    [3, 4], [3, 4], [3, 4], [3, 4],\n    [2, 3], [2, 3], [2, 3], [2, 3],         // 10xxxx\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 3], [2, 3], [2, 3], [2, 3],\n    [2, 2], [2, 2], [2, 2], [2, 2],         // 11xxxx\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2],\n    [2, 2], [2, 2], [2, 2], [2, 2]\n  ];\n\n  /**\n   * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\n   * @param {Object} options - (optional) Decoding options.\n   */\n  function CCITTFaxDecoder(source, options = {}) {\n    if (!source || typeof source.next !== 'function') {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n    this.source = source;\n    this.eof = false;\n\n    this.encoding = options['K'] || 0;\n    this.eoline = options['EndOfLine'] || false;\n    this.byteAlign = options['EncodedByteAlign'] || false;\n    this.columns = options['Columns'] || 1728;\n    this.rows = options['Rows'] || 0;\n    let eoblock = options['EndOfBlock'];\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n    this.eoblock = eoblock;\n    this.black = options['BlackIs1'] || false;\n\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n\n    let code1;\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n      this._eatBits(1);\n    }\n  }\n\n  CCITTFaxDecoder.prototype = {\n    readNextChar() {\n      if (this.eof) {\n        return -1;\n      }\n      let refLine = this.refLine;\n      let codingLine = this.codingLine;\n      let columns = this.columns;\n\n      let refPos, blackPixels, bits, i;\n\n      if (this.outputBits === 0) {\n        if (this.rowsDone) {\n          this.eof = true;\n        }\n        if (this.eof) {\n          return -1;\n        }\n        this.err = false;\n\n        let code1, code2, code3;\n        if (this.nextLine2D) {\n          for (i = 0; codingLine[i] < columns; ++i) {\n            refLine[i] = codingLine[i];\n          }\n          refLine[i++] = columns;\n          refLine[i] = columns;\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          refPos = 0;\n          blackPixels = 0;\n\n          while (codingLine[this.codingPos] < columns) {\n            code1 = this._getTwoDimCode();\n            switch (code1) {\n              case twoDimPass:\n                this._addPixels(refLine[refPos + 1], blackPixels);\n                if (refLine[refPos + 1] < columns) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimHoriz:\n                code1 = code2 = 0;\n                if (blackPixels) {\n                  do {\n                    code1 += (code3 = this._getBlackCode());\n                  } while (code3 >= 64);\n                  do {\n                    code2 += (code3 = this._getWhiteCode());\n                  } while (code3 >= 64);\n                } else {\n                  do {\n                    code1 += (code3 = this._getWhiteCode());\n                  } while (code3 >= 64);\n                  do {\n                    code2 += (code3 = this._getBlackCode());\n                  } while (code3 >= 64);\n                }\n                this._addPixels(codingLine[this.codingPos] +\n                               code1, blackPixels);\n                if (codingLine[this.codingPos] < columns) {\n                  this._addPixels(codingLine[this.codingPos] + code2,\n                                 blackPixels ^ 1);\n                }\n                while (refLine[refPos] <= codingLine[this.codingPos] &&\n                       refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n                break;\n              case twoDimVertR3:\n                this._addPixels(refLine[refPos] + 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (refLine[refPos] <= codingLine[this.codingPos] &&\n                         refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR2:\n                this._addPixels(refLine[refPos] + 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (refLine[refPos] <= codingLine[this.codingPos] &&\n                         refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertR1:\n                this._addPixels(refLine[refPos] + 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (refLine[refPos] <= codingLine[this.codingPos] &&\n                         refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVert0:\n                this._addPixels(refLine[refPos], blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  ++refPos;\n                  while (refLine[refPos] <= codingLine[this.codingPos] &&\n                         refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL3:\n                this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (refLine[refPos] <= codingLine[this.codingPos] &&\n                         refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL2:\n                this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (refLine[refPos] <= codingLine[this.codingPos] &&\n                         refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case twoDimVertL1:\n                this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n                blackPixels ^= 1;\n                if (codingLine[this.codingPos] < columns) {\n                  if (refPos > 0) {\n                    --refPos;\n                  } else {\n                    ++refPos;\n                  }\n                  while (refLine[refPos] <= codingLine[this.codingPos] &&\n                         refLine[refPos] < columns) {\n                    refPos += 2;\n                  }\n                }\n                break;\n              case ccittEOF:\n                this._addPixels(columns, 0);\n                this.eof = true;\n                break;\n              default:\n                info('bad 2d code');\n                this._addPixels(columns, 0);\n                this.err = true;\n            }\n          }\n        } else {\n          codingLine[0] = 0;\n          this.codingPos = 0;\n          blackPixels = 0;\n          while (codingLine[this.codingPos] < columns) {\n            code1 = 0;\n            if (blackPixels) {\n              do {\n                code1 += (code3 = this._getBlackCode());\n              } while (code3 >= 64);\n            } else {\n              do {\n                code1 += (code3 = this._getWhiteCode());\n              } while (code3 >= 64);\n            }\n            this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n            blackPixels ^= 1;\n          }\n        }\n\n        let gotEOL = false;\n\n        if (this.byteAlign) {\n          this.inputBits &= ~7;\n        }\n\n        if (!this.eoblock && this.row === this.rows - 1) {\n          this.rowsDone = true;\n        } else {\n          code1 = this._lookBits(12);\n          if (this.eoline) {\n            while (code1 !== ccittEOF && code1 !== 1) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          } else {\n            while (code1 === 0) {\n              this._eatBits(1);\n              code1 = this._lookBits(12);\n            }\n          }\n          if (code1 === 1) {\n            this._eatBits(12);\n            gotEOL = true;\n          } else if (code1 === ccittEOF) {\n            this.eof = true;\n          }\n        }\n\n        if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n          this.nextLine2D = !this._lookBits(1);\n          this._eatBits(1);\n        }\n\n        if (this.eoblock && gotEOL && this.byteAlign) {\n          code1 = this._lookBits(12);\n          if (code1 === 1) {\n            this._eatBits(12);\n            if (this.encoding > 0) {\n              this._lookBits(1);\n              this._eatBits(1);\n            }\n            if (this.encoding >= 0) {\n              for (i = 0; i < 4; ++i) {\n                code1 = this._lookBits(12);\n                if (code1 !== 1) {\n                  info('bad rtc code: ' + code1);\n                }\n                this._eatBits(12);\n                if (this.encoding > 0) {\n                  this._lookBits(1);\n                  this._eatBits(1);\n                }\n              }\n            }\n            this.eof = true;\n          }\n        } else if (this.err && this.eoline) {\n          while (true) {\n            code1 = this._lookBits(13);\n            if (code1 === ccittEOF) {\n              this.eof = true;\n              return -1;\n            }\n            if ((code1 >> 1) === 1) {\n              break;\n            }\n            this._eatBits(1);\n          }\n          this._eatBits(12);\n          if (this.encoding > 0) {\n            this._eatBits(1);\n            this.nextLine2D = !(code1 & 1);\n          }\n        }\n\n        if (codingLine[0] > 0) {\n          this.outputBits = codingLine[this.codingPos = 0];\n        } else {\n          this.outputBits = codingLine[this.codingPos = 1];\n        }\n        this.row++;\n      }\n\n      let c;\n      if (this.outputBits >= 8) {\n        c = (this.codingPos & 1) ? 0 : 0xFF;\n        this.outputBits -= 8;\n        if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n          this.codingPos++;\n          this.outputBits = (codingLine[this.codingPos] -\n                             codingLine[this.codingPos - 1]);\n        }\n      } else {\n        bits = 8;\n        c = 0;\n        do {\n          if (this.outputBits > bits) {\n            c <<= bits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xFF >> (8 - bits);\n            }\n            this.outputBits -= bits;\n            bits = 0;\n          } else {\n            c <<= this.outputBits;\n            if (!(this.codingPos & 1)) {\n              c |= 0xFF >> (8 - this.outputBits);\n            }\n            bits -= this.outputBits;\n            this.outputBits = 0;\n            if (codingLine[this.codingPos] < columns) {\n              this.codingPos++;\n              this.outputBits = (codingLine[this.codingPos] -\n                                 codingLine[this.codingPos - 1]);\n            } else if (bits > 0) {\n              c <<= bits;\n              bits = 0;\n            }\n          }\n        } while (bits);\n      }\n      if (this.black) {\n        c ^= 0xFF;\n      }\n      return c;\n    },\n\n    /**\n     * @private\n     */\n    _addPixels(a1, blackPixels) {\n      let codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info('row is wrong length');\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      }\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * @private\n     */\n    _addPixelsNeg(a1, blackPixels) {\n      let codingLine = this.codingLine;\n      let codingPos = this.codingPos;\n\n      if (a1 > codingLine[codingPos]) {\n        if (a1 > this.columns) {\n          info('row is wrong length');\n          this.err = true;\n          a1 = this.columns;\n        }\n        if ((codingPos & 1) ^ blackPixels) {\n          ++codingPos;\n        }\n\n        codingLine[codingPos] = a1;\n      } else if (a1 < codingLine[codingPos]) {\n        if (a1 < 0) {\n          info('invalid code');\n          this.err = true;\n          a1 = 0;\n        }\n        while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n          --codingPos;\n        }\n        codingLine[codingPos] = a1;\n      }\n\n      this.codingPos = codingPos;\n    },\n\n    /**\n     * This function returns the code found from the table.\n     * The start and end parameters set the boundaries for searching the table.\n     * The limit parameter is optional. Function returns an array with three\n     * values. The first array element indicates whether a valid code is being\n     * returned. The second array element is the actual code. The third array\n     * element indicates whether EOF was reached.\n     * @private\n     */\n    _findTableCode(start, end, table, limit) {\n      let limitValue = limit || 0;\n      for (let i = start; i <= end; ++i) {\n        let code = this._lookBits(i);\n        if (code === ccittEOF) {\n          return [true, 1, false];\n        }\n        if (i < end) {\n          code <<= end - i;\n        }\n        if (!limitValue || code >= limitValue) {\n          let p = table[code - limitValue];\n          if (p[0] === i) {\n            this._eatBits(i);\n            return [true, p[1], true];\n          }\n        }\n      }\n      return [false, 0, false];\n    },\n\n    /**\n     * @private\n     */\n    _getTwoDimCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(7);\n        p = twoDimTable[code];\n        if (p && p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(1, 7, twoDimTable);\n        if (result[0] && result[2]) {\n          return result[1];\n        }\n      }\n      info('Bad two dim code');\n      return ccittEOF;\n    },\n\n    /**\n     * @private\n     */\n    _getWhiteCode() {\n      let code = 0;\n      let p;\n      if (this.eoblock) {\n        code = this._lookBits(12);\n        if (code === ccittEOF) {\n          return 1;\n        }\n\n        if ((code >> 5) === 0) {\n          p = whiteTable1[code];\n        } else {\n          p = whiteTable2[code >> 3];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(1, 9, whiteTable2);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(11, 12, whiteTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info('bad white code');\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _getBlackCode() {\n      let code, p;\n      if (this.eoblock) {\n        code = this._lookBits(13);\n        if (code === ccittEOF) {\n          return 1;\n        }\n        if ((code >> 7) === 0) {\n          p = blackTable1[code];\n        } else if ((code >> 9) === 0 && (code >> 7) !== 0) {\n          p = blackTable2[(code >> 1) - 64];\n        } else {\n          p = blackTable3[code >> 7];\n        }\n\n        if (p[0] > 0) {\n          this._eatBits(p[0]);\n          return p[1];\n        }\n      } else {\n        let result = this._findTableCode(2, 6, blackTable3);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(7, 12, blackTable2, 64);\n        if (result[0]) {\n          return result[1];\n        }\n\n        result = this._findTableCode(10, 13, blackTable1);\n        if (result[0]) {\n          return result[1];\n        }\n      }\n      info('bad black code');\n      this._eatBits(1);\n      return 1;\n    },\n\n    /**\n     * @private\n     */\n    _lookBits(n) {\n      let c;\n      while (this.inputBits < n) {\n        if ((c = this.source.next()) === -1) {\n          if (this.inputBits === 0) {\n            return ccittEOF;\n          }\n          return ((this.inputBuf << (n - this.inputBits)) &\n                  (0xFFFF >> (16 - n)));\n        }\n        this.inputBuf = (this.inputBuf << 8) | c;\n        this.inputBits += 8;\n      }\n      return (this.inputBuf >> (this.inputBits - n)) & (0xFFFF >> (16 - n));\n    },\n\n    /**\n     * @private\n     */\n    _eatBits(n) {\n      if ((this.inputBits -= n) < 0) {\n        this.inputBits = 0;\n      }\n    },\n  };\n\n  return CCITTFaxDecoder;\n})();\n\nexport {\n  CCITTFaxDecoder,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isDict, isStream } from './primitives';\nimport { DecodeStream } from './stream';\nimport { Jbig2Image } from './jbig2';\nimport { shadow } from '../shared/util';\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nlet Jbig2Stream = (function Jbig2StreamClosure() {\n  function Jbig2Stream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  Jbig2Stream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(Jbig2Stream.prototype, 'bytes', {\n    get() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  Jbig2Stream.prototype.ensureBuffer = function(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  Jbig2Stream.prototype.readBlock = function() {\n    if (this.eof) {\n      return;\n    }\n    let jbig2Image = new Jbig2Image();\n\n    let chunks = [];\n    if (isDict(this.params)) {\n      let globalsStream = this.params.get('JBIG2Globals');\n      if (isStream(globalsStream)) {\n        let globals = globalsStream.getBytes();\n        chunks.push({ data: globals, start: 0, end: globals.length, });\n      }\n    }\n    chunks.push({ data: this.bytes, start: 0, end: this.bytes.length, });\n    let data = jbig2Image.parseChunks(chunks);\n    let dataLength = data.length;\n\n    // JBIG2 had black as 1 and white as 0, inverting the colors\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xFF;\n    }\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  };\n\n  return Jbig2Stream;\n})();\n\nexport {\n  Jbig2Stream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { log2, readInt8, readUint16, readUint32, shadow } from '../shared/util';\nimport { ArithmeticDecoder } from './arithmetic_decoder';\nimport { CCITTFaxDecoder } from './ccitt';\n\nlet Jbig2Error = (function Jbig2ErrorClosure() {\n  function Jbig2Error(msg) {\n    this.message = 'JBIG2 error: ' + msg;\n  }\n\n  Jbig2Error.prototype = new Error();\n  Jbig2Error.prototype.name = 'Jbig2Error';\n  Jbig2Error.constructor = Jbig2Error;\n\n  return Jbig2Error;\n})();\n\nvar Jbig2Image = (function Jbig2ImageClosure() {\n  // Utility data structures\n  function ContextCache() {}\n\n  ContextCache.prototype = {\n    getContexts(id) {\n      if (id in this) {\n        return this[id];\n      }\n      return (this[id] = new Int8Array(1 << 16));\n    },\n  };\n\n  function DecodingContext(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  DecodingContext.prototype = {\n    get decoder() {\n      var decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n      return shadow(this, 'decoder', decoder);\n    },\n    get contextCache() {\n      var cache = new ContextCache();\n      return shadow(this, 'contextCache', cache);\n    },\n  };\n\n  // Annex A. Arithmetic Integer Decoding Procedure\n  // A.2 Procedure for decoding values\n  function decodeInteger(contextCache, procedure, decoder) {\n    var contexts = contextCache.getContexts(procedure);\n    var prev = 1;\n\n    function readBits(length) {\n      var v = 0;\n      for (var i = 0; i < length; i++) {\n        var bit = decoder.readBit(contexts, prev);\n        prev = (prev < 256 ? (prev << 1) | bit :\n                (((prev << 1) | bit) & 511) | 256);\n        v = (v << 1) | bit;\n      }\n      return v >>> 0;\n    }\n\n    var sign = readBits(1);\n    var value = readBits(1) ?\n                  (readBits(1) ?\n                    (readBits(1) ?\n                      (readBits(1) ?\n                        (readBits(1) ?\n                          (readBits(32) + 4436) :\n                        readBits(12) + 340) :\n                      readBits(8) + 84) :\n                    readBits(6) + 20) :\n                  readBits(4) + 4) :\n                readBits(2);\n    return (sign === 0 ? value : (value > 0 ? -value : null));\n  }\n\n  // A.3 The IAID decoding procedure\n  function decodeIAID(contextCache, decoder, codeLength) {\n    var contexts = contextCache.getContexts('IAID');\n\n    var prev = 1;\n    for (var i = 0; i < codeLength; i++) {\n      var bit = decoder.readBit(contexts, prev);\n      prev = (prev << 1) | bit;\n    }\n    if (codeLength < 31) {\n      return prev & ((1 << codeLength) - 1);\n    }\n    return prev & 0x7FFFFFFF;\n  }\n\n  // 7.3 Segment types\n  var SegmentTypes = [\n    'SymbolDictionary', null, null, null, 'IntermediateTextRegion', null,\n    'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null,\n    null, null, null, null, null, 'PatternDictionary', null, null, null,\n    'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion',\n    'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null,\n    null, null, null, null, null, 'IntermediateGenericRegion', null,\n    'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion',\n    'IntermediateGenericRefinementRegion', null,\n    'ImmediateGenericRefinementRegion',\n    'ImmediateLosslessGenericRefinementRegion', null, null, null, null,\n    'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles',\n    'Tables', null, null, null, null, null, null, null, null,\n    'Extension'\n  ];\n\n  var CodingTemplates = [\n    [{ x: -1, y: -2, }, { x: 0, y: -2, }, { x: 1, y: -2, }, { x: -2, y: -1, },\n     { x: -1, y: -1, }, { x: 0, y: -1, }, { x: 1, y: -1, }, { x: 2, y: -1, },\n     { x: -4, y: 0, }, { x: -3, y: 0, }, { x: -2, y: 0, }, { x: -1, y: 0, }],\n    [{ x: -1, y: -2, }, { x: 0, y: -2, }, { x: 1, y: -2, }, { x: 2, y: -2, },\n     { x: -2, y: -1, }, { x: -1, y: -1, }, { x: 0, y: -1, }, { x: 1, y: -1, },\n     { x: 2, y: -1, }, { x: -3, y: 0, }, { x: -2, y: 0, }, { x: -1, y: 0, }],\n    [{ x: -1, y: -2, }, { x: 0, y: -2, }, { x: 1, y: -2, }, { x: -2, y: -1, },\n     { x: -1, y: -1, }, { x: 0, y: -1, }, { x: 1, y: -1, }, { x: -2, y: 0, },\n     { x: -1, y: 0, }],\n    [{ x: -3, y: -1, }, { x: -2, y: -1, }, { x: -1, y: -1, }, { x: 0, y: -1, },\n     { x: 1, y: -1, }, { x: -4, y: 0, }, { x: -3, y: 0, }, { x: -2, y: 0, },\n     { x: -1, y: 0, }]\n  ];\n\n  var RefinementTemplates = [\n    {\n      coding: [{ x: 0, y: -1, }, { x: 1, y: -1, }, { x: -1, y: 0, }],\n      reference: [{ x: 0, y: -1, }, { x: 1, y: -1, }, { x: -1, y: 0, },\n                  { x: 0, y: 0, }, { x: 1, y: 0, }, { x: -1, y: 1, },\n                  { x: 0, y: 1, }, { x: 1, y: 1, }],\n    },\n    {\n      coding: [{ x: -1, y: -1, }, { x: 0, y: -1, }, { x: 1, y: -1, },\n               { x: -1, y: 0, }],\n      reference: [{ x: 0, y: -1, }, { x: -1, y: 0, }, { x: 0, y: 0, },\n                  { x: 1, y: 0, }, { x: 0, y: 1, }, { x: 1, y: 1, }],\n    }\n  ];\n\n  // See 6.2.5.7 Decoding the bitmap.\n  var ReusedContexts = [\n    0x9B25, // 10011 0110010 0101\n    0x0795, // 0011 110010 101\n    0x00E5, // 001 11001 01\n    0x0195  // 011001 0101\n  ];\n\n  var RefinementReusedContexts = [\n    0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n    0x0008  // '0000' + '001000'\n  ];\n\n  function decodeBitmapTemplate0(width, height, decodingContext) {\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts('GB');\n    var contextLabel, i, j, pixel, row, row1, row2, bitmap = [];\n\n    // ...ooooo....\n    // ..ooooooo... Context template for current pixel (X)\n    // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n    var OLD_PIXEL_MASK = 0x7BF7; // 01111 0111111 0111\n\n    for (i = 0; i < height; i++) {\n      row = bitmap[i] = new Uint8Array(width);\n      row1 = (i < 1) ? row : bitmap[i - 1];\n      row2 = (i < 2) ? row : bitmap[i - 2];\n\n      // At the beginning of each row:\n      // Fill contextLabel with pixels that are above/right of (X)\n      contextLabel = (row2[0] << 13) | (row2[1] << 12) | (row2[2] << 11) |\n                     (row1[0] << 7) | (row1[1] << 6) | (row1[2] << 5) |\n                     (row1[3] << 4);\n\n      for (j = 0; j < width; j++) {\n        row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n        // At each pixel: Clear contextLabel pixels that are shifted\n        // out of the context, then add new ones.\n        contextLabel = ((contextLabel & OLD_PIXEL_MASK) << 1) |\n                       (j + 3 < width ? row2[j + 3] << 11 : 0) |\n                       (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.2 Generic Region Decoding Procedure\n  function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at,\n                        decodingContext) {\n    if (mmr) {\n      let input = new Reader(decodingContext.data, decodingContext.start,\n        decodingContext.end);\n      return decodeMMRBitmap(input, width, height, false);\n    }\n\n    // Use optimized version for the most common case\n    if (templateIndex === 0 && !skip && !prediction && at.length === 4 &&\n        at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 &&\n        at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {\n      return decodeBitmapTemplate0(width, height, decodingContext);\n    }\n\n    var useskip = !!skip;\n    var template = CodingTemplates[templateIndex].concat(at);\n\n    // Sorting is non-standard, and it is not required. But sorting increases\n    // the number of template bits that can be reused from the previous\n    // contextLabel in the main loop.\n    template.sort(function (a, b) {\n      return (a.y - b.y) || (a.x - b.x);\n    });\n\n    var templateLength = template.length;\n    var templateX = new Int8Array(templateLength);\n    var templateY = new Int8Array(templateLength);\n    var changingTemplateEntries = [];\n    var reuseMask = 0, minX = 0, maxX = 0, minY = 0;\n    var c, k;\n\n    for (k = 0; k < templateLength; k++) {\n      templateX[k] = template[k].x;\n      templateY[k] = template[k].y;\n      minX = Math.min(minX, template[k].x);\n      maxX = Math.max(maxX, template[k].x);\n      minY = Math.min(minY, template[k].y);\n      // Check if the template pixel appears in two consecutive context labels,\n      // so it can be reused. Otherwise, we add it to the list of changing\n      // template entries.\n      if (k < templateLength - 1 &&\n          template[k].y === template[k + 1].y &&\n          template[k].x === template[k + 1].x - 1) {\n        reuseMask |= 1 << (templateLength - 1 - k);\n      } else {\n        changingTemplateEntries.push(k);\n      }\n    }\n    var changingEntriesLength = changingTemplateEntries.length;\n\n    var changingTemplateX = new Int8Array(changingEntriesLength);\n    var changingTemplateY = new Int8Array(changingEntriesLength);\n    var changingTemplateBit = new Uint16Array(changingEntriesLength);\n    for (c = 0; c < changingEntriesLength; c++) {\n      k = changingTemplateEntries[c];\n      changingTemplateX[c] = template[k].x;\n      changingTemplateY[c] = template[k].y;\n      changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n    }\n\n    // Get the safe bounding box edges from the width, height, minX, maxX, minY\n    var sbb_left = -minX;\n    var sbb_top = -minY;\n    var sbb_right = width - maxX;\n\n    var pseudoPixelContext = ReusedContexts[templateIndex];\n    var row = new Uint8Array(width);\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts('GB');\n\n    var ltp = 0, j, i0, j0, contextLabel = 0, bit, shift;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          bitmap.push(row); // duplicate previous row\n          continue;\n        }\n      }\n      row = new Uint8Array(row);\n      bitmap.push(row);\n      for (j = 0; j < width; j++) {\n        if (useskip && skip[i][j]) {\n          row[j] = 0;\n          continue;\n        }\n        // Are we in the middle of a scanline, so we can reuse contextLabel\n        // bits?\n        if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n          // If yes, we can just shift the bits that are reusable and only\n          // fetch the remaining ones.\n          contextLabel = (contextLabel << 1) & reuseMask;\n          for (k = 0; k < changingEntriesLength; k++) {\n            i0 = i + changingTemplateY[k];\n            j0 = j + changingTemplateX[k];\n            bit = bitmap[i0][j0];\n            if (bit) {\n              bit = changingTemplateBit[k];\n              contextLabel |= bit;\n            }\n          }\n        } else {\n          // compute the contextLabel from scratch\n          contextLabel = 0;\n          shift = templateLength - 1;\n          for (k = 0; k < templateLength; k++, shift--) {\n            j0 = j + templateX[k];\n            if (j0 >= 0 && j0 < width) {\n              i0 = i + templateY[k];\n              if (i0 >= 0) {\n                bit = bitmap[i0][j0];\n                if (bit) {\n                  contextLabel |= bit << shift;\n                }\n              }\n            }\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n    return bitmap;\n  }\n\n  // 6.3.2 Generic Refinement Region Decoding Procedure\n  function decodeRefinement(width, height, templateIndex, referenceBitmap,\n                            offsetX, offsetY, prediction, at,\n                            decodingContext) {\n    var codingTemplate = RefinementTemplates[templateIndex].coding;\n    if (templateIndex === 0) {\n      codingTemplate = codingTemplate.concat([at[0]]);\n    }\n    var codingTemplateLength = codingTemplate.length;\n    var codingTemplateX = new Int32Array(codingTemplateLength);\n    var codingTemplateY = new Int32Array(codingTemplateLength);\n    var k;\n    for (k = 0; k < codingTemplateLength; k++) {\n      codingTemplateX[k] = codingTemplate[k].x;\n      codingTemplateY[k] = codingTemplate[k].y;\n    }\n\n    var referenceTemplate = RefinementTemplates[templateIndex].reference;\n    if (templateIndex === 0) {\n      referenceTemplate = referenceTemplate.concat([at[1]]);\n    }\n    var referenceTemplateLength = referenceTemplate.length;\n    var referenceTemplateX = new Int32Array(referenceTemplateLength);\n    var referenceTemplateY = new Int32Array(referenceTemplateLength);\n    for (k = 0; k < referenceTemplateLength; k++) {\n      referenceTemplateX[k] = referenceTemplate[k].x;\n      referenceTemplateY[k] = referenceTemplate[k].y;\n    }\n    var referenceWidth = referenceBitmap[0].length;\n    var referenceHeight = referenceBitmap.length;\n\n    var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n    var bitmap = [];\n\n    var decoder = decodingContext.decoder;\n    var contexts = decodingContext.contextCache.getContexts('GR');\n\n    var ltp = 0;\n    for (var i = 0; i < height; i++) {\n      if (prediction) {\n        var sltp = decoder.readBit(contexts, pseudoPixelContext);\n        ltp ^= sltp;\n        if (ltp) {\n          throw new Jbig2Error('prediction is not supported');\n        }\n      }\n      var row = new Uint8Array(width);\n      bitmap.push(row);\n      for (var j = 0; j < width; j++) {\n        var i0, j0;\n        var contextLabel = 0;\n        for (k = 0; k < codingTemplateLength; k++) {\n          i0 = i + codingTemplateY[k];\n          j0 = j + codingTemplateX[k];\n          if (i0 < 0 || j0 < 0 || j0 >= width) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n          }\n        }\n        for (k = 0; k < referenceTemplateLength; k++) {\n          i0 = i + referenceTemplateY[k] - offsetY;\n          j0 = j + referenceTemplateX[k] - offsetX;\n          if (i0 < 0 || i0 >= referenceHeight || j0 < 0 ||\n              j0 >= referenceWidth) {\n            contextLabel <<= 1; // out of bound pixel\n          } else {\n            contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n          }\n        }\n        var pixel = decoder.readBit(contexts, contextLabel);\n        row[j] = pixel;\n      }\n    }\n\n    return bitmap;\n  }\n\n  // 6.5.5 Decoding the symbol dictionary\n  function decodeSymbolDictionary(huffman, refinement, symbols,\n                                  numberOfNewSymbols, numberOfExportedSymbols,\n                                  huffmanTables, templateIndex, at,\n                                  refinementTemplateIndex, refinementAt,\n                                  decodingContext, huffmanInput) {\n    if (huffman && refinement) {\n      throw new Jbig2Error('symbol refinement with Huffman is not supported');\n    }\n\n    var newSymbols = [];\n    var currentHeight = 0;\n    var symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n    let tableB1, symbolWidths;\n    if (huffman) {\n      tableB1 = getStandardTable(1); // standard table B.1\n      symbolWidths = [];\n      symbolCodeLength = Math.max(symbolCodeLength, 1); // 6.5.8.2.3\n    }\n\n    while (newSymbols.length < numberOfNewSymbols) {\n      var deltaHeight = huffman ?\n        huffmanTables.tableDeltaHeight.decode(huffmanInput) :\n        decodeInteger(contextCache, 'IADH', decoder); // 6.5.6\n      currentHeight += deltaHeight;\n      let currentWidth = 0, totalWidth = 0;\n      let firstSymbol = huffman ? symbolWidths.length : 0;\n      while (true) {\n        var deltaWidth = huffman ?\n          huffmanTables.tableDeltaWidth.decode(huffmanInput) :\n          decodeInteger(contextCache, 'IADW', decoder); // 6.5.7\n        if (deltaWidth === null) {\n          break; // OOB\n        }\n        currentWidth += deltaWidth;\n        totalWidth += currentWidth;\n        var bitmap;\n        if (refinement) {\n          // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n          var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);\n          if (numberOfInstances > 1) {\n            bitmap = decodeTextRegion(huffman, refinement,\n                                      currentWidth, currentHeight, 0,\n                                      numberOfInstances, 1, // strip size\n                                      symbols.concat(newSymbols),\n                                      symbolCodeLength,\n                                      0, // transposed\n                                      0, // ds offset\n                                      1, // top left 7.4.3.1.1\n                                      0, // OR operator\n                                      huffmanTables,\n                                      refinementTemplateIndex, refinementAt,\n                                      decodingContext, 0, huffmanInput);\n          } else {\n            var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n            var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3\n            var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4\n            var symbol = (symbolId < symbols.length ? symbols[symbolId] :\n                          newSymbols[symbolId - symbols.length]);\n            bitmap = decodeRefinement(currentWidth, currentHeight,\n            refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt,\n            decodingContext);\n          }\n          newSymbols.push(bitmap);\n        } else if (huffman) {\n          // Store only symbol width and decode a collective bitmap when the\n          // height class is done.\n          symbolWidths.push(currentWidth);\n        } else {\n          // 6.5.8.1 Direct-coded symbol bitmap\n          bitmap = decodeBitmap(false, currentWidth, currentHeight,\n            templateIndex, false, null, at, decodingContext);\n          newSymbols.push(bitmap);\n        }\n      }\n      if (huffman && !refinement) {\n        // 6.5.9 Height class collective bitmap\n        let bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n        huffmanInput.byteAlign();\n        let collectiveBitmap;\n        if (bitmapSize === 0) {\n          // Uncompressed collective bitmap\n          collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth,\n            currentHeight);\n        } else {\n          // MMR collective bitmap\n          let originalEnd = huffmanInput.end;\n          let bitmapEnd = huffmanInput.position + bitmapSize;\n          huffmanInput.end = bitmapEnd;\n          collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth,\n            currentHeight, false);\n          huffmanInput.end = originalEnd;\n          huffmanInput.position = bitmapEnd;\n        }\n        let numberOfSymbolsDecoded = symbolWidths.length;\n        if (firstSymbol === numberOfSymbolsDecoded - 1) {\n          // collectiveBitmap is a single symbol.\n          newSymbols.push(collectiveBitmap);\n        } else {\n          // Divide collectiveBitmap into symbols.\n          let i, y, xMin = 0, xMax, bitmapWidth, symbolBitmap;\n          for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n            bitmapWidth = symbolWidths[i];\n            xMax = xMin + bitmapWidth;\n            symbolBitmap = [];\n            for (y = 0; y < currentHeight; y++) {\n              symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n            }\n            newSymbols.push(symbolBitmap);\n            xMin = xMax;\n          }\n        }\n      }\n    }\n\n    // 6.5.10 Exported symbols\n    var exportedSymbols = [];\n    var flags = [], currentFlag = false;\n    var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n    while (flags.length < totalSymbolsLength) {\n      var runLength = huffman ? tableB1.decode(huffmanInput) :\n        decodeInteger(contextCache, 'IAEX', decoder);\n      while (runLength--) {\n        flags.push(currentFlag);\n      }\n      currentFlag = !currentFlag;\n    }\n    for (var i = 0, ii = symbols.length; i < ii; i++) {\n      if (flags[i]) {\n        exportedSymbols.push(symbols[i]);\n      }\n    }\n    for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n      if (flags[i]) {\n        exportedSymbols.push(newSymbols[j]);\n      }\n    }\n    return exportedSymbols;\n  }\n\n  function decodeTextRegion(huffman, refinement, width, height,\n                            defaultPixelValue, numberOfSymbolInstances,\n                            stripSize, inputSymbols, symbolCodeLength,\n                            transposed, dsOffset, referenceCorner,\n                            combinationOperator, huffmanTables,\n                            refinementTemplateIndex, refinementAt,\n                            decodingContext, logStripSize, huffmanInput) {\n    if (huffman && refinement) {\n      throw new Jbig2Error('refinement with Huffman is not supported');\n    }\n\n    // Prepare bitmap\n    var bitmap = [];\n    var i, row;\n    for (i = 0; i < height; i++) {\n      row = new Uint8Array(width);\n      if (defaultPixelValue) {\n        for (var j = 0; j < width; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      bitmap.push(row);\n    }\n\n    var decoder = decodingContext.decoder;\n    var contextCache = decodingContext.contextCache;\n\n    var stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) :\n      -decodeInteger(contextCache, 'IADT', decoder); // 6.4.6\n    var firstS = 0;\n    i = 0;\n    while (i < numberOfSymbolInstances) {\n      var deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) :\n        decodeInteger(contextCache, 'IADT', decoder); // 6.4.6\n      stripT += deltaT;\n\n      var deltaFirstS = huffman ?\n        huffmanTables.tableFirstS.decode(huffmanInput) :\n        decodeInteger(contextCache, 'IAFS', decoder); // 6.4.7\n      firstS += deltaFirstS;\n      var currentS = firstS;\n      do {\n        let currentT = 0; // 6.4.9\n        if (stripSize > 1) {\n          currentT = huffman ? huffmanInput.readBits(logStripSize) :\n            decodeInteger(contextCache, 'IAIT', decoder);\n        }\n        var t = stripSize * stripT + currentT;\n        var symbolId = huffman ?\n          huffmanTables.symbolIDTable.decode(huffmanInput) :\n          decodeIAID(contextCache, decoder, symbolCodeLength);\n        var applyRefinement = (refinement && (huffman ? huffmanInput.readBit() :\n          decodeInteger(contextCache, 'IARI', decoder)));\n        var symbolBitmap = inputSymbols[symbolId];\n        var symbolWidth = symbolBitmap[0].length;\n        var symbolHeight = symbolBitmap.length;\n        if (applyRefinement) {\n          var rdw = decodeInteger(contextCache, 'IARDW', decoder); // 6.4.11.1\n          var rdh = decodeInteger(contextCache, 'IARDH', decoder); // 6.4.11.2\n          var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3\n          var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4\n          symbolWidth += rdw;\n          symbolHeight += rdh;\n          symbolBitmap = decodeRefinement(symbolWidth, symbolHeight,\n            refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx,\n            (rdh >> 1) + rdy, false, refinementAt,\n            decodingContext);\n        }\n        var offsetT = t - ((referenceCorner & 1) ? 0 : (symbolHeight - 1));\n        var offsetS = currentS -\n          ((referenceCorner & 2) ? (symbolWidth - 1) : 0);\n        var s2, t2, symbolRow;\n        if (transposed) {\n          // Place Symbol Bitmap from T1,S1\n          for (s2 = 0; s2 < symbolHeight; s2++) {\n            row = bitmap[offsetS + s2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[s2];\n            // To ignore Parts of Symbol bitmap which goes\n            // outside bitmap region\n            var maxWidth = Math.min(width - offsetT, symbolWidth);\n            switch (combinationOperator) {\n              case 0: // OR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] |= symbolRow[t2];\n                }\n                break;\n              case 2: // XOR\n                for (t2 = 0; t2 < maxWidth; t2++) {\n                  row[offsetT + t2] ^= symbolRow[t2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`);\n            }\n          }\n          currentS += symbolHeight - 1;\n        } else {\n          for (t2 = 0; t2 < symbolHeight; t2++) {\n            row = bitmap[offsetT + t2];\n            if (!row) {\n              continue;\n            }\n            symbolRow = symbolBitmap[t2];\n            switch (combinationOperator) {\n              case 0: // OR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] |= symbolRow[s2];\n                }\n                break;\n              case 2: // XOR\n                for (s2 = 0; s2 < symbolWidth; s2++) {\n                  row[offsetS + s2] ^= symbolRow[s2];\n                }\n                break;\n              default:\n                throw new Jbig2Error(\n                  `operator ${combinationOperator} is not supported`);\n            }\n          }\n          currentS += symbolWidth - 1;\n        }\n        i++;\n        var deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) :\n          decodeInteger(contextCache, 'IADS', decoder); // 6.4.8\n        if (deltaS === null) {\n          break; // OOB\n        }\n        currentS += deltaS + dsOffset;\n      } while (true);\n    }\n    return bitmap;\n  }\n\n  function decodePatternDictionary(mmr, patternWidth, patternHeight,\n                                   maxPatternIndex, template, decodingContext) {\n    let at = [];\n    if (!mmr) {\n      at.push({\n        x: -patternWidth,\n        y: 0,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    let collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n    let collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight,\n                                        template, false, null, at,\n                                        decodingContext);\n    // Divide collective bitmap into patterns.\n    let patterns = [], i = 0, patternBitmap, xMin, xMax, y;\n    while (i <= maxPatternIndex) {\n      patternBitmap = [];\n      xMin = patternWidth * i;\n      xMax = xMin + patternWidth;\n      for (y = 0; y < patternHeight; y++) {\n        patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n      }\n      patterns.push(patternBitmap);\n      i++;\n    }\n    return patterns;\n  }\n\n  function decodeHalftoneRegion(mmr, patterns, template, regionWidth,\n                                regionHeight, defaultPixelValue, enableSkip,\n                                combinationOperator, gridWidth, gridHeight,\n                                gridOffsetX, gridOffsetY, gridVectorX,\n                                gridVectorY, decodingContext) {\n    let skip = null;\n    if (enableSkip) {\n      throw new Jbig2Error('skip is not supported');\n    }\n    if (combinationOperator !== 0) {\n      throw new Jbig2Error('operator ' + combinationOperator +\n        ' is not supported in halftone region');\n    }\n\n    // Prepare bitmap.\n    let regionBitmap = [];\n    let i, j, row;\n    for (i = 0; i < regionHeight; i++) {\n      row = new Uint8Array(regionWidth);\n      if (defaultPixelValue) {\n        for (j = 0; j < regionWidth; j++) {\n          row[j] = defaultPixelValue;\n        }\n      }\n      regionBitmap.push(row);\n    }\n\n    let numberOfPatterns = patterns.length;\n    let pattern0 = patterns[0];\n    let patternWidth = pattern0[0].length, patternHeight = pattern0.length;\n    let bitsPerValue = log2(numberOfPatterns);\n    let at = [];\n    if (!mmr) {\n      at.push({\n        x: (template <= 1) ? 3 : 2,\n        y: -1,\n      });\n      if (template === 0) {\n        at.push({\n          x: -3,\n          y: -1,\n        });\n        at.push({\n          x: 2,\n          y: -2,\n        });\n        at.push({\n          x: -2,\n          y: -2,\n        });\n      }\n    }\n    // Annex C. Gray-scale Image Decoding Procedure.\n    let grayScaleBitPlanes = [], mmrInput, bitmap;\n    if (mmr) {\n      // MMR bit planes are in one continuous stream. Only EOFB codes indicate\n      // the end of each bitmap, so EOFBs must be decoded.\n      mmrInput = new Reader(decodingContext.data, decodingContext.start,\n        decodingContext.end);\n    }\n    for (i = bitsPerValue - 1; i >= 0; i--) {\n      if (mmr) {\n        bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n      } else {\n        bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false,\n          skip, at, decodingContext);\n      }\n      grayScaleBitPlanes[i] = bitmap;\n    }\n    // 6.6.5.2 Rendering the patterns.\n    let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n    for (mg = 0; mg < gridHeight; mg++) {\n      for (ng = 0; ng < gridWidth; ng++) {\n        bit = 0;\n        patternIndex = 0;\n        for (j = bitsPerValue - 1; j >= 0; j--) {\n          bit = grayScaleBitPlanes[j][mg][ng] ^ bit; // Gray decoding\n          patternIndex |= bit << j;\n        }\n        patternBitmap = patterns[patternIndex];\n        x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\n        y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\n        // Draw patternBitmap at (x, y).\n        if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 &&\n            y + patternHeight <= regionHeight) {\n          for (i = 0; i < patternHeight; i++) {\n            regionRow = regionBitmap[y + i];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionRow[x + j] |= patternRow[j];\n            }\n          }\n        } else {\n          let regionX, regionY;\n          for (i = 0; i < patternHeight; i++) {\n            regionY = y + i;\n            if (regionY < 0 || regionY >= regionHeight) {\n              continue;\n            }\n            regionRow = regionBitmap[regionY];\n            patternRow = patternBitmap[i];\n            for (j = 0; j < patternWidth; j++) {\n              regionX = x + j;\n              if (regionX >= 0 && regionX < regionWidth) {\n                regionRow[regionX] |= patternRow[j];\n              }\n            }\n          }\n        }\n      }\n    }\n    return regionBitmap;\n  }\n\n  function readSegmentHeader(data, start) {\n    var segmentHeader = {};\n    segmentHeader.number = readUint32(data, start);\n    var flags = data[start + 4];\n    var segmentType = flags & 0x3F;\n    if (!SegmentTypes[segmentType]) {\n      throw new Jbig2Error('invalid segment type: ' + segmentType);\n    }\n    segmentHeader.type = segmentType;\n    segmentHeader.typeName = SegmentTypes[segmentType];\n    segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n    var pageAssociationFieldSize = !!(flags & 0x40);\n    var referredFlags = data[start + 5];\n    var referredToCount = (referredFlags >> 5) & 7;\n    var retainBits = [referredFlags & 31];\n    var position = start + 6;\n    if (referredFlags === 7) {\n      referredToCount = readUint32(data, position - 1) & 0x1FFFFFFF;\n      position += 3;\n      var bytes = (referredToCount + 7) >> 3;\n      retainBits[0] = data[position++];\n      while (--bytes > 0) {\n        retainBits.push(data[position++]);\n      }\n    } else if (referredFlags === 5 || referredFlags === 6) {\n      throw new Jbig2Error('invalid referred-to flags');\n    }\n\n    segmentHeader.retainBits = retainBits;\n    var referredToSegmentNumberSize = (segmentHeader.number <= 256 ? 1 :\n      (segmentHeader.number <= 65536 ? 2 : 4));\n    var referredTo = [];\n    var i, ii;\n    for (i = 0; i < referredToCount; i++) {\n      var number = (referredToSegmentNumberSize === 1 ? data[position] :\n        (referredToSegmentNumberSize === 2 ? readUint16(data, position) :\n        readUint32(data, position)));\n      referredTo.push(number);\n      position += referredToSegmentNumberSize;\n    }\n    segmentHeader.referredTo = referredTo;\n    if (!pageAssociationFieldSize) {\n      segmentHeader.pageAssociation = data[position++];\n    } else {\n      segmentHeader.pageAssociation = readUint32(data, position);\n      position += 4;\n    }\n    segmentHeader.length = readUint32(data, position);\n    position += 4;\n\n    if (segmentHeader.length === 0xFFFFFFFF) {\n      // 7.2.7 Segment data length, unknown segment length\n      if (segmentType === 38) { // ImmediateGenericRegion\n        var genericRegionInfo = readRegionSegmentInformation(data, position);\n        var genericRegionSegmentFlags = data[position +\n          RegionSegmentInformationFieldLength];\n        var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n        // searching for the segment end\n        var searchPatternLength = 6;\n        var searchPattern = new Uint8Array(searchPatternLength);\n        if (!genericRegionMmr) {\n          searchPattern[0] = 0xFF;\n          searchPattern[1] = 0xAC;\n        }\n        searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xFF;\n        searchPattern[3] = (genericRegionInfo.height >> 16) & 0xFF;\n        searchPattern[4] = (genericRegionInfo.height >> 8) & 0xFF;\n        searchPattern[5] = genericRegionInfo.height & 0xFF;\n        for (i = position, ii = data.length; i < ii; i++) {\n          var j = 0;\n          while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n            j++;\n          }\n          if (j === searchPatternLength) {\n            segmentHeader.length = i + searchPatternLength;\n            break;\n          }\n        }\n        if (segmentHeader.length === 0xFFFFFFFF) {\n          throw new Jbig2Error('segment end was not found');\n        }\n      } else {\n        throw new Jbig2Error('invalid unknown segment length');\n      }\n    }\n    segmentHeader.headerEnd = position;\n    return segmentHeader;\n  }\n\n  function readSegments(header, data, start, end) {\n    var segments = [];\n    var position = start;\n    while (position < end) {\n      var segmentHeader = readSegmentHeader(data, position);\n      position = segmentHeader.headerEnd;\n      var segment = {\n        header: segmentHeader,\n        data,\n      };\n      if (!header.randomAccess) {\n        segment.start = position;\n        position += segmentHeader.length;\n        segment.end = position;\n      }\n      segments.push(segment);\n      if (segmentHeader.type === 51) {\n        break; // end of file is found\n      }\n    }\n    if (header.randomAccess) {\n      for (var i = 0, ii = segments.length; i < ii; i++) {\n        segments[i].start = position;\n        position += segments[i].header.length;\n        segments[i].end = position;\n      }\n    }\n    return segments;\n  }\n\n  // 7.4.1 Region segment information field\n  function readRegionSegmentInformation(data, start) {\n    return {\n      width: readUint32(data, start),\n      height: readUint32(data, start + 4),\n      x: readUint32(data, start + 8),\n      y: readUint32(data, start + 12),\n      combinationOperator: data[start + 16] & 7,\n    };\n  }\n  var RegionSegmentInformationFieldLength = 17;\n\n  function processSegment(segment, visitor) {\n    var header = segment.header;\n\n    var data = segment.data, position = segment.start, end = segment.end;\n    var args, at, i, atLength;\n    switch (header.type) {\n      case 0: // SymbolDictionary\n        // 7.4.2 Symbol dictionary segment syntax\n        var dictionary = {};\n        var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n        dictionary.huffman = !!(dictionaryFlags & 1);\n        dictionary.refinement = !!(dictionaryFlags & 2);\n        dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n        dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n        dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n        dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n        dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n        dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n        dictionary.template = (dictionaryFlags >> 10) & 3;\n        dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n        position += 2;\n        if (!dictionary.huffman) {\n          atLength = dictionary.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.at = at;\n        }\n        if (dictionary.refinement && !dictionary.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          dictionary.refinementAt = at;\n        }\n        dictionary.numberOfExportedSymbols = readUint32(data, position);\n        position += 4;\n        dictionary.numberOfNewSymbols = readUint32(data, position);\n        position += 4;\n        args = [dictionary, header.number, header.referredTo,\n                data, position, end];\n        break;\n      case 6: // ImmediateTextRegion\n      case 7: // ImmediateLosslessTextRegion\n        var textRegion = {};\n        textRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var textRegionSegmentFlags = readUint16(data, position);\n        position += 2;\n        textRegion.huffman = !!(textRegionSegmentFlags & 1);\n        textRegion.refinement = !!(textRegionSegmentFlags & 2);\n        textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\n        textRegion.stripSize = 1 << textRegion.logStripSize;\n        textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n        textRegion.transposed = !!(textRegionSegmentFlags & 64);\n        textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n        textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n        textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n        textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n        if (textRegion.huffman) {\n          var textRegionHuffmanFlags = readUint16(data, position);\n          position += 2;\n          textRegion.huffmanFS = (textRegionHuffmanFlags) & 3;\n          textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n          textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n          textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n          textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n          textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n          textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n          textRegion.huffmanRefinementSizeSelector =\n            !!(textRegionHuffmanFlags & 0x4000);\n        }\n        if (textRegion.refinement && !textRegion.refinementTemplate) {\n          at = [];\n          for (i = 0; i < 2; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          textRegion.refinementAt = at;\n        }\n        textRegion.numberOfSymbolInstances = readUint32(data, position);\n        position += 4;\n        args = [textRegion, header.referredTo, data, position, end];\n        break;\n      case 16: // PatternDictionary\n        // 7.4.4. Pattern dictionary segment syntax\n        let patternDictionary = {};\n        let patternDictionaryFlags = data[position++];\n        patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n        patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\n        patternDictionary.patternWidth = data[position++];\n        patternDictionary.patternHeight = data[position++];\n        patternDictionary.maxPatternIndex = readUint32(data, position);\n        position += 4;\n        args = [patternDictionary, header.number, data, position, end];\n        break;\n      case 22: // ImmediateHalftoneRegion\n      case 23: // ImmediateLosslessHalftoneRegion\n        // 7.4.5 Halftone region segment syntax\n        let halftoneRegion = {};\n        halftoneRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        let halftoneRegionFlags = data[position++];\n        halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n        halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\n        halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n        halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\n        halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\n        halftoneRegion.gridWidth = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridHeight = readUint32(data, position);\n        position += 4;\n        halftoneRegion.gridOffsetX = readUint32(data, position) & 0xFFFFFFFF;\n        position += 4;\n        halftoneRegion.gridOffsetY = readUint32(data, position) & 0xFFFFFFFF;\n        position += 4;\n        halftoneRegion.gridVectorX = readUint16(data, position);\n        position += 2;\n        halftoneRegion.gridVectorY = readUint16(data, position);\n        position += 2;\n        args = [halftoneRegion, header.referredTo, data, position, end];\n        break;\n      case 38: // ImmediateGenericRegion\n      case 39: // ImmediateLosslessGenericRegion\n        var genericRegion = {};\n        genericRegion.info = readRegionSegmentInformation(data, position);\n        position += RegionSegmentInformationFieldLength;\n        var genericRegionSegmentFlags = data[position++];\n        genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n        genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n        genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n        if (!genericRegion.mmr) {\n          atLength = genericRegion.template === 0 ? 4 : 1;\n          at = [];\n          for (i = 0; i < atLength; i++) {\n            at.push({\n              x: readInt8(data, position),\n              y: readInt8(data, position + 1),\n            });\n            position += 2;\n          }\n          genericRegion.at = at;\n        }\n        args = [genericRegion, data, position, end];\n        break;\n      case 48: // PageInformation\n        var pageInfo = {\n          width: readUint32(data, position),\n          height: readUint32(data, position + 4),\n          resolutionX: readUint32(data, position + 8),\n          resolutionY: readUint32(data, position + 12),\n        };\n        if (pageInfo.height === 0xFFFFFFFF) {\n          delete pageInfo.height;\n        }\n        var pageSegmentFlags = data[position + 16];\n        readUint16(data, position + 17); // pageStripingInformation\n        pageInfo.lossless = !!(pageSegmentFlags & 1);\n        pageInfo.refinement = !!(pageSegmentFlags & 2);\n        pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n        pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n        pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n        pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n        args = [pageInfo];\n        break;\n      case 49: // EndOfPage\n        break;\n      case 50: // EndOfStripe\n        break;\n      case 51: // EndOfFile\n        break;\n      case 53: // Tables\n        args = [header.number, data, position, end];\n        break;\n      case 62: // 7.4.15 defines 2 extension types which\n               // are comments and can be ignored.\n        break;\n      default:\n        throw new Jbig2Error(`segment type ${header.typeName}(${header.type})` +\n                             ' is not implemented');\n    }\n    var callbackName = 'on' + header.typeName;\n    if (callbackName in visitor) {\n      visitor[callbackName].apply(visitor, args);\n    }\n  }\n\n  function processSegments(segments, visitor) {\n    for (var i = 0, ii = segments.length; i < ii; i++) {\n      processSegment(segments[i], visitor);\n    }\n  }\n\n  function parseJbig2Chunks(chunks) {\n    var visitor = new SimpleSegmentVisitor();\n    for (var i = 0, ii = chunks.length; i < ii; i++) {\n      var chunk = chunks[i];\n      var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n      processSegments(segments, visitor);\n    }\n    return visitor.buffer;\n  }\n\n  function parseJbig2(data) {\n    let position = 0, end = data.length;\n\n    if (data[position] !== 0x97 || data[position + 1] !== 0x4A ||\n        data[position + 2] !== 0x42 || data[position + 3] !== 0x32 ||\n        data[position + 4] !== 0x0D || data[position + 5] !== 0x0A ||\n        data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) {\n      throw new Jbig2Error('parseJbig2 - invalid header.');\n    }\n\n    let header = Object.create(null);\n    position += 8;\n    const flags = data[position++];\n    header.randomAccess = !(flags & 1);\n    if (!(flags & 2)) {\n      header.numberOfPages = readUint32(data, position);\n      position += 4;\n    }\n\n    let segments = readSegments(header, data, position, end);\n    let visitor = new SimpleSegmentVisitor();\n    processSegments(segments, visitor);\n\n    const { width, height, } = visitor.currentPageInfo;\n    const bitPacked = visitor.buffer;\n    let imgData = new Uint8ClampedArray(width * height);\n    let q = 0, k = 0;\n    for (let i = 0; i < height; i++) {\n      let mask = 0, buffer;\n      for (let j = 0; j < width; j++) {\n        if (!mask) {\n          mask = 128; buffer = bitPacked[k++];\n        }\n        imgData[q++] = (buffer & mask) ? 0 : 255;\n        mask >>= 1;\n      }\n    }\n\n    return { imgData, width, height, };\n  }\n\n  function SimpleSegmentVisitor() {}\n\n  SimpleSegmentVisitor.prototype = {\n    onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n      this.currentPageInfo = info;\n      var rowSize = (info.width + 7) >> 3;\n      var buffer = new Uint8ClampedArray(rowSize * info.height);\n      // The contents of ArrayBuffers are initialized to 0.\n      // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n      if (info.defaultPixelValue) {\n        for (var i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = 0xFF;\n        }\n      }\n      this.buffer = buffer;\n    },\n    drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n      var pageInfo = this.currentPageInfo;\n      var width = regionInfo.width, height = regionInfo.height;\n      var rowSize = (pageInfo.width + 7) >> 3;\n      var combinationOperator = pageInfo.combinationOperatorOverride ?\n        regionInfo.combinationOperator : pageInfo.combinationOperator;\n      var buffer = this.buffer;\n      var mask0 = 128 >> (regionInfo.x & 7);\n      var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n      var i, j, mask, offset;\n      switch (combinationOperator) {\n        case 0: // OR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] |= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n        break;\n        case 2: // XOR\n          for (i = 0; i < height; i++) {\n            mask = mask0;\n            offset = offset0;\n            for (j = 0; j < width; j++) {\n              if (bitmap[i][j]) {\n                buffer[offset] ^= mask;\n              }\n              mask >>= 1;\n              if (!mask) {\n                mask = 128;\n                offset++;\n              }\n            }\n            offset0 += rowSize;\n          }\n          break;\n        default:\n          throw new Jbig2Error(\n            `operator ${combinationOperator} is not supported`);\n      }\n    },\n    onImmediateGenericRegion:\n      function SimpleSegmentVisitor_onImmediateGenericRegion(region, data,\n                                                             start, end) {\n      var regionInfo = region.info;\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height,\n                                region.template, region.prediction, null,\n                                region.at, decodingContext);\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessGenericRegion:\n      function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n      this.onImmediateGenericRegion.apply(this, arguments);\n    },\n    onSymbolDictionary:\n      function SimpleSegmentVisitor_onSymbolDictionary(dictionary,\n                                                       currentSegment,\n                                                       referredSegments,\n                                                       data, start, end) {\n      let huffmanTables, huffmanInput;\n      if (dictionary.huffman) {\n        huffmanTables = getSymbolDictionaryHuffmanTables(dictionary,\n          referredSegments, this.customTables);\n        huffmanInput = new Reader(data, start, end);\n      }\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      if (!symbols) {\n        this.symbols = symbols = {};\n      }\n\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        let referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman,\n        dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols,\n        dictionary.numberOfExportedSymbols, huffmanTables,\n        dictionary.template, dictionary.at,\n        dictionary.refinementTemplate, dictionary.refinementAt,\n        decodingContext, huffmanInput);\n    },\n    onImmediateTextRegion:\n      function SimpleSegmentVisitor_onImmediateTextRegion(region,\n                                                          referredSegments,\n                                                          data, start, end) {\n      var regionInfo = region.info;\n      let huffmanTables, huffmanInput;\n\n      // Combines exported symbols from all referred segments\n      var symbols = this.symbols;\n      var inputSymbols = [];\n      for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n        let referredSymbols = symbols[referredSegments[i]];\n        // referredSymbols is undefined when we have a reference to a Tables\n        // segment instead of a SymbolDictionary.\n        if (referredSymbols) {\n          inputSymbols = inputSymbols.concat(referredSymbols);\n        }\n      }\n      var symbolCodeLength = log2(inputSymbols.length);\n      if (region.huffman) {\n        huffmanInput = new Reader(data, start, end);\n        huffmanTables = getTextRegionHuffmanTables(region, referredSegments,\n          this.customTables, inputSymbols.length, huffmanInput);\n      }\n\n      var decodingContext = new DecodingContext(data, start, end);\n      var bitmap = decodeTextRegion(region.huffman, region.refinement,\n        regionInfo.width, regionInfo.height, region.defaultPixelValue,\n        region.numberOfSymbolInstances, region.stripSize, inputSymbols,\n        symbolCodeLength, region.transposed, region.dsOffset,\n        region.referenceCorner, region.combinationOperator, huffmanTables,\n        region.refinementTemplate, region.refinementAt, decodingContext,\n        region.logStripSize, huffmanInput);\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessTextRegion:\n      function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n      this.onImmediateTextRegion.apply(this, arguments);\n    },\n    onPatternDictionary(dictionary, currentSegment, data, start, end) {\n      let patterns = this.patterns;\n      if (!patterns) {\n        this.patterns = patterns = {};\n      }\n      let decodingContext = new DecodingContext(data, start, end);\n      patterns[currentSegment] = decodePatternDictionary(dictionary.mmr,\n        dictionary.patternWidth, dictionary.patternHeight,\n        dictionary.maxPatternIndex, dictionary.template, decodingContext);\n    },\n    onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n      // HalftoneRegion refers to exactly one PatternDictionary.\n      let patterns = this.patterns[referredSegments[0]];\n      let regionInfo = region.info;\n      let decodingContext = new DecodingContext(data, start, end);\n      let bitmap = decodeHalftoneRegion(region.mmr, patterns,\n        region.template, regionInfo.width, regionInfo.height,\n        region.defaultPixelValue, region.enableSkip, region.combinationOperator,\n        region.gridWidth, region.gridHeight, region.gridOffsetX,\n        region.gridOffsetY, region.gridVectorX, region.gridVectorY,\n        decodingContext);\n      this.drawBitmap(regionInfo, bitmap);\n    },\n    onImmediateLosslessHalftoneRegion() {\n      this.onImmediateHalftoneRegion.apply(this, arguments);\n    },\n    onTables(currentSegment, data, start, end) {\n      let customTables = this.customTables;\n      if (!customTables) {\n        this.customTables = customTables = {};\n      }\n      customTables[currentSegment] = decodeTablesSegment(data, start, end);\n    },\n  };\n\n  function HuffmanLine(lineData) {\n    if (lineData.length === 2) {\n      // OOB line.\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      // Normal, upper range or lower range line.\n      // Upper range lines are processed like normal lines.\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = (lineData[4] === 'lower');\n    }\n  }\n\n  function HuffmanTreeNode(line) {\n    this.children = [];\n    if (line) {\n      // Leaf node\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      // Intermediate or root node\n      this.isLeaf = false;\n    }\n  }\n\n  HuffmanTreeNode.prototype = {\n    buildTree(line, shift) {\n      let bit = (line.prefixCode >> shift) & 1;\n      if (shift <= 0) {\n        // Create a leaf node.\n        this.children[bit] = new HuffmanTreeNode(line);\n      } else {\n        // Create an intermediate node and continue recursively.\n        let node = this.children[bit];\n        if (!node) {\n          this.children[bit] = node = new HuffmanTreeNode(null);\n        }\n        node.buildTree(line, shift - 1);\n      }\n    },\n    decodeNode(reader) {\n      if (this.isLeaf) {\n        if (this.isOOB) {\n          return null;\n        }\n        let htOffset = reader.readBits(this.rangeLength);\n        return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n      }\n      let node = this.children[reader.readBit()];\n      if (!node) {\n        throw new Jbig2Error('invalid Huffman data');\n      }\n      return node.decodeNode(reader);\n    },\n  };\n\n  function HuffmanTable(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n    // Create Huffman tree.\n    this.rootNode = new HuffmanTreeNode(null);\n    let i, ii = lines.length, line;\n    for (i = 0; i < ii; i++) {\n      line = lines[i];\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  HuffmanTable.prototype = {\n    decode(reader) {\n      return this.rootNode.decodeNode(reader);\n    },\n    assignPrefixCodes(lines) {\n      // Annex B.3 Assigning the prefix codes.\n      let linesLength = lines.length, prefixLengthMax = 0, i;\n      for (i = 0; i < linesLength; i++) {\n        prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n      }\n\n      let histogram = new Uint32Array(prefixLengthMax + 1);\n      for (i = 0; i < linesLength; i++) {\n        histogram[lines[i].prefixLength]++;\n      }\n      let currentLength = 1, firstCode = 0, currentCode, currentTemp, line;\n      histogram[0] = 0;\n\n      while (currentLength <= prefixLengthMax) {\n        firstCode = (firstCode + histogram[currentLength - 1]) << 1;\n        currentCode = firstCode;\n        currentTemp = 0;\n        while (currentTemp < linesLength) {\n          line = lines[currentTemp];\n          if (line.prefixLength === currentLength) {\n            line.prefixCode = currentCode;\n            currentCode++;\n          }\n          currentTemp++;\n        }\n        currentLength++;\n      }\n    },\n  };\n\n  function decodeTablesSegment(data, start, end) {\n    // Decodes a Tables segment, i.e., a custom Huffman table.\n    // Annex B.2 Code table structure.\n    let flags = data[start];\n    let lowestValue = readUint32(data, start + 1) & 0xFFFFFFFF;\n    let highestValue = readUint32(data, start + 5) & 0xFFFFFFFF;\n    let reader = new Reader(data, start + 9, end);\n\n    let prefixSizeBits = ((flags >> 1) & 7) + 1;\n    let rangeSizeBits = ((flags >> 4) & 7) + 1;\n    let lines = [];\n    let prefixLength, rangeLength, currentRangeLow = lowestValue;\n\n    // Normal table lines\n    do {\n      prefixLength = reader.readBits(prefixSizeBits);\n      rangeLength = reader.readBits(rangeSizeBits);\n      lines.push(new HuffmanLine(\n        [currentRangeLow, prefixLength, rangeLength, 0]));\n      currentRangeLow += 1 << rangeLength;\n    } while (currentRangeLow < highestValue);\n\n    // Lower range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(\n      new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, 'lower']));\n\n    // Upper range table line\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n    if (flags & 1) {\n      // Out-of-band table line\n      prefixLength = reader.readBits(prefixSizeBits);\n      lines.push(new HuffmanLine([prefixLength, 0]));\n    }\n\n    return new HuffmanTable(lines, false);\n  }\n\n  let standardTablesCache = {};\n\n  function getStandardTable(number) {\n    // Annex B.5 Standard Huffman tables.\n    let table = standardTablesCache[number];\n    if (table) {\n      return table;\n    }\n    let lines;\n    switch (number) {\n      case 1:\n        lines = [\n          [0, 1, 4, 0x0],\n          [16, 2, 8, 0x2],\n          [272, 3, 16, 0x6],\n          [65808, 3, 32, 0x7] // upper\n        ];\n        break;\n      case 2:\n        lines = [\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xE],\n          [11, 5, 6, 0x1E],\n          [75, 6, 32, 0x3E], // upper\n          [6, 0x3F] // OOB\n        ];\n        break;\n      case 3:\n        lines = [\n          [-256, 8, 8, 0xFE],\n          [0, 1, 0, 0x0],\n          [1, 2, 0, 0x2],\n          [2, 3, 0, 0x6],\n          [3, 4, 3, 0xE],\n          [11, 5, 6, 0x1E],\n          [-257, 8, 32, 0xFF, 'lower'],\n          [75, 7, 32, 0x7E], // upper\n          [6, 0x3E] // OOB\n        ];\n        break;\n      case 4:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xE],\n          [12, 5, 6, 0x1E],\n          [76, 5, 32, 0x1F] // upper\n        ];\n        break;\n      case 5:\n        lines = [\n          [-255, 7, 8, 0x7E],\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 0, 0x6],\n          [4, 4, 3, 0xE],\n          [12, 5, 6, 0x1E],\n          [-256, 7, 32, 0x7F, 'lower'],\n          [76, 6, 32, 0x3E] // upper\n        ];\n        break;\n      case 6:\n        lines = [\n          [-2048, 5, 10, 0x1C],\n          [-1024, 4, 9, 0x8],\n          [-512, 4, 8, 0x9],\n          [-256, 4, 7, 0xA],\n          [-128, 5, 6, 0x1D],\n          [-64, 5, 5, 0x1E],\n          [-32, 4, 5, 0xB],\n          [0, 2, 7, 0x0],\n          [128, 3, 7, 0x2],\n          [256, 3, 8, 0x3],\n          [512, 4, 9, 0xC],\n          [1024, 4, 10, 0xD],\n          [-2049, 6, 32, 0x3E, 'lower'],\n          [2048, 6, 32, 0x3F] // upper\n        ];\n        break;\n      case 7:\n        lines = [\n          [-1024, 4, 9, 0x8],\n          [-512, 3, 8, 0x0],\n          [-256, 4, 7, 0x9],\n          [-128, 5, 6, 0x1A],\n          [-64, 5, 5, 0x1B],\n          [-32, 4, 5, 0xA],\n          [0, 4, 5, 0xB],\n          [32, 5, 5, 0x1C],\n          [64, 5, 6, 0x1D],\n          [128, 4, 7, 0xC],\n          [256, 3, 8, 0x1],\n          [512, 3, 9, 0x2],\n          [1024, 3, 10, 0x3],\n          [-1025, 5, 32, 0x1E, 'lower'],\n          [2048, 5, 32, 0x1F] // upper\n        ];\n        break;\n      case 8:\n        lines = [\n          [-15, 8, 3, 0xFC],\n          [-7, 9, 1, 0x1FC],\n          [-5, 8, 1, 0xFD],\n          [-3, 9, 0, 0x1FD],\n          [-2, 7, 0, 0x7C],\n          [-1, 4, 0, 0xA],\n          [0, 2, 1, 0x0],\n          [2, 5, 0, 0x1A],\n          [3, 6, 0, 0x3A],\n          [4, 3, 4, 0x4],\n          [20, 6, 1, 0x3B],\n          [22, 4, 4, 0xB],\n          [38, 4, 5, 0xC],\n          [70, 5, 6, 0x1B],\n          [134, 5, 7, 0x1C],\n          [262, 6, 7, 0x3C],\n          [390, 7, 8, 0x7D],\n          [646, 6, 10, 0x3D],\n          [-16, 9, 32, 0x1FE, 'lower'],\n          [1670, 9, 32, 0x1FF], // upper\n          [2, 0x1] // OOB\n        ];\n        break;\n      case 9:\n        lines = [\n          [-31, 8, 4, 0xFC],\n          [-15, 9, 2, 0x1FC],\n          [-11, 8, 2, 0xFD],\n          [-7, 9, 1, 0x1FD],\n          [-5, 7, 1, 0x7C],\n          [-3, 4, 1, 0xA],\n          [-1, 3, 1, 0x2],\n          [1, 3, 1, 0x3],\n          [3, 5, 1, 0x1A],\n          [5, 6, 1, 0x3A],\n          [7, 3, 5, 0x4],\n          [39, 6, 2, 0x3B],\n          [43, 4, 5, 0xB],\n          [75, 4, 6, 0xC],\n          [139, 5, 7, 0x1B],\n          [267, 5, 8, 0x1C],\n          [523, 6, 8, 0x3C],\n          [779, 7, 9, 0x7D],\n          [1291, 6, 11, 0x3D],\n          [-32, 9, 32, 0x1FE, 'lower'],\n          [3339, 9, 32, 0x1FF], // upper\n          [2, 0x0] // OOB\n        ];\n        break;\n      case 10:\n        lines = [\n          [-21, 7, 4, 0x7A],\n          [-5, 8, 0, 0xFC],\n          [-4, 7, 0, 0x7B],\n          [-3, 5, 0, 0x18],\n          [-2, 2, 2, 0x0],\n          [2, 5, 0, 0x19],\n          [3, 6, 0, 0x36],\n          [4, 7, 0, 0x7C],\n          [5, 8, 0, 0xFD],\n          [6, 2, 6, 0x1],\n          [70, 5, 5, 0x1A],\n          [102, 6, 5, 0x37],\n          [134, 6, 6, 0x38],\n          [198, 6, 7, 0x39],\n          [326, 6, 8, 0x3A],\n          [582, 6, 9, 0x3B],\n          [1094, 6, 10, 0x3C],\n          [2118, 7, 11, 0x7D],\n          [-22, 8, 32, 0xFE, 'lower'],\n          [4166, 8, 32, 0xFF], // upper\n          [2, 0x2] // OOB\n        ];\n        break;\n      case 11:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 1, 0x2],\n          [4, 4, 0, 0xC],\n          [5, 4, 1, 0xD],\n          [7, 5, 1, 0x1C],\n          [9, 5, 2, 0x1D],\n          [13, 6, 2, 0x3C],\n          [17, 7, 2, 0x7A],\n          [21, 7, 3, 0x7B],\n          [29, 7, 4, 0x7C],\n          [45, 7, 5, 0x7D],\n          [77, 7, 6, 0x7E],\n          [141, 7, 32, 0x7F] // upper\n        ];\n        break;\n      case 12:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 2, 0, 0x2],\n          [3, 3, 1, 0x6],\n          [5, 5, 0, 0x1C],\n          [6, 5, 1, 0x1D],\n          [8, 6, 1, 0x3C],\n          [10, 7, 0, 0x7A],\n          [11, 7, 1, 0x7B],\n          [13, 7, 2, 0x7C],\n          [17, 7, 3, 0x7D],\n          [25, 7, 4, 0x7E],\n          [41, 8, 5, 0xFE],\n          [73, 8, 32, 0xFF] // upper\n        ];\n        break;\n      case 13:\n        lines = [\n          [1, 1, 0, 0x0],\n          [2, 3, 0, 0x4],\n          [3, 4, 0, 0xC],\n          [4, 5, 0, 0x1C],\n          [5, 4, 1, 0xD],\n          [7, 3, 3, 0x5],\n          [15, 6, 1, 0x3A],\n          [17, 6, 2, 0x3B],\n          [21, 6, 3, 0x3C],\n          [29, 6, 4, 0x3D],\n          [45, 6, 5, 0x3E],\n          [77, 7, 6, 0x7E],\n          [141, 7, 32, 0x7F] // upper\n        ];\n        break;\n      case 14:\n        lines = [\n          [-2, 3, 0, 0x4],\n          [-1, 3, 0, 0x5],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x6],\n          [2, 3, 0, 0x7]\n        ];\n        break;\n      case 15:\n        lines = [\n          [-24, 7, 4, 0x7C],\n          [-8, 6, 2, 0x3C],\n          [-4, 5, 1, 0x1C],\n          [-2, 4, 0, 0xC],\n          [-1, 3, 0, 0x4],\n          [0, 1, 0, 0x0],\n          [1, 3, 0, 0x5],\n          [2, 4, 0, 0xD],\n          [3, 5, 1, 0x1D],\n          [5, 6, 2, 0x3D],\n          [9, 7, 4, 0x7D],\n          [-25, 7, 32, 0x7E, 'lower'],\n          [25, 7, 32, 0x7F] // upper\n        ];\n        break;\n      default:\n        throw new Jbig2Error(`standard table B.${number} does not exist`);\n    }\n\n    let length = lines.length, i;\n    for (i = 0; i < length; i++) {\n      lines[i] = new HuffmanLine(lines[i]);\n    }\n    table = new HuffmanTable(lines, true);\n    standardTablesCache[number] = table;\n    return table;\n  }\n\n  function Reader(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  Reader.prototype = {\n    readBit() {\n      if (this.shift < 0) {\n        if (this.position >= this.end) {\n          throw new Jbig2Error('end of data while reading bit');\n        }\n        this.currentByte = this.data[this.position++];\n        this.shift = 7;\n      }\n      let bit = (this.currentByte >> this.shift) & 1;\n      this.shift--;\n      return bit;\n    },\n\n    readBits(numBits) {\n      let result = 0, i;\n      for (i = numBits - 1; i >= 0; i--) {\n        result |= this.readBit() << i;\n      }\n      return result;\n    },\n\n    byteAlign() {\n      this.shift = -1;\n    },\n\n    next() {\n      if (this.position >= this.end) {\n        return -1;\n      }\n      return this.data[this.position++];\n    },\n  };\n\n  function getCustomHuffmanTable(index, referredTo, customTables) {\n    // Returns a Tables segment that has been earlier decoded.\n    // See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\n    let currentIndex = 0, i, ii = referredTo.length, table;\n    for (i = 0; i < ii; i++) {\n      table = customTables[referredTo[i]];\n      if (table) {\n        if (index === currentIndex) {\n          return table;\n        }\n        currentIndex++;\n      }\n    }\n    throw new Jbig2Error('can\\'t find custom Huffman table');\n  }\n\n  function getTextRegionHuffmanTables(textRegion, referredTo, customTables,\n                                      numberOfSymbols, reader) {\n    // 7.4.3.1.7 Symbol ID Huffman table decoding\n\n    // Read code lengths for RUNCODEs 0...34.\n    let codes = [], i, codeLength;\n    for (i = 0; i <= 34; i++) {\n      codeLength = reader.readBits(4);\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n    }\n    // Assign Huffman codes for RUNCODEs.\n    let runCodesTable = new HuffmanTable(codes, false);\n\n    // Read a Huffman code using the assignment above.\n    // Interpret the RUNCODE codes and the additional bits (if any).\n    codes.length = 0;\n    for (i = 0; i < numberOfSymbols;) {\n      codeLength = runCodesTable.decode(reader);\n      if (codeLength >= 32) {\n        let repeatedLength, numberOfRepeats, j;\n        switch (codeLength) {\n          case 32:\n            if (i === 0) {\n              throw new Jbig2Error('no previous value in symbol ID table');\n            }\n            numberOfRepeats = reader.readBits(2) + 3;\n            repeatedLength = codes[i - 1].prefixLength;\n            break;\n          case 33:\n            numberOfRepeats = reader.readBits(3) + 3;\n            repeatedLength = 0;\n            break;\n          case 34:\n            numberOfRepeats = reader.readBits(7) + 11;\n            repeatedLength = 0;\n            break;\n          default:\n            throw new Jbig2Error('invalid code length in symbol ID table');\n        }\n        for (j = 0; j < numberOfRepeats; j++) {\n          codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n          i++;\n        }\n      } else {\n        codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n        i++;\n      }\n    }\n    reader.byteAlign();\n    let symbolIDTable = new HuffmanTable(codes, false);\n\n    // 7.4.3.1.6 Text region segment Huffman table selection\n\n    let customIndex = 0, tableFirstS, tableDeltaS, tableDeltaT;\n\n    switch (textRegion.huffmanFS) {\n      case 0:\n      case 1:\n        tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n        break;\n      case 3:\n        tableFirstS = getCustomHuffmanTable(customIndex, referredTo,\n          customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman FS selector');\n    }\n\n    switch (textRegion.huffmanDS) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n        break;\n      case 3:\n        tableDeltaS = getCustomHuffmanTable(customIndex, referredTo,\n          customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman DS selector');\n    }\n\n    switch (textRegion.huffmanDT) {\n      case 0:\n      case 1:\n      case 2:\n        tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n        break;\n      case 3:\n        tableDeltaT = getCustomHuffmanTable(customIndex, referredTo,\n          customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman DT selector');\n    }\n\n    if (textRegion.refinement) {\n      // Load tables RDW, RDH, RDX and RDY.\n      throw new Jbig2Error('refinement with Huffman is not supported');\n    }\n\n    return {\n      symbolIDTable,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT,\n    };\n  }\n\n  function getSymbolDictionaryHuffmanTables(dictionary, referredTo,\n                                            customTables) {\n    // 7.4.2.1.6 Symbol dictionary segment Huffman table selection\n\n    let customIndex = 0, tableDeltaHeight, tableDeltaWidth;\n    switch (dictionary.huffmanDHSelector) {\n      case 0:\n      case 1:\n        tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n        break;\n      case 3:\n        tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo,\n          customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman DH selector');\n    }\n\n    switch (dictionary.huffmanDWSelector) {\n      case 0:\n      case 1:\n        tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n        break;\n      case 3:\n        tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo,\n          customTables);\n        customIndex++;\n        break;\n      default:\n        throw new Jbig2Error('invalid Huffman DW selector');\n    }\n\n    let tableBitmapSize, tableAggregateInstances;\n    if (dictionary.bitmapSizeSelector) {\n      tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo,\n        customTables);\n      customIndex++;\n    } else {\n      tableBitmapSize = getStandardTable(1);\n    }\n\n    if (dictionary.aggregationInstancesSelector) {\n      tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo,\n        customTables);\n    } else {\n      tableAggregateInstances = getStandardTable(1);\n    }\n\n    return {\n      tableDeltaHeight,\n      tableDeltaWidth,\n      tableBitmapSize,\n      tableAggregateInstances,\n    };\n  }\n\n  function readUncompressedBitmap(reader, width, height) {\n    let bitmap = [], x, y, row;\n    for (y = 0; y < height; y++) {\n      row = new Uint8Array(width);\n      bitmap.push(row);\n      for (x = 0; x < width; x++) {\n        row[x] = reader.readBit();\n      }\n      reader.byteAlign();\n    }\n    return bitmap;\n  }\n\n  function decodeMMRBitmap(input, width, height, endOfBlock) {\n    // MMR is the same compression algorithm as the PDF filter\n    // CCITTFaxDecode with /K -1.\n    let params = {\n      K: -1,\n      Columns: width,\n      Rows: height,\n      BlackIs1: true,\n      EndOfBlock: endOfBlock,\n    };\n    let decoder = new CCITTFaxDecoder(input, params);\n    let bitmap = [], x, y, row, currentByte, shift, eof = false;\n\n    for (y = 0; y < height; y++) {\n      row = new Uint8Array(width);\n      bitmap.push(row);\n      shift = -1;\n      for (x = 0; x < width; x++) {\n        if (shift < 0) {\n          currentByte = decoder.readNextChar();\n          if (currentByte === -1) {\n            // Set the rest of the bits to zero.\n            currentByte = 0;\n            eof = true;\n          }\n          shift = 7;\n        }\n        row[x] = (currentByte >> shift) & 1;\n        shift--;\n      }\n    }\n\n    if (endOfBlock && !eof) {\n      // Read until EOFB has been consumed.\n      const lookForEOFLimit = 5;\n      for (let i = 0; i < lookForEOFLimit; i++) {\n        if (decoder.readNextChar() === -1) {\n          break;\n        }\n      }\n    }\n\n    return bitmap;\n  }\n\n  function Jbig2Image() {}\n\n  Jbig2Image.prototype = {\n    parseChunks(chunks) {\n      return parseJbig2Chunks(chunks);\n    },\n\n    parse(data) {\n      const { imgData, width, height, } = parseJbig2(data);\n      this.width = width;\n      this.height = height;\n      return imgData;\n    },\n  };\n\n  return Jbig2Image;\n})();\n\nexport {\n  Jbig2Image,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* This class implements the QM Coder decoding as defined in\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\n *   Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nvar ArithmeticDecoder = (function ArithmeticDecoderClosure() {\n  // Table C-2\n  var QeTable = [\n    { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1, },\n    { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0, },\n    { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0, },\n    { qe: 0x0AC1, nmps: 4, nlps: 12, switchFlag: 0, },\n    { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0, },\n    { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0, },\n    { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1, },\n    { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0, },\n    { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0, },\n    { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0, },\n    { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0, },\n    { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0, },\n    { qe: 0x1C01, nmps: 13, nlps: 20, switchFlag: 0, },\n    { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0, },\n    { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1, },\n    { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0, },\n    { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0, },\n    { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0, },\n    { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0, },\n    { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0, },\n    { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0, },\n    { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0, },\n    { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0, },\n    { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0, },\n    { qe: 0x1C01, nmps: 25, nlps: 22, switchFlag: 0, },\n    { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0, },\n    { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0, },\n    { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0, },\n    { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0, },\n    { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0, },\n    { qe: 0x0AC1, nmps: 31, nlps: 28, switchFlag: 0, },\n    { qe: 0x09C1, nmps: 32, nlps: 29, switchFlag: 0, },\n    { qe: 0x08A1, nmps: 33, nlps: 30, switchFlag: 0, },\n    { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0, },\n    { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0, },\n    { qe: 0x02A1, nmps: 36, nlps: 33, switchFlag: 0, },\n    { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0, },\n    { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0, },\n    { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0, },\n    { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0, },\n    { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0, },\n    { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0, },\n    { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0, },\n    { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0, },\n    { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0, },\n    { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0, },\n    { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0, }\n  ];\n\n  // C.3.5 Initialisation of the decoder (INITDEC)\n  function ArithmeticDecoder(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n\n    this.chigh = data[start];\n    this.clow = 0;\n\n    this.byteIn();\n\n    this.chigh = ((this.chigh << 7) & 0xFFFF) | ((this.clow >> 9) & 0x7F);\n    this.clow = (this.clow << 7) & 0xFFFF;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  ArithmeticDecoder.prototype = {\n    // C.3.4 Compressed data input (BYTEIN)\n    byteIn: function ArithmeticDecoder_byteIn() {\n      var data = this.data;\n      var bp = this.bp;\n      if (data[bp] === 0xFF) {\n        var b1 = data[bp + 1];\n        if (b1 > 0x8F) {\n          this.clow += 0xFF00;\n          this.ct = 8;\n        } else {\n          bp++;\n          this.clow += (data[bp] << 9);\n          this.ct = 7;\n          this.bp = bp;\n        }\n      } else {\n        bp++;\n        this.clow += bp < this.dataEnd ? (data[bp] << 8) : 0xFF00;\n        this.ct = 8;\n        this.bp = bp;\n      }\n      if (this.clow > 0xFFFF) {\n        this.chigh += (this.clow >> 16);\n        this.clow &= 0xFFFF;\n      }\n    },\n    // C.3.2 Decoding a decision (DECODE)\n    readBit: function ArithmeticDecoder_readBit(contexts, pos) {\n      // contexts are packed into 1 byte:\n      // highest 7 bits carry cx.index, lowest bit carries cx.mps\n      var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1;\n      var qeTableIcx = QeTable[cx_index];\n      var qeIcx = qeTableIcx.qe;\n      var d;\n      var a = this.a - qeIcx;\n\n      if (this.chigh < qeIcx) {\n        // exchangeLps\n        if (a < qeIcx) {\n          a = qeIcx;\n          d = cx_mps;\n          cx_index = qeTableIcx.nmps;\n        } else {\n          a = qeIcx;\n          d = 1 ^ cx_mps;\n          if (qeTableIcx.switchFlag === 1) {\n            cx_mps = d;\n          }\n          cx_index = qeTableIcx.nlps;\n        }\n      } else {\n        this.chigh -= qeIcx;\n        if ((a & 0x8000) !== 0) {\n          this.a = a;\n          return cx_mps;\n        }\n        // exchangeMps\n        if (a < qeIcx) {\n          d = 1 ^ cx_mps;\n          if (qeTableIcx.switchFlag === 1) {\n            cx_mps = d;\n          }\n          cx_index = qeTableIcx.nlps;\n        } else {\n          d = cx_mps;\n          cx_index = qeTableIcx.nmps;\n        }\n      }\n      // C.3.3 renormD;\n      do {\n        if (this.ct === 0) {\n          this.byteIn();\n        }\n\n        a <<= 1;\n        this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1);\n        this.clow = (this.clow << 1) & 0xFFFF;\n        this.ct--;\n      } while ((a & 0x8000) === 0);\n      this.a = a;\n\n      contexts[pos] = cx_index << 1 | cx_mps;\n      return d;\n    },\n  };\n\n  return ArithmeticDecoder;\n})();\n\nexport {\n  ArithmeticDecoder,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createObjectURL, shadow } from '../shared/util';\nimport { DecodeStream } from './stream';\nimport { isDict } from './primitives';\nimport { JpegImage } from './jpg';\n\n/**\n * Depending on the type of JPEG a JpegStream is handled in different ways. For\n * JPEG's that are supported natively such as DeviceGray and DeviceRGB the image\n * data is stored and then loaded by the browser. For unsupported JPEG's we use\n * a library to decode these images and the stream behaves like all the other\n * DecodeStreams.\n */\nlet JpegStream = (function JpegStreamClosure() {\n  function JpegStream(stream, maybeLength, dict, params) {\n    // Some images may contain 'junk' before the SOI (start-of-image) marker.\n    // Note: this seems to mainly affect inline images.\n    let ch;\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === 0xFF) { // Find the first byte of the SOI marker (0xFFD8).\n        stream.skip(-1); // Reset the stream position to the SOI.\n        break;\n      }\n    }\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpegStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpegStream.prototype, 'bytes', {\n    get: function JpegStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpegStream.prototype.ensureBuffer = function(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpegStream.prototype.readBlock = function() {\n    if (this.eof) {\n      return;\n    }\n    let jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined,\n    };\n\n    // Checking if values need to be transformed before conversion.\n    let decodeArr = this.dict.getArray('Decode', 'D');\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      let bitsPerComponent = this.dict.get('BitsPerComponent') || 8;\n      let decodeArrLength = decodeArr.length;\n      let transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      let maxValue = (1 << bitsPerComponent) - 1;\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n    // Fetching the 'ColorTransform' entry, if it exists.\n    if (isDict(this.params)) {\n      let colorTransform = this.params.get('ColorTransform');\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n    const jpegImage = new JpegImage(jpegOptions);\n\n    jpegImage.parse(this.bytes);\n    let data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true,\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  };\n\n  JpegStream.prototype.getIR = function(forceDataSchema = false) {\n    return createObjectURL(this.bytes, 'image/jpeg', forceDataSchema);\n  };\n\n  return JpegStream;\n})();\n\nexport {\n  JpegStream,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-spaces */\n\nimport { assert, warn } from '../shared/util';\n\nlet JpegError = (function JpegErrorClosure() {\n  function JpegError(msg) {\n    this.message = 'JPEG error: ' + msg;\n  }\n\n  JpegError.prototype = new Error();\n  JpegError.prototype.name = 'JpegError';\n  JpegError.constructor = JpegError;\n\n  return JpegError;\n})();\n\nlet DNLMarkerError = (function DNLMarkerErrorClosure() {\n  function DNLMarkerError(message, scanLines) {\n    this.message = message;\n    this.scanLines = scanLines;\n  }\n\n  DNLMarkerError.prototype = new Error();\n  DNLMarkerError.prototype.name = 'DNLMarkerError';\n  DNLMarkerError.constructor = DNLMarkerError;\n\n  return DNLMarkerError;\n})();\n\nlet EOIMarkerError = (function EOIMarkerErrorClosure() {\n  function EOIMarkerError(message) {\n    this.message = message;\n  }\n\n  EOIMarkerError.prototype = new Error();\n  EOIMarkerError.prototype.name = 'EOIMarkerError';\n  EOIMarkerError.constructor = EOIMarkerError;\n\n  return EOIMarkerError;\n})();\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n *   (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n *   (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n *   (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\nvar JpegImage = (function JpegImageClosure() {\n  var dctZigZag = new Uint8Array([\n     0,\n     1,  8,\n    16,  9,  2,\n     3, 10, 17, 24,\n    32, 25, 18, 11, 4,\n     5, 12, 19, 26, 33, 40,\n    48, 41, 34, 27, 20, 13,  6,\n     7, 14, 21, 28, 35, 42, 49, 56,\n    57, 50, 43, 36, 29, 22, 15,\n    23, 30, 37, 44, 51, 58,\n    59, 52, 45, 38, 31,\n    39, 46, 53, 60,\n    61, 54, 47,\n    55, 62,\n    63\n  ]);\n\n  var dctCos1  =  4017;   // cos(pi/16)\n  var dctSin1  =   799;   // sin(pi/16)\n  var dctCos3  =  3406;   // cos(3*pi/16)\n  var dctSin3  =  2276;   // sin(3*pi/16)\n  var dctCos6  =  1567;   // cos(6*pi/16)\n  var dctSin6  =  3784;   // sin(6*pi/16)\n  var dctSqrt2 =  5793;   // sqrt(2)\n  var dctSqrt1d2 = 2896;  // sqrt(2) / 2\n\n  function JpegImage({ decodeTransform = null, colorTransform = -1, } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  function buildHuffmanTable(codeLengths, values) {\n    var k = 0, code = [], i, j, length = 16;\n    while (length > 0 && !codeLengths[length - 1]) {\n      length--;\n    }\n    code.push({ children: [], index: 0, });\n    var p = code[0], q;\n    for (i = 0; i < length; i++) {\n      for (j = 0; j < codeLengths[i]; j++) {\n        p = code.pop();\n        p.children[p.index] = values[k];\n        while (p.index > 0) {\n          p = code.pop();\n        }\n        p.index++;\n        code.push(p);\n        while (code.length <= i) {\n          code.push(q = { children: [], index: 0, });\n          p.children[p.index] = q.children;\n          p = q;\n        }\n        k++;\n      }\n      if (i + 1 < length) {\n        // p here points to last code\n        code.push(q = { children: [], index: 0, });\n        p.children[p.index] = q.children;\n        p = q;\n      }\n    }\n    return code[0].children;\n  }\n\n  function getBlockBufferOffset(component, row, col) {\n    return 64 * ((component.blocksPerLine + 1) * row + col);\n  }\n\n  function decodeScan(data, offset, frame, components, resetInterval,\n                      spectralStart, spectralEnd, successivePrev, successive,\n                      parseDNLMarker = false) {\n    var mcusPerLine = frame.mcusPerLine;\n    var progressive = frame.progressive;\n\n    var startOffset = offset, bitsData = 0, bitsCount = 0;\n\n    function readBit() {\n      if (bitsCount > 0) {\n        bitsCount--;\n        return (bitsData >> bitsCount) & 1;\n      }\n      bitsData = data[offset++];\n      if (bitsData === 0xFF) {\n        var nextByte = data[offset++];\n        if (nextByte) {\n          if (nextByte === 0xDC && parseDNLMarker) { // DNL == 0xFFDC\n            offset += 2; // Skip data length.\n            const scanLines = (data[offset++] << 8) | data[offset++];\n            if (scanLines > 0 && scanLines !== frame.scanLines) {\n              throw new DNLMarkerError(\n                'Found DNL marker (0xFFDC) while parsing scan data', scanLines);\n            }\n          } else if (nextByte === 0xD9) { // EOI == 0xFFD9\n            throw new EOIMarkerError(\n              'Found EOI marker (0xFFD9) while parsing scan data');\n          }\n          throw new JpegError(\n            `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`);\n        }\n        // unstuff 0\n      }\n      bitsCount = 7;\n      return bitsData >>> 7;\n    }\n\n    function decodeHuffman(tree) {\n      var node = tree;\n      while (true) {\n        node = node[readBit()];\n        if (typeof node === 'number') {\n          return node;\n        }\n        if (typeof node !== 'object') {\n          throw new JpegError('invalid huffman sequence');\n        }\n      }\n    }\n\n    function receive(length) {\n      var n = 0;\n      while (length > 0) {\n        n = (n << 1) | readBit();\n        length--;\n      }\n      return n;\n    }\n\n    function receiveAndExtend(length) {\n      if (length === 1) {\n        return readBit() === 1 ? 1 : -1;\n      }\n      var n = receive(length);\n      if (n >= 1 << (length - 1)) {\n        return n;\n      }\n      return n + (-1 << length) + 1;\n    }\n\n    function decodeBaseline(component, offset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : receiveAndExtend(t);\n      component.blockData[offset] = (component.pred += diff);\n      var k = 1;\n      while (k < 64) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15, r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[offset + z] = receiveAndExtend(s);\n        k++;\n      }\n    }\n\n    function decodeDCFirst(component, offset) {\n      var t = decodeHuffman(component.huffmanTableDC);\n      var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);\n      component.blockData[offset] = (component.pred += diff);\n    }\n\n    function decodeDCSuccessive(component, offset) {\n      component.blockData[offset] |= readBit() << successive;\n    }\n\n    var eobrun = 0;\n    function decodeACFirst(component, offset) {\n      if (eobrun > 0) {\n        eobrun--;\n        return;\n      }\n      var k = spectralStart, e = spectralEnd;\n      while (k <= e) {\n        var rs = decodeHuffman(component.huffmanTableAC);\n        var s = rs & 15, r = rs >> 4;\n        if (s === 0) {\n          if (r < 15) {\n            eobrun = receive(r) + (1 << r) - 1;\n            break;\n          }\n          k += 16;\n          continue;\n        }\n        k += r;\n        var z = dctZigZag[k];\n        component.blockData[offset + z] =\n          receiveAndExtend(s) * (1 << successive);\n        k++;\n      }\n    }\n\n    var successiveACState = 0, successiveACNextValue;\n    function decodeACSuccessive(component, offset) {\n      var k = spectralStart;\n      var e = spectralEnd;\n      var r = 0;\n      var s;\n      var rs;\n      while (k <= e) {\n        let offsetZ = offset + dctZigZag[k];\n        let sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n        switch (successiveACState) {\n          case 0: // initial state\n            rs = decodeHuffman(component.huffmanTableAC);\n            s = rs & 15;\n            r = rs >> 4;\n            if (s === 0) {\n              if (r < 15) {\n                eobrun = receive(r) + (1 << r);\n                successiveACState = 4;\n              } else {\n                r = 16;\n                successiveACState = 1;\n              }\n            } else {\n              if (s !== 1) {\n                throw new JpegError('invalid ACn encoding');\n              }\n              successiveACNextValue = receiveAndExtend(s);\n              successiveACState = r ? 2 : 3;\n            }\n            continue;\n          case 1: // skipping r zero items\n          case 2:\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              r--;\n              if (r === 0) {\n                successiveACState = successiveACState === 2 ? 3 : 0;\n              }\n            }\n            break;\n          case 3: // set value for a zero item\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            } else {\n              component.blockData[offsetZ] =\n                successiveACNextValue << successive;\n              successiveACState = 0;\n            }\n            break;\n          case 4: // eob\n            if (component.blockData[offsetZ]) {\n              component.blockData[offsetZ] += sign * (readBit() << successive);\n            }\n            break;\n        }\n        k++;\n      }\n      if (successiveACState === 4) {\n        eobrun--;\n        if (eobrun === 0) {\n          successiveACState = 0;\n        }\n      }\n    }\n\n    function decodeMcu(component, decode, mcu, row, col) {\n      var mcuRow = (mcu / mcusPerLine) | 0;\n      var mcuCol = mcu % mcusPerLine;\n      var blockRow = mcuRow * component.v + row;\n      var blockCol = mcuCol * component.h + col;\n      var offset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, offset);\n    }\n\n    function decodeBlock(component, decode, mcu) {\n      var blockRow = (mcu / component.blocksPerLine) | 0;\n      var blockCol = mcu % component.blocksPerLine;\n      var offset = getBlockBufferOffset(component, blockRow, blockCol);\n      decode(component, offset);\n    }\n\n    var componentsLength = components.length;\n    var component, i, j, k, n;\n    var decodeFn;\n    if (progressive) {\n      if (spectralStart === 0) {\n        decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n      } else {\n        decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n      }\n    } else {\n      decodeFn = decodeBaseline;\n    }\n\n    var mcu = 0, fileMarker;\n    var mcuExpected;\n    if (componentsLength === 1) {\n      mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n    } else {\n      mcuExpected = mcusPerLine * frame.mcusPerColumn;\n    }\n\n    var h, v;\n    while (mcu < mcuExpected) {\n      // reset interval stuff\n      var mcuToRead = resetInterval ?\n        Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n      eobrun = 0;\n\n      if (componentsLength === 1) {\n        component = components[0];\n        for (n = 0; n < mcuToRead; n++) {\n          decodeBlock(component, decodeFn, mcu);\n          mcu++;\n        }\n      } else {\n        for (n = 0; n < mcuToRead; n++) {\n          for (i = 0; i < componentsLength; i++) {\n            component = components[i];\n            h = component.h;\n            v = component.v;\n            for (j = 0; j < v; j++) {\n              for (k = 0; k < h; k++) {\n                decodeMcu(component, decodeFn, mcu, j, k);\n              }\n            }\n          }\n          mcu++;\n        }\n      }\n\n      // find marker\n      bitsCount = 0;\n      fileMarker = findNextFileMarker(data, offset);\n      // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip past\n      // those to attempt to find a valid marker (fixes issue4090.pdf).\n      if (fileMarker && fileMarker.invalid) {\n        warn('decodeScan - unexpected MCU data, current marker is: ' +\n             fileMarker.invalid);\n        offset = fileMarker.offset;\n      }\n      var marker = fileMarker && fileMarker.marker;\n      if (!marker || marker <= 0xFF00) {\n        throw new JpegError('marker was not found');\n      }\n\n      if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx\n        offset += 2;\n      } else {\n        break;\n      }\n    }\n\n    fileMarker = findNextFileMarker(data, offset);\n    // Some images include more Scan blocks than expected, skip past those and\n    // attempt to find the next valid marker (fixes issue8182.pdf).\n    if (fileMarker && fileMarker.invalid) {\n      warn('decodeScan - unexpected Scan data, current marker is: ' +\n           fileMarker.invalid);\n      offset = fileMarker.offset;\n    }\n\n    return offset - startOffset;\n  }\n\n  // A port of poppler's IDCT method which in turn is taken from:\n  //   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n  //   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n  //   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n  //   988-991.\n  function quantizeAndInverse(component, blockBufferOffset, p) {\n    var qt = component.quantizationTable, blockData = component.blockData;\n    var v0, v1, v2, v3, v4, v5, v6, v7;\n    var p0, p1, p2, p3, p4, p5, p6, p7;\n    var t;\n\n    if (!qt) {\n      throw new JpegError('missing required Quantization Table.');\n    }\n\n    // inverse DCT on rows\n    for (var row = 0; row < 64; row += 8) {\n      // gather block data\n      p0 = blockData[blockBufferOffset + row];\n      p1 = blockData[blockBufferOffset + row + 1];\n      p2 = blockData[blockBufferOffset + row + 2];\n      p3 = blockData[blockBufferOffset + row + 3];\n      p4 = blockData[blockBufferOffset + row + 4];\n      p5 = blockData[blockBufferOffset + row + 5];\n      p6 = blockData[blockBufferOffset + row + 6];\n      p7 = blockData[blockBufferOffset + row + 7];\n\n      // dequant p0\n      p0 *= qt[row];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 512) >> 10;\n        p[row] = t;\n        p[row + 1] = t;\n        p[row + 2] = t;\n        p[row + 3] = t;\n        p[row + 4] = t;\n        p[row + 5] = t;\n        p[row + 6] = t;\n        p[row + 7] = t;\n        continue;\n      }\n      // dequant p1 ... p7\n      p1 *= qt[row + 1];\n      p2 *= qt[row + 2];\n      p3 *= qt[row + 3];\n      p4 *= qt[row + 4];\n      p5 *= qt[row + 5];\n      p6 *= qt[row + 6];\n      p7 *= qt[row + 7];\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 128) >> 8;\n      v1 = (dctSqrt2 * p4 + 128) >> 8;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n      v5 = p3 << 4;\n      v6 = p5 << 4;\n\n      // stage 3\n      v0 = (v0 + v1 + 1) >> 1;\n      v1 = v0 - v1;\n      t  = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t  = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t  = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p[row] = v0 + v7;\n      p[row + 7] = v0 - v7;\n      p[row + 1] = v1 + v6;\n      p[row + 6] = v1 - v6;\n      p[row + 2] = v2 + v5;\n      p[row + 5] = v2 - v5;\n      p[row + 3] = v3 + v4;\n      p[row + 4] = v3 - v4;\n    }\n\n    // inverse DCT on columns\n    for (var col = 0; col < 8; ++col) {\n      p0 = p[col];\n      p1 = p[col +  8];\n      p2 = p[col + 16];\n      p3 = p[col + 24];\n      p4 = p[col + 32];\n      p5 = p[col + 40];\n      p6 = p[col + 48];\n      p7 = p[col + 56];\n\n      // check for all-zero AC coefficients\n      if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n        t = (dctSqrt2 * p0 + 8192) >> 14;\n        // convert to 8 bit\n        t = (t < -2040) ? 0 : (t >= 2024) ? 255 : (t + 2056) >> 4;\n        blockData[blockBufferOffset + col] = t;\n        blockData[blockBufferOffset + col +  8] = t;\n        blockData[blockBufferOffset + col + 16] = t;\n        blockData[blockBufferOffset + col + 24] = t;\n        blockData[blockBufferOffset + col + 32] = t;\n        blockData[blockBufferOffset + col + 40] = t;\n        blockData[blockBufferOffset + col + 48] = t;\n        blockData[blockBufferOffset + col + 56] = t;\n        continue;\n      }\n\n      // stage 4\n      v0 = (dctSqrt2 * p0 + 2048) >> 12;\n      v1 = (dctSqrt2 * p4 + 2048) >> 12;\n      v2 = p2;\n      v3 = p6;\n      v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n      v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n      v5 = p3;\n      v6 = p5;\n\n      // stage 3\n      // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n      // converting to UInt8 range later.\n      v0 = ((v0 + v1 + 1) >> 1) + 4112;\n      v1 = v0 - v1;\n      t  = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n      v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n      v3 = t;\n      v4 = (v4 + v6 + 1) >> 1;\n      v6 = v4 - v6;\n      v7 = (v7 + v5 + 1) >> 1;\n      v5 = v7 - v5;\n\n      // stage 2\n      v0 = (v0 + v3 + 1) >> 1;\n      v3 = v0 - v3;\n      v1 = (v1 + v2 + 1) >> 1;\n      v2 = v1 - v2;\n      t  = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n      v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n      v7 = t;\n      t  = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n      v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n      v6 = t;\n\n      // stage 1\n      p0 = v0 + v7;\n      p7 = v0 - v7;\n      p1 = v1 + v6;\n      p6 = v1 - v6;\n      p2 = v2 + v5;\n      p5 = v2 - v5;\n      p3 = v3 + v4;\n      p4 = v3 - v4;\n\n      // convert to 8-bit integers\n      p0 = (p0 < 16) ? 0 : (p0 >= 4080) ? 255 : p0 >> 4;\n      p1 = (p1 < 16) ? 0 : (p1 >= 4080) ? 255 : p1 >> 4;\n      p2 = (p2 < 16) ? 0 : (p2 >= 4080) ? 255 : p2 >> 4;\n      p3 = (p3 < 16) ? 0 : (p3 >= 4080) ? 255 : p3 >> 4;\n      p4 = (p4 < 16) ? 0 : (p4 >= 4080) ? 255 : p4 >> 4;\n      p5 = (p5 < 16) ? 0 : (p5 >= 4080) ? 255 : p5 >> 4;\n      p6 = (p6 < 16) ? 0 : (p6 >= 4080) ? 255 : p6 >> 4;\n      p7 = (p7 < 16) ? 0 : (p7 >= 4080) ? 255 : p7 >> 4;\n\n      // store block data\n      blockData[blockBufferOffset + col] = p0;\n      blockData[blockBufferOffset + col +  8] = p1;\n      blockData[blockBufferOffset + col + 16] = p2;\n      blockData[blockBufferOffset + col + 24] = p3;\n      blockData[blockBufferOffset + col + 32] = p4;\n      blockData[blockBufferOffset + col + 40] = p5;\n      blockData[blockBufferOffset + col + 48] = p6;\n      blockData[blockBufferOffset + col + 56] = p7;\n    }\n  }\n\n  function buildComponentData(frame, component) {\n    var blocksPerLine = component.blocksPerLine;\n    var blocksPerColumn = component.blocksPerColumn;\n    var computationBuffer = new Int16Array(64);\n\n    for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n      for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n        var offset = getBlockBufferOffset(component, blockRow, blockCol);\n        quantizeAndInverse(component, offset, computationBuffer);\n      }\n    }\n    return component.blockData;\n  }\n\n  function findNextFileMarker(data, currentPos, startPos = currentPos) {\n    function peekUint16(pos) {\n      return (data[pos] << 8) | data[pos + 1];\n    }\n\n    const maxPos = data.length - 1;\n    var newPos = startPos < currentPos ? startPos : currentPos;\n\n    if (currentPos >= maxPos) {\n      return null; // Don't attempt to read non-existent data and just return.\n    }\n    var currentMarker = peekUint16(currentPos);\n    if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {\n      return {\n        invalid: null,\n        marker: currentMarker,\n        offset: currentPos,\n      };\n    }\n    var newMarker = peekUint16(newPos);\n    while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {\n      if (++newPos >= maxPos) {\n        return null; // Don't attempt to read non-existent data and just return.\n      }\n      newMarker = peekUint16(newPos);\n    }\n    return {\n      invalid: currentMarker.toString(16),\n      marker: newMarker,\n      offset: newPos,\n    };\n  }\n\n  JpegImage.prototype = {\n    parse(data, { dnlScanLines = null, } = {}) {\n\n      function readUint16() {\n        var value = (data[offset] << 8) | data[offset + 1];\n        offset += 2;\n        return value;\n      }\n\n      function readDataBlock() {\n        var length = readUint16();\n        var endOffset = offset + length - 2;\n\n        var fileMarker = findNextFileMarker(data, endOffset, offset);\n        if (fileMarker && fileMarker.invalid) {\n          warn('readDataBlock - incorrect length, current marker is: ' +\n               fileMarker.invalid);\n          endOffset = fileMarker.offset;\n        }\n\n        var array = data.subarray(offset, endOffset);\n        offset += array.length;\n        return array;\n      }\n\n      function prepareComponents(frame) {\n        var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n        var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n        for (var i = 0; i < frame.components.length; i++) {\n          component = frame.components[i];\n          var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) *\n                                        component.h / frame.maxH);\n          var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) *\n                                          component.v / frame.maxV);\n          var blocksPerLineForMcu = mcusPerLine * component.h;\n          var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n          var blocksBufferSize = 64 * blocksPerColumnForMcu *\n                                      (blocksPerLineForMcu + 1);\n          component.blockData = new Int16Array(blocksBufferSize);\n          component.blocksPerLine = blocksPerLine;\n          component.blocksPerColumn = blocksPerColumn;\n        }\n        frame.mcusPerLine = mcusPerLine;\n        frame.mcusPerColumn = mcusPerColumn;\n      }\n\n      var offset = 0;\n      var jfif = null;\n      var adobe = null;\n      var frame, resetInterval;\n      let numSOSMarkers = 0;\n      var quantizationTables = [];\n      var huffmanTablesAC = [], huffmanTablesDC = [];\n      var fileMarker = readUint16();\n      if (fileMarker !== 0xFFD8) { // SOI (Start of Image)\n        throw new JpegError('SOI not found');\n      }\n\n      fileMarker = readUint16();\n      markerLoop: while (fileMarker !== 0xFFD9) { // EOI (End of image)\n        var i, j, l;\n        switch (fileMarker) {\n          case 0xFFE0: // APP0 (Application Specific)\n          case 0xFFE1: // APP1\n          case 0xFFE2: // APP2\n          case 0xFFE3: // APP3\n          case 0xFFE4: // APP4\n          case 0xFFE5: // APP5\n          case 0xFFE6: // APP6\n          case 0xFFE7: // APP7\n          case 0xFFE8: // APP8\n          case 0xFFE9: // APP9\n          case 0xFFEA: // APP10\n          case 0xFFEB: // APP11\n          case 0xFFEC: // APP12\n          case 0xFFED: // APP13\n          case 0xFFEE: // APP14\n          case 0xFFEF: // APP15\n          case 0xFFFE: // COM (Comment)\n            var appData = readDataBlock();\n\n            if (fileMarker === 0xFFE0) {\n              if (appData[0] === 0x4A && appData[1] === 0x46 &&\n                  appData[2] === 0x49 && appData[3] === 0x46 &&\n                  appData[4] === 0) { // 'JFIF\\x00'\n                jfif = {\n                  version: { major: appData[5], minor: appData[6], },\n                  densityUnits: appData[7],\n                  xDensity: (appData[8] << 8) | appData[9],\n                  yDensity: (appData[10] << 8) | appData[11],\n                  thumbWidth: appData[12],\n                  thumbHeight: appData[13],\n                  thumbData: appData.subarray(14, 14 +\n                                              3 * appData[12] * appData[13]),\n                };\n              }\n            }\n            // TODO APP1 - Exif\n            if (fileMarker === 0xFFEE) {\n              if (appData[0] === 0x41 && appData[1] === 0x64 &&\n                  appData[2] === 0x6F && appData[3] === 0x62 &&\n                  appData[4] === 0x65) { // 'Adobe'\n                adobe = {\n                  version: (appData[5] << 8) | appData[6],\n                  flags0: (appData[7] << 8) | appData[8],\n                  flags1: (appData[9] << 8) | appData[10],\n                  transformCode: appData[11],\n                };\n              }\n            }\n            break;\n\n          case 0xFFDB: // DQT (Define Quantization Tables)\n            var quantizationTablesLength = readUint16();\n            var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n            var z;\n            while (offset < quantizationTablesEnd) {\n              var quantizationTableSpec = data[offset++];\n              var tableData = new Uint16Array(64);\n              if ((quantizationTableSpec >> 4) === 0) { // 8 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = data[offset++];\n                }\n              } else if ((quantizationTableSpec >> 4) === 1) { // 16 bit values\n                for (j = 0; j < 64; j++) {\n                  z = dctZigZag[j];\n                  tableData[z] = readUint16();\n                }\n              } else {\n                throw new JpegError('DQT - invalid table spec');\n              }\n              quantizationTables[quantizationTableSpec & 15] = tableData;\n            }\n            break;\n\n          case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT)\n          case 0xFFC1: // SOF1 (Start of Frame, Extended DCT)\n          case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT)\n            if (frame) {\n              throw new JpegError('Only single frame JPEGs supported');\n            }\n            readUint16(); // skip data length\n            frame = {};\n            frame.extended = (fileMarker === 0xFFC1);\n            frame.progressive = (fileMarker === 0xFFC2);\n            frame.precision = data[offset++];\n            const sofScanLines = readUint16();\n            frame.scanLines = dnlScanLines || sofScanLines;\n            frame.samplesPerLine = readUint16();\n            frame.components = [];\n            frame.componentIds = {};\n            var componentsCount = data[offset++], componentId;\n            var maxH = 0, maxV = 0;\n            for (i = 0; i < componentsCount; i++) {\n              componentId = data[offset];\n              var h = data[offset + 1] >> 4;\n              var v = data[offset + 1] & 15;\n              if (maxH < h) {\n                maxH = h;\n              }\n              if (maxV < v) {\n                maxV = v;\n              }\n              var qId = data[offset + 2];\n              l = frame.components.push({\n                h,\n                v,\n                quantizationId: qId,\n                quantizationTable: null, // See comment below.\n              });\n              frame.componentIds[componentId] = l - 1;\n              offset += 3;\n            }\n            frame.maxH = maxH;\n            frame.maxV = maxV;\n            prepareComponents(frame);\n            break;\n\n          case 0xFFC4: // DHT (Define Huffman Tables)\n            var huffmanLength = readUint16();\n            for (i = 2; i < huffmanLength;) {\n              var huffmanTableSpec = data[offset++];\n              var codeLengths = new Uint8Array(16);\n              var codeLengthSum = 0;\n              for (j = 0; j < 16; j++, offset++) {\n                codeLengthSum += (codeLengths[j] = data[offset]);\n              }\n              var huffmanValues = new Uint8Array(codeLengthSum);\n              for (j = 0; j < codeLengthSum; j++, offset++) {\n                huffmanValues[j] = data[offset];\n              }\n              i += 17 + codeLengthSum;\n\n              ((huffmanTableSpec >> 4) === 0 ?\n                huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] =\n                buildHuffmanTable(codeLengths, huffmanValues);\n            }\n            break;\n\n          case 0xFFDD: // DRI (Define Restart Interval)\n            readUint16(); // skip data length\n            resetInterval = readUint16();\n            break;\n\n          case 0xFFDA: // SOS (Start of Scan)\n            // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n            // of the first scan segment and may only occur once in an image.\n            // Furthermore, to prevent an infinite loop, do *not* attempt to\n            // parse DNL markers during re-parsing of the JPEG scan data.\n            const parseDNLMarker = (++numSOSMarkers) === 1 && !dnlScanLines;\n\n            readUint16(); // scanLength\n            var selectorsCount = data[offset++];\n            var components = [], component;\n            for (i = 0; i < selectorsCount; i++) {\n              var componentIndex = frame.componentIds[data[offset++]];\n              component = frame.components[componentIndex];\n              var tableSpec = data[offset++];\n              component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n              component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n              components.push(component);\n            }\n            var spectralStart = data[offset++];\n            var spectralEnd = data[offset++];\n            var successiveApproximation = data[offset++];\n            try {\n              var processed = decodeScan(data, offset,\n                frame, components, resetInterval,\n                spectralStart, spectralEnd,\n                successiveApproximation >> 4, successiveApproximation & 15,\n                parseDNLMarker);\n              offset += processed;\n            } catch (ex) {\n              if (ex instanceof DNLMarkerError) {\n                warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n                return this.parse(data, { dnlScanLines: ex.scanLines, });\n              } else if (ex instanceof EOIMarkerError) {\n                warn(`${ex.message} -- ignoring the rest of the image data.`);\n                break markerLoop;\n              }\n              throw ex;\n            }\n            break;\n\n          case 0xFFDC: // DNL (Define Number of Lines)\n            // Ignore the marker, since it's being handled in `decodeScan`.\n            offset += 4;\n            break;\n\n          case 0xFFFF: // Fill bytes\n            if (data[offset] !== 0xFF) { // Avoid skipping a valid marker.\n              offset--;\n            }\n            break;\n\n          default:\n            if (data[offset - 3] === 0xFF &&\n                data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {\n              // could be incorrect encoding -- last 0xFF byte of the previous\n              // block was eaten by the encoder\n              offset -= 3;\n              break;\n            }\n            let nextFileMarker = findNextFileMarker(data, offset - 2);\n            if (nextFileMarker && nextFileMarker.invalid) {\n              warn('JpegImage.parse - unexpected data, current marker is: ' +\n                   nextFileMarker.invalid);\n              offset = nextFileMarker.offset;\n              break;\n            }\n            throw new JpegError('unknown marker ' + fileMarker.toString(16));\n        }\n        fileMarker = readUint16();\n      }\n\n      this.width = frame.samplesPerLine;\n      this.height = frame.scanLines;\n      this.jfif = jfif;\n      this.adobe = adobe;\n      this.components = [];\n      for (i = 0; i < frame.components.length; i++) {\n        component = frame.components[i];\n\n        // Prevent errors when DQT markers are placed after SOF{n} markers,\n        // by assigning the `quantizationTable` entry after the entire image\n        // has been parsed (fixes issue7406.pdf).\n        var quantizationTable = quantizationTables[component.quantizationId];\n        if (quantizationTable) {\n          component.quantizationTable = quantizationTable;\n        }\n\n        this.components.push({\n          output: buildComponentData(frame, component),\n          scaleX: component.h / frame.maxH,\n          scaleY: component.v / frame.maxV,\n          blocksPerLine: component.blocksPerLine,\n          blocksPerColumn: component.blocksPerColumn,\n        });\n      }\n      this.numComponents = this.components.length;\n    },\n\n    _getLinearizedBlockData(width, height, isSourcePDF = false) {\n      var scaleX = this.width / width, scaleY = this.height / height;\n\n      var component, componentScaleX, componentScaleY, blocksPerScanline;\n      var x, y, i, j, k;\n      var index;\n      var offset = 0;\n      var output;\n      var numComponents = this.components.length;\n      var dataLength = width * height * numComponents;\n      var data = new Uint8ClampedArray(dataLength);\n      var xScaleBlockOffset = new Uint32Array(width);\n      var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n\n      for (i = 0; i < numComponents; i++) {\n        component = this.components[i];\n        componentScaleX = component.scaleX * scaleX;\n        componentScaleY = component.scaleY * scaleY;\n        offset = i;\n        output = component.output;\n        blocksPerScanline = (component.blocksPerLine + 1) << 3;\n        // precalculate the xScaleBlockOffset\n        for (x = 0; x < width; x++) {\n          j = 0 | (x * componentScaleX);\n          xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n        }\n        // linearize the blocks of the component\n        for (y = 0; y < height; y++) {\n          j = 0 | (y * componentScaleY);\n          index = blocksPerScanline * (j & mask3LSB) | ((j & 7) << 3);\n          for (x = 0; x < width; x++) {\n            data[offset] = output[index + xScaleBlockOffset[x]];\n            offset += numComponents;\n          }\n        }\n      }\n\n      // decodeTransform contains pairs of multiplier (-256..256) and additive\n      let transform = this._decodeTransform;\n\n      // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n      // (this can be observed by extracting the raw image data).\n      // Since the conversion algorithms (see below) were written primarily for\n      // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n      // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n      //\n      // Unfortunately it's not (always) possible to tell, from the image data\n      // alone, if it needs to be inverted. Thus in an attempt to provide better\n      // out-of-box behaviour when `JpegImage` is used standalone, default to\n      // inverting JPEG (CMYK) images if and only if the image data does *not*\n      // come from a PDF file and no `decodeTransform` was passed by the user.\n      if (!isSourcePDF && numComponents === 4 && !transform) {\n        transform = new Int32Array([\n          -256, 255, -256, 255, -256, 255, -256, 255]);\n      }\n\n      if (transform) {\n        for (i = 0; i < dataLength;) {\n          for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n            data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n          }\n        }\n      }\n      return data;\n    },\n\n    get _isColorConversionNeeded() {\n      if (this.adobe) {\n        // The adobe transform marker overrides any previous setting.\n        return !!this.adobe.transformCode;\n      }\n      if (this.numComponents === 3) {\n        if (this._colorTransform === 0) {\n          // If the Adobe transform marker is not present and the image\n          // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n          // then the colours should *not* be transformed.\n          return false;\n        }\n        return true;\n      }\n      // `this.numComponents !== 3`\n      if (this._colorTransform === 1) {\n        // If the Adobe transform marker is not present and the image\n        // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n        // then the colours should be transformed.\n        return true;\n      }\n      return false;\n    },\n\n    _convertYccToRgb: function convertYccToRgb(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 3) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = Y - 179.456 + 1.402 * Cr;\n        data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n        data[i + 2] = Y - 226.816 + 1.772 * Cb;\n      }\n      return data;\n    },\n\n    _convertYcckToRgb: function convertYcckToRgb(data) {\n      var Y, Cb, Cr, k;\n      var offset = 0;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        k = data[i + 3];\n\n        data[offset++] = -122.67195406894 +\n          Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr -\n                5.4080610064599e-5 * Y + 0.00048449797120281 * k -\n                0.154362151871126) +\n          Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y -\n                0.00477271405408747 * k + 1.53380253221734) +\n          Y * (0.000961250184130688 * Y - 0.00266257332283933 * k +\n               0.48357088451265) +\n          k * (-0.000336197177618394 * k + 0.484791561490776);\n\n        data[offset++] = 107.268039397724 +\n          Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr +\n                0.000659397001245577 * Y + 0.000426105652938837 * k -\n                0.176491792462875) +\n          Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y +\n                0.000770482631801132 * k - 0.151051492775562) +\n          Y * (0.00126935368114843 * Y - 0.00265090189010898 * k +\n               0.25802910206845) +\n          k * (-0.000318913117588328 * k - 0.213742400323665);\n\n        data[offset++] = -20.810012546947 +\n          Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr +\n                0.0020741088115012 * Y - 0.00288260236853442 * k +\n                0.814272968359295) +\n          Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y +\n                0.000560833691242812 * k - 0.195152027534049) +\n          Y * (0.00174418132927582 * Y - 0.00255243321439347 * k +\n               0.116935020465145) +\n          k * (-0.000343531996510555 * k + 0.24165260232407);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    _convertYcckToCmyk: function convertYcckToCmyk(data) {\n      var Y, Cb, Cr;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        Y = data[i];\n        Cb = data[i + 1];\n        Cr = data[i + 2];\n        data[i] = 434.456 - Y - 1.402 * Cr;\n        data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n        data[i + 2] = 481.816 - Y - 1.772 * Cb;\n        // K in data[i + 3] is unchanged\n      }\n      return data;\n    },\n\n    _convertCmykToRgb: function convertCmykToRgb(data) {\n      var c, m, y, k;\n      var offset = 0;\n      var scale = 1 / 255;\n      for (var i = 0, length = data.length; i < length; i += 4) {\n        c = data[i] * scale;\n        m = data[i + 1] * scale;\n        y = data[i + 2] * scale;\n        k = data[i + 3] * scale;\n\n        data[offset++] = 255 +\n          c * (-4.387332384609988 * c + 54.48615194189176 * m +\n               18.82290502165302 * y + 212.25662451639585 * k -\n               285.2331026137004) +\n          m * (1.7149763477362134 * m - 5.6096736904047315 * y -\n               17.873870861415444 * k - 5.497006427196366) +\n          y * (-2.5217340131683033 * y - 21.248923337353073 * k +\n               17.5119270841813) -\n          k * (21.86122147463605 * k + 189.48180835922747);\n\n        data[offset++] = 255 +\n          c * (8.841041422036149 * c + 60.118027045597366 * m +\n               6.871425592049007 * y + 31.159100130055922 * k -\n               79.2970844816548) +\n          m * (-15.310361306967817 * m + 17.575251261109482 * y +\n               131.35250912493976 * k - 190.9453302588951) +\n          y * (4.444339102852739 * y + 9.8632861493405 * k -\n               24.86741582555878) -\n          k * (20.737325471181034 * k + 187.80453709719578);\n\n        data[offset++] = 255 +\n          c * (0.8842522430003296 * c + 8.078677503112928 * m +\n               30.89978309703729 * y - 0.23883238689178934 * k -\n               14.183576799673286) +\n          m * (10.49593273432072 * m + 63.02378494754052 * y +\n               50.606957656360734 * k - 112.23884253719248) +\n          y * (0.03296041114873217 * y + 115.60384449646641 * k -\n               193.58209356861505) -\n          k * (22.33816807309886 * k + 180.12613974708367);\n      }\n      // Ensure that only the converted RGB data is returned.\n      return data.subarray(0, offset);\n    },\n\n    getData({ width, height, forceRGB = false, isSourcePDF = false, }) {\n      if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('TESTING && !LIB')) {\n        assert(isSourcePDF === true,\n          'JpegImage.getData: Unexpected \"isSourcePDF\" value for PDF files.');\n      }\n      if (this.numComponents > 4) {\n        throw new JpegError('Unsupported color mode');\n      }\n      // Type of data: Uint8ClampedArray(width * height * numComponents)\n      var data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n      if (this.numComponents === 1 && forceRGB) {\n        var dataLength = data.length;\n        var rgbData = new Uint8ClampedArray(dataLength * 3);\n        var offset = 0;\n        for (var i = 0; i < dataLength; i++) {\n          var grayColor = data[i];\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n          rgbData[offset++] = grayColor;\n        }\n        return rgbData;\n      } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n        return this._convertYccToRgb(data);\n      } else if (this.numComponents === 4) {\n        if (this._isColorConversionNeeded) {\n          if (forceRGB) {\n            return this._convertYcckToRgb(data);\n          }\n          return this._convertYcckToCmyk(data);\n        } else if (forceRGB) {\n          return this._convertCmykToRgb(data);\n        }\n      }\n      return data;\n    },\n  };\n\n  return JpegImage;\n})();\n\nexport {\n  JpegImage,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DecodeStream } from './stream';\nimport { JpxImage } from './jpx';\nimport { shadow } from '../shared/util';\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nlet JpxStream = (function JpxStreamClosure() {\n  function JpxStream(stream, maybeLength, dict, params) {\n    this.stream = stream;\n    this.maybeLength = maybeLength;\n    this.dict = dict;\n    this.params = params;\n\n    DecodeStream.call(this, maybeLength);\n  }\n\n  JpxStream.prototype = Object.create(DecodeStream.prototype);\n\n  Object.defineProperty(JpxStream.prototype, 'bytes', {\n    get: function JpxStream_bytes() {\n      // If `this.maybeLength` is null, we'll get the entire stream.\n      return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));\n    },\n    configurable: true,\n  });\n\n  JpxStream.prototype.ensureBuffer = function(requested) {\n    // No-op, since `this.readBlock` will always parse the entire image and\n    // directly insert all of its data into `this.buffer`.\n  };\n\n  JpxStream.prototype.readBlock = function() {\n    if (this.eof) {\n      return;\n    }\n    let jpxImage = new JpxImage();\n    jpxImage.parse(this.bytes);\n\n    let width = jpxImage.width;\n    let height = jpxImage.height;\n    let componentsCount = jpxImage.componentsCount;\n    let tileCount = jpxImage.tiles.length;\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      let data = new Uint8ClampedArray(width * height * componentsCount);\n\n      for (let k = 0; k < tileCount; k++) {\n        let tileComponents = jpxImage.tiles[k];\n        let tileWidth = tileComponents.width;\n        let tileHeight = tileComponents.height;\n        let tileLeft = tileComponents.left;\n        let tileTop = tileComponents.top;\n\n        let src = tileComponents.items;\n        let srcPosition = 0;\n        let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        let imgRowSize = width * componentsCount;\n        let tileRowSize = tileWidth * componentsCount;\n\n        for (let j = 0; j < tileHeight; j++) {\n          let rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n      this.buffer = data;\n    }\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  };\n\n  return JpxStream;\n})();\n\nexport {\n  JpxStream,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  info, log2, readUint16, readUint32, warn\n} from '../shared/util';\nimport { ArithmeticDecoder } from './arithmetic_decoder';\n\nlet JpxError = (function JpxErrorClosure() {\n  function JpxError(msg) {\n    this.message = 'JPX error: ' + msg;\n  }\n\n  JpxError.prototype = new Error();\n  JpxError.prototype.name = 'JpxError';\n  JpxError.constructor = JpxError;\n\n  return JpxError;\n})();\n\nvar JpxImage = (function JpxImageClosure() {\n  // Table E.1\n  var SubbandsGainLog2 = {\n    'LL': 0,\n    'LH': 1,\n    'HL': 1,\n    'HH': 2,\n  };\n  function JpxImage() {\n    this.failOnCorruptedImage = false;\n  }\n  JpxImage.prototype = {\n    parse: function JpxImage_parse(data) {\n\n      var head = readUint16(data, 0);\n      // No box header, immediate start of codestream (SOC)\n      if (head === 0xFF4F) {\n        this.parseCodestream(data, 0, data.length);\n        return;\n      }\n\n      var position = 0, length = data.length;\n      while (position < length) {\n        var headerSize = 8;\n        var lbox = readUint32(data, position);\n        var tbox = readUint32(data, position + 4);\n        position += headerSize;\n        if (lbox === 1) {\n          // XLBox: read UInt64 according to spec.\n          // JavaScript's int precision of 53 bit should be sufficient here.\n          lbox = readUint32(data, position) * 4294967296 +\n                 readUint32(data, position + 4);\n          position += 8;\n          headerSize += 8;\n        }\n        if (lbox === 0) {\n          lbox = length - position + headerSize;\n        }\n        if (lbox < headerSize) {\n          throw new JpxError('Invalid box field size');\n        }\n        var dataLength = lbox - headerSize;\n        var jumpDataLength = true;\n        switch (tbox) {\n          case 0x6A703268: // 'jp2h'\n            jumpDataLength = false; // parsing child boxes\n            break;\n          case 0x636F6C72: // 'colr'\n            // Colorspaces are not used, the CS from the PDF is used.\n            var method = data[position];\n            if (method === 1) {\n              // enumerated colorspace\n              var colorspace = readUint32(data, position + 3);\n              switch (colorspace) {\n                case 16: // this indicates a sRGB colorspace\n                case 17: // this indicates a grayscale colorspace\n                case 18: // this indicates a YUV colorspace\n                  break;\n                default:\n                  warn('Unknown colorspace ' + colorspace);\n                  break;\n              }\n            } else if (method === 2) {\n              info('ICC profile not supported');\n            }\n            break;\n          case 0x6A703263: // 'jp2c'\n            this.parseCodestream(data, position, position + dataLength);\n            break;\n          case 0x6A502020: // 'jP\\024\\024'\n            if (readUint32(data, position) !== 0x0d0a870a) {\n              warn('Invalid JP2 signature');\n            }\n            break;\n          // The following header types are valid but currently not used:\n          case 0x6A501A1A: // 'jP\\032\\032'\n          case 0x66747970: // 'ftyp'\n          case 0x72726571: // 'rreq'\n          case 0x72657320: // 'res '\n          case 0x69686472: // 'ihdr'\n            break;\n          default:\n            var headerType = String.fromCharCode((tbox >> 24) & 0xFF,\n                                                 (tbox >> 16) & 0xFF,\n                                                 (tbox >> 8) & 0xFF,\n                                                 tbox & 0xFF);\n            warn('Unsupported header type ' + tbox + ' (' + headerType + ')');\n            break;\n        }\n        if (jumpDataLength) {\n          position += dataLength;\n        }\n      }\n    },\n    parseImageProperties: function JpxImage_parseImageProperties(stream) {\n      var newByte = stream.getByte();\n      while (newByte >= 0) {\n        var oldByte = newByte;\n        newByte = stream.getByte();\n        var code = (oldByte << 8) | newByte;\n        // Image and tile size (SIZ)\n        if (code === 0xFF51) {\n          stream.skip(4);\n          var Xsiz = stream.getInt32() >>> 0; // Byte 4\n          var Ysiz = stream.getInt32() >>> 0; // Byte 8\n          var XOsiz = stream.getInt32() >>> 0; // Byte 12\n          var YOsiz = stream.getInt32() >>> 0; // Byte 16\n          stream.skip(16);\n          var Csiz = stream.getUint16(); // Byte 36\n          this.width = Xsiz - XOsiz;\n          this.height = Ysiz - YOsiz;\n          this.componentsCount = Csiz;\n          // Results are always returned as `Uint8ClampedArray`s.\n          this.bitsPerComponent = 8;\n          return;\n        }\n      }\n      throw new JpxError('No size marker found in JPX stream');\n    },\n    parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n      var context = {};\n      var doNotRecover = false;\n      try {\n        var position = start;\n        while (position + 1 < end) {\n          var code = readUint16(data, position);\n          position += 2;\n\n          var length = 0, j, sqcd, spqcds, spqcdSize, scalarExpounded, tile;\n          switch (code) {\n            case 0xFF4F: // Start of codestream (SOC)\n              context.mainHeader = true;\n              break;\n            case 0xFFD9: // End of codestream (EOC)\n              break;\n            case 0xFF51: // Image and tile size (SIZ)\n              length = readUint16(data, position);\n              var siz = {};\n              siz.Xsiz = readUint32(data, position + 4);\n              siz.Ysiz = readUint32(data, position + 8);\n              siz.XOsiz = readUint32(data, position + 12);\n              siz.YOsiz = readUint32(data, position + 16);\n              siz.XTsiz = readUint32(data, position + 20);\n              siz.YTsiz = readUint32(data, position + 24);\n              siz.XTOsiz = readUint32(data, position + 28);\n              siz.YTOsiz = readUint32(data, position + 32);\n              var componentsCount = readUint16(data, position + 36);\n              siz.Csiz = componentsCount;\n              var components = [];\n              j = position + 38;\n              for (var i = 0; i < componentsCount; i++) {\n                var component = {\n                  precision: (data[j] & 0x7F) + 1,\n                  isSigned: !!(data[j] & 0x80),\n                  XRsiz: data[j + 1],\n                  YRsiz: data[j + 2],\n                };\n                j += 3;\n                calculateComponentDimensions(component, siz);\n                components.push(component);\n              }\n              context.SIZ = siz;\n              context.components = components;\n              calculateTileGrids(context, components);\n              context.QCC = [];\n              context.COC = [];\n              break;\n            case 0xFF5C: // Quantization default (QCD)\n              length = readUint16(data, position);\n              var qcd = {};\n              j = position + 2;\n              sqcd = data[j++];\n              switch (sqcd & 0x1F) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error('Invalid SQcd value ' + sqcd);\n              }\n              qcd.noQuantization = (spqcdSize === 8);\n              qcd.scalarExpounded = scalarExpounded;\n              qcd.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < length + position) {\n                var spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcd.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCD = qcd;\n              } else {\n                context.currentTile.QCD = qcd;\n                context.currentTile.QCC = [];\n              }\n              break;\n            case 0xFF5D: // Quantization component (QCC)\n              length = readUint16(data, position);\n              var qcc = {};\n              j = position + 2;\n              var cqcc;\n              if (context.SIZ.Csiz < 257) {\n                cqcc = data[j++];\n              } else {\n                cqcc = readUint16(data, j);\n                j += 2;\n              }\n              sqcd = data[j++];\n              switch (sqcd & 0x1F) {\n                case 0:\n                  spqcdSize = 8;\n                  scalarExpounded = true;\n                  break;\n                case 1:\n                  spqcdSize = 16;\n                  scalarExpounded = false;\n                  break;\n                case 2:\n                  spqcdSize = 16;\n                  scalarExpounded = true;\n                  break;\n                default:\n                  throw new Error('Invalid SQcd value ' + sqcd);\n              }\n              qcc.noQuantization = (spqcdSize === 8);\n              qcc.scalarExpounded = scalarExpounded;\n              qcc.guardBits = sqcd >> 5;\n              spqcds = [];\n              while (j < (length + position)) {\n                spqcd = {};\n                if (spqcdSize === 8) {\n                  spqcd.epsilon = data[j++] >> 3;\n                  spqcd.mu = 0;\n                } else {\n                  spqcd.epsilon = data[j] >> 3;\n                  spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n                  j += 2;\n                }\n                spqcds.push(spqcd);\n              }\n              qcc.SPqcds = spqcds;\n              if (context.mainHeader) {\n                context.QCC[cqcc] = qcc;\n              } else {\n                context.currentTile.QCC[cqcc] = qcc;\n              }\n              break;\n            case 0xFF52: // Coding style default (COD)\n              length = readUint16(data, position);\n              var cod = {};\n              j = position + 2;\n              var scod = data[j++];\n              cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n              cod.sopMarkerUsed = !!(scod & 2);\n              cod.ephMarkerUsed = !!(scod & 4);\n              cod.progressionOrder = data[j++];\n              cod.layersCount = readUint16(data, j);\n              j += 2;\n              cod.multipleComponentTransform = data[j++];\n\n              cod.decompositionLevelsCount = data[j++];\n              cod.xcb = (data[j++] & 0xF) + 2;\n              cod.ycb = (data[j++] & 0xF) + 2;\n              var blockStyle = data[j++];\n              cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n              cod.resetContextProbabilities = !!(blockStyle & 2);\n              cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n              cod.verticallyStripe = !!(blockStyle & 8);\n              cod.predictableTermination = !!(blockStyle & 16);\n              cod.segmentationSymbolUsed = !!(blockStyle & 32);\n              cod.reversibleTransformation = data[j++];\n              if (cod.entropyCoderWithCustomPrecincts) {\n                var precinctsSizes = [];\n                while (j < length + position) {\n                  var precinctsSize = data[j++];\n                  precinctsSizes.push({\n                    PPx: precinctsSize & 0xF,\n                    PPy: precinctsSize >> 4,\n                  });\n                }\n                cod.precinctsSizes = precinctsSizes;\n              }\n              var unsupported = [];\n              if (cod.selectiveArithmeticCodingBypass) {\n                unsupported.push('selectiveArithmeticCodingBypass');\n              }\n              if (cod.resetContextProbabilities) {\n                unsupported.push('resetContextProbabilities');\n              }\n              if (cod.terminationOnEachCodingPass) {\n                unsupported.push('terminationOnEachCodingPass');\n              }\n              if (cod.verticallyStripe) {\n                unsupported.push('verticallyStripe');\n              }\n              if (cod.predictableTermination) {\n                unsupported.push('predictableTermination');\n              }\n              if (unsupported.length > 0) {\n                doNotRecover = true;\n                throw new Error('Unsupported COD options (' +\n                                unsupported.join(', ') + ')');\n              }\n              if (context.mainHeader) {\n                context.COD = cod;\n              } else {\n                context.currentTile.COD = cod;\n                context.currentTile.COC = [];\n              }\n              break;\n            case 0xFF90: // Start of tile-part (SOT)\n              length = readUint16(data, position);\n              tile = {};\n              tile.index = readUint16(data, position + 2);\n              tile.length = readUint32(data, position + 4);\n              tile.dataEnd = tile.length + position - 2;\n              tile.partIndex = data[position + 8];\n              tile.partsCount = data[position + 9];\n\n              context.mainHeader = false;\n              if (tile.partIndex === 0) {\n                // reset component specific settings\n                tile.COD = context.COD;\n                tile.COC = context.COC.slice(0); // clone of the global COC\n                tile.QCD = context.QCD;\n                tile.QCC = context.QCC.slice(0); // clone of the global COC\n              }\n              context.currentTile = tile;\n              break;\n            case 0xFF93: // Start of data (SOD)\n              tile = context.currentTile;\n              if (tile.partIndex === 0) {\n                initializeTile(context, tile.index);\n                buildPackets(context);\n              }\n\n              // moving to the end of the data\n              length = tile.dataEnd - position;\n              parseTilePackets(context, data, position, length);\n              break;\n            case 0xFF55: // Tile-part lengths, main header (TLM)\n            case 0xFF57: // Packet length, main header (PLM)\n            case 0xFF58: // Packet length, tile-part header (PLT)\n            case 0xFF64: // Comment (COM)\n              length = readUint16(data, position);\n              // skipping content\n              break;\n            case 0xFF53: // Coding style component (COC)\n              throw new Error('Codestream code 0xFF53 (COC) is ' +\n                              'not implemented');\n            default:\n              throw new Error('Unknown codestream code: ' + code.toString(16));\n          }\n          position += length;\n        }\n      } catch (e) {\n        if (doNotRecover || this.failOnCorruptedImage) {\n          throw new JpxError(e.message);\n        } else {\n          warn('JPX: Trying to recover from: ' + e.message);\n        }\n      }\n      this.tiles = transformComponents(context);\n      this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n      this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n      this.componentsCount = context.SIZ.Csiz;\n    },\n  };\n  function calculateComponentDimensions(component, siz) {\n    // Section B.2 Component mapping\n    component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n    component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n    component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n    component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n    component.width = component.x1 - component.x0;\n    component.height = component.y1 - component.y0;\n  }\n  function calculateTileGrids(context, components) {\n    var siz = context.SIZ;\n    // Section B.3 Division into tile and tile-components\n    var tile, tiles = [];\n    var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n    var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n    for (var q = 0; q < numYtiles; q++) {\n      for (var p = 0; p < numXtiles; p++) {\n        tile = {};\n        tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n        tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n        tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n        tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n        tile.width = tile.tx1 - tile.tx0;\n        tile.height = tile.ty1 - tile.ty0;\n        tile.components = [];\n        tiles.push(tile);\n      }\n    }\n    context.tiles = tiles;\n\n    var componentsCount = siz.Csiz;\n    for (var i = 0, ii = componentsCount; i < ii; i++) {\n      var component = components[i];\n      for (var j = 0, jj = tiles.length; j < jj; j++) {\n        var tileComponent = {};\n        tile = tiles[j];\n        tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n        tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n        tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n        tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n        tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n        tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n        tile.components[i] = tileComponent;\n      }\n    }\n  }\n  function getBlocksDimensions(context, component, r) {\n    var codOrCoc = component.codingStyleParameters;\n    var result = {};\n    if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n      result.PPx = 15;\n      result.PPy = 15;\n    } else {\n      result.PPx = codOrCoc.precinctsSizes[r].PPx;\n      result.PPy = codOrCoc.precinctsSizes[r].PPy;\n    }\n    // calculate codeblock size as described in section B.7\n    result.xcb_ = (r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) :\n                   Math.min(codOrCoc.xcb, result.PPx));\n    result.ycb_ = (r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) :\n                   Math.min(codOrCoc.ycb, result.PPy));\n    return result;\n  }\n  function buildPrecincts(context, resolution, dimensions) {\n    // Section B.6 Division resolution to precincts\n    var precinctWidth = 1 << dimensions.PPx;\n    var precinctHeight = 1 << dimensions.PPy;\n    // Jasper introduces codeblock groups for mapping each subband codeblocks\n    // to precincts. Precinct partition divides a resolution according to width\n    // and height parameters. The subband that belongs to the resolution level\n    // has a different size than the level, unless it is the zero resolution.\n\n    // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n    // The precinct partitioning for a particular subband is derived from a\n    // partitioning of its parent LL band (i.e., the LL band at the next higher\n    // resolution level)... The LL band associated with each resolution level is\n    // divided into precincts... Each of the resulting precinct regions is then\n    // mapped into its child subbands (if any) at the next lower resolution\n    // level. This is accomplished by using the coordinate transformation\n    // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n    // coordinates of a point in the LL band and child subband, respectively.\n    var isZeroRes = resolution.resLevel === 0;\n    var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n    var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n    var numprecinctswide = (resolution.trx1 > resolution.trx0 ?\n      Math.ceil(resolution.trx1 / precinctWidth) -\n      Math.floor(resolution.trx0 / precinctWidth) : 0);\n    var numprecinctshigh = (resolution.try1 > resolution.try0 ?\n      Math.ceil(resolution.try1 / precinctHeight) -\n      Math.floor(resolution.try0 / precinctHeight) : 0);\n    var numprecincts = numprecinctswide * numprecinctshigh;\n\n    resolution.precinctParameters = {\n      precinctWidth,\n      precinctHeight,\n      numprecinctswide,\n      numprecinctshigh,\n      numprecincts,\n      precinctWidthInSubband,\n      precinctHeightInSubband,\n    };\n  }\n  function buildCodeblocks(context, subband, dimensions) {\n    // Section B.7 Division sub-band into code-blocks\n    var xcb_ = dimensions.xcb_;\n    var ycb_ = dimensions.ycb_;\n    var codeblockWidth = 1 << xcb_;\n    var codeblockHeight = 1 << ycb_;\n    var cbx0 = subband.tbx0 >> xcb_;\n    var cby0 = subband.tby0 >> ycb_;\n    var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n    var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n    var precinctParameters = subband.resolution.precinctParameters;\n    var codeblocks = [];\n    var precincts = [];\n    var i, j, codeblock, precinctNumber;\n    for (j = cby0; j < cby1; j++) {\n      for (i = cbx0; i < cbx1; i++) {\n        codeblock = {\n          cbx: i,\n          cby: j,\n          tbx0: codeblockWidth * i,\n          tby0: codeblockHeight * j,\n          tbx1: codeblockWidth * (i + 1),\n          tby1: codeblockHeight * (j + 1),\n        };\n\n        codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n        codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n        codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n        codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n        // Calculate precinct number for this codeblock, codeblock position\n        // should be relative to its subband, use actual dimension and position\n        // See comment about codeblock group width and height\n        var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) /\n          precinctParameters.precinctWidthInSubband);\n        var pj = Math.floor((codeblock.tby0_ - subband.tby0) /\n          precinctParameters.precinctHeightInSubband);\n        precinctNumber = pi + (pj * precinctParameters.numprecinctswide);\n\n        codeblock.precinctNumber = precinctNumber;\n        codeblock.subbandType = subband.type;\n        codeblock.Lblock = 3;\n\n        if (codeblock.tbx1_ <= codeblock.tbx0_ ||\n            codeblock.tby1_ <= codeblock.tby0_) {\n          continue;\n        }\n        codeblocks.push(codeblock);\n        // building precinct for the sub-band\n        var precinct = precincts[precinctNumber];\n        if (precinct !== undefined) {\n          if (i < precinct.cbxMin) {\n            precinct.cbxMin = i;\n          } else if (i > precinct.cbxMax) {\n            precinct.cbxMax = i;\n          }\n          if (j < precinct.cbyMin) {\n            precinct.cbxMin = j;\n          } else if (j > precinct.cbyMax) {\n            precinct.cbyMax = j;\n          }\n        } else {\n          precincts[precinctNumber] = precinct = {\n            cbxMin: i,\n            cbyMin: j,\n            cbxMax: i,\n            cbyMax: j,\n          };\n        }\n        codeblock.precinct = precinct;\n      }\n    }\n    subband.codeblockParameters = {\n      codeblockWidth: xcb_,\n      codeblockHeight: ycb_,\n      numcodeblockwide: cbx1 - cbx0 + 1,\n      numcodeblockhigh: cby1 - cby0 + 1,\n    };\n    subband.codeblocks = codeblocks;\n    subband.precincts = precincts;\n  }\n  function createPacket(resolution, precinctNumber, layerNumber) {\n    var precinctCodeblocks = [];\n    // Section B.10.8 Order of info in packet\n    var subbands = resolution.subbands;\n    // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n    for (var i = 0, ii = subbands.length; i < ii; i++) {\n      var subband = subbands[i];\n      var codeblocks = subband.codeblocks;\n      for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n        var codeblock = codeblocks[j];\n        if (codeblock.precinctNumber !== precinctNumber) {\n          continue;\n        }\n        precinctCodeblocks.push(codeblock);\n      }\n    }\n    return {\n      layerNumber,\n      codeblocks: precinctCodeblocks,\n    };\n  }\n  function LayerResolutionComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount);\n    }\n\n    var l = 0, r = 0, i = 0, k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.1 Layer-resolution-component-position\n      for (; l < layersCount; l++) {\n        for (; r <= maxDecompositionLevelsCount; r++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts;) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        r = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function ResolutionLayerComponentPositionIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var maxDecompositionLevelsCount = 0;\n    for (var q = 0; q < componentsCount; q++) {\n      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n        tile.components[q].codingStyleParameters.decompositionLevelsCount);\n    }\n\n    var r = 0, l = 0, i = 0, k = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.2 Resolution-layer-component-position\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; l < layersCount; l++) {\n          for (; i < componentsCount; i++) {\n            var component = tile.components[i];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            for (; k < numprecincts;) {\n              var packet = createPacket(resolution, k, l);\n              k++;\n              return packet;\n            }\n            k = 0;\n          }\n          i = 0;\n        }\n        l = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function ResolutionPositionComponentLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var l, r, c, p;\n    var maxDecompositionLevelsCount = 0;\n    for (c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n        component.codingStyleParameters.decompositionLevelsCount);\n    }\n    var maxNumPrecinctsInLevel = new Int32Array(\n      maxDecompositionLevelsCount + 1);\n    for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n      var maxNumPrecincts = 0;\n      for (c = 0; c < componentsCount; ++c) {\n        var resolutions = tile.components[c].resolutions;\n        if (r < resolutions.length) {\n          maxNumPrecincts = Math.max(maxNumPrecincts,\n            resolutions[r].precinctParameters.numprecincts);\n        }\n      }\n      maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n    }\n    l = 0;\n    r = 0;\n    c = 0;\n    p = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.3 Resolution-position-component-layer\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; p < maxNumPrecinctsInLevel[r]; p++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            if (r > component.codingStyleParameters.decompositionLevelsCount) {\n              continue;\n            }\n            var resolution = component.resolutions[r];\n            var numprecincts = resolution.precinctParameters.numprecincts;\n            if (p >= numprecincts) {\n              continue;\n            }\n            for (; l < layersCount;) {\n              var packet = createPacket(resolution, p, l);\n              l++;\n              return packet;\n            }\n            l = 0;\n          }\n          c = 0;\n        }\n        p = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function PositionComponentResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var precinctsIterationSizes = precinctsSizes;\n    var l = 0, r = 0, c = 0, px = 0, py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.4 Position-component-resolution-layer\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; c < componentsCount; c++) {\n            var component = tile.components[c];\n            var decompositionLevelsCount =\n              component.codingStyleParameters.decompositionLevelsCount;\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale =\n                precinctsSizes.components[c].resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution);\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount;) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          c = 0;\n        }\n        px = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function ComponentPositionResolutionLayerIterator(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var layersCount = tile.codingStyleDefaultParameters.layersCount;\n    var componentsCount = siz.Csiz;\n    var precinctsSizes = getPrecinctSizesInImageScale(tile);\n    var l = 0, r = 0, c = 0, px = 0, py = 0;\n\n    this.nextPacket = function JpxImage_nextPacket() {\n      // Section B.12.1.5 Component-position-resolution-layer\n      for (; c < componentsCount; ++c) {\n        var component = tile.components[c];\n        var precinctsIterationSizes = precinctsSizes.components[c];\n        var decompositionLevelsCount =\n          component.codingStyleParameters.decompositionLevelsCount;\n        for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n          for (; px < precinctsIterationSizes.maxNumWide; px++) {\n            for (; r <= decompositionLevelsCount; r++) {\n              var resolution = component.resolutions[r];\n              var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n              var k = getPrecinctIndexIfExist(\n                px,\n                py,\n                sizeInImageScale,\n                precinctsIterationSizes,\n                resolution);\n              if (k === null) {\n                continue;\n              }\n              for (; l < layersCount;) {\n                var packet = createPacket(resolution, k, l);\n                l++;\n                return packet;\n              }\n              l = 0;\n            }\n            r = 0;\n          }\n          px = 0;\n        }\n        py = 0;\n      }\n      throw new JpxError('Out of packets');\n    };\n  }\n  function getPrecinctIndexIfExist(\n    pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {\n    var posX = pxIndex * precinctIterationSizes.minWidth;\n    var posY = pyIndex * precinctIterationSizes.minHeight;\n    if (posX % sizeInImageScale.width !== 0 ||\n        posY % sizeInImageScale.height !== 0) {\n      return null;\n    }\n    var startPrecinctRowIndex =\n      (posY / sizeInImageScale.width) *\n      resolution.precinctParameters.numprecinctswide;\n    return (posX / sizeInImageScale.height) + startPrecinctRowIndex;\n  }\n  function getPrecinctSizesInImageScale(tile) {\n    var componentsCount = tile.components.length;\n    var minWidth = Number.MAX_VALUE;\n    var minHeight = Number.MAX_VALUE;\n    var maxNumWide = 0;\n    var maxNumHigh = 0;\n    var sizePerComponent = new Array(componentsCount);\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      var sizePerResolution = new Array(decompositionLevelsCount + 1);\n      var minWidthCurrentComponent = Number.MAX_VALUE;\n      var minHeightCurrentComponent = Number.MAX_VALUE;\n      var maxNumWideCurrentComponent = 0;\n      var maxNumHighCurrentComponent = 0;\n      var scale = 1;\n      for (var r = decompositionLevelsCount; r >= 0; --r) {\n        var resolution = component.resolutions[r];\n        var widthCurrentResolution =\n          scale * resolution.precinctParameters.precinctWidth;\n        var heightCurrentResolution =\n          scale * resolution.precinctParameters.precinctHeight;\n        minWidthCurrentComponent = Math.min(\n          minWidthCurrentComponent,\n          widthCurrentResolution);\n        minHeightCurrentComponent = Math.min(\n          minHeightCurrentComponent,\n          heightCurrentResolution);\n        maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent,\n          resolution.precinctParameters.numprecinctswide);\n        maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent,\n          resolution.precinctParameters.numprecinctshigh);\n        sizePerResolution[r] = {\n          width: widthCurrentResolution,\n          height: heightCurrentResolution,\n        };\n        scale <<= 1;\n      }\n      minWidth = Math.min(minWidth, minWidthCurrentComponent);\n      minHeight = Math.min(minHeight, minHeightCurrentComponent);\n      maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n      maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n      sizePerComponent[c] = {\n        resolutions: sizePerResolution,\n        minWidth: minWidthCurrentComponent,\n        minHeight: minHeightCurrentComponent,\n        maxNumWide: maxNumWideCurrentComponent,\n        maxNumHigh: maxNumHighCurrentComponent,\n      };\n    }\n    return {\n      components: sizePerComponent,\n      minWidth,\n      minHeight,\n      maxNumWide,\n      maxNumHigh,\n    };\n  }\n  function buildPackets(context) {\n    var siz = context.SIZ;\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var componentsCount = siz.Csiz;\n    // Creating resolutions and sub-bands for each component\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var decompositionLevelsCount =\n        component.codingStyleParameters.decompositionLevelsCount;\n      // Section B.5 Resolution levels and sub-bands\n      var resolutions = [];\n      var subbands = [];\n      for (var r = 0; r <= decompositionLevelsCount; r++) {\n        var blocksDimensions = getBlocksDimensions(context, component, r);\n        var resolution = {};\n        var scale = 1 << (decompositionLevelsCount - r);\n        resolution.trx0 = Math.ceil(component.tcx0 / scale);\n        resolution.try0 = Math.ceil(component.tcy0 / scale);\n        resolution.trx1 = Math.ceil(component.tcx1 / scale);\n        resolution.try1 = Math.ceil(component.tcy1 / scale);\n        resolution.resLevel = r;\n        buildPrecincts(context, resolution, blocksDimensions);\n        resolutions.push(resolution);\n\n        var subband;\n        if (r === 0) {\n          // one sub-band (LL) with last decomposition\n          subband = {};\n          subband.type = 'LL';\n          subband.tbx0 = Math.ceil(component.tcx0 / scale);\n          subband.tby0 = Math.ceil(component.tcy0 / scale);\n          subband.tbx1 = Math.ceil(component.tcx1 / scale);\n          subband.tby1 = Math.ceil(component.tcy1 / scale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolution.subbands = [subband];\n        } else {\n          var bscale = 1 << (decompositionLevelsCount - r + 1);\n          var resolutionSubbands = [];\n          // three sub-bands (HL, LH and HH) with rest of decompositions\n          subband = {};\n          subband.type = 'HL';\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = 'LH';\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          subband = {};\n          subband.type = 'HH';\n          subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n          subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n          subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n          subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n          subband.resolution = resolution;\n          buildCodeblocks(context, subband, blocksDimensions);\n          subbands.push(subband);\n          resolutionSubbands.push(subband);\n\n          resolution.subbands = resolutionSubbands;\n        }\n      }\n      component.resolutions = resolutions;\n      component.subbands = subbands;\n    }\n    // Generate the packets sequence\n    var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n    switch (progressionOrder) {\n      case 0:\n        tile.packetsIterator =\n          new LayerResolutionComponentPositionIterator(context);\n        break;\n      case 1:\n        tile.packetsIterator =\n          new ResolutionLayerComponentPositionIterator(context);\n        break;\n      case 2:\n        tile.packetsIterator =\n          new ResolutionPositionComponentLayerIterator(context);\n        break;\n      case 3:\n        tile.packetsIterator =\n          new PositionComponentResolutionLayerIterator(context);\n        break;\n      case 4:\n        tile.packetsIterator =\n          new ComponentPositionResolutionLayerIterator(context);\n        break;\n      default:\n        throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n    }\n  }\n  function parseTilePackets(context, data, offset, dataLength) {\n    var position = 0;\n    var buffer, bufferSize = 0, skipNextBit = false;\n    function readBits(count) {\n      while (bufferSize < count) {\n        var b = data[offset + position];\n        position++;\n        if (skipNextBit) {\n          buffer = (buffer << 7) | b;\n          bufferSize += 7;\n          skipNextBit = false;\n        } else {\n          buffer = (buffer << 8) | b;\n          bufferSize += 8;\n        }\n        if (b === 0xFF) {\n          skipNextBit = true;\n        }\n      }\n      bufferSize -= count;\n      return (buffer >>> bufferSize) & ((1 << count) - 1);\n    }\n    function skipMarkerIfEqual(value) {\n      if (data[offset + position - 1] === 0xFF &&\n          data[offset + position] === value) {\n        skipBytes(1);\n        return true;\n      } else if (data[offset + position] === 0xFF &&\n                 data[offset + position + 1] === value) {\n        skipBytes(2);\n        return true;\n      }\n      return false;\n    }\n    function skipBytes(count) {\n      position += count;\n    }\n    function alignToByte() {\n      bufferSize = 0;\n      if (skipNextBit) {\n        position++;\n        skipNextBit = false;\n      }\n    }\n    function readCodingpasses() {\n      if (readBits(1) === 0) {\n        return 1;\n      }\n      if (readBits(1) === 0) {\n        return 2;\n      }\n      var value = readBits(2);\n      if (value < 3) {\n        return value + 3;\n      }\n      value = readBits(5);\n      if (value < 31) {\n        return value + 6;\n      }\n      value = readBits(7);\n      return value + 37;\n    }\n    var tileIndex = context.currentTile.index;\n    var tile = context.tiles[tileIndex];\n    var sopMarkerUsed = context.COD.sopMarkerUsed;\n    var ephMarkerUsed = context.COD.ephMarkerUsed;\n    var packetsIterator = tile.packetsIterator;\n    while (position < dataLength) {\n      alignToByte();\n      if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n        // Skip also marker segment length and packet sequence ID\n        skipBytes(4);\n      }\n      var packet = packetsIterator.nextPacket();\n      if (!readBits(1)) {\n        continue;\n      }\n      var layerNumber = packet.layerNumber;\n      var queue = [], codeblock;\n      for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n        codeblock = packet.codeblocks[i];\n        var precinct = codeblock.precinct;\n        var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n        var codeblockRow = codeblock.cby - precinct.cbyMin;\n        var codeblockIncluded = false;\n        var firstTimeInclusion = false;\n        var valueReady;\n        if (codeblock['included'] !== undefined) {\n          codeblockIncluded = !!readBits(1);\n        } else {\n          // reading inclusion tree\n          precinct = codeblock.precinct;\n          var inclusionTree, zeroBitPlanesTree;\n          if (precinct['inclusionTree'] !== undefined) {\n            inclusionTree = precinct.inclusionTree;\n          } else {\n            // building inclusion and zero bit-planes trees\n            var width = precinct.cbxMax - precinct.cbxMin + 1;\n            var height = precinct.cbyMax - precinct.cbyMin + 1;\n            inclusionTree = new InclusionTree(width, height, layerNumber);\n            zeroBitPlanesTree = new TagTree(width, height);\n            precinct.inclusionTree = inclusionTree;\n            precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n          }\n\n          if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n            while (true) {\n              if (readBits(1)) {\n                valueReady = !inclusionTree.nextLevel();\n                if (valueReady) {\n                  codeblock.included = true;\n                  codeblockIncluded = firstTimeInclusion = true;\n                  break;\n                }\n              } else {\n                inclusionTree.incrementValue(layerNumber);\n                break;\n              }\n            }\n          }\n        }\n        if (!codeblockIncluded) {\n          continue;\n        }\n        if (firstTimeInclusion) {\n          zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n          zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !zeroBitPlanesTree.nextLevel();\n              if (valueReady) {\n                break;\n              }\n            } else {\n              zeroBitPlanesTree.incrementValue();\n            }\n          }\n          codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n        }\n        var codingpasses = readCodingpasses();\n        while (readBits(1)) {\n          codeblock.Lblock++;\n        }\n        var codingpassesLog2 = log2(codingpasses);\n        // rounding down log2\n        var bits = ((codingpasses < (1 << codingpassesLog2)) ?\n          codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;\n        var codedDataLength = readBits(bits);\n        queue.push({\n          codeblock,\n          codingpasses,\n          dataLength: codedDataLength,\n        });\n      }\n      alignToByte();\n      if (ephMarkerUsed) {\n        skipMarkerIfEqual(0x92);\n      }\n      while (queue.length > 0) {\n        var packetItem = queue.shift();\n        codeblock = packetItem.codeblock;\n        if (codeblock['data'] === undefined) {\n          codeblock.data = [];\n        }\n        codeblock.data.push({\n          data,\n          start: offset + position,\n          end: offset + position + packetItem.dataLength,\n          codingpasses: packetItem.codingpasses,\n        });\n        position += packetItem.dataLength;\n      }\n    }\n    return position;\n  }\n  function copyCoefficients(coefficients, levelWidth, levelHeight, subband,\n                            delta, mb, reversible, segmentationSymbolUsed) {\n    var x0 = subband.tbx0;\n    var y0 = subband.tby0;\n    var width = subband.tbx1 - subband.tbx0;\n    var codeblocks = subband.codeblocks;\n    var right = subband.type.charAt(0) === 'H' ? 1 : 0;\n    var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0;\n\n    for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n      var codeblock = codeblocks[i];\n      var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n      var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n      if (blockWidth === 0 || blockHeight === 0) {\n        continue;\n      }\n      if (codeblock['data'] === undefined) {\n        continue;\n      }\n\n      var bitModel, currentCodingpassType;\n      bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType,\n                              codeblock.zeroBitPlanes, mb);\n      currentCodingpassType = 2; // first bit plane starts from cleanup\n\n      // collect data\n      var data = codeblock.data, totalLength = 0, codingpasses = 0;\n      var j, jj, dataItem;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        totalLength += dataItem.end - dataItem.start;\n        codingpasses += dataItem.codingpasses;\n      }\n      var encodedData = new Uint8Array(totalLength);\n      var position = 0;\n      for (j = 0, jj = data.length; j < jj; j++) {\n        dataItem = data[j];\n        var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n        encodedData.set(chunk, position);\n        position += chunk.length;\n      }\n      // decoding the item\n      var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n      bitModel.setDecoder(decoder);\n\n      for (j = 0; j < codingpasses; j++) {\n        switch (currentCodingpassType) {\n          case 0:\n            bitModel.runSignificancePropagationPass();\n            break;\n          case 1:\n            bitModel.runMagnitudeRefinementPass();\n            break;\n          case 2:\n            bitModel.runCleanupPass();\n            if (segmentationSymbolUsed) {\n              bitModel.checkSegmentationSymbol();\n            }\n            break;\n        }\n        currentCodingpassType = (currentCodingpassType + 1) % 3;\n      }\n\n      var offset = (codeblock.tbx0_ - x0) + (codeblock.tby0_ - y0) * width;\n      var sign = bitModel.coefficentsSign;\n      var magnitude = bitModel.coefficentsMagnitude;\n      var bitsDecoded = bitModel.bitsDecoded;\n      var magnitudeCorrection = reversible ? 0 : 0.5;\n      var k, n, nb;\n      position = 0;\n      // Do the interleaving of Section F.3.3 here, so we do not need\n      // to copy later. LL level is not interleaved, just copied.\n      var interleave = (subband.type !== 'LL');\n      for (j = 0; j < blockHeight; j++) {\n        var row = (offset / width) | 0; // row in the non-interleaved subband\n        var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n        for (k = 0; k < blockWidth; k++) {\n          n = magnitude[position];\n          if (n !== 0) {\n            n = (n + magnitudeCorrection) * delta;\n            if (sign[position] !== 0) {\n              n = -n;\n            }\n            nb = bitsDecoded[position];\n            var pos = interleave ? (levelOffset + (offset << 1)) : offset;\n            if (reversible && (nb >= mb)) {\n              coefficients[pos] = n;\n            } else {\n              coefficients[pos] = n * (1 << (mb - nb));\n            }\n          }\n          offset++;\n          position++;\n        }\n        offset += width - blockWidth;\n      }\n    }\n  }\n  function transformTile(context, tile, c) {\n    var component = tile.components[c];\n    var codingStyleParameters = component.codingStyleParameters;\n    var quantizationParameters = component.quantizationParameters;\n    var decompositionLevelsCount =\n      codingStyleParameters.decompositionLevelsCount;\n    var spqcds = quantizationParameters.SPqcds;\n    var scalarExpounded = quantizationParameters.scalarExpounded;\n    var guardBits = quantizationParameters.guardBits;\n    var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n    var precision = context.components[c].precision;\n\n    var reversible = codingStyleParameters.reversibleTransformation;\n    var transform = (reversible ? new ReversibleTransform() :\n                                  new IrreversibleTransform());\n\n    var subbandCoefficients = [];\n    var b = 0;\n    for (var i = 0; i <= decompositionLevelsCount; i++) {\n      var resolution = component.resolutions[i];\n\n      var width = resolution.trx1 - resolution.trx0;\n      var height = resolution.try1 - resolution.try0;\n      // Allocate space for the whole sublevel.\n      var coefficients = new Float32Array(width * height);\n\n      for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n        var mu, epsilon;\n        if (!scalarExpounded) {\n          // formula E-5\n          mu = spqcds[0].mu;\n          epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n        } else {\n          mu = spqcds[b].mu;\n          epsilon = spqcds[b].epsilon;\n          b++;\n        }\n\n        var subband = resolution.subbands[j];\n        var gainLog2 = SubbandsGainLog2[subband.type];\n\n        // calculate quantization coefficient (Section E.1.1.1)\n        var delta = (reversible ? 1 :\n          Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048));\n        var mb = (guardBits + epsilon - 1);\n\n        // In the first resolution level, copyCoefficients will fill the\n        // whole array with coefficients. In the succeeding passes,\n        // copyCoefficients will consecutively fill in the values that belong\n        // to the interleaved positions of the HL, LH, and HH coefficients.\n        // The LL coefficients will then be interleaved in Transform.iterate().\n        copyCoefficients(coefficients, width, height, subband, delta, mb,\n                         reversible, segmentationSymbolUsed);\n      }\n      subbandCoefficients.push({\n        width,\n        height,\n        items: coefficients,\n      });\n    }\n\n    var result = transform.calculate(subbandCoefficients,\n                                     component.tcx0, component.tcy0);\n    return {\n      left: component.tcx0,\n      top: component.tcy0,\n      width: result.width,\n      height: result.height,\n      items: result.items,\n    };\n  }\n  function transformComponents(context) {\n    var siz = context.SIZ;\n    var components = context.components;\n    var componentsCount = siz.Csiz;\n    var resultImages = [];\n    for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n      var tile = context.tiles[i];\n      var transformedTiles = [];\n      var c;\n      for (c = 0; c < componentsCount; c++) {\n        transformedTiles[c] = transformTile(context, tile, c);\n      }\n      var tile0 = transformedTiles[0];\n      var out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n      var result = {\n        left: tile0.left,\n        top: tile0.top,\n        width: tile0.width,\n        height: tile0.height,\n        items: out,\n      };\n\n      // Section G.2.2 Inverse multi component transform\n      var shift, offset;\n      var pos = 0, j, jj, y0, y1, y2;\n      if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n        var fourComponents = componentsCount === 4;\n        var y0items = transformedTiles[0].items;\n        var y1items = transformedTiles[1].items;\n        var y2items = transformedTiles[2].items;\n        var y3items = fourComponents ? transformedTiles[3].items : null;\n\n        // HACK: The multiple component transform formulas below assume that\n        // all components have the same precision. With this in mind, we\n        // compute shift and offset only once.\n        shift = components[0].precision - 8;\n        offset = (128 << shift) + 0.5;\n\n        var component0 = tile.components[0];\n        var alpha01 = componentsCount - 3;\n        jj = y0items.length;\n        if (!component0.codingStyleParameters.reversibleTransformation) {\n          // inverse irreversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            out[pos++] = (y0 + 1.402 * y2) >> shift;\n            out[pos++] = (y0 - 0.34413 * y1 - 0.71414 * y2) >> shift;\n            out[pos++] = (y0 + 1.772 * y1) >> shift;\n          }\n        } else {\n          // inverse reversible multiple component transform\n          for (j = 0; j < jj; j++, pos += alpha01) {\n            y0 = y0items[j] + offset;\n            y1 = y1items[j];\n            y2 = y2items[j];\n            let g = y0 - ((y2 + y1) >> 2);\n\n            out[pos++] = (g + y2) >> shift;\n            out[pos++] = g >> shift;\n            out[pos++] = (g + y1) >> shift;\n          }\n        }\n        if (fourComponents) {\n          for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n            out[pos] = (y3items[j] + offset) >> shift;\n          }\n        }\n      } else { // no multi-component transform\n        for (c = 0; c < componentsCount; c++) {\n          var items = transformedTiles[c].items;\n          shift = components[c].precision - 8;\n          offset = (128 << shift) + 0.5;\n          for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n            out[pos] = (items[j] + offset) >> shift;\n            pos += componentsCount;\n          }\n        }\n      }\n      resultImages.push(result);\n    }\n    return resultImages;\n  }\n  function initializeTile(context, tileIndex) {\n    var siz = context.SIZ;\n    var componentsCount = siz.Csiz;\n    var tile = context.tiles[tileIndex];\n    for (var c = 0; c < componentsCount; c++) {\n      var component = tile.components[c];\n      var qcdOrQcc = (context.currentTile.QCC[c] !== undefined ?\n        context.currentTile.QCC[c] : context.currentTile.QCD);\n      component.quantizationParameters = qcdOrQcc;\n      var codOrCoc = (context.currentTile.COC[c] !== undefined ?\n        context.currentTile.COC[c] : context.currentTile.COD);\n      component.codingStyleParameters = codOrCoc;\n    }\n    tile.codingStyleDefaultParameters = context.currentTile.COD;\n  }\n\n  // Section B.10.2 Tag trees\n  var TagTree = (function TagTreeClosure() {\n    function TagTree(width, height) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var level = {\n          width,\n          height,\n          items: [],\n        };\n        this.levels.push(level);\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    TagTree.prototype = {\n      reset: function TagTree_reset(i, j) {\n        var currentLevel = 0, value = 0, level;\n        while (currentLevel < this.levels.length) {\n          level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          if (level.items[index] !== undefined) {\n            value = level.items[index];\n            break;\n          }\n          level.index = index;\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        currentLevel--;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        this.currentLevel = currentLevel;\n        delete this.value;\n      },\n      incrementValue: function TagTree_incrementValue() {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index]++;\n      },\n      nextLevel: function TagTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        currentLevel--;\n        if (currentLevel < 0) {\n          this.value = value;\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return TagTree;\n  })();\n\n  var InclusionTree = (function InclusionTreeClosure() {\n    function InclusionTree(width, height, defaultValue) {\n      var levelsLength = log2(Math.max(width, height)) + 1;\n      this.levels = [];\n      for (var i = 0; i < levelsLength; i++) {\n        var items = new Uint8Array(width * height);\n        for (var j = 0, jj = items.length; j < jj; j++) {\n          items[j] = defaultValue;\n        }\n\n        var level = {\n          width,\n          height,\n          items,\n        };\n        this.levels.push(level);\n\n        width = Math.ceil(width / 2);\n        height = Math.ceil(height / 2);\n      }\n    }\n    InclusionTree.prototype = {\n      reset: function InclusionTree_reset(i, j, stopValue) {\n        var currentLevel = 0;\n        while (currentLevel < this.levels.length) {\n          var level = this.levels[currentLevel];\n          var index = i + j * level.width;\n          level.index = index;\n          var value = level.items[index];\n\n          if (value === 0xFF) {\n            break;\n          }\n\n          if (value > stopValue) {\n            this.currentLevel = currentLevel;\n            // already know about this one, propagating the value to top levels\n            this.propagateValues();\n            return false;\n          }\n\n          i >>= 1;\n          j >>= 1;\n          currentLevel++;\n        }\n        this.currentLevel = currentLevel - 1;\n        return true;\n      },\n      incrementValue: function InclusionTree_incrementValue(stopValue) {\n        var level = this.levels[this.currentLevel];\n        level.items[level.index] = stopValue + 1;\n        this.propagateValues();\n      },\n      propagateValues: function InclusionTree_propagateValues() {\n        var levelIndex = this.currentLevel;\n        var level = this.levels[levelIndex];\n        var currentValue = level.items[level.index];\n        while (--levelIndex >= 0) {\n          level = this.levels[levelIndex];\n          level.items[level.index] = currentValue;\n        }\n      },\n      nextLevel: function InclusionTree_nextLevel() {\n        var currentLevel = this.currentLevel;\n        var level = this.levels[currentLevel];\n        var value = level.items[level.index];\n        level.items[level.index] = 0xFF;\n        currentLevel--;\n        if (currentLevel < 0) {\n          return false;\n        }\n\n        this.currentLevel = currentLevel;\n        level = this.levels[currentLevel];\n        level.items[level.index] = value;\n        return true;\n      },\n    };\n    return InclusionTree;\n  })();\n\n  // Section D. Coefficient bit modeling\n  var BitModel = (function BitModelClosure() {\n    var UNIFORM_CONTEXT = 17;\n    var RUNLENGTH_CONTEXT = 18;\n    // Table D-1\n    // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n    // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n    var LLAndLHContextsLabel = new Uint8Array([\n      0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n      7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n      8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8\n    ]);\n    var HLContextLabel = new Uint8Array([\n      0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n      8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n      4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8\n    ]);\n    var HHContextLabel = new Uint8Array([\n      0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n      5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n      8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8\n    ]);\n\n    function BitModel(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n\n      this.contextLabelTable = (subband === 'HH' ? HHContextLabel :\n        (subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel));\n\n      var coefficientCount = width * height;\n\n      // coefficients outside the encoding region treated as insignificant\n      // add border state cells for significanceState\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) :\n                                  mb > 6 ? new Uint16Array(coefficientCount) :\n                                  new Uint8Array(coefficientCount);\n      this.processingFlags = new Uint8Array(coefficientCount);\n\n      var bitsDecoded = new Uint8Array(coefficientCount);\n      if (zeroBitPlanes !== 0) {\n        for (var i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n      this.bitsDecoded = bitsDecoded;\n\n      this.reset();\n    }\n\n    BitModel.prototype = {\n      setDecoder: function BitModel_setDecoder(decoder) {\n        this.decoder = decoder;\n      },\n      reset: function BitModel_reset() {\n        // We have 17 contexts that are accessed via context labels,\n        // plus the uniform and runlength context.\n        this.contexts = new Int8Array(19);\n\n        // Contexts are packed into 1 byte:\n        // highest 7 bits carry the index, lowest bit carries mps\n        this.contexts[0] = (4 << 1) | 0;\n        this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n        this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n      },\n      setNeighborsSignificance:\n        function BitModel_setNeighborsSignificance(row, column, index) {\n        var neighborsSignificance = this.neighborsSignificance;\n        var width = this.width, height = this.height;\n        var left = (column > 0);\n        var right = (column + 1 < width);\n        var i;\n\n        if (row > 0) {\n          i = index - width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (row + 1 < height) {\n          i = index + width;\n          if (left) {\n            neighborsSignificance[i - 1] += 0x10;\n          }\n          if (right) {\n            neighborsSignificance[i + 1] += 0x10;\n          }\n          neighborsSignificance[i] += 0x04;\n        }\n\n        if (left) {\n          neighborsSignificance[index - 1] += 0x01;\n        }\n        if (right) {\n          neighborsSignificance[index + 1] += 0x01;\n        }\n        neighborsSignificance[index] |= 0x80;\n      },\n      runSignificancePropagationPass:\n        function BitModel_runSignificancePropagationPass() {\n        var decoder = this.decoder;\n        var width = this.width, height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var neighborsSignificance = this.neighborsSignificance;\n        var processingFlags = this.processingFlags;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processedInverseMask = ~1;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n\n        for (var i0 = 0; i0 < height; i0 += 4) {\n          for (var j = 0; j < width; j++) {\n            var index = i0 * width + j;\n            for (var i1 = 0; i1 < 4; i1++, index += width) {\n              var i = i0 + i1;\n              if (i >= height) {\n                break;\n              }\n              // clear processed flag first\n              processingFlags[index] &= processedInverseMask;\n\n              if (coefficentsMagnitude[index] ||\n                  !neighborsSignificance[index]) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision) {\n                var sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n        var width = this.width, height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contribution, sign0, sign1, significance1;\n        var contextLabel, decoded;\n\n        // calculate horizontal contribution\n        significance1 = (column > 0 && coefficentsMagnitude[index - 1] !== 0);\n        if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n          sign1 = coefficentsSign[index + 1];\n          if (significance1) {\n            sign0 = coefficentsSign[index - 1];\n            contribution = 1 - sign1 - sign0;\n          } else {\n            contribution = 1 - sign1 - sign1;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign0 - sign0;\n        } else {\n          contribution = 0;\n        }\n        var horizontalContribution = 3 * contribution;\n\n        // calculate vertical contribution and combine with the horizontal\n        significance1 = (row > 0 && coefficentsMagnitude[index - width] !== 0);\n        if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n          sign1 = coefficentsSign[index + width];\n          if (significance1) {\n            sign0 = coefficentsSign[index - width];\n            contribution = 1 - sign1 - sign0 + horizontalContribution;\n          } else {\n            contribution = 1 - sign1 - sign1 + horizontalContribution;\n          }\n        } else if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign0 - sign0 + horizontalContribution;\n        } else {\n          contribution = horizontalContribution;\n        }\n\n        if (contribution >= 0) {\n          contextLabel = 9 + contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel);\n        } else {\n          contextLabel = 9 - contribution;\n          decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n        }\n        return decoded;\n      },\n      runMagnitudeRefinementPass:\n        function BitModel_runMagnitudeRefinementPass() {\n        var decoder = this.decoder;\n        var width = this.width, height = this.height;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var neighborsSignificance = this.neighborsSignificance;\n        var contexts = this.contexts;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var length = width * height;\n        var width4 = width * 4;\n\n        for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n          indexNext = Math.min(length, index0 + width4);\n          for (var j = 0; j < width; j++) {\n            for (var index = index0 + j; index < indexNext; index += width) {\n\n              // significant but not those that have just become\n              if (!coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0) {\n                continue;\n              }\n\n              var contextLabel = 16;\n              if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n                processingFlags[index] ^= firstMagnitudeBitMask;\n                // first refinement\n               var significance = neighborsSignificance[index] & 127;\n               contextLabel = significance === 0 ? 15 : 14;\n              }\n\n              var bit = decoder.readBit(contexts, contextLabel);\n              coefficentsMagnitude[index] =\n                (coefficentsMagnitude[index] << 1) | bit;\n              bitsDecoded[index]++;\n              processingFlags[index] |= processedMask;\n            }\n          }\n        }\n      },\n      runCleanupPass: function BitModel_runCleanupPass() {\n        var decoder = this.decoder;\n        var width = this.width, height = this.height;\n        var neighborsSignificance = this.neighborsSignificance;\n        var coefficentsMagnitude = this.coefficentsMagnitude;\n        var coefficentsSign = this.coefficentsSign;\n        var contexts = this.contexts;\n        var labels = this.contextLabelTable;\n        var bitsDecoded = this.bitsDecoded;\n        var processingFlags = this.processingFlags;\n        var processedMask = 1;\n        var firstMagnitudeBitMask = 2;\n        var oneRowDown = width;\n        var twoRowsDown = width * 2;\n        var threeRowsDown = width * 3;\n        var iNext;\n        for (var i0 = 0; i0 < height; i0 = iNext) {\n          iNext = Math.min(i0 + 4, height);\n          var indexBase = i0 * width;\n          var checkAllEmpty = i0 + 3 < height;\n          for (var j = 0; j < width; j++) {\n            var index0 = indexBase + j;\n            // using the property: labels[neighborsSignificance[index]] === 0\n            // when neighborsSignificance[index] === 0\n            var allEmpty = (checkAllEmpty &&\n              processingFlags[index0] === 0 &&\n              processingFlags[index0 + oneRowDown] === 0 &&\n              processingFlags[index0 + twoRowsDown] === 0 &&\n              processingFlags[index0 + threeRowsDown] === 0 &&\n              neighborsSignificance[index0] === 0 &&\n              neighborsSignificance[index0 + oneRowDown] === 0 &&\n              neighborsSignificance[index0 + twoRowsDown] === 0 &&\n              neighborsSignificance[index0 + threeRowsDown] === 0);\n            var i1 = 0, index = index0;\n            var i = i0, sign;\n            if (allEmpty) {\n              var hasSignificantCoefficent =\n                decoder.readBit(contexts, RUNLENGTH_CONTEXT);\n              if (!hasSignificantCoefficent) {\n                bitsDecoded[index0]++;\n                bitsDecoded[index0 + oneRowDown]++;\n                bitsDecoded[index0 + twoRowsDown]++;\n                bitsDecoded[index0 + threeRowsDown]++;\n                continue; // next column\n              }\n              i1 = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n                    decoder.readBit(contexts, UNIFORM_CONTEXT);\n              if (i1 !== 0) {\n                i = i0 + i1;\n                index += i1 * width;\n              }\n\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n\n              index = index0;\n              for (var i2 = i0; i2 <= i; i2++, index += width) {\n                bitsDecoded[index]++;\n              }\n\n              i1++;\n            }\n            for (i = i0 + i1; i < iNext; i++, index += width) {\n              if (coefficentsMagnitude[index] ||\n                (processingFlags[index] & processedMask) !== 0) {\n                continue;\n              }\n\n              var contextLabel = labels[neighborsSignificance[index]];\n              var decision = decoder.readBit(contexts, contextLabel);\n              if (decision === 1) {\n                sign = this.decodeSignBit(i, j, index);\n                coefficentsSign[index] = sign;\n                coefficentsMagnitude[index] = 1;\n                this.setNeighborsSignificance(i, j, index);\n                processingFlags[index] |= firstMagnitudeBitMask;\n              }\n              bitsDecoded[index]++;\n            }\n          }\n        }\n      },\n      checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n        var decoder = this.decoder;\n        var contexts = this.contexts;\n        var symbol = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n                     (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n                     (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n                      decoder.readBit(contexts, UNIFORM_CONTEXT);\n        if (symbol !== 0xA) {\n          throw new JpxError('Invalid segmentation symbol');\n        }\n      },\n    };\n\n    return BitModel;\n  })();\n\n  // Section F, Discrete wavelet transformation\n  var Transform = (function TransformClosure() {\n    function Transform() {}\n\n    Transform.prototype.calculate =\n      function transformCalculate(subbands, u0, v0) {\n      var ll = subbands[0];\n      for (var i = 1, ii = subbands.length; i < ii; i++) {\n        ll = this.iterate(ll, subbands[i], u0, v0);\n      }\n      return ll;\n    };\n    Transform.prototype.extend = function extend(buffer, offset, size) {\n      // Section F.3.7 extending... using max extension of 4\n      var i1 = offset - 1, j1 = offset + 1;\n      var i2 = offset + size - 2, j2 = offset + size;\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1--] = buffer[j1++];\n      buffer[j2++] = buffer[i2--];\n      buffer[i1] = buffer[j1];\n      buffer[j2] = buffer[i2];\n    };\n    Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh,\n                                                             u0, v0) {\n      var llWidth = ll.width, llHeight = ll.height, llItems = ll.items;\n      var width = hl_lh_hh.width;\n      var height = hl_lh_hh.height;\n      var items = hl_lh_hh.items;\n      var i, j, k, l, u, v;\n\n      // Interleave LL according to Section F.3.3\n      for (k = 0, i = 0; i < llHeight; i++) {\n        l = i * 2 * width;\n        for (j = 0; j < llWidth; j++, k++, l += 2) {\n          items[l] = llItems[k];\n        }\n      }\n      // The LL band is not needed anymore.\n      llItems = ll.items = null;\n\n      var bufferPadding = 4;\n      var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n      // Section F.3.4 HOR_SR\n      if (width === 1) {\n        // if width = 1, when u0 even keep items as is, when odd divide by 2\n        if ((u0 & 1) !== 0) {\n          for (v = 0, k = 0; v < height; v++, k += width) {\n            items[k] *= 0.5;\n          }\n        }\n      } else {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n          this.extend(rowBuffer, bufferPadding, width);\n          this.filter(rowBuffer, bufferPadding, width);\n\n          items.set(\n            rowBuffer.subarray(bufferPadding, bufferPadding + width),\n            k);\n        }\n      }\n\n      // Accesses to the items array can take long, because it may not fit into\n      // CPU cache and has to be fetched from main memory. Since subsequent\n      // accesses to the items array are not local when reading columns, we\n      // have a cache miss every time. To reduce cache misses, get up to\n      // 'numBuffers' items at a time and store them into the individual\n      // buffers. The colBuffers should be small enough to fit into CPU cache.\n      var numBuffers = 16;\n      var colBuffers = [];\n      for (i = 0; i < numBuffers; i++) {\n        colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n      }\n      var b, currentBuffer = 0;\n      ll = bufferPadding + height;\n\n      // Section F.3.5 VER_SR\n      if (height === 1) {\n          // if height = 1, when v0 even keep items as is, when odd divide by 2\n        if ((v0 & 1) !== 0) {\n          for (u = 0; u < width; u++) {\n            items[u] *= 0.5;\n          }\n        }\n      } else {\n        for (u = 0; u < width; u++) {\n          // if we ran out of buffers, copy several image columns at once\n          if (currentBuffer === 0) {\n            numBuffers = Math.min(width - u, numBuffers);\n            for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                colBuffers[b][l] = items[k + b];\n              }\n            }\n            currentBuffer = numBuffers;\n          }\n\n          currentBuffer--;\n          var buffer = colBuffers[currentBuffer];\n          this.extend(buffer, bufferPadding, height);\n          this.filter(buffer, bufferPadding, height);\n\n          // If this is last buffer in this group of buffers, flush all buffers.\n          if (currentBuffer === 0) {\n            k = u - numBuffers + 1;\n            for (l = bufferPadding; l < ll; k += width, l++) {\n              for (b = 0; b < numBuffers; b++) {\n                items[k + b] = colBuffers[b][l];\n              }\n            }\n          }\n        }\n      }\n\n      return {\n        width,\n        height,\n        items,\n      };\n    };\n    return Transform;\n  })();\n\n  // Section 3.8.2 Irreversible 9-7 filter\n  var IrreversibleTransform = (function IrreversibleTransformClosure() {\n    function IrreversibleTransform() {\n      Transform.call(this);\n    }\n\n    IrreversibleTransform.prototype = Object.create(Transform.prototype);\n    IrreversibleTransform.prototype.filter =\n      function irreversibleTransformFilter(x, offset, length) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n, current, next;\n\n      var alpha = -1.586134342059924;\n      var beta = -0.052980118572961;\n      var gamma = 0.882911075530934;\n      var delta = 0.443506852043971;\n      var K = 1.230174104914001;\n      var K_ = 1 / K;\n\n      // step 1 is combined with step 3\n\n      // step 2\n      j = offset - 3;\n      for (n = len + 4; n--; j += 2) {\n        x[j] *= K_;\n      }\n\n      // step 1 & 3\n      j = offset - 2;\n      current = delta * x[j - 1];\n      for (n = len + 3; n--; j += 2) {\n        next = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n        if (n--) {\n          j += 2;\n          current = delta * x[j + 1];\n          x[j] = K * x[j] - current - next;\n        } else {\n          break;\n        }\n      }\n\n      // step 4\n      j = offset - 1;\n      current = gamma * x[j - 1];\n      for (n = len + 2; n--; j += 2) {\n        next = gamma * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = gamma * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 5\n      j = offset;\n      current = beta * x[j - 1];\n      for (n = len + 1; n--; j += 2) {\n        next = beta * x[j + 1];\n        x[j] -= current + next;\n        if (n--) {\n          j += 2;\n          current = beta * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n\n      // step 6\n      if (len !== 0) {\n        j = offset + 1;\n        current = alpha * x[j - 1];\n        for (n = len; n--; j += 2) {\n          next = alpha * x[j + 1];\n          x[j] -= current + next;\n          if (n--) {\n            j += 2;\n            current = alpha * x[j + 1];\n            x[j] -= current + next;\n          } else {\n            break;\n          }\n        }\n      }\n    };\n\n    return IrreversibleTransform;\n  })();\n\n  // Section 3.8.1 Reversible 5-3 filter\n  var ReversibleTransform = (function ReversibleTransformClosure() {\n    function ReversibleTransform() {\n      Transform.call(this);\n    }\n\n    ReversibleTransform.prototype = Object.create(Transform.prototype);\n    ReversibleTransform.prototype.filter =\n      function reversibleTransformFilter(x, offset, length) {\n      var len = length >> 1;\n      offset = offset | 0;\n      var j, n;\n\n      for (j = offset, n = len + 1; n--; j += 2) {\n        x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n      }\n\n      for (j = offset + 1, n = len; n--; j += 2) {\n        x[j] += (x[j - 1] + x[j + 1]) >> 1;\n      }\n    };\n\n    return ReversibleTransform;\n  })();\n\n  return JpxImage;\n})();\n\nexport {\n  JpxImage,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString, FormatError, PasswordException, PasswordResponses,\n  stringToBytes, unreachable, utf8StringToString, warn\n} from '../shared/util';\nimport { isDict, isName, Name } from './primitives';\nimport { DecryptStream } from './stream';\n\nvar ARCFourCipher = (function ARCFourCipherClosure() {\n  function ARCFourCipher(key) {\n    this.a = 0;\n    this.b = 0;\n    var s = new Uint8Array(256);\n    var i, j = 0, tmp, keyLength = key.length;\n    for (i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n    for (i = 0; i < 256; ++i) {\n      tmp = s[i];\n      j = (j + tmp + key[i % keyLength]) & 0xFF;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n    this.s = s;\n  }\n\n  ARCFourCipher.prototype = {\n    encryptBlock: function ARCFourCipher_encryptBlock(data) {\n      var i, n = data.length, tmp, tmp2;\n      var a = this.a, b = this.b, s = this.s;\n      var output = new Uint8Array(n);\n      for (i = 0; i < n; ++i) {\n        a = (a + 1) & 0xFF;\n        tmp = s[a];\n        b = (b + tmp) & 0xFF;\n        tmp2 = s[b];\n        s[a] = tmp2;\n        s[b] = tmp;\n        output[i] = data[i] ^ s[(tmp + tmp2) & 0xFF];\n      }\n      this.a = a;\n      this.b = b;\n      return output;\n    },\n  };\n  ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n\n  return ARCFourCipher;\n})();\n\nvar calculateMD5 = (function calculateMD5Closure() {\n  var r = new Uint8Array([\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\n    5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\n    4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\n    6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n\n  var k = new Int32Array([\n    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n    -145523070, -1120210379, 718787259, -343485551]);\n\n  function hash(data, offset, length) {\n    var h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878;\n    // pre-processing\n    var paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = (length << 3) & 0xFF;\n    padded[i++] = (length >> 5) & 0xFF;\n    padded[i++] = (length >> 13) & 0xFF;\n    padded[i++] = (length >> 21) & 0xFF;\n    padded[i++] = (length >>> 29) & 0xFF;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    var w = new Int32Array(16);\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] = (padded[i] | (padded[i + 1] << 8) |\n               (padded[i + 2] << 16) | (padded[i + 3] << 24));\n      }\n      var a = h0, b = h1, c = h2, d = h3, f, g;\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = (b & c) | ((~b) & d);\n          g = j;\n        } else if (j < 32) {\n          f = (d & b) | ((~d) & c);\n          g = (5 * j + 1) & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = (3 * j + 5) & 15;\n        } else {\n          f = c ^ (b | (~d));\n          g = (7 * j) & 15;\n        }\n        var tmp = d, rotateArg = (a + f + k[j] + w[g]) | 0, rotate = r[j];\n        d = c;\n        c = b;\n        b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n        a = tmp;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n    }\n    return new Uint8Array([\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\nvar Word64 = (function Word64Closure() {\n  function Word64(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n  Word64.prototype = {\n    and: function Word64_and(word) {\n      this.high &= word.high;\n      this.low &= word.low;\n    },\n    xor: function Word64_xor(word) {\n     this.high ^= word.high;\n     this.low ^= word.low;\n    },\n\n    or: function Word64_or(word) {\n      this.high |= word.high;\n      this.low |= word.low;\n    },\n\n    shiftRight: function Word64_shiftRight(places) {\n      if (places >= 32) {\n        this.low = (this.high >>> (places - 32)) | 0;\n        this.high = 0;\n      } else {\n        this.low = (this.low >>> places) | (this.high << (32 - places));\n        this.high = (this.high >>> places) | 0;\n      }\n    },\n\n    shiftLeft: function Word64_shiftLeft(places) {\n      if (places >= 32) {\n        this.high = this.low << (places - 32);\n        this.low = 0;\n      } else {\n        this.high = (this.high << places) | (this.low >>> (32 - places));\n        this.low = this.low << places;\n      }\n    },\n\n    rotateRight: function Word64_rotateRight(places) {\n      var low, high;\n      if (places & 32) {\n        high = this.low;\n        low = this.high;\n      } else {\n        low = this.low;\n        high = this.high;\n      }\n      places &= 31;\n      this.low = (low >>> places) | (high << (32 - places));\n      this.high = (high >>> places) | (low << (32 - places));\n    },\n\n    not: function Word64_not() {\n      this.high = ~this.high;\n      this.low = ~this.low;\n    },\n\n    add: function Word64_add(word) {\n      var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n      var highAdd = (this.high >>> 0) + (word.high >>> 0);\n      if (lowAdd > 0xFFFFFFFF) {\n        highAdd += 1;\n      }\n      this.low = lowAdd | 0;\n      this.high = highAdd | 0;\n    },\n\n    copyTo: function Word64_copyTo(bytes, offset) {\n      bytes[offset] = (this.high >>> 24) & 0xFF;\n      bytes[offset + 1] = (this.high >> 16) & 0xFF;\n      bytes[offset + 2] = (this.high >> 8) & 0xFF;\n      bytes[offset + 3] = this.high & 0xFF;\n      bytes[offset + 4] = (this.low >>> 24) & 0xFF;\n      bytes[offset + 5] = (this.low >> 16) & 0xFF;\n      bytes[offset + 6] = (this.low >> 8) & 0xFF;\n      bytes[offset + 7] = this.low & 0xFF;\n    },\n\n    assign: function Word64_assign(word) {\n      this.high = word.high;\n      this.low = word.low;\n    },\n  };\n  return Word64;\n})();\n\nvar calculateSHA256 = (function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return (x >>> n) | (x << 32 - n);\n  }\n\n  function ch(x, y, z) {\n    return (x & y) ^ (~x & z);\n  }\n\n  function maj(x, y, z) {\n    return (x & y) ^ (x & z) ^ (y & z);\n  }\n\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n  }\n\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n  }\n\n  var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n           0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n           0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n           0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n           0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n           0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n           0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n           0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n           0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n           0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n           0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n           0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n           0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n           0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n           0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n           0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n  function hash(data, offset, length) {\n    // initial hash values\n    var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372,\n        h3 = 0xa54ff53a, h4 = 0x510e527f, h5 = 0x9b05688c,\n        h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n    // pre-processing\n    var paddedLength = Math.ceil((length + 9) / 64) * 64;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 8;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xFF;\n    padded[i++] = (length >> 21) & 0xFF;\n    padded[i++] = (length >> 13) & 0xFF;\n    padded[i++] = (length >> 5) & 0xFF;\n    padded[i++] = (length << 3) & 0xFF;\n    var w = new Uint32Array(64);\n    // for each 512 bit block\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j) {\n        w[j] = (padded[i] << 24 | (padded[i + 1] << 16) |\n               (padded[i + 2] << 8) | (padded[i + 3]));\n        i += 4;\n      }\n\n      for (j = 16; j < 64; ++j) {\n        w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] +\n               littleSigma(w[j - 15]) + w[j - 16] | 0;\n      }\n      var a = h0, b = h1, c = h2, d = h3, e = h4,\n          f = h5, g = h6, h = h7, t1, t2;\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = (d + t1) | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = (t1 + t2) | 0;\n      }\n      h0 = (h0 + a) | 0;\n      h1 = (h1 + b) | 0;\n      h2 = (h2 + c) | 0;\n      h3 = (h3 + d) | 0;\n      h4 = (h4 + e) | 0;\n      h5 = (h5 + f) | 0;\n      h6 = (h6 + g) | 0;\n      h7 = (h7 + h) | 0;\n    }\n    return new Uint8Array([\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n    ]);\n  }\n\n  return hash;\n})();\n\nvar calculateSHA512 = (function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n\n  var k = [\n    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n  function hash(data, offset, length, mode384) {\n    mode384 = !!mode384;\n    // initial hash values\n    var h0, h1, h2, h3, h4, h5, h6, h7;\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      // SHA384 is exactly the same\n      // except with different starting values and a trimmed result\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n\n    // pre-processing\n    var paddedLength = Math.ceil((length + 17) / 128) * 128;\n    var padded = new Uint8Array(paddedLength);\n    var i, j, n;\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n    padded[i++] = 0x80;\n    n = paddedLength - 16;\n    while (i < n) {\n      padded[i++] = 0;\n    }\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = (length >>> 29) & 0xFF;\n    padded[i++] = (length >> 21) & 0xFF;\n    padded[i++] = (length >> 13) & 0xFF;\n    padded[i++] = (length >> 5) & 0xFF;\n    padded[i++] = (length << 3) & 0xFF;\n\n    var w = new Array(80);\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n    var a = new Word64(0, 0), b = new Word64(0, 0), c = new Word64(0, 0);\n    var d = new Word64(0, 0), e = new Word64(0, 0), f = new Word64(0, 0);\n    var g = new Word64(0, 0), h = new Word64(0, 0);\n    var t1 = new Word64(0, 0), t2 = new Word64(0, 0);\n    var tmp1 = new Word64(0, 0), tmp2 = new Word64(0, 0), tmp3;\n\n    // for each 1024 bit block\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high = (padded[i] << 24) | (padded[i + 1] << 16) |\n                    (padded[i + 2] << 8) | (padded[i + 3]);\n        w[j].low = (padded[i + 4]) << 24 | (padded[i + 5]) << 16 |\n                   (padded[i + 6]) << 8 | (padded[i + 7]);\n        i += 8;\n      }\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n\n      a.assign(h0); b.assign(h1); c.assign(h2); d.assign(h3);\n      e.assign(h4); f.assign(h5); g.assign(h6); h.assign(h7);\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n\n    var result;\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n    return result;\n  }\n\n  return hash;\n})();\nvar calculateSHA384 = (function calculateSHA384Closure() {\n  function hash(data, offset, length) {\n    return calculateSHA512(data, offset, length, true);\n  }\n\n  return hash;\n})();\nvar NullCipher = (function NullCipherClosure() {\n  function NullCipher() {\n  }\n\n  NullCipher.prototype = {\n    decryptBlock: function NullCipher_decryptBlock(data) {\n      return data;\n    },\n  };\n\n  return NullCipher;\n})();\n\nclass AESBaseCipher {\n  constructor() {\n    if (this.constructor === AESBaseCipher) {\n      unreachable('Cannot initialize AESBaseCipher.');\n    }\n\n    this._s = new Uint8Array([\n      0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n      0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n      0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n      0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n      0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n      0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n      0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n      0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n      0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n      0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n      0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n      0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n      0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n      0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n      0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n      0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n      0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n      0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n      0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n      0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n      0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n      0xb0, 0x54, 0xbb, 0x16,\n    ]);\n\n    this._inv_s = new Uint8Array([\n      0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n      0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n      0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n      0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n      0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n      0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n      0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n      0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n      0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n      0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n      0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n      0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n      0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n      0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n      0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n      0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n      0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n      0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n      0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n      0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n      0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n      0x55, 0x21, 0x0c, 0x7d,\n    ]);\n\n    this._mix = new Uint32Array([\n      0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n      0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n      0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n      0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n      0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n      0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n      0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n      0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n      0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n      0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n      0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n      0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n      0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n      0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n      0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n      0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n      0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n      0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n      0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n      0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n      0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n      0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n      0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n      0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n      0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n      0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n      0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n      0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n      0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n      0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n      0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n      0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n      0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n      0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n      0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n      0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n      0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n      0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n      0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n      0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n      0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n      0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n      0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\n    ]);\n\n    this._mixCol = new Uint8Array(256);\n    for (let i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = (i << 1) ^ 0x1b;\n      }\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _expandKey(cipherKey) {\n    unreachable('Cannot call `_expandKey` on the base class');\n  }\n\n  _decrypt(input, key) {\n    let t, u, v;\n    let state = new Uint8Array(16);\n    state.set(input);\n\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      // InvShiftRows\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n      // InvSubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n      // InvMixColumns\n      for (let j = 0; j < 16; j += 4) {\n        let s0 = this._mix[state[j]];\n        let s1 = this._mix[state[j + 1]];\n        let s2 = this._mix[state[j + 2]];\n        let s3 = this._mix[state[j + 3]];\n        t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^\n            (s3 >>> 24) ^ (s3 << 8));\n        state[j] = (t >>> 24) & 0xFF;\n        state[j + 1] = (t >> 16) & 0xFF;\n        state[j + 2] = (t >> 8) & 0xFF;\n        state[j + 3] = t & 0xFF;\n      }\n    }\n    // InvShiftRows\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n    for (let j = 0; j < 16; ++j) {\n      // InvSubBytes\n      state[j] = this._inv_s[state[j]];\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n    return state;\n  }\n\n  _encrypt(input, key) {\n    const s = this._s;\n\n    let t, u, v;\n    let state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0; j < 16; ++j) {\n      // AddRoundKey\n      state[j] ^= key[j];\n    }\n\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      // SubBytes\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n      // ShiftRows\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n      // MixColumns\n      for (let j = 0; j < 16; j += 4) {\n        let s0 = state[j + 0];\n        let s1 = state[j + 1];\n        let s2 = state[j + 2];\n        let s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n      // AddRoundKey\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n\n    // SubBytes\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n    // ShiftRows\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n    // AddRoundKey\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n    return state;\n  }\n\n  _decryptBlock2(data, finalize) {\n    let sourceLength = data.length;\n    let buffer = this.buffer, bufferLength = this.bufferPosition;\n    let result = [], iv = this.iv;\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      // buffer is full, decrypting\n      let plain = this._decrypt(buffer, this._key);\n      // xor-ing the IV vector to get plain text\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    let outputLength = 16 * result.length;\n    if (finalize) {\n      // undo a padding that is described in RFC 2898\n      let lastBlock = result[result.length - 1];\n      let psLen = lastBlock[15];\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            // Invalid padding, assume that the block has no padding.\n            psLen = 0;\n            break;\n          }\n        }\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n    let output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n\n  decryptBlock(data, finalize, iv = null) {\n    let sourceLength = data.length;\n    let buffer = this.buffer, bufferLength = this.bufferPosition;\n    // If an IV is not supplied, wait for IV values. They are at the start\n    // of the stream.\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (let i = 0; bufferLength < 16 && i < sourceLength;\n           ++i, ++bufferLength) {\n        buffer[bufferLength] = data[i];\n      }\n      if (bufferLength < 16) { // Need more data.\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    // starting decryption\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n\n  encrypt(data, iv) {\n    let sourceLength = data.length;\n    let buffer = this.buffer, bufferLength = this.bufferPosition;\n    let result = [];\n\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n      if (bufferLength < 16) {\n        continue;\n      }\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n\n      // buffer is full, encrypting\n      let cipher = this._encrypt(buffer, this._key);\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n    // saving incomplete buffer\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n    // combining plain text blocks into one\n    let outputLength = 16 * result.length;\n    let output = new Uint8Array(outputLength);\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n    return output;\n  }\n}\n\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160; // bits\n\n    this._rcon = new Uint8Array([\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n      0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n      0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n      0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n      0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n      0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n      0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n      0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n      0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n      0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n      0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n      0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n      0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n      0x74, 0xe8, 0xcb, 0x8d,\n    ]);\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n\n    let result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    for (let j = 16, i = 1; j < b; ++i) {\n      // RotWord\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      // SubWord\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      // Rcon\n      t1 = t1 ^ rcon[i];\n      for (let n = 0; n < 4; ++n) {\n        result[j] = (t1 ^= result[j - 16]);\n        j++;\n        result[j] = (t2 ^= result[j - 16]);\n        j++;\n        result[j] = (t3 ^= result[j - 16]);\n        j++;\n        result[j] = (t4 ^= result[j - 16]);\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224; // bits\n\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n\n    let result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    let r = 1;\n    let t1, t2, t3, t4;\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        // RotWord\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        // SubWord\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        // Rcon\n        t1 = t1 ^ r;\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xFF;\n        }\n      }\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = (t1 ^= result[j - 32]);\n        j++;\n        result[j] = (t2 ^= result[j - 32]);\n        j++;\n        result[j] = (t3 ^= result[j - 32]);\n        j++;\n        result[j] = (t4 ^= result[j - 32]);\n        j++;\n      }\n    }\n    return result;\n  }\n}\n\nvar PDF17 = (function PDF17Closure() {\n\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function PDF17() {\n  }\n\n  PDF17.prototype = {\n    checkOwnerPassword: function PDF17_checkOwnerPassword(password,\n                                                          ownerValidationSalt,\n                                                          userBytes,\n                                                          ownerPassword) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF17_checkUserPassword(password,\n                                                        userValidationSalt,\n                                                        userPassword) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculateSHA256(hashData, 0, hashData.length);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes,\n                                            ownerEncryption) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption,\n                                 false,\n                                 new Uint8Array(16));\n\n    },\n    getUserKey: function PDF17_getUserKey(password, userKeySalt,\n                                          userEncryption) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculateSHA256(hashData, 0, hashData.length);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption,\n                                 false,\n                                 new Uint8Array(16));\n    },\n  };\n  return PDF17;\n})();\n\nvar PDF20 = (function PDF20Closure() {\n\n  function concatArrays(array1, array2) {\n    var t = new Uint8Array(array1.length + array2.length);\n    t.set(array1, 0);\n    t.set(array2, array1.length);\n    return t;\n  }\n\n  function calculatePDF20Hash(password, input, userBytes) {\n    // This refers to Algorithm 2.B as defined in ISO 32000-2.\n    var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    var e = [0];\n    var i = 0;\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      var arrayLength = password.length + k.length + userBytes.length;\n\n      var k1 = new Uint8Array(arrayLength * 64);\n      var array = concatArrays(password, k);\n      array = concatArrays(array, userBytes);\n      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n        k1.set(array, pos);\n      }\n      // AES128 CBC NO PADDING with first 16 bytes of k as the key\n      // and the second 16 as the iv.\n      var cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      // Now we have to take the first 16 bytes of an unsigned big endian\n      // integer and compute the remainder modulo 3. That is a fairly large\n      // number and JavaScript isn't going to handle that well, so we're using\n      // a trick that allows us to perform modulo math byte by byte.\n      var remainder = 0;\n      for (var z = 0; z < 16; z++) {\n        remainder *= (256 % 3);\n        remainder %= 3;\n        remainder += ((e[z] >>> 0) % 3);\n        remainder %= 3;\n      }\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n      i++;\n    }\n    return k.subarray(0, 32);\n  }\n\n  function PDF20() {\n  }\n\n  function compareByteArrays(array1, array2) {\n    if (array1.length !== array2.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array1[i] !== array2[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  PDF20.prototype = {\n    hash: function PDF20_hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    },\n    checkOwnerPassword: function PDF20_checkOwnerPassword(password,\n                                                          ownerValidationSalt,\n                                                          userBytes,\n                                                          ownerPassword) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      var result = calculatePDF20Hash(password, hashData, userBytes);\n      return compareByteArrays(result, ownerPassword);\n    },\n    checkUserPassword: function PDF20_checkUserPassword(password,\n                                                        userValidationSalt,\n                                                        userPassword) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      var result = calculatePDF20Hash(password, hashData, []);\n      return compareByteArrays(result, userPassword);\n    },\n    getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes,\n                                            ownerEncryption) {\n      var hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      var key = calculatePDF20Hash(password, hashData, userBytes);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption,\n                                 false,\n                                 new Uint8Array(16));\n\n    },\n    getUserKey: function PDF20_getUserKey(password, userKeySalt,\n                                          userEncryption) {\n      var hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      // `key` is the decryption key for the UE string.\n      var key = calculatePDF20Hash(password, hashData, []);\n      var cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption,\n                                 false,\n                                 new Uint8Array(16));\n    },\n  };\n  return PDF20;\n})();\n\nvar CipherTransform = (function CipherTransformClosure() {\n  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n\n  CipherTransform.prototype = {\n    createStream: function CipherTransform_createStream(stream, length) {\n      var cipher = new this.StreamCipherConstructor();\n      return new DecryptStream(stream, length,\n        function cipherTransformDecryptStream(data, finalize) {\n          return cipher.decryptBlock(data, finalize);\n        }\n      );\n    },\n    decryptString: function CipherTransform_decryptString(s) {\n      var cipher = new this.StringCipherConstructor();\n      var data = stringToBytes(s);\n      data = cipher.decryptBlock(data, true);\n      return bytesToString(data);\n    },\n  };\n  return CipherTransform;\n})();\n\nvar CipherTransformFactory = (function CipherTransformFactoryClosure() {\n  var defaultPasswordBytes = new Uint8Array([\n    0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,\n    0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,\n    0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,\n    0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n\n  function createEncryptionKey20(revision, password, ownerPassword,\n                                 ownerValidationSalt, ownerKeySalt, uBytes,\n                                 userPassword, userValidationSalt, userKeySalt,\n                                 ownerEncryption, userEncryption, perms) {\n    if (password) {\n      var passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n    var pdfAlgorithm;\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n\n    if (pdfAlgorithm.checkUserPassword(password, userValidationSalt,\n                                        userPassword)) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (password.length && pdfAlgorithm.checkOwnerPassword(password,\n                                                  ownerValidationSalt,\n                                                  uBytes,\n                                                  ownerPassword)) {\n      return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes,\n                                      ownerEncryption);\n    }\n\n    return null;\n  }\n\n  function prepareKeyData(fileId, password, ownerPassword, userPassword,\n                          flags, revision, keyLength, encryptMetadata) {\n    var hashDataSize = 40 + ownerPassword.length + fileId.length;\n    var hashData = new Uint8Array(hashDataSize), i = 0, j, n;\n    if (password) {\n      n = Math.min(32, password.length);\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    // as now the padded password in the hashData[0..i]\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n    hashData[i++] = flags & 0xFF;\n    hashData[i++] = (flags >> 8) & 0xFF;\n    hashData[i++] = (flags >> 16) & 0xFF;\n    hashData[i++] = (flags >>> 24) & 0xFF;\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xFF;\n      hashData[i++] = 0xFF;\n      hashData[i++] = 0xFF;\n      hashData[i++] = 0xFF;\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n    var encryptionKey = hash.subarray(0, keyLengthInBytes);\n    var cipher, checkData;\n\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      var derivedKey = new Uint8Array(n), k;\n      for (j = 1; j <= 19; ++j) {\n        for (k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n    return encryptionKey;\n  }\n\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    var hashData = new Uint8Array(32), i = 0, j, n;\n    n = Math.min(32, password.length);\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n    j = 0;\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n    var hash = calculateMD5(hashData, 0, i);\n    var keyLengthInBytes = keyLength >> 3;\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n\n    var cipher, userPassword;\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      var derivedKey = new Uint8Array(keyLengthInBytes), k;\n      for (j = 19; j >= 0; j--) {\n        for (k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n    return userPassword;\n  }\n\n  var identityName = Name.get('Identity');\n\n  function CipherTransformFactory(dict, fileId, password) {\n    var filter = dict.get('Filter');\n    if (!isName(filter, 'Standard')) {\n      throw new FormatError('unknown encryption method');\n    }\n    this.dict = dict;\n    var algorithm = dict.get('V');\n    if (!Number.isInteger(algorithm) ||\n        (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 &&\n         algorithm !== 5)) {\n      throw new FormatError('unsupported encryption algorithm');\n    }\n    this.algorithm = algorithm;\n    var keyLength = dict.get('Length');\n    if (!keyLength) {\n      // Spec asks to rely on encryption dictionary's Length entry, however\n      // some PDFs don't have it. Trying to recover.\n      if (algorithm <= 3) {\n        // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n        keyLength = 40;\n      } else {\n        // Trying to find default handler -- it usually has Length.\n        var cfDict = dict.get('CF');\n        var streamCryptoName = dict.get('StmF');\n        if (isDict(cfDict) && isName(streamCryptoName)) {\n          cfDict.suppressEncryption = true; // See comment below.\n          var handlerDict = cfDict.get(streamCryptoName.name);\n          keyLength = (handlerDict && handlerDict.get('Length')) || 128;\n          if (keyLength < 40) {\n            // Sometimes it's incorrect value of bits, generators specify bytes.\n            keyLength <<= 3;\n          }\n        }\n      }\n    }\n    if (!Number.isInteger(keyLength) ||\n        keyLength < 40 || (keyLength % 8) !== 0) {\n      throw new FormatError('invalid key length');\n    }\n\n    // prepare keys\n    var ownerPassword = stringToBytes(dict.get('O')).subarray(0, 32);\n    var userPassword = stringToBytes(dict.get('U')).subarray(0, 32);\n    var flags = dict.get('P');\n    var revision = dict.get('R');\n    // meaningful when V is 4 or 5\n    var encryptMetadata = ((algorithm === 4 || algorithm === 5) &&\n                           dict.get('EncryptMetadata') !== false);\n    this.encryptMetadata = encryptMetadata;\n\n    var fileIdBytes = stringToBytes(fileId);\n    var passwordBytes;\n    if (password) {\n      if (revision === 6) {\n        try {\n          password = utf8StringToString(password);\n        } catch (ex) {\n          warn('CipherTransformFactory: ' +\n               'Unable to convert UTF8 encoded password.');\n        }\n      }\n      passwordBytes = stringToBytes(password);\n    }\n\n    var encryptionKey;\n    if (algorithm !== 5) {\n      encryptionKey = prepareKeyData(fileIdBytes, passwordBytes,\n                                     ownerPassword, userPassword, flags,\n                                     revision, keyLength, encryptMetadata);\n    } else {\n      var ownerValidationSalt = stringToBytes(dict.get('O')).subarray(32, 40);\n      var ownerKeySalt = stringToBytes(dict.get('O')).subarray(40, 48);\n      var uBytes = stringToBytes(dict.get('U')).subarray(0, 48);\n      var userValidationSalt = stringToBytes(dict.get('U')).subarray(32, 40);\n      var userKeySalt = stringToBytes(dict.get('U')).subarray(40, 48);\n      var ownerEncryption = stringToBytes(dict.get('OE'));\n      var userEncryption = stringToBytes(dict.get('UE'));\n      var perms = stringToBytes(dict.get('Perms'));\n      encryptionKey =\n        createEncryptionKey20(revision, passwordBytes,\n          ownerPassword, ownerValidationSalt,\n          ownerKeySalt, uBytes,\n          userPassword, userValidationSalt,\n          userKeySalt, ownerEncryption,\n          userEncryption, perms);\n    }\n    if (!encryptionKey && !password) {\n      throw new PasswordException('No password given',\n                                  PasswordResponses.NEED_PASSWORD);\n    } else if (!encryptionKey && password) {\n      // Attempting use the password as an owner password\n      var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword,\n                                               revision, keyLength);\n      encryptionKey = prepareKeyData(fileIdBytes, decodedPassword,\n                                     ownerPassword, userPassword, flags,\n                                     revision, keyLength, encryptMetadata);\n    }\n\n    if (!encryptionKey) {\n      throw new PasswordException('Incorrect Password',\n                                  PasswordResponses.INCORRECT_PASSWORD);\n    }\n\n    this.encryptionKey = encryptionKey;\n\n    if (algorithm >= 4) {\n      var cf = dict.get('CF');\n      if (isDict(cf)) {\n        // The 'CF' dictionary itself should not be encrypted, and by setting\n        // `suppressEncryption` we can prevent an infinite loop inside of\n        // `XRef_fetchUncompressed` if the dictionary contains indirect objects\n        // (fixes issue7665.pdf).\n        cf.suppressEncryption = true;\n      }\n      this.cf = cf;\n      this.stmf = dict.get('StmF') || identityName;\n      this.strf = dict.get('StrF') || identityName;\n      this.eff = dict.get('EFF') || this.stmf;\n    }\n  }\n\n  function buildObjectKey(num, gen, encryptionKey, isAes) {\n    var key = new Uint8Array(encryptionKey.length + 9), i, n;\n    for (i = 0, n = encryptionKey.length; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n    key[i++] = num & 0xFF;\n    key[i++] = (num >> 8) & 0xFF;\n    key[i++] = (num >> 16) & 0xFF;\n    key[i++] = gen & 0xFF;\n    key[i++] = (gen >> 8) & 0xFF;\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6C;\n      key[i++] = 0x54;\n    }\n    var hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!isName(name)) {\n      throw new FormatError('Invalid crypt filter name.');\n    }\n    var cryptFilter = cf.get(name.name);\n    var cfm;\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get('CFM');\n    }\n    if (!cfm || cfm.name === 'None') {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n    if (cfm.name === 'V2') {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n      };\n    }\n    if (cfm.name === 'AESV2') {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(buildObjectKey(num, gen, key, true));\n      };\n    }\n    if (cfm.name === 'AESV3') {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n    throw new FormatError('Unknown crypto method');\n  }\n\n  CipherTransformFactory.prototype = {\n    createCipherTransform:\n        function CipherTransformFactory_createCipherTransform(num, gen) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(\n          buildCipherConstructor(this.cf, this.stmf,\n                                 num, gen, this.encryptionKey),\n          buildCipherConstructor(this.cf, this.strf,\n                                 num, gen, this.encryptionKey));\n      }\n      // algorithms 1 and 2\n      var key = buildObjectKey(num, gen, this.encryptionKey, false);\n      var cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    },\n  };\n\n  return CipherTransformFactory;\n})();\n\nexport {\n  AES128Cipher,\n  AES256Cipher,\n  ARCFourCipher,\n  CipherTransformFactory,\n  PDF17,\n  PDF20,\n  calculateMD5,\n  calculateSHA256,\n  calculateSHA384,\n  calculateSHA512,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert, FormatError, info, isString, shadow, unreachable, warn\n} from '../shared/util';\nimport { isDict, isName, isStream } from './primitives';\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {Number} w1 - Original width.\n * @param {Number} h1 - Original height.\n * @param {Number} w2 - New width.\n * @param {Number} h2 - New height.\n * @param {Number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  let xRatio = w1 / w2;\n  let yRatio = h1 / h2;\n  let newIndex = 0, oldIndex;\n  let xScaled = new Uint16Array(w2);\n  let w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (this.constructor === ColorSpace) {\n      unreachable('Cannot initialize ColorSpace.');\n    }\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  /**\n   * Converts the color value to the RGB color. The color components are\n   * located in the src array starting from the srcOffset. Returns the array\n   * of the rgb components, each value ranging from [0,255].\n   */\n  getRgb(src, srcOffset) {\n    let rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  /**\n   * Converts the color value to the RGB color, similar to the getRgb method.\n   * The result placed into the dest array starting from the destOffset.\n   */\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    unreachable('Should not call ColorSpace.getRgbItem');\n  }\n\n  /**\n   * Converts the specified number of the color values to the RGB colors.\n   * The colors are located in the src array starting from the srcOffset.\n   * The result is placed into the dest array starting from the destOffset.\n   * The src array items shall be in [0,2^bits) range, the dest array items\n   * will be in [0,255] range. alpha01 indicates how many alpha components\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n   * array).\n   */\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    unreachable('Should not call ColorSpace.getRgbBuffer');\n  }\n\n  /**\n   * Determines the number of bytes required to store the result of the\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n   */\n  getOutputLength(inputLength, alpha01) {\n    unreachable('Should not call ColorSpace.getOutputLength');\n  }\n\n  /**\n   * Returns true if source data will be equal the result/output data.\n   */\n  isPassthrough(bits) {\n    return false;\n  }\n\n  /**\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\n   * how many alpha components there are in the dest array; it will be either\n   * 0 (RGB array) or 1 (RGBA array).\n   */\n  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight,\n          bpc, comps, alpha01) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'ColorSpace.fillRgb: Unsupported \"dest\" type.');\n    }\n    let count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    let numComponentColors = 1 << bpc;\n    let needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (this.numComps === 1 && count > numComponentColors &&\n               this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') {\n      // Optimization: create a color map when there is just one component and\n      // we are converting more colors than the size of the color map. We\n      // don't build the map if the colorspace is gray or rgb since those\n      // methods are faster than building a map. This mainly offers big speed\n      // ups for indexed and alternate colorspaces.\n      //\n      // TODO it may be worth while to cache the color map. While running\n      // testing I never hit a cache so I will leave that out for now (perhaps\n      // we are reparsing colorspaces too much?).\n      let allColors = bpc <= 8 ? new Uint8Array(numComponentColors) :\n                                 new Uint16Array(numComponentColors);\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n      let colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc,\n                        /* alpha01 = */ 0);\n\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        let destPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else {\n      if (!needsResizing) {\n        // Fill in the RGB values directly into |dest|.\n        this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc,\n                          alpha01);\n      } else {\n        rgbBuf = new Uint8ClampedArray(count * 3);\n        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n      }\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight,\n                       width, height, alpha01);\n      } else {\n        let destPos = 0, rgbPos = 0;\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  /**\n   * True if the colorspace has components in the default range of [0, 1].\n   * This should be true for all colorspaces except for lab color spaces\n   * which are [0,100], [-128, 127], [-128, 127].\n   */\n  get usesZeroToOneRange() {\n    return shadow(this, 'usesZeroToOneRange', true);\n  }\n\n  static parse(cs, xref, res, pdfFunctionFactory) {\n    let IR = this.parseToIR(cs, xref, res, pdfFunctionFactory);\n    return this.fromIR(IR);\n  }\n\n  static fromIR(IR) {\n    let name = Array.isArray(IR) ? IR[0] : IR;\n    let whitePoint, blackPoint, gamma;\n\n    switch (name) {\n      case 'DeviceGrayCS':\n        return this.singletons.gray;\n      case 'DeviceRgbCS':\n        return this.singletons.rgb;\n      case 'DeviceCmykCS':\n        return this.singletons.cmyk;\n      case 'CalGrayCS':\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        gamma = IR[3];\n        return new CalGrayCS(whitePoint, blackPoint, gamma);\n      case 'CalRGBCS':\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        gamma = IR[3];\n        let matrix = IR[4];\n        return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n      case 'PatternCS':\n        let basePatternCS = IR[1];\n        if (basePatternCS) {\n          basePatternCS = this.fromIR(basePatternCS);\n        }\n        return new PatternCS(basePatternCS);\n      case 'IndexedCS':\n        let baseIndexedCS = IR[1];\n        let hiVal = IR[2];\n        let lookup = IR[3];\n        return new IndexedCS(this.fromIR(baseIndexedCS), hiVal, lookup);\n      case 'AlternateCS':\n        let numComps = IR[1];\n        let alt = IR[2];\n        let tintFn = IR[3];\n        return new AlternateCS(numComps, this.fromIR(alt), tintFn);\n      case 'LabCS':\n        whitePoint = IR[1];\n        blackPoint = IR[2];\n        let range = IR[3];\n        return new LabCS(whitePoint, blackPoint, range);\n      default:\n        throw new FormatError(`Unknown colorspace name: ${name}`);\n    }\n  }\n\n  static parseToIR(cs, xref, res = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n    if (isName(cs)) {\n      switch (cs.name) {\n        case 'DeviceGray':\n        case 'G':\n          return 'DeviceGrayCS';\n        case 'DeviceRGB':\n        case 'RGB':\n          return 'DeviceRgbCS';\n        case 'DeviceCMYK':\n        case 'CMYK':\n          return 'DeviceCmykCS';\n        case 'Pattern':\n          return ['PatternCS', null];\n        default:\n          if (isDict(res)) {\n            let colorSpaces = res.get('ColorSpace');\n            if (isDict(colorSpaces)) {\n              let resCS = colorSpaces.get(cs.name);\n              if (resCS) {\n                if (isName(resCS)) {\n                  return this.parseToIR(resCS, xref, res, pdfFunctionFactory);\n                }\n                cs = resCS;\n                break;\n              }\n            }\n          }\n          throw new FormatError(`unrecognized colorspace ${cs.name}`);\n      }\n    }\n    if (Array.isArray(cs)) {\n      let mode = xref.fetchIfRef(cs[0]).name;\n      let numComps, params, alt, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case 'DeviceGray':\n        case 'G':\n          return 'DeviceGrayCS';\n        case 'DeviceRGB':\n        case 'RGB':\n          return 'DeviceRgbCS';\n        case 'DeviceCMYK':\n        case 'CMYK':\n          return 'DeviceCmykCS';\n        case 'CalGray':\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray('WhitePoint');\n          blackPoint = params.getArray('BlackPoint');\n          gamma = params.get('Gamma');\n          return ['CalGrayCS', whitePoint, blackPoint, gamma];\n        case 'CalRGB':\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray('WhitePoint');\n          blackPoint = params.getArray('BlackPoint');\n          gamma = params.getArray('Gamma');\n          let matrix = params.getArray('Matrix');\n          return ['CalRGBCS', whitePoint, blackPoint, gamma, matrix];\n        case 'ICCBased':\n          let stream = xref.fetchIfRef(cs[1]);\n          let dict = stream.dict;\n          numComps = dict.get('N');\n          alt = dict.get('Alternate');\n          if (alt) {\n            let altIR = this.parseToIR(alt, xref, res, pdfFunctionFactory);\n            // Parse the /Alternate CS to ensure that the number of components\n            // are correct, and also (indirectly) that it is not a PatternCS.\n            let altCS = this.fromIR(altIR, pdfFunctionFactory);\n            if (altCS.numComps === numComps) {\n              return altIR;\n            }\n            warn('ICCBased color space: Ignoring incorrect /Alternate entry.');\n          }\n          if (numComps === 1) {\n            return 'DeviceGrayCS';\n          } else if (numComps === 3) {\n            return 'DeviceRgbCS';\n          } else if (numComps === 4) {\n            return 'DeviceCmykCS';\n          }\n          break;\n        case 'Pattern':\n          let basePatternCS = cs[1] || null;\n          if (basePatternCS) {\n            basePatternCS = this.parseToIR(basePatternCS, xref, res,\n                                           pdfFunctionFactory);\n          }\n          return ['PatternCS', basePatternCS];\n        case 'Indexed':\n        case 'I':\n          let baseIndexedCS = this.parseToIR(cs[1], xref, res,\n                                             pdfFunctionFactory);\n          let hiVal = xref.fetchIfRef(cs[2]) + 1;\n          let lookup = xref.fetchIfRef(cs[3]);\n          if (isStream(lookup)) {\n            lookup = lookup.getBytes();\n          }\n          return ['IndexedCS', baseIndexedCS, hiVal, lookup];\n        case 'Separation':\n        case 'DeviceN':\n          let name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          alt = this.parseToIR(cs[2], xref, res, pdfFunctionFactory);\n          let tintFn = pdfFunctionFactory.create(xref.fetchIfRef(cs[3]));\n          return ['AlternateCS', numComps, alt, tintFn];\n        case 'Lab':\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray('WhitePoint');\n          blackPoint = params.getArray('BlackPoint');\n          let range = params.getArray('Range');\n          return ['LabCS', whitePoint, blackPoint, range];\n        default:\n          throw new FormatError(`unimplemented color space object \"${mode}\"`);\n      }\n    }\n    throw new FormatError(`unrecognized color space object: \"${cs}\"`);\n  }\n\n  /**\n   * Checks if a decode map matches the default decode map for a color space.\n   * This handles the general decode maps where there are two values per\n   * component. e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\n   * slightly different.\n   * @param {Array} decode Decode map (usually from an image).\n   * @param {Number} n Number of components the color space has.\n   */\n  static isDefaultDecode(decode, n) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n\n    if (n * 2 !== decode.length) {\n      warn('The decode map is not the correct length');\n      return true;\n    }\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  static get singletons() {\n    return shadow(this, 'singletons', {\n      get gray() {\n        return shadow(this, 'gray', new DeviceGrayCS());\n      },\n      get rgb() {\n        return shadow(this, 'rgb', new DeviceRgbCS());\n      },\n      get cmyk() {\n        return shadow(this, 'cmyk', new DeviceCmykCS());\n      },\n    });\n  }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces.  A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super('Alternate', numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'AlternateCS.getRgbItem: Unsupported \"dest\" type.');\n    }\n    let tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.');\n    }\n    let tintFn = this.tintFn;\n    let base = this.base;\n    let scale = 1 / ((1 << bits) - 1);\n    let baseNumComps = base.numComps;\n    let usesZeroToOneRange = base.usesZeroToOneRange;\n    let isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) &&\n                        alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    let baseBuf = isPassthrough ?\n                  dest : new Uint8ClampedArray(baseNumComps * count);\n    let numComps = this.numComps;\n\n    let scaled = new Float32Array(numComps);\n    let tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n      tintFn(scaled, 0, tinted, 0);\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength *\n                                     this.base.numComps / this.numComps,\n                                     alpha01);\n  }\n\n  isDefaultDecode(decodeMap) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super('Pattern', null);\n    this.base = baseCS;\n  }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super('Indexed', 1);\n    this.base = base;\n    this.highVal = highVal;\n\n    let baseNumComps = base.numComps;\n    let length = baseNumComps * highVal;\n\n    if (isStream(lookup)) {\n      this.lookup = new Uint8Array(length);\n      let bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (isString(lookup)) {\n      this.lookup = new Uint8Array(length);\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i);\n      }\n    } else if (lookup instanceof Uint8Array) {\n      this.lookup = lookup;\n    } else {\n      throw new FormatError(`Unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'IndexedCS.getRgbItem: Unsupported \"dest\" type.');\n    }\n    let numComps = this.base.numComps;\n    let start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.');\n    }\n    let base = this.base;\n    let numComps = base.numComps;\n    let outputDelta = base.getOutputLength(numComps, alpha01);\n    let lookup = this.lookup;\n\n    for (let i = 0; i < count; ++i) {\n      let lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap) {\n    return true; // Indexed color maps shouldn't be changed.\n  }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super('DeviceGray', 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.');\n    }\n    let c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.');\n    }\n    let scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset, q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      let c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n\n  isDefaultDecode(decodeMap) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super('DeviceRGB', 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.');\n    }\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(dest instanceof Uint8ClampedArray,\n             'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.');\n    }\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n    let scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset, q = destOffset;\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return (inputLength * (3 + alpha01) / 3) | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n\n  isDefaultDecode(decodeMap) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nconst DeviceCmykCS = (function DeviceCmykCSClosure() {\n  // The coefficients below was found using numerical analysis: the method of\n  // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n  // where color_value is the tabular value from the table of sampled RGB colors\n  // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n  // CMYK color conversion using the estimation below:\n  //   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    let c = src[srcOffset] * srcScale;\n    let m = src[srcOffset + 1] * srcScale;\n    let y = src[srcOffset + 2] * srcScale;\n    let k = src[srcOffset + 3] * srcScale;\n\n    dest[destOffset] = 255 +\n      c * (-4.387332384609988 * c + 54.48615194189176 * m +\n           18.82290502165302 * y + 212.25662451639585 * k +\n           -285.2331026137004) +\n      m * (1.7149763477362134 * m - 5.6096736904047315 * y +\n           -17.873870861415444 * k - 5.497006427196366) +\n      y * (-2.5217340131683033 * y - 21.248923337353073 * k +\n           17.5119270841813) +\n      k * (-21.86122147463605 * k - 189.48180835922747);\n\n    dest[destOffset + 1] = 255 +\n      c * (8.841041422036149 * c + 60.118027045597366 * m +\n           6.871425592049007 * y + 31.159100130055922 * k +\n           -79.2970844816548) +\n      m * (-15.310361306967817 * m + 17.575251261109482 * y +\n           131.35250912493976 * k - 190.9453302588951) +\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n      k * (-20.737325471181034 * k - 187.80453709719578);\n\n    dest[destOffset + 2] = 255 +\n      c * (0.8842522430003296 * c + 8.078677503112928 * m +\n           30.89978309703729 * y - 0.23883238689178934 * k +\n           -14.183576799673286) +\n      m * (10.49593273432072 * m + 63.02378494754052 * y +\n           50.606957656360734 * k - 112.23884253719248) +\n      y * (0.03296041114873217 * y + 115.60384449646641 * k +\n           -193.58209356861505) +\n      k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  class DeviceCmykCS extends ColorSpace {\n    constructor() {\n      super('DeviceCMYK', 4);\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(dest instanceof Uint8ClampedArray,\n               'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.');\n      }\n      convertToRgb(src, srcOffset, 1, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(dest instanceof Uint8ClampedArray,\n               'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.');\n      }\n      let scale = 1 / ((1 << bits) - 1);\n      for (let i = 0; i < count; i++) {\n        convertToRgb(src, srcOffset, scale, dest, destOffset);\n        srcOffset += 4;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return (inputLength / 4 * (3 + alpha01)) | 0;\n    }\n\n    isDefaultDecode(decodeMap) {\n      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n    }\n  }\n  return DeviceCmykCS;\n})();\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nconst CalGrayCS = (function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A represents a gray component of a calibrated gray space.\n    // A <---> AG in the spec\n    let A = src[srcOffset] * scale;\n    let AG = Math.pow(A, cs.G);\n\n    // Computes L as per spec. ( = cs.YW * AG )\n    // Except if other than default BlackPoint values are used.\n    let L = cs.YW * AG;\n    // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n    // Convert values to rgb range [0, 255].\n    let val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  class CalGrayCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma) {\n      super('CalGray', 1);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          'WhitePoint missing - required for color space CalGray');\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n\n      // Translate arguments to spec variables.\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      this.G = gamma;\n\n      // Validate variables as per spec.\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(`Invalid WhitePoint components for ${this.name}` +\n                              ', no fallback available');\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n        warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n             `ZB: ${this.ZB}, only default values are supported.`);\n      }\n\n      if (this.G < 1) {\n        info(`Invalid Gamma: ${this.G} for ${this.name}, ` +\n             'falling back to default.');\n        this.G = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(dest instanceof Uint8ClampedArray,\n               'CalGrayCS.getRgbItem: Unsupported \"dest\" type.');\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(dest instanceof Uint8ClampedArray,\n               'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.');\n      }\n      let scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 1;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n\n    isDefaultDecode(decodeMap) {\n      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n    }\n  }\n  return CalGrayCS;\n})();\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst CalRGBCS = (function CalRGBCSClosure() {\n  // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n  // matrices.\n  const BRADFORD_SCALE_MATRIX = new Float32Array([\n    0.8951, 0.2664, -0.1614,\n    -0.7502, 1.7135, 0.0367,\n    0.0389, -0.0685, 1.0296]);\n\n  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n    0.9869929, -0.1470543, 0.1599627,\n    0.4323053, 0.5183603, 0.0492912,\n    -0.0085287, 0.0400428, 0.9684867]);\n\n  // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n    3.2404542, -1.5371385, -0.4985314,\n    -0.9692660, 1.8760108, 0.0415560,\n    0.0556434, -0.2040259, 1.0572252]);\n\n  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n  let tempNormalizeMatrix = new Float32Array(3);\n  let tempConvertMatrix1 = new Float32Array(3);\n  let tempConvertMatrix2 = new Float32Array(3);\n\n  const DECODE_L_CONSTANT = Math.pow(((8 + 16) / 116), 3) / 8.0;\n\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = LMS[0] * 1 / sourceWhitePoint[0];\n    result[1] = LMS[1] * 1 / sourceWhitePoint[1];\n    result[2] = LMS[2] * 1 / sourceWhitePoint[2];\n  }\n\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n\n    result[0] = LMS[0] * D65X / sourceWhitePoint[0];\n    result[1] = LMS[1] * D65Y / sourceWhitePoint[1];\n    result[2] = LMS[2] * D65Z / sourceWhitePoint[2];\n  }\n\n  function sRGBTransferFunction(color) {\n    // See http://en.wikipedia.org/wiki/SRGB.\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n    return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055);\n  }\n\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n    if (L > 8.0) {\n      return Math.pow(((L + 16) / 116), 3);\n    }\n    return L * DECODE_L_CONSTANT;\n  }\n\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    // In case the blackPoint is already the default blackPoint then there is\n    // no need to do compensation.\n    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 &&\n        sourceBlackPoint[2] === 0) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    // For the blackPoint calculation details, please see\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    // The destination blackPoint is the default blackPoint [0, 0, 0].\n    let zeroDecodeL = decodeL(0);\n\n    let X_DST = zeroDecodeL;\n    let X_SRC = decodeL(sourceBlackPoint[0]);\n\n    let Y_DST = zeroDecodeL;\n    let Y_SRC = decodeL(sourceBlackPoint[1]);\n\n    let Z_DST = zeroDecodeL;\n    let Z_SRC = decodeL(sourceBlackPoint[2]);\n\n    let X_Scale = (1 - X_DST) / (1 - X_SRC);\n    let X_Offset = 1 - X_Scale;\n\n    let Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    let Y_Offset = 1 - Y_Scale;\n\n    let Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    let Z_Offset = 1 - Z_Scale;\n\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    // In case the whitePoint is already flat then there is no need to do\n    // normalization.\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    let LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    let LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    let LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n    let LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    // A, B and C represent a red, green and blue components of a calibrated\n    // rgb space.\n    let A = adjustToRange(0, 1, src[srcOffset] * scale);\n    let B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    let C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n    // A <---> AGR in the spec\n    // B <---> BGG in the spec\n    // C <---> CGB in the spec\n    let AGR = Math.pow(A, cs.GR);\n    let BGG = Math.pow(B, cs.GG);\n    let CGB = Math.pow(C, cs.GB);\n\n    // Computes intermediate variables L, M, N as per spec.\n    // To decode X, Y, Z values map L, M, N directly to them.\n    let X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    let Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    let Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n    // The following calculations are based on this document:\n    // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n    // AdobeBPC.pdf.\n    let XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    let XYZ_Flat = tempConvertMatrix2;\n\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n    let XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n    let XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n    let SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n    // Convert the values to rgb range [0, 255].\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  class CalRGBCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma, matrix) {\n      super('CalRGB', 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          'WhitePoint missing - required for color space CalRGB');\n      }\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n      // Translate arguments to spec variables.\n      let XW = whitePoint[0];\n      let YW = whitePoint[1];\n      let ZW = whitePoint[2];\n      this.whitePoint = whitePoint;\n\n      let XB = blackPoint[0];\n      let YB = blackPoint[1];\n      let ZB = blackPoint[2];\n      this.blackPoint = blackPoint;\n\n      this.GR = gamma[0];\n      this.GG = gamma[1];\n      this.GB = gamma[2];\n\n      this.MXA = matrix[0];\n      this.MYA = matrix[1];\n      this.MZA = matrix[2];\n      this.MXB = matrix[3];\n      this.MYB = matrix[4];\n      this.MZB = matrix[5];\n      this.MXC = matrix[6];\n      this.MYC = matrix[7];\n      this.MZC = matrix[8];\n\n      // Validate variables as per spec.\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new FormatError(`Invalid WhitePoint components for ${this.name}` +\n                              ', no fallback available');\n      }\n\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        info(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n             'falling back to default.');\n        this.blackPoint = new Float32Array(3);\n      }\n\n      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n        info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n             `${this.name}, falling back to default.`);\n        this.GR = this.GG = this.GB = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(dest instanceof Uint8ClampedArray,\n               'CalRGBCS.getRgbItem: Unsupported \"dest\" type.');\n      }\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(dest instanceof Uint8ClampedArray,\n              'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.');\n      }\n      let scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return (inputLength * (3 + alpha01) / 3) | 0;\n    }\n\n    isDefaultDecode(decodeMap) {\n      return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n    }\n  }\n  return CalRGBCS;\n})();\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nconst LabCS = (function LabCSClosure() {\n  // Function g(x) from spec\n  function fn_g(x) {\n    let result;\n    if (x >= 6 / 29) {\n      result = x * x * x;\n    } else {\n      result = (108 / 841) * (x - 4 / 29);\n    }\n    return result;\n  }\n\n  function decode(value, high1, low2, high2) {\n    return low2 + (value) * (high2 - low2) / (high1);\n  }\n\n  // If decoding is needed maxVal should be 2^bits per component - 1.\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n    // not the usual [0, 1]. If a command like setFillColor is used the src\n    // values will already be within the correct range. However, if we are\n    // converting an image we have to map the values to the correct range given\n    // above.\n    // Ls,as,bs <---> L*,a*,b* in the spec\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n\n    // Adjust limits of 'as' and 'bs'\n    as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as;\n    bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs;\n\n    // Computes intermediate variables X,Y,Z as per spec\n    let M = (Ls + 16) / 116;\n    let L = M + (as / 500);\n    let N = M - (bs / 200);\n\n    let X = cs.XW * fn_g(L);\n    let Y = cs.YW * fn_g(M);\n    let Z = cs.ZW * fn_g(N);\n\n    let r, g, b;\n    // Using different conversions for D50 and D65 white points,\n    // per http://www.color.org/srgb.pdf\n    if (cs.ZW < 1) {\n      // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n      r = X * 3.1339 + Y * -1.6170 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.9160 + Z * 0.0333;\n      b = X * 0.0720 + Y * -0.2290 + Z * 1.4057;\n    } else {\n      // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.2040 + Z * 1.0570;\n    }\n    // Convert the color values to the [0,255] range (clamping is automatic).\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  class LabCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, range) {\n      super('Lab', 3);\n\n      if (!whitePoint) {\n        throw new FormatError(\n          'WhitePoint missing - required for color space Lab');\n      }\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n\n      // Translate args to spec variables\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.amin = range[0];\n      this.amax = range[1];\n      this.bmin = range[2];\n      this.bmax = range[3];\n\n      // These are here just for completeness - the spec doesn't offer any\n      // formulas that use BlackPoint in Lab\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      // Validate vars as per spec\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new FormatError(\n          'Invalid WhitePoint components, no fallback available');\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        info('Invalid BlackPoint, falling back to default');\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.amin > this.amax || this.bmin > this.bmax) {\n        info('Invalid Range, falling back to defaults');\n        this.amin = -100;\n        this.amax = 100;\n        this.bmin = -100;\n        this.bmax = 100;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(dest instanceof Uint8ClampedArray,\n               'LabCS.getRgbItem: Unsupported \"dest\" type.');\n      }\n      convertToRgb(this, src, srcOffset, false, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(dest instanceof Uint8ClampedArray,\n               'LabCS.getRgbBuffer: Unsupported \"dest\" type.');\n      }\n      let maxVal = (1 << bits) - 1;\n      for (let i = 0; i < count; i++) {\n        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return (inputLength * (3 + alpha01) / 3) | 0;\n    }\n\n    isDefaultDecode(decodeMap) {\n      // XXX: Decoding is handled with the lab conversion because of the strange\n      // ranges that are used.\n      return true;\n    }\n\n    get usesZeroToOneRange() {\n      return shadow(this, 'usesZeroToOneRange', false);\n    }\n  }\n  return LabCS;\n})();\n\nexport {\n  ColorSpace,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AnnotationBorderStyleType, AnnotationFieldFlag, AnnotationFlag,\n  AnnotationType, getInheritableProperty, OPS, stringToBytes, stringToPDFString,\n  Util, warn\n} from '../shared/util';\nimport { Catalog, FileSpec, ObjectLoader } from './obj';\nimport { Dict, isDict, isName, isRef, isStream } from './primitives';\nimport { ColorSpace } from './colorspace';\nimport { OperatorList } from './operator_list';\nimport { Stream } from './stream';\n\nclass AnnotationFactory {\n  /**\n   * Create an `Annotation` object of the correct type for the given reference\n   * to an annotation dictionary. This yields a promise that is resolved when\n   * the `Annotation` object is constructed.\n   *\n   * @param {XRef} xref\n   * @param {Object} ref\n   * @param {PDFManager} pdfManager\n   * @param {Object} idFactory\n   * @return {Promise} A promise that is resolved with an {Annotation} instance.\n   */\n  static create(xref, ref, pdfManager, idFactory) {\n    return pdfManager.ensure(this, '_create',\n                             [xref, ref, pdfManager, idFactory]);\n  }\n\n  /**\n   * @private\n   */\n  static _create(xref, ref, pdfManager, idFactory) {\n    let dict = xref.fetchIfRef(ref);\n    if (!isDict(dict)) {\n      return;\n    }\n    let id = isRef(ref) ? ref.toString() : 'annot_' + idFactory.createObjId();\n\n    // Determine the annotation's subtype.\n    let subtype = dict.get('Subtype');\n    subtype = isName(subtype) ? subtype.name : null;\n\n    // Return the right annotation object based on the subtype and field type.\n    let parameters = {\n      xref,\n      dict,\n      ref: isRef(ref) ? ref : null,\n      subtype,\n      id,\n      pdfManager,\n    };\n\n    switch (subtype) {\n      case 'Link':\n        return new LinkAnnotation(parameters);\n\n      case 'Text':\n        return new TextAnnotation(parameters);\n\n      case 'Widget':\n        let fieldType = getInheritableProperty({ dict, key: 'FT', });\n        fieldType = isName(fieldType) ? fieldType.name : null;\n\n        switch (fieldType) {\n          case 'Tx':\n            return new TextWidgetAnnotation(parameters);\n          case 'Btn':\n            return new ButtonWidgetAnnotation(parameters);\n          case 'Ch':\n            return new ChoiceWidgetAnnotation(parameters);\n        }\n        warn('Unimplemented widget field type \"' + fieldType + '\", ' +\n             'falling back to base field type.');\n        return new WidgetAnnotation(parameters);\n\n      case 'Popup':\n        return new PopupAnnotation(parameters);\n\n      case 'Line':\n        return new LineAnnotation(parameters);\n\n      case 'Square':\n        return new SquareAnnotation(parameters);\n\n      case 'Circle':\n        return new CircleAnnotation(parameters);\n\n      case 'PolyLine':\n        return new PolylineAnnotation(parameters);\n\n      case 'Polygon':\n        return new PolygonAnnotation(parameters);\n\n      case 'Ink':\n        return new InkAnnotation(parameters);\n\n      case 'Highlight':\n        return new HighlightAnnotation(parameters);\n\n      case 'Underline':\n        return new UnderlineAnnotation(parameters);\n\n      case 'Squiggly':\n        return new SquigglyAnnotation(parameters);\n\n      case 'StrikeOut':\n        return new StrikeOutAnnotation(parameters);\n\n      case 'Stamp':\n        return new StampAnnotation(parameters);\n\n      case 'FileAttachment':\n        return new FileAttachmentAnnotation(parameters);\n\n      default:\n        if (!subtype) {\n          warn('Annotation is missing the required /Subtype.');\n        } else {\n          warn('Unimplemented annotation type \"' + subtype + '\", ' +\n               'falling back to base annotation.');\n        }\n        return new Annotation(parameters);\n    }\n  }\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  // 12.5.5: Algorithm: Appearance streams\n  let bounds = Util.getAxialAlignedBoundingBox(bbox, matrix);\n  let minX = bounds[0];\n  let minY = bounds[1];\n  let maxX = bounds[2];\n  let maxY = bounds[3];\n\n  if (minX === maxX || minY === maxY) {\n    // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n    // just apply the transform for rect\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n\n  let xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  let yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [\n    xRatio,\n    0,\n    0,\n    yRatio,\n    rect[0] - minX * xRatio,\n    rect[1] - minY * yRatio\n  ];\n}\n\nclass Annotation {\n  constructor(params) {\n    let dict = params.dict;\n\n    this.setFlags(dict.get('F'));\n    this.setRectangle(dict.getArray('Rect'));\n    this.setColor(dict.getArray('C'));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n\n    // Expose public properties using a data object.\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      rect: this.rectangle,\n      subtype: params.subtype,\n    };\n  }\n\n  /**\n   * @private\n   */\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n\n  /**\n   * @private\n   */\n  _isViewable(flags) {\n    return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n           !this._hasFlag(flags, AnnotationFlag.HIDDEN) &&\n           !this._hasFlag(flags, AnnotationFlag.NOVIEW);\n  }\n\n  /**\n   * @private\n   */\n  _isPrintable(flags) {\n    return this._hasFlag(flags, AnnotationFlag.PRINT) &&\n           !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n           !this._hasFlag(flags, AnnotationFlag.HIDDEN);\n  }\n\n  /**\n   * @return {boolean}\n   */\n  get viewable() {\n    if (this.flags === 0) {\n      return true;\n    }\n    return this._isViewable(this.flags);\n  }\n\n  /**\n   * @return {boolean}\n   */\n  get printable() {\n    if (this.flags === 0) {\n      return false;\n    }\n    return this._isPrintable(this.flags);\n  }\n\n  /**\n   * Set the flags.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\n   *                         characteristics\n   * @see {@link shared/util.js}\n   */\n  setFlags(flags) {\n    this.flags = (Number.isInteger(flags) && flags > 0) ? flags : 0;\n  }\n\n  /**\n   * Check if a provided flag is set.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        characteristic\n   * @return {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n\n  /**\n   * Set the rectangle.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} rectangle - The rectangle array with exactly four entries\n   */\n  setRectangle(rectangle) {\n    if (Array.isArray(rectangle) && rectangle.length === 4) {\n      this.rectangle = Util.normalizeRect(rectangle);\n    } else {\n      this.rectangle = [0, 0, 0, 0];\n    }\n  }\n\n  /**\n   * Set the color and take care of color space conversion.\n   * The default value is black, in RGB color space.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Array} color - The color array containing either 0\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\n   *                        4 (CMYK) elements\n   */\n  setColor(color) {\n    let rgbColor = new Uint8ClampedArray(3);\n    if (!Array.isArray(color)) {\n      this.color = rgbColor;\n      return;\n    }\n\n    switch (color.length) {\n      case 0: // Transparent, which we indicate with a null value\n        this.color = null;\n        break;\n\n      case 1: // Convert grayscale to RGB\n        ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 3: // Convert RGB percentages to RGB\n        ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      case 4: // Convert CMYK to RGB\n        ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n        this.color = rgbColor;\n        break;\n\n      default:\n        this.color = rgbColor;\n        break;\n    }\n  }\n\n  /**\n   * Set the border style (as AnnotationBorderStyle object).\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} borderStyle - The border style dictionary\n   */\n  setBorderStyle(borderStyle) {\n    this.borderStyle = new AnnotationBorderStyle();\n    if (!isDict(borderStyle)) {\n      return;\n    }\n    if (borderStyle.has('BS')) {\n      let dict = borderStyle.get('BS');\n      let dictType = dict.get('Type');\n\n      if (!dictType || isName(dictType, 'Border')) {\n        this.borderStyle.setWidth(dict.get('W'));\n        this.borderStyle.setStyle(dict.get('S'));\n        this.borderStyle.setDashArray(dict.getArray('D'));\n      }\n    } else if (borderStyle.has('Border')) {\n      let array = borderStyle.getArray('Border');\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2]);\n\n        if (array.length === 4) { // Dash array available\n          this.borderStyle.setDashArray(array[3]);\n        }\n      }\n    } else {\n      // There are no border entries in the dictionary. According to the\n      // specification, we should draw a solid border of width 1 in that\n      // case, but Adobe Reader did not implement that part of the\n      // specification and instead draws no border at all, so we do the same.\n      // See also https://github.com/mozilla/pdf.js/issues/6179.\n      this.borderStyle.setWidth(0);\n    }\n  }\n\n  /**\n   * Set the (normal) appearance.\n   *\n   * @public\n   * @memberof Annotation\n   * @param {Dict} dict - The annotation's data dictionary\n   */\n  setAppearance(dict) {\n    this.appearance = null;\n\n    let appearanceStates = dict.get('AP');\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n\n    // In case the normal appearance is a stream, then it is used directly.\n    let normalAppearanceState = appearanceStates.get('N');\n    if (isStream(normalAppearanceState)) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n\n    // In case the normal appearance is a dictionary, the `AS` entry provides\n    // the key of the stream in this dictionary.\n    let as = dict.get('AS');\n    if (!isName(as) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n    this.appearance = normalAppearanceState.get(as.name);\n  }\n\n  /**\n   * Prepare the annotation for working with a popup in the display layer.\n   *\n   * @private\n   * @memberof Annotation\n   * @param {Dict} dict - The annotation's data dictionary\n   */\n  _preparePopup(dict) {\n    if (!dict.has('C')) {\n      // Fall back to the default background color.\n      this.data.color = null;\n    }\n\n    this.data.hasPopup = dict.has('Popup');\n    this.data.title = stringToPDFString(dict.get('T') || '');\n    this.data.contents = stringToPDFString(dict.get('Contents') || '');\n  }\n\n  loadResources(keys) {\n    return this.appearance.dict.getAsync('Resources').then((resources) => {\n      if (!resources) {\n        return;\n      }\n      let objectLoader = new ObjectLoader(resources, keys, resources.xref);\n\n      return objectLoader.load().then(function() {\n        return resources;\n      });\n    });\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    if (!this.appearance) {\n      return Promise.resolve(new OperatorList());\n    }\n\n    let data = this.data;\n    let appearanceDict = this.appearance.dict;\n    let resourcesPromise = this.loadResources([\n      'ExtGState',\n      'ColorSpace',\n      'Pattern',\n      'Shading',\n      'XObject',\n      'Font',\n      // ProcSet\n      // Properties\n    ]);\n    let bbox = appearanceDict.getArray('BBox') || [0, 0, 1, 1];\n    let matrix = appearanceDict.getArray('Matrix') || [1, 0, 0, 1, 0, 0];\n    let transform = getTransformMatrix(data.rect, bbox, matrix);\n\n    return resourcesPromise.then((resources) => {\n      let opList = new OperatorList();\n      opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]);\n      return evaluator.getOperatorList({\n        stream: this.appearance,\n        task,\n        resources,\n        operatorList: opList,\n      }).then(() => {\n        opList.addOp(OPS.endAnnotation, []);\n        this.appearance.reset();\n        return opList;\n      });\n    });\n  }\n}\n\n/**\n * Contains all data regarding an annotation's border style.\n */\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.style = AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  /**\n   * Set the width.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {integer} width - The width\n   */\n  setWidth(width) {\n    if (Number.isInteger(width)) {\n      this.width = width;\n    }\n  }\n\n  /**\n   * Set the style.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Object} style - The style object\n   * @see {@link shared/util.js}\n   */\n  setStyle(style) {\n    if (!style) {\n      return;\n    }\n    switch (style.name) {\n      case 'S':\n        this.style = AnnotationBorderStyleType.SOLID;\n        break;\n\n      case 'D':\n        this.style = AnnotationBorderStyleType.DASHED;\n        break;\n\n      case 'B':\n        this.style = AnnotationBorderStyleType.BEVELED;\n        break;\n\n      case 'I':\n        this.style = AnnotationBorderStyleType.INSET;\n        break;\n\n      case 'U':\n        this.style = AnnotationBorderStyleType.UNDERLINE;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Set the dash array.\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {Array} dashArray - The dash array with at least one element\n   */\n  setDashArray(dashArray) {\n    // We validate the dash array, but we do not use it because CSS does not\n    // allow us to change spacing of dashes. For more information, visit\n    // http://www.w3.org/TR/css3-background/#the-border-style.\n    if (Array.isArray(dashArray) && dashArray.length > 0) {\n      // According to the PDF specification: the elements in `dashArray`\n      // shall be numbers that are nonnegative and not all equal to zero.\n      let isValid = true;\n      let allZeros = true;\n      for (let i = 0, len = dashArray.length; i < len; i++) {\n        let element = dashArray[i];\n        let validNumber = (+element >= 0);\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n      if (isValid && !allZeros) {\n        this.dashArray = dashArray;\n      } else {\n        this.width = 0; // Adobe behavior when the array is invalid.\n      }\n    } else if (dashArray) {\n      this.width = 0; // Adobe behavior when the array is invalid.\n    }\n  }\n\n  /**\n   * Set the horizontal corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {integer} radius - The horizontal corner radius\n   */\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n\n  /**\n   * Set the vertical corner radius (from a Border dictionary).\n   *\n   * @public\n   * @memberof AnnotationBorderStyle\n   * @param {integer} radius - The vertical corner radius\n   */\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n}\n\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    let dict = params.dict;\n    let data = this.data;\n\n    data.annotationType = AnnotationType.WIDGET;\n    data.fieldName = this._constructFieldName(dict);\n    data.fieldValue = getInheritableProperty({ dict, key: 'V',\n                                               getArray: true, });\n    data.alternativeText = stringToPDFString(dict.get('TU') || '');\n    data.defaultAppearance = getInheritableProperty({ dict, key: 'DA', }) || '';\n    let fieldType = getInheritableProperty({ dict, key: 'FT', });\n    data.fieldType = isName(fieldType) ? fieldType.name : null;\n    this.fieldResources = getInheritableProperty({ dict, key: 'DR', }) ||\n                          Dict.empty;\n\n    data.fieldFlags = getInheritableProperty({ dict, key: 'Ff', });\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n\n    // Hide signatures because we cannot validate them.\n    if (data.fieldType === 'Sig') {\n      this.setFlags(AnnotationFlag.HIDDEN);\n    }\n  }\n\n  /**\n   * Construct the (fully qualified) field name from the (partial) field\n   * names of the field and its ancestors.\n   *\n   * @private\n   * @memberof WidgetAnnotation\n   * @param {Dict} dict - Complete widget annotation dictionary\n   * @return {string}\n   */\n  _constructFieldName(dict) {\n    // Both the `Parent` and `T` fields are optional. While at least one of\n    // them should be provided, bad PDF generators may fail to do so.\n    if (!dict.has('T') && !dict.has('Parent')) {\n      warn('Unknown field name, falling back to empty field name.');\n      return '';\n    }\n\n    // If no parent exists, the partial and fully qualified names are equal.\n    if (!dict.has('Parent')) {\n      return stringToPDFString(dict.get('T'));\n    }\n\n    // Form the fully qualified field name by appending the partial name to\n    // the parent's fully qualified name, separated by a period.\n    let fieldName = [];\n    if (dict.has('T')) {\n      fieldName.unshift(stringToPDFString(dict.get('T')));\n    }\n\n    let loopDict = dict;\n    while (loopDict.has('Parent')) {\n      loopDict = loopDict.get('Parent');\n      if (!isDict(loopDict)) {\n        // Even though it is not allowed according to the PDF specification,\n        // bad PDF generators may provide a `Parent` entry that is not a\n        // dictionary, but `null` for example (issue 8143).\n        break;\n      }\n\n      if (loopDict.has('T')) {\n        fieldName.unshift(stringToPDFString(loopDict.get('T')));\n      }\n    }\n    return fieldName.join('.');\n  }\n\n  /**\n   * Check if a provided field flag is set.\n   *\n   * @public\n   * @memberof WidgetAnnotation\n   * @param {number} flag - Hexadecimal representation for an annotation\n   *                        field characteristic\n   * @return {boolean}\n   * @see {@link shared/util.js}\n   */\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    // Do not render form elements on the canvas when interactive forms are\n    // enabled. The display layer is responsible for rendering them instead.\n    if (renderForms) {\n      return Promise.resolve(new OperatorList());\n    }\n    return super.getOperatorList(evaluator, task, renderForms);\n  }\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    const dict = params.dict;\n\n    // The field value is always a string.\n    this.data.fieldValue = stringToPDFString(this.data.fieldValue || '');\n\n    // Determine the alignment of text in the field.\n    let alignment = getInheritableProperty({ dict, key: 'Q', });\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n    this.data.textAlignment = alignment;\n\n    // Determine the maximum length of text in the field.\n    let maximumLength = getInheritableProperty({ dict, key: 'MaxLen', });\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n    this.data.maxLen = maximumLength;\n\n    // Process field flags for the display layer.\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n    this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n                     !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n                     !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n                     !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n                     this.data.maxLen !== null;\n  }\n\n  getOperatorList(evaluator, task, renderForms) {\n    if (renderForms || this.appearance) {\n      return super.getOperatorList(evaluator, task, renderForms);\n    }\n\n    let operatorList = new OperatorList();\n\n    // Even if there is an appearance stream, ignore it. This is the\n    // behaviour used by Adobe Reader.\n    if (!this.data.defaultAppearance) {\n      return Promise.resolve(operatorList);\n    }\n\n    let stream = new Stream(stringToBytes(this.data.defaultAppearance));\n    return evaluator.getOperatorList({\n      stream,\n      task,\n      resources: this.fieldResources,\n      operatorList,\n    }).then(function () {\n      return operatorList;\n    });\n  }\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    this.data.checkBox = !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n                         !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton = this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n                            !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this._processPushButton(params);\n    } else {\n      warn('Invalid field flags for button widget annotation');\n    }\n  }\n\n  _processCheckBox(params) {\n    if (isName(this.data.fieldValue)) {\n      this.data.fieldValue = this.data.fieldValue.name;\n    }\n\n    const customAppearance = params.dict.get('AP');\n    if (!isDict(customAppearance)) {\n      return;\n    }\n\n    const exportValueOptionsDict = customAppearance.get('D');\n    if (!isDict(exportValueOptionsDict)) {\n      return;\n    }\n\n    const exportValues = exportValueOptionsDict.getKeys();\n    const hasCorrectOptionCount = exportValues.length === 2;\n    if (!hasCorrectOptionCount) {\n      return;\n    }\n\n    this.data.exportValue = exportValues[0] === 'Off' ?\n      exportValues[1] : exportValues[0];\n  }\n\n  _processRadioButton(params) {\n    this.data.fieldValue = this.data.buttonValue = null;\n\n    // The parent field's `V` entry holds a `Name` object with the appearance\n    // state of whichever child field is currently in the \"on\" state.\n    let fieldParent = params.dict.get('Parent');\n    if (isDict(fieldParent) && fieldParent.has('V')) {\n      let fieldParentValue = fieldParent.get('V');\n      if (isName(fieldParentValue)) {\n        this.data.fieldValue = fieldParentValue.name;\n      }\n    }\n\n    // The button's value corresponds to its appearance state.\n    let appearanceStates = params.dict.get('AP');\n    if (!isDict(appearanceStates)) {\n      return;\n    }\n    let normalAppearanceState = appearanceStates.get('N');\n    if (!isDict(normalAppearanceState)) {\n      return;\n    }\n    let keys = normalAppearanceState.getKeys();\n    for (let i = 0, ii = keys.length; i < ii; i++) {\n      if (keys[i] !== 'Off') {\n        this.data.buttonValue = keys[i];\n        break;\n      }\n    }\n  }\n\n  _processPushButton(params) {\n    if (!params.dict.has('A')) {\n      warn('Push buttons without action dictionaries are not supported');\n      return;\n    }\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n\n    // Determine the options. The options array may consist of strings or\n    // arrays. If the array consists of arrays, then the first element of\n    // each array is the export value and the second element of each array is\n    // the display value. If the array consists of strings, then these\n    // represent both the export and display value. In this case, we convert\n    // it to an array of arrays as well for convenience in the display layer.\n    // Note that the specification does not state that the `Opt` field is\n    // inheritable, but in practice PDF generators do make annotations\n    // inherit the options from a parent annotation (issue 8094).\n    this.data.options = [];\n\n    let options = getInheritableProperty({ dict: params.dict, key: 'Opt', });\n    if (Array.isArray(options)) {\n      let xref = params.xref;\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        let option = xref.fetchIfRef(options[i]);\n        let isOptionArray = Array.isArray(option);\n\n        this.data.options[i] = {\n          exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,\n          displayValue: stringToPDFString(isOptionArray ?\n                                          xref.fetchIfRef(option[1]) : option),\n        };\n      }\n    }\n\n    // Determine the field value. In this case, it may be a string or an\n    // array of strings. For convenience in the display layer, convert the\n    // string to an array of one string as well.\n    if (!Array.isArray(this.data.fieldValue)) {\n      this.data.fieldValue = [this.data.fieldValue];\n    }\n\n    // Process field flags for the display layer.\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n  }\n}\n\nclass TextAnnotation extends Annotation {\n  constructor(parameters) {\n    const DEFAULT_ICON_SIZE = 22; // px\n\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.TEXT;\n\n    if (this.data.hasAppearance) {\n      this.data.name = 'NoIcon';\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = parameters.dict.has('Name') ?\n                       parameters.dict.get('Name').name : 'Note';\n    }\n    this._preparePopup(parameters.dict);\n  }\n}\n\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n\n    this.data.annotationType = AnnotationType.LINK;\n\n    Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl,\n    });\n  }\n}\n\nclass PopupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POPUP;\n\n    let dict = parameters.dict;\n    let parentItem = dict.get('Parent');\n    if (!parentItem) {\n      warn('Popup annotation has a missing or invalid parent annotation.');\n      return;\n    }\n\n    let parentSubtype = parentItem.get('Subtype');\n    this.data.parentType = isName(parentSubtype) ? parentSubtype.name : null;\n    this.data.parentId = dict.getRaw('Parent').toString();\n    this.data.title = stringToPDFString(parentItem.get('T') || '');\n    this.data.contents = stringToPDFString(parentItem.get('Contents') || '');\n\n    if (!parentItem.has('C')) {\n      // Fall back to the default background color.\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray('C'));\n      this.data.color = this.color;\n    }\n\n    // If the Popup annotation is not viewable, but the parent annotation is,\n    // that is most likely a bug. Fallback to inherit the flags from the parent\n    // annotation (this is consistent with the behaviour in Adobe Reader).\n    if (!this.viewable) {\n      let parentFlags = parentItem.get('F');\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n  }\n}\n\nclass LineAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.LINE;\n\n    let dict = parameters.dict;\n    this.data.lineCoordinates = Util.normalizeRect(dict.getArray('L'));\n    this._preparePopup(dict);\n  }\n}\n\nclass SquareAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUARE;\n    this._preparePopup(parameters.dict);\n  }\n}\n\nclass CircleAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.CIRCLE;\n    this._preparePopup(parameters.dict);\n  }\n}\n\nclass PolylineAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYLINE;\n\n    // The vertices array is an array of numbers representing the alternating\n    // horizontal and vertical coordinates, respectively, of each vertex.\n    // Convert this to an array of objects with x and y coordinates.\n    let dict = parameters.dict;\n    let rawVertices = dict.getArray('Vertices');\n\n    this.data.vertices = [];\n    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      this.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1],\n      });\n    }\n\n    this._preparePopup(dict);\n  }\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.POLYGON;\n  }\n}\n\nclass InkAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.INK;\n\n    let dict = parameters.dict;\n    const xref = parameters.xref;\n\n    let originalInkLists = dict.getArray('InkList');\n    this.data.inkLists = [];\n    for (let i = 0, ii = originalInkLists.length; i < ii; ++i) {\n      // The raw ink lists array contains arrays of numbers representing\n      // the alternating horizontal and vertical coordinates, respectively,\n      // of each vertex. Convert this to an array of objects with x and y\n      // coordinates.\n      this.data.inkLists.push([]);\n      for (let j = 0, jj = originalInkLists[i].length; j < jj; j += 2) {\n        this.data.inkLists[i].push({\n          x: xref.fetchIfRef(originalInkLists[i][j]),\n          y: xref.fetchIfRef(originalInkLists[i][j + 1]),\n        });\n      }\n    }\n    this._preparePopup(dict);\n  }\n}\n\nclass HighlightAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\n    this._preparePopup(parameters.dict);\n  }\n}\n\nclass UnderlineAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.UNDERLINE;\n    this._preparePopup(parameters.dict);\n  }\n}\n\nclass SquigglyAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.SQUIGGLY;\n    this._preparePopup(parameters.dict);\n  }\n}\n\nclass StrikeOutAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STRIKEOUT;\n    this._preparePopup(parameters.dict);\n  }\n}\n\nclass StampAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    this.data.annotationType = AnnotationType.STAMP;\n    this._preparePopup(parameters.dict);\n  }\n}\n\nclass FileAttachmentAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n\n    let file = new FileSpec(parameters.dict.get('FS'), parameters.xref);\n\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\n    this.data.file = file.serializable;\n    this._preparePopup(parameters.dict);\n  }\n}\n\nexport {\n  Annotation,\n  AnnotationBorderStyle,\n  AnnotationFactory,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, ImageKind, OPS } from '../shared/util';\n\nvar QueueOptimizer = (function QueueOptimizerClosure() {\n  function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n    var state = parentState;\n    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n      var item = pattern[i];\n      state = (state[item] || (state[item] = []));\n    }\n    state[pattern[pattern.length - 1]] = {\n      checkFn,\n      iterateFn,\n      processFn,\n    };\n  }\n\n  function handlePaintSolidColorImageMask(iFirstSave, count, fnArray,\n                                          argsArray) {\n    // Handles special case of mainly LaTeX documents which use image masks to\n    // draw lines with the current fill style.\n    // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n    // have been found at iFirstSave.\n    var iFirstPIMXO = iFirstSave + 2;\n    for (var i = 0; i < count; i++) {\n      var arg = argsArray[iFirstPIMXO + 4 * i];\n      var imageMask = arg.length === 1 && arg[0];\n      if (imageMask && imageMask.width === 1 && imageMask.height === 1 &&\n          (!imageMask.data.length ||\n           (imageMask.data.length === 1 && imageMask.data[0] === 0))) {\n        fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n        continue;\n      }\n      break;\n    }\n    return count - i;\n  }\n\n  var InitialState = [];\n\n  // This replaces (save, transform, paintInlineImageXObject, restore)+\n  // sequences with one |paintInlineImageXObjectGroup| operation.\n  addState(InitialState,\n    [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n    null,\n    function iterateInlineImageGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintInlineImageXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n    },\n    function foundInlineImageGroup(context, i) {\n      var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n      var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n      var MAX_WIDTH = 1000;\n      var IMAGE_PADDING = 1;\n\n      var fnArray = context.fnArray, argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIIXO = curr - 1;\n\n      var count = Math.min(Math.floor((i - iFirstSave) / 4),\n                           MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n      if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n        return i - (i - iFirstSave) % 4;\n      }\n\n      // assuming that heights of those image is too small (~1 pixel)\n      // packing as much as possible by lines\n      var maxX = 0;\n      var map = [], maxLineHeight = 0;\n      var currentX = IMAGE_PADDING, currentY = IMAGE_PADDING;\n      var q;\n      for (q = 0; q < count; q++) {\n        var transform = argsArray[iFirstTransform + (q << 2)];\n        var img = argsArray[iFirstPIIXO + (q << 2)][0];\n        if (currentX + img.width > MAX_WIDTH) {\n          // starting new line\n          maxX = Math.max(maxX, currentX);\n          currentY += maxLineHeight + 2 * IMAGE_PADDING;\n          currentX = 0;\n          maxLineHeight = 0;\n        }\n        map.push({\n          transform,\n          x: currentX, y: currentY,\n          w: img.width, h: img.height,\n        });\n        currentX += img.width + 2 * IMAGE_PADDING;\n        maxLineHeight = Math.max(maxLineHeight, img.height);\n      }\n      var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n      var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n      var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n      var imgRowSize = imgWidth << 2;\n      for (q = 0; q < count; q++) {\n        var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n        // Copy image by lines and extends pixels into padding.\n        var rowSize = map[q].w << 2;\n        var dataOffset = 0;\n        var offset = (map[q].x + map[q].y * imgWidth) << 2;\n        imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n        for (var k = 0, kk = map[q].h; k < kk; k++) {\n          imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n          dataOffset += rowSize;\n          offset += imgRowSize;\n        }\n        imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n        while (offset >= 0) {\n          data[offset - 4] = data[offset];\n          data[offset - 3] = data[offset + 1];\n          data[offset - 2] = data[offset + 2];\n          data[offset - 1] = data[offset + 3];\n          data[offset + rowSize] = data[offset + rowSize - 4];\n          data[offset + rowSize + 1] = data[offset + rowSize - 3];\n          data[offset + rowSize + 2] = data[offset + rowSize - 2];\n          data[offset + rowSize + 3] = data[offset + rowSize - 1];\n          offset -= imgRowSize;\n        }\n      }\n\n      // Replace queue items.\n      fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n      argsArray.splice(iFirstSave, count * 4,\n        [{ width: imgWidth, height: imgHeight, kind: ImageKind.RGBA_32BPP,\n           data: imgData, }, map]);\n\n      return iFirstSave + 1;\n    });\n\n  // This replaces (save, transform, paintImageMaskXObject, restore)+\n  // sequences with one |paintImageMaskXObjectGroup| or one\n  // |paintImageMaskXObjectRepeat| operation.\n  addState(InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n    null,\n    function iterateImageMaskGroup(context, i) {\n      var fnArray = context.fnArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          return fnArray[i] === OPS.transform;\n        case 2:\n          return fnArray[i] === OPS.paintImageMaskXObject;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n    },\n    function foundImageMaskGroup(context, i) {\n      var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n      var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n      var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n      var fnArray = context.fnArray, argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIMXO = curr - 1;\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.floor((i - iFirstSave) / 4);\n      count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray,\n                                             argsArray);\n      if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n        return i - (i - iFirstSave) % 4;\n      }\n\n      var q;\n      var isSameImage = false;\n      var iTransform, transformArgs;\n      var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n      if (argsArray[iFirstTransform][1] === 0 &&\n          argsArray[iFirstTransform][2] === 0) {\n        isSameImage = true;\n        var firstTransformArg0 = argsArray[iFirstTransform][0];\n        var firstTransformArg3 = argsArray[iFirstTransform][3];\n        iTransform = iFirstTransform + 4;\n        var iPIMXO = iFirstPIMXO + 4;\n        for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n          transformArgs = argsArray[iTransform];\n          if (argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n              transformArgs[0] !== firstTransformArg0 ||\n              transformArgs[1] !== 0 ||\n              transformArgs[2] !== 0 ||\n              transformArgs[3] !== firstTransformArg3) {\n            if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n              isSameImage = false;\n            } else {\n              count = q;\n            }\n            break; // different image or transform\n          }\n        }\n      }\n\n      if (isSameImage) {\n        count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n        var positions = new Float32Array(count * 2);\n        iTransform = iFirstTransform;\n        for (q = 0; q < count; q++, iTransform += 4) {\n          transformArgs = argsArray[iTransform];\n          positions[(q << 1)] = transformArgs[4];\n          positions[(q << 1) + 1] = transformArgs[5];\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n        argsArray.splice(iFirstSave, count * 4,\n          [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);\n      } else {\n        count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n        var images = [];\n        for (q = 0; q < count; q++) {\n          transformArgs = argsArray[iFirstTransform + (q << 2)];\n          var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n          images.push({ data: maskParams.data, width: maskParams.width,\n                        height: maskParams.height,\n                        transform: transformArgs, });\n        }\n\n        // Replace queue items.\n        fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n        argsArray.splice(iFirstSave, count * 4, [images]);\n      }\n\n      return iFirstSave + 1;\n    });\n\n  // This replaces (save, transform, paintImageXObject, restore)+ sequences\n  // with one paintImageXObjectRepeat operation, if the |transform| and\n  // |paintImageXObjectRepeat| ops are appropriate.\n  addState(InitialState,\n    [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n    function (context) {\n      var argsArray = context.argsArray;\n      var iFirstTransform = context.iCurr - 2;\n      return argsArray[iFirstTransform][1] === 0 &&\n             argsArray[iFirstTransform][2] === 0;\n    },\n    function (context, i) {\n      var fnArray = context.fnArray, argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 3;\n      var pos = (i - iFirstSave) % 4;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.save;\n        case 1:\n          if (fnArray[i] !== OPS.transform) {\n            return false;\n          }\n          var iFirstTransform = context.iCurr - 2;\n          var firstTransformArg0 = argsArray[iFirstTransform][0];\n          var firstTransformArg3 = argsArray[iFirstTransform][3];\n          if (argsArray[i][0] !== firstTransformArg0 ||\n              argsArray[i][1] !== 0 ||\n              argsArray[i][2] !== 0 ||\n              argsArray[i][3] !== firstTransformArg3) {\n            return false; // transforms don't match\n          }\n          return true;\n        case 2:\n          if (fnArray[i] !== OPS.paintImageXObject) {\n            return false;\n          }\n          var iFirstPIXO = context.iCurr - 1;\n          var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n          if (argsArray[i][0] !== firstPIXOArg0) {\n            return false; // images don't match\n          }\n          return true;\n        case 3:\n          return fnArray[i] === OPS.restore;\n      }\n    },\n    function (context, i) {\n      var MIN_IMAGES_IN_BLOCK = 3;\n      var MAX_IMAGES_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray, argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstSave = curr - 3;\n      var iFirstTransform = curr - 2;\n      var iFirstPIXO = curr - 1;\n      var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n      var firstTransformArg0 = argsArray[iFirstTransform][0];\n      var firstTransformArg3 = argsArray[iFirstTransform][3];\n\n      // At this point, i is the index of the first op past the last valid\n      // quartet.\n      var count = Math.min(Math.floor((i - iFirstSave) / 4),\n                           MAX_IMAGES_IN_BLOCK);\n      if (count < MIN_IMAGES_IN_BLOCK) {\n        return i - (i - iFirstSave) % 4;\n      }\n\n      // Extract the (x,y) positions from all of the matching transforms.\n      var positions = new Float32Array(count * 2);\n      var iTransform = iFirstTransform;\n      for (var q = 0; q < count; q++, iTransform += 4) {\n        var transformArgs = argsArray[iTransform];\n        positions[(q << 1)] = transformArgs[4];\n        positions[(q << 1) + 1] = transformArgs[5];\n      }\n\n      // Replace queue items.\n      var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3,\n                  positions];\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n      argsArray.splice(iFirstSave, count * 4, args);\n\n      return iFirstSave + 1;\n    });\n\n  // This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n  // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n  // sequences, if the font for each one is the same.\n  addState(InitialState,\n    [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n    null,\n    function (context, i) {\n      var fnArray = context.fnArray, argsArray = context.argsArray;\n      var iFirstSave = context.iCurr - 4;\n      var pos = (i - iFirstSave) % 5;\n      switch (pos) {\n        case 0:\n          return fnArray[i] === OPS.beginText;\n        case 1:\n          return fnArray[i] === OPS.setFont;\n        case 2:\n          return fnArray[i] === OPS.setTextMatrix;\n        case 3:\n          if (fnArray[i] !== OPS.showText) {\n            return false;\n          }\n          var iFirstSetFont = context.iCurr - 3;\n          var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n          var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n          if (argsArray[i][0] !== firstSetFontArg0 ||\n              argsArray[i][1] !== firstSetFontArg1) {\n            return false; // fonts don't match\n          }\n          return true;\n        case 4:\n          return fnArray[i] === OPS.endText;\n      }\n    },\n    function (context, i) {\n      var MIN_CHARS_IN_BLOCK = 3;\n      var MAX_CHARS_IN_BLOCK = 1000;\n\n      var fnArray = context.fnArray, argsArray = context.argsArray;\n      var curr = context.iCurr;\n      var iFirstBeginText = curr - 4;\n      var iFirstSetFont = curr - 3;\n      var iFirstSetTextMatrix = curr - 2;\n      var iFirstShowText = curr - 1;\n      var iFirstEndText = curr;\n      var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n      var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n      // At this point, i is the index of the first op past the last valid\n      // quintet.\n      var count = Math.min(Math.floor((i - iFirstBeginText) / 5),\n                           MAX_CHARS_IN_BLOCK);\n      if (count < MIN_CHARS_IN_BLOCK) {\n        return i - (i - iFirstBeginText) % 5;\n      }\n\n      // If the preceding quintet is (<something>, setFont, setTextMatrix,\n      // showText, endText), include that as well. (E.g. <something> might be\n      // |dependency|.)\n      var iFirst = iFirstBeginText;\n      if (iFirstBeginText >= 4 &&\n          fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n          fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n          fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n          fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n          argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n          argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n        count++;\n        iFirst -= 5;\n      }\n\n      // Remove (endText, beginText, setFont) trios.\n      var iEndText = iFirst + 4;\n      for (var q = 1; q < count; q++) {\n        fnArray.splice(iEndText, 3);\n        argsArray.splice(iEndText, 3);\n        iEndText += 2;\n      }\n\n      return iEndText + 1;\n    });\n\n  function QueueOptimizer(queue) {\n    this.queue = queue;\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray,\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n  QueueOptimizer.prototype = {\n    _optimize() {\n      // Process new fnArray item(s) chunk.\n      const fnArray = this.queue.fnArray;\n      let i = this.lastProcessed, ii = fnArray.length;\n      let state = this.state;\n      let match = this.match;\n      if (!state && !match && (i + 1 === ii) && !InitialState[fnArray[i]]) {\n        // Micro-optimization for the common case: last item is not\n        // optimizable, just skipping it.\n        this.lastProcessed = ii;\n        return;\n      }\n\n      const context = this.context;\n      while (i < ii) {\n        if (match) {\n          // Already find a block of potentially optimizable items, iterating...\n          const iterate = (0, match.iterateFn)(context, i);\n          if (iterate) {\n            i++;\n            continue;\n          }\n          // Found last items for the block, processing...\n          i = (0, match.processFn)(context, i + 1);\n          ii = fnArray.length;\n          match = null;\n          state = null;\n          if (i >= ii) {\n            break;\n          }\n        }\n        // Find the potentially optimizable items.\n        state = (state || InitialState)[fnArray[i]];\n        if (!state || Array.isArray(state)) {\n          i++;\n          continue;\n        }\n        // Found a start of the block based on addState rules.\n        context.iCurr = i;\n        i++;\n        if (state.checkFn && !(0, state.checkFn)(context)) {\n          // Check failed, continue search...\n          state = null;\n          continue;\n        }\n        match = state;\n        state = null;\n      }\n      this.state = state;\n      this.match = match;\n      this.lastProcessed = i;\n    },\n\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n      this._optimize();\n    },\n\n    flush() {\n      while (this.match) {\n        const length = this.queue.fnArray.length;\n        this.lastProcessed = (0, this.match.processFn)(this.context, length);\n        this.match = null;\n        this.state = null;\n        // Repeat optimization until all chunks are exhausted.\n        this._optimize();\n      }\n    },\n\n    reset() {\n      this.state = null;\n      this.match = null;\n      this.lastProcessed = 0;\n    },\n  };\n  return QueueOptimizer;\n})();\n\nvar NullOptimizer = (function NullOptimizerClosure() {\n  function NullOptimizer(queue) {\n    this.queue = queue;\n  }\n\n  NullOptimizer.prototype = {\n    push(fn, args) {\n      this.queue.fnArray.push(fn);\n      this.queue.argsArray.push(args);\n    },\n\n    flush() { },\n  };\n\n  return NullOptimizer;\n})();\n\nvar OperatorList = (function OperatorListClosure() {\n  var CHUNK_SIZE = 1000;\n  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size\n\n  function getTransfers(queue) {\n    var transfers = [];\n    var fnArray = queue.fnArray, argsArray = queue.argsArray;\n    for (var i = 0, ii = queue.length; i < ii; i++) {\n      switch (fnArray[i]) {\n        case OPS.paintInlineImageXObject:\n        case OPS.paintInlineImageXObjectGroup:\n        case OPS.paintImageMaskXObject:\n          var arg = argsArray[i][0]; // first param in imgData\n\n          if (typeof PDFJSDev === 'undefined' ||\n              PDFJSDev.test('!PRODUCTION || TESTING')) {\n            assert(arg.data instanceof Uint8ClampedArray,\n                   'OperatorList - getTransfers: Unsupported \"arg.data\" type.');\n          }\n          if (!arg.cached) {\n            transfers.push(arg.data.buffer);\n          }\n          break;\n      }\n    }\n    return transfers;\n  }\n\n  function OperatorList(intent, messageHandler, pageIndex) {\n    this.messageHandler = messageHandler;\n    this.fnArray = [];\n    this.argsArray = [];\n    if (messageHandler && this.intent !== 'oplist') {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n    this.dependencies = Object.create(null);\n    this._totalLength = 0;\n    this.pageIndex = pageIndex;\n    this.intent = intent;\n    this.weight = 0;\n  }\n\n  OperatorList.prototype = {\n    get length() {\n      return this.argsArray.length;\n    },\n\n    /**\n     * @returns {number} The total length of the entire operator list,\n     *                   since `this.length === 0` after flushing.\n     */\n    get totalLength() {\n      return (this._totalLength + this.length);\n    },\n\n    addOp(fn, args) {\n      this.optimizer.push(fn, args);\n      this.weight++;\n      if (this.messageHandler) {\n        if (this.weight >= CHUNK_SIZE) {\n          this.flush();\n        } else if (this.weight >= CHUNK_SIZE_ABOUT &&\n                   (fn === OPS.restore || fn === OPS.endText)) {\n          // heuristic to flush on boundary of restore or endText\n          this.flush();\n        }\n      }\n    },\n\n    addDependency(dependency) {\n      if (dependency in this.dependencies) {\n        return;\n      }\n      this.dependencies[dependency] = true;\n      this.addOp(OPS.dependency, [dependency]);\n    },\n\n    addDependencies(dependencies) {\n      for (var key in dependencies) {\n        this.addDependency(key);\n      }\n    },\n\n    addOpList(opList) {\n      Object.assign(this.dependencies, opList.dependencies);\n      for (var i = 0, ii = opList.length; i < ii; i++) {\n        this.addOp(opList.fnArray[i], opList.argsArray[i]);\n      }\n    },\n\n    getIR() {\n      return {\n        fnArray: this.fnArray,\n        argsArray: this.argsArray,\n        length: this.length,\n      };\n    },\n\n    flush(lastChunk) {\n      this.optimizer.flush();\n      var transfers = getTransfers(this);\n      var length = this.length;\n      this._totalLength += length;\n\n      this.messageHandler.send('RenderPageChunk', {\n        operatorList: {\n          fnArray: this.fnArray,\n          argsArray: this.argsArray,\n          lastChunk,\n          length,\n        },\n        pageIndex: this.pageIndex,\n        intent: this.intent,\n      }, transfers);\n      this.dependencies = Object.create(null);\n      this.fnArray.length = 0;\n      this.argsArray.length = 0;\n      this.weight = 0;\n      this.optimizer.reset();\n    },\n  };\n\n  return OperatorList;\n})();\n\nexport {\n  OperatorList,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException, assert, CMapCompressionType, createPromiseCapability,\n  FONT_IDENTITY_MATRIX, FormatError, getLookupTableFactory, IDENTITY_MATRIX,\n  info, isNum, isString, NativeImageDecoding, OPS, stringToPDFString,\n  TextRenderingMode, UNSUPPORTED_FEATURES, Util, warn\n} from '../shared/util';\nimport { CMapFactory, IdentityCMap } from './cmap';\nimport { DecodeStream, Stream } from './stream';\nimport {\n  Dict, isCmd, isDict, isEOF, isName, isRef, isStream, Name\n} from './primitives';\nimport {\n  ErrorFont, Font, FontFlags, getFontType, IdentityToUnicodeMap, ToUnicodeMap\n} from './fonts';\nimport {\n  getEncoding, MacRomanEncoding, StandardEncoding, SymbolSetEncoding,\n  WinAnsiEncoding, ZapfDingbatsEncoding\n} from './encodings';\nimport {\n  getNormalizedUnicodes, getUnicodeForGlyph, reverseIfRtl\n} from './unicode';\nimport {\n  getSerifFonts, getStdFontMap, getSymbolsFonts\n} from './standard_fonts';\nimport { getTilingPatternIR, Pattern } from './pattern';\nimport { Lexer, Parser } from './parser';\nimport { bidi } from './bidi';\nimport { ColorSpace } from './colorspace';\nimport { getGlyphsUnicode } from './glyphlist';\nimport { getMetrics } from './metrics';\nimport { isPDFFunction } from './function';\nimport { JpegStream } from './jpeg_stream';\nimport { MurmurHash3_64 } from './murmurhash3';\nimport { OperatorList } from './operator_list';\nimport { PDFImage } from './image';\n\nvar PartialEvaluator = (function PartialEvaluatorClosure() {\n  const DefaultPartialEvaluatorOptions = {\n    forceDataSchema: false,\n    maxImageSize: -1,\n    disableFontFace: false,\n    nativeImageDecoderSupport: NativeImageDecoding.DECODE,\n    ignoreErrors: false,\n    isEvalSupported: true,\n  };\n\n  function NativeImageDecoder({ xref, resources, handler,\n                                forceDataSchema = false,\n                                pdfFunctionFactory, }) {\n    this.xref = xref;\n    this.resources = resources;\n    this.handler = handler;\n    this.forceDataSchema = forceDataSchema;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n  }\n  NativeImageDecoder.prototype = {\n    canDecode(image) {\n      return image instanceof JpegStream &&\n             NativeImageDecoder.isDecodable(image, this.xref, this.resources,\n                                            this.pdfFunctionFactory);\n    },\n    decode(image) {\n      // For natively supported JPEGs send them to the main thread for decoding.\n      var dict = image.dict;\n      var colorSpace = dict.get('ColorSpace', 'CS');\n      colorSpace = ColorSpace.parse(colorSpace, this.xref, this.resources,\n                                    this.pdfFunctionFactory);\n\n      return this.handler.sendWithPromise('JpegDecode', [\n        image.getIR(this.forceDataSchema), colorSpace.numComps\n      ]).then(function({ data, width, height, }) {\n        return new Stream(data, 0, data.length, image.dict);\n      });\n    },\n  };\n  /**\n   * Checks if the image can be decoded and displayed by the browser without any\n   * further processing such as color space conversions.\n   */\n  NativeImageDecoder.isSupported = function(image, xref, res,\n                                            pdfFunctionFactory) {\n    var dict = image.dict;\n    if (dict.has('DecodeParms') || dict.has('DP')) {\n      return false;\n    }\n    var cs = ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res,\n                              pdfFunctionFactory);\n    return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') &&\n           cs.isDefaultDecode(dict.getArray('Decode', 'D'));\n  };\n  /**\n   * Checks if the image can be decoded by the browser.\n   */\n  NativeImageDecoder.isDecodable = function(image, xref, res,\n                                            pdfFunctionFactory) {\n    var dict = image.dict;\n    if (dict.has('DecodeParms') || dict.has('DP')) {\n      return false;\n    }\n    var cs = ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res,\n                              pdfFunctionFactory);\n    return (cs.numComps === 1 || cs.numComps === 3) &&\n           cs.isDefaultDecode(dict.getArray('Decode', 'D'));\n  };\n\n  function PartialEvaluator({ pdfManager, xref, handler, pageIndex, idFactory,\n                              fontCache, builtInCMapCache, options = null,\n                              pdfFunctionFactory, }) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.pdfFunctionFactory = pdfFunctionFactory;\n\n    this.fetchBuiltInCMap = async (name) => {\n      if (this.builtInCMapCache.has(name)) {\n        return this.builtInCMapCache.get(name);\n      }\n      const data = await this.handler.sendWithPromise('FetchBuiltInCMap',\n                                                      { name, });\n      if (data.compressionType !== CMapCompressionType.NONE) {\n        // Given the size of uncompressed CMaps, only cache compressed ones.\n        this.builtInCMapCache.set(name, data);\n      }\n      return data;\n    };\n  }\n\n  // Trying to minimize Date.now() usage and check every 100 time\n  var TIME_SLOT_DURATION_MS = 20;\n  var CHECK_TIME_EVERY = 100;\n  function TimeSlotManager() {\n    this.reset();\n  }\n  TimeSlotManager.prototype = {\n    check: function TimeSlotManager_check() {\n      if (++this.checked < CHECK_TIME_EVERY) {\n        return false;\n      }\n      this.checked = 0;\n      return this.endTime <= Date.now();\n    },\n    reset: function TimeSlotManager_reset() {\n      this.endTime = Date.now() + TIME_SLOT_DURATION_MS;\n      this.checked = 0;\n    },\n  };\n\n  // Convert PDF blend mode names to HTML5 blend mode names.\n  function normalizeBlendMode(value) {\n    if (!isName(value)) {\n      return 'source-over';\n    }\n    switch (value.name) {\n      case 'Normal':\n      case 'Compatible':\n        return 'source-over';\n      case 'Multiply':\n        return 'multiply';\n      case 'Screen':\n        return 'screen';\n      case 'Overlay':\n        return 'overlay';\n      case 'Darken':\n        return 'darken';\n      case 'Lighten':\n        return 'lighten';\n      case 'ColorDodge':\n        return 'color-dodge';\n      case 'ColorBurn':\n        return 'color-burn';\n      case 'HardLight':\n        return 'hard-light';\n      case 'SoftLight':\n        return 'soft-light';\n      case 'Difference':\n        return 'difference';\n      case 'Exclusion':\n        return 'exclusion';\n      case 'Hue':\n        return 'hue';\n      case 'Saturation':\n        return 'saturation';\n      case 'Color':\n        return 'color';\n      case 'Luminosity':\n        return 'luminosity';\n    }\n    warn('Unsupported blend mode: ' + value.name);\n    return 'source-over';\n  }\n\n  var deferred = Promise.resolve();\n\n  var TILING_PATTERN = 1, SHADING_PATTERN = 2;\n\n  PartialEvaluator.prototype = {\n    clone(newOptions = DefaultPartialEvaluatorOptions) {\n      var newEvaluator = Object.create(this);\n      newEvaluator.options = newOptions;\n      return newEvaluator;\n    },\n\n    hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {\n      if (!isDict(resources)) {\n        return false;\n      }\n\n      var processed = Object.create(null);\n      if (resources.objId) {\n        processed[resources.objId] = true;\n      }\n\n      var nodes = [resources], xref = this.xref;\n      while (nodes.length) {\n        var key, i, ii;\n        var node = nodes.shift();\n        // First check the current resources for blend modes.\n        var graphicStates = node.get('ExtGState');\n        if (isDict(graphicStates)) {\n          var graphicStatesKeys = graphicStates.getKeys();\n          for (i = 0, ii = graphicStatesKeys.length; i < ii; i++) {\n            key = graphicStatesKeys[i];\n\n            var graphicState = graphicStates.get(key);\n            var bm = graphicState.get('BM');\n            if (isName(bm) && bm.name !== 'Normal') {\n              return true;\n            }\n          }\n        }\n        // Descend into the XObjects to look for more resources and blend modes.\n        var xObjects = node.get('XObject');\n        if (!isDict(xObjects)) {\n          continue;\n        }\n        var xObjectsKeys = xObjects.getKeys();\n        for (i = 0, ii = xObjectsKeys.length; i < ii; i++) {\n          key = xObjectsKeys[i];\n\n          var xObject = xObjects.getRaw(key);\n          if (isRef(xObject)) {\n            if (processed[xObject.toString()]) {\n              // The XObject has already been processed, and by avoiding a\n              // redundant `xref.fetch` we can *significantly* reduce the load\n              // time for badly generated PDF files (fixes issue6961.pdf).\n              continue;\n            }\n            xObject = xref.fetch(xObject);\n          }\n          if (!isStream(xObject)) {\n            continue;\n          }\n          if (xObject.dict.objId) {\n            if (processed[xObject.dict.objId]) {\n              // stream has objId and is processed already\n              continue;\n            }\n            processed[xObject.dict.objId] = true;\n          }\n          var xResources = xObject.dict.get('Resources');\n          // Checking objId to detect an infinite loop.\n          if (isDict(xResources) &&\n              (!xResources.objId || !processed[xResources.objId])) {\n            nodes.push(xResources);\n            if (xResources.objId) {\n              processed[xResources.objId] = true;\n            }\n          }\n        }\n      }\n      return false;\n    },\n\n    buildFormXObject: function PartialEvaluator_buildFormXObject(resources,\n                                                                 xobj, smask,\n                                                                 operatorList,\n                                                                 task,\n                                                                 initialState) {\n      var dict = xobj.dict;\n      var matrix = dict.getArray('Matrix');\n      var bbox = dict.getArray('BBox');\n      var group = dict.get('Group');\n      if (group) {\n        var groupOptions = {\n          matrix,\n          bbox,\n          smask,\n          isolated: false,\n          knockout: false,\n        };\n\n        var groupSubtype = group.get('S');\n        var colorSpace = null;\n        if (isName(groupSubtype, 'Transparency')) {\n          groupOptions.isolated = (group.get('I') || false);\n          groupOptions.knockout = (group.get('K') || false);\n          if (group.has('CS')) {\n            colorSpace = ColorSpace.parse(group.get('CS'), this.xref, resources,\n                                          this.pdfFunctionFactory);\n          }\n        }\n\n        if (smask && smask.backdrop) {\n          colorSpace = colorSpace || ColorSpace.singletons.rgb;\n          smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n        }\n\n        operatorList.addOp(OPS.beginGroup, [groupOptions]);\n      }\n\n      operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]);\n\n      return this.getOperatorList({\n        stream: xobj,\n        task,\n        resources: dict.get('Resources') || resources,\n        operatorList,\n        initialState,\n      }).then(function () {\n        operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n        if (group) {\n          operatorList.addOp(OPS.endGroup, [groupOptions]);\n        }\n      });\n    },\n\n    buildPaintImageXObject({ resources, image, isInline = false, operatorList,\n                             cacheKey, imageCache,\n                             forceDisableNativeImageDecoder = false, }) {\n      var dict = image.dict;\n      var w = dict.get('Width', 'W');\n      var h = dict.get('Height', 'H');\n\n      if (!(w && isNum(w)) || !(h && isNum(h))) {\n        warn('Image dimensions are missing, or not numbers.');\n        return Promise.resolve();\n      }\n      var maxImageSize = this.options.maxImageSize;\n      if (maxImageSize !== -1 && w * h > maxImageSize) {\n        warn('Image exceeded maximum allowed size and was removed.');\n        return Promise.resolve();\n      }\n\n      var imageMask = (dict.get('ImageMask', 'IM') || false);\n      var imgData, args;\n      if (imageMask) {\n        // This depends on a tmpCanvas being filled with the\n        // current fillStyle, such that processing the pixel\n        // data can't be done here. Instead of creating a\n        // complete PDFImage, only read the information needed\n        // for later.\n\n        var width = dict.get('Width', 'W');\n        var height = dict.get('Height', 'H');\n        var bitStrideLength = (width + 7) >> 3;\n        var imgArray = image.getBytes(bitStrideLength * height,\n                                      /* forceClamped = */ true);\n        var decode = dict.getArray('Decode', 'D');\n\n        imgData = PDFImage.createMask({\n          imgArray,\n          width,\n          height,\n          imageIsFromDecodeStream: image instanceof DecodeStream,\n          inverseDecode: (!!decode && decode[0] > 0),\n        });\n        imgData.cached = true;\n        args = [imgData];\n        operatorList.addOp(OPS.paintImageMaskXObject, args);\n        if (cacheKey) {\n          imageCache[cacheKey] = {\n            fn: OPS.paintImageMaskXObject,\n            args,\n          };\n        }\n        return Promise.resolve();\n      }\n\n      var softMask = (dict.get('SMask', 'SM') || false);\n      var mask = (dict.get('Mask') || false);\n\n      var SMALL_IMAGE_DIMENSIONS = 200;\n      // Inlining small images into the queue as RGB data\n      if (isInline && !softMask && !mask && !(image instanceof JpegStream) &&\n          (w + h) < SMALL_IMAGE_DIMENSIONS) {\n        let imageObj = new PDFImage({\n          xref: this.xref,\n          res: resources,\n          image,\n          isInline,\n          pdfFunctionFactory: this.pdfFunctionFactory,\n        });\n        // We force the use of RGBA_32BPP images here, because we can't handle\n        // any other kind.\n        imgData = imageObj.createImageData(/* forceRGBA = */ true);\n        operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n        return Promise.resolve();\n      }\n\n      const nativeImageDecoderSupport = forceDisableNativeImageDecoder ?\n        NativeImageDecoding.NONE : this.options.nativeImageDecoderSupport;\n      // If there is no imageMask, create the PDFImage and a lot\n      // of image processing can be done here.\n      var objId = 'img_' + this.idFactory.createObjId();\n\n      if (nativeImageDecoderSupport !== NativeImageDecoding.NONE &&\n          !softMask && !mask && image instanceof JpegStream &&\n          NativeImageDecoder.isSupported(image, this.xref, resources,\n                                         this.pdfFunctionFactory)) {\n        // These JPEGs don't need any more processing so we can just send it.\n        return this.handler.sendWithPromise('obj', [\n          objId, this.pageIndex, 'JpegStream',\n          image.getIR(this.options.forceDataSchema)\n        ]).then(function() {\n          // Only add the dependency once we know that the native JPEG decoding\n          // succeeded, to ensure that rendering will always complete.\n          operatorList.addDependency(objId);\n          args = [objId, w, h];\n\n          operatorList.addOp(OPS.paintJpegXObject, args);\n          if (cacheKey) {\n            imageCache[cacheKey] = {\n              fn: OPS.paintJpegXObject,\n              args,\n            };\n          }\n        }, (reason) => {\n          warn('Native JPEG decoding failed -- trying to recover: ' +\n               (reason && reason.message));\n          // Try to decode the JPEG image with the built-in decoder instead.\n          return this.buildPaintImageXObject({\n            resources,\n            image,\n            isInline,\n            operatorList,\n            cacheKey,\n            imageCache,\n            forceDisableNativeImageDecoder: true,\n          });\n        });\n      }\n\n      // Creates native image decoder only if a JPEG image or mask is present.\n      var nativeImageDecoder = null;\n      if (nativeImageDecoderSupport === NativeImageDecoding.DECODE &&\n          (image instanceof JpegStream || mask instanceof JpegStream ||\n           softMask instanceof JpegStream)) {\n        nativeImageDecoder = new NativeImageDecoder({\n          xref: this.xref,\n          resources,\n          handler: this.handler,\n          forceDataSchema: this.options.forceDataSchema,\n          pdfFunctionFactory: this.pdfFunctionFactory,\n        });\n      }\n\n      // Ensure that the dependency is added before the image is decoded.\n      operatorList.addDependency(objId);\n      args = [objId, w, h];\n\n      PDFImage.buildImage({\n        handler: this.handler,\n        xref: this.xref,\n        res: resources,\n        image,\n        isInline,\n        nativeDecoder: nativeImageDecoder,\n        pdfFunctionFactory: this.pdfFunctionFactory,\n      }).then((imageObj) => {\n        var imgData = imageObj.createImageData(/* forceRGBA = */ false);\n        this.handler.send('obj', [objId, this.pageIndex, 'Image', imgData],\n          [imgData.data.buffer]);\n      }).catch((reason) => {\n        warn('Unable to decode image: ' + reason);\n        this.handler.send('obj', [objId, this.pageIndex, 'Image', null]);\n      });\n\n      operatorList.addOp(OPS.paintImageXObject, args);\n      if (cacheKey) {\n        imageCache[cacheKey] = {\n          fn: OPS.paintImageXObject,\n          args,\n        };\n      }\n      return Promise.resolve();\n    },\n\n    handleSMask: function PartialEvaluator_handleSmask(smask, resources,\n                                                       operatorList, task,\n                                                       stateManager) {\n      var smaskContent = smask.get('G');\n      var smaskOptions = {\n        subtype: smask.get('S').name,\n        backdrop: smask.get('BC'),\n      };\n\n      // The SMask might have a alpha/luminosity value transfer function --\n      // we will build a map of integer values in range 0..255 to be fast.\n      var transferObj = smask.get('TR');\n      if (isPDFFunction(transferObj)) {\n        let transferFn = this.pdfFunctionFactory.create(transferObj);\n        var transferMap = new Uint8Array(256);\n        var tmp = new Float32Array(1);\n        for (var i = 0; i < 256; i++) {\n          tmp[0] = i / 255;\n          transferFn(tmp, 0, tmp, 0);\n          transferMap[i] = (tmp[0] * 255) | 0;\n        }\n        smaskOptions.transferMap = transferMap;\n      }\n\n      return this.buildFormXObject(resources, smaskContent, smaskOptions,\n                                   operatorList, task,\n                                   stateManager.state.clone());\n    },\n\n    handleTilingType(fn, args, resources, pattern, patternDict, operatorList,\n                     task) {\n      // Create an IR of the pattern code.\n      let tilingOpList = new OperatorList();\n      // Merge the available resources, to prevent issues when the patternDict\n      // is missing some /Resources entries (fixes issue6541.pdf).\n      let resourcesArray = [patternDict.get('Resources'), resources];\n      let patternResources = Dict.merge(this.xref, resourcesArray);\n\n      return this.getOperatorList({\n        stream: pattern,\n        task,\n        resources: patternResources,\n        operatorList: tilingOpList,\n      }).then(function() {\n        return getTilingPatternIR({\n          fnArray: tilingOpList.fnArray,\n          argsArray: tilingOpList.argsArray,\n        }, patternDict, args);\n      }).then(function(tilingPatternIR) {\n        // Add the dependencies to the parent operator list so they are\n        // resolved before the sub operator list is executed synchronously.\n        operatorList.addDependencies(tilingOpList.dependencies);\n        operatorList.addOp(fn, tilingPatternIR);\n      }, (reason) => {\n        if (this.options.ignoreErrors) {\n          // Error(s) in the TilingPattern -- sending unsupported feature\n          // notification and allow rendering to continue.\n          this.handler.send('UnsupportedFeature',\n                            { featureId: UNSUPPORTED_FEATURES.unknown, });\n          warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    handleSetFont:\n        function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef,\n                                                operatorList, task, state) {\n      // TODO(mack): Not needed?\n      var fontName;\n      if (fontArgs) {\n        fontArgs = fontArgs.slice();\n        fontName = fontArgs[0].name;\n      }\n\n      return this.loadFont(fontName, fontRef, resources).then((translated) => {\n        if (!translated.font.isType3Font) {\n          return translated;\n        }\n        return translated.loadType3Data(this, resources, operatorList, task).\n          then(function () {\n          return translated;\n        }).catch((reason) => {\n          // Error in the font data -- sending unsupported feature notification.\n          this.handler.send('UnsupportedFeature',\n                            { featureId: UNSUPPORTED_FEATURES.font, });\n          return new TranslatedFont('g_font_error',\n            new ErrorFont('Type3 font load error: ' + reason), translated.font);\n        });\n      }).then((translated) => {\n        state.font = translated.font;\n        translated.send(this.handler);\n        return translated.loadedName;\n      });\n    },\n\n    handleText: function PartialEvaluator_handleText(chars, state) {\n      var font = state.font;\n      var glyphs = font.charsToGlyphs(chars);\n      var isAddToPathSet = !!(state.textRenderingMode &\n                              TextRenderingMode.ADD_TO_PATH_FLAG);\n      if (font.data && (isAddToPathSet || this.options.disableFontFace ||\n                        state.fillColorSpace.name === 'Pattern')) {\n        var buildPath = (fontChar) => {\n          if (!font.renderer.hasBuiltPath(fontChar)) {\n            var path = font.renderer.getPathJs(fontChar);\n            this.handler.send('commonobj', [\n              font.loadedName + '_path_' + fontChar,\n              'FontPath',\n              path\n            ]);\n          }\n        };\n\n        for (var i = 0, ii = glyphs.length; i < ii; i++) {\n          var glyph = glyphs[i];\n          buildPath(glyph.fontChar);\n\n          // If the glyph has an accent we need to build a path for its\n          // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n          var accent = glyph.accent;\n          if (accent && accent.fontChar) {\n            buildPath(accent.fontChar);\n          }\n        }\n      }\n\n      return glyphs;\n    },\n\n    setGState: function PartialEvaluator_setGState(resources, gState,\n                                                   operatorList, task,\n                                                   stateManager) {\n      // This array holds the converted/processed state data.\n      var gStateObj = [];\n      var gStateKeys = gState.getKeys();\n      var promise = Promise.resolve();\n      for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n        let key = gStateKeys[i];\n        let value = gState.get(key);\n        switch (key) {\n          case 'Type':\n            break;\n          case 'LW':\n          case 'LC':\n          case 'LJ':\n          case 'ML':\n          case 'D':\n          case 'RI':\n          case 'FL':\n          case 'CA':\n          case 'ca':\n            gStateObj.push([key, value]);\n            break;\n          case 'Font':\n            promise = promise.then(() => {\n              return this.handleSetFont(resources, null, value[0], operatorList,\n                                        task, stateManager.state).\n                then(function (loadedName) {\n                  operatorList.addDependency(loadedName);\n                  gStateObj.push([key, [loadedName, value[1]]]);\n                });\n            });\n            break;\n          case 'BM':\n            gStateObj.push([key, normalizeBlendMode(value)]);\n            break;\n          case 'SMask':\n            if (isName(value, 'None')) {\n              gStateObj.push([key, false]);\n              break;\n            }\n            if (isDict(value)) {\n              promise = promise.then(() => {\n                return this.handleSMask(value, resources, operatorList,\n                                        task, stateManager);\n              });\n              gStateObj.push([key, true]);\n            } else {\n              warn('Unsupported SMask type');\n            }\n\n            break;\n          // Only generate info log messages for the following since\n          // they are unlikely to have a big impact on the rendering.\n          case 'OP':\n          case 'op':\n          case 'OPM':\n          case 'BG':\n          case 'BG2':\n          case 'UCR':\n          case 'UCR2':\n          case 'TR':\n          case 'TR2':\n          case 'HT':\n          case 'SM':\n          case 'SA':\n          case 'AIS':\n          case 'TK':\n            // TODO implement these operators.\n            info('graphic state operator ' + key);\n            break;\n          default:\n            info('Unknown graphic state operator ' + key);\n            break;\n        }\n      }\n      return promise.then(function () {\n        if (gStateObj.length > 0) {\n          operatorList.addOp(OPS.setGState, [gStateObj]);\n        }\n      });\n    },\n\n    loadFont: function PartialEvaluator_loadFont(fontName, font, resources) {\n      function errorFont() {\n        return Promise.resolve(new TranslatedFont('g_font_error',\n          new ErrorFont('Font ' + fontName + ' is not available'), font));\n      }\n\n      var fontRef, xref = this.xref;\n      if (font) { // Loading by ref.\n        if (!isRef(font)) {\n          throw new Error('The \"font\" object should be a reference.');\n        }\n        fontRef = font;\n      } else { // Loading by name.\n        var fontRes = resources.get('Font');\n        if (fontRes) {\n          fontRef = fontRes.getRaw(fontName);\n        } else {\n          warn('fontRes not available');\n          return errorFont();\n        }\n      }\n      if (!fontRef) {\n        warn('fontRef not available');\n        return errorFont();\n      }\n\n      if (this.fontCache.has(fontRef)) {\n        return this.fontCache.get(fontRef);\n      }\n\n      font = xref.fetchIfRef(fontRef);\n      if (!isDict(font)) {\n        return errorFont();\n      }\n\n      // We are holding `font.translated` references just for `fontRef`s that\n      // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n      if (font.translated) {\n        return font.translated;\n      }\n\n      var fontCapability = createPromiseCapability();\n\n      var preEvaluatedFont = this.preEvaluateFont(font);\n      var descriptor = preEvaluatedFont.descriptor;\n\n      var fontRefIsRef = isRef(fontRef), fontID;\n      if (fontRefIsRef) {\n        fontID = fontRef.toString();\n      }\n\n      if (isDict(descriptor)) {\n        if (!descriptor.fontAliases) {\n          descriptor.fontAliases = Object.create(null);\n        }\n\n        var fontAliases = descriptor.fontAliases;\n        var hash = preEvaluatedFont.hash;\n        if (fontAliases[hash]) {\n          var aliasFontRef = fontAliases[hash].aliasRef;\n          if (fontRefIsRef && aliasFontRef &&\n              this.fontCache.has(aliasFontRef)) {\n            this.fontCache.putAlias(fontRef, aliasFontRef);\n            return this.fontCache.get(fontRef);\n          }\n        } else {\n          fontAliases[hash] = {\n            fontID: Font.getFontID(),\n          };\n        }\n\n        if (fontRefIsRef) {\n          fontAliases[hash].aliasRef = fontRef;\n        }\n        fontID = fontAliases[hash].fontID;\n      }\n\n      // Workaround for bad PDF generators that reference fonts incorrectly,\n      // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n      // In this case we should not put the font into `this.fontCache` (which is\n      // a `RefSetCache`), since it's not meaningful to use a `Dict` as a key.\n      //\n      // However, if we don't cache the font it's not possible to remove it\n      // when `cleanup` is triggered from the API, which causes issues on\n      // subsequent rendering operations (see issue7403.pdf).\n      // A simple workaround would be to just not hold `font.translated`\n      // references in this case, but this would force us to unnecessarily load\n      // the same fonts over and over.\n      //\n      // Instead, we cheat a bit by attempting to use a modified `fontID` as a\n      // key in `this.fontCache`, to allow the font to be cached.\n      // NOTE: This works because `RefSetCache` calls `toString()` on provided\n      //       keys. Also, since `fontRef` is used when getting cached fonts,\n      //       we'll not accidentally match fonts cached with the `fontID`.\n      if (fontRefIsRef) {\n        this.fontCache.put(fontRef, fontCapability.promise);\n      } else {\n        if (!fontID) {\n          fontID = this.idFactory.createObjId();\n        }\n        this.fontCache.put('id_' + fontID, fontCapability.promise);\n      }\n      assert(fontID, 'The \"fontID\" must be defined.');\n\n      // Keep track of each font we translated so the caller can\n      // load them asynchronously before calling display on a page.\n      font.loadedName = 'g_' + this.pdfManager.docId + '_f' + fontID;\n\n      font.translated = fontCapability.promise;\n\n      // TODO move promises into translate font\n      var translatedPromise;\n      try {\n        translatedPromise = this.translateFont(preEvaluatedFont);\n      } catch (e) {\n        translatedPromise = Promise.reject(e);\n      }\n\n      translatedPromise.then(function (translatedFont) {\n        if (translatedFont.fontType !== undefined) {\n          var xrefFontStats = xref.stats.fontTypes;\n          xrefFontStats[translatedFont.fontType] = true;\n        }\n\n        fontCapability.resolve(new TranslatedFont(font.loadedName,\n          translatedFont, font));\n      }).catch((reason) => {\n        // TODO fontCapability.reject?\n        // Error in the font data -- sending unsupported feature notification.\n        this.handler.send('UnsupportedFeature',\n                          { featureId: UNSUPPORTED_FEATURES.font, });\n\n        try {\n          // error, but it's still nice to have font type reported\n          var descriptor = preEvaluatedFont.descriptor;\n          var fontFile3 = descriptor && descriptor.get('FontFile3');\n          var subtype = fontFile3 && fontFile3.get('Subtype');\n          var fontType = getFontType(preEvaluatedFont.type,\n                                     subtype && subtype.name);\n          var xrefFontStats = xref.stats.fontTypes;\n          xrefFontStats[fontType] = true;\n        } catch (ex) { }\n\n        fontCapability.resolve(new TranslatedFont(font.loadedName,\n          new ErrorFont(reason instanceof Error ? reason.message : reason),\n          font));\n      });\n      return fontCapability.promise;\n    },\n\n    buildPath: function PartialEvaluator_buildPath(operatorList, fn, args) {\n      var lastIndex = operatorList.length - 1;\n      if (!args) {\n        args = [];\n      }\n      if (lastIndex < 0 ||\n          operatorList.fnArray[lastIndex] !== OPS.constructPath) {\n        operatorList.addOp(OPS.constructPath, [[fn], args]);\n      } else {\n        var opArgs = operatorList.argsArray[lastIndex];\n        opArgs[0].push(fn);\n        Array.prototype.push.apply(opArgs[1], args);\n      }\n    },\n\n    handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args,\n                                                         cs, patterns,\n                                                         resources, task) {\n      // compile tiling patterns\n      var patternName = args[args.length - 1];\n      // SCN/scn applies patterns along with normal colors\n      var pattern;\n      if (isName(patternName) &&\n          (pattern = patterns.get(patternName.name))) {\n        var dict = (isStream(pattern) ? pattern.dict : pattern);\n        var typeNum = dict.get('PatternType');\n\n        if (typeNum === TILING_PATTERN) {\n          var color = cs.base ? cs.base.getRgb(args, 0) : null;\n          return this.handleTilingType(fn, color, resources, pattern,\n                                       dict, operatorList, task);\n        } else if (typeNum === SHADING_PATTERN) {\n          var shading = dict.get('Shading');\n          var matrix = dict.getArray('Matrix');\n          pattern = Pattern.parseShading(shading, matrix, this.xref, resources,\n                                         this.handler, this.pdfFunctionFactory);\n          operatorList.addOp(fn, pattern.getIR());\n          return Promise.resolve();\n        }\n        return Promise.reject(new Error('Unknown PatternType: ' + typeNum));\n      }\n      // TODO shall we fail here?\n      operatorList.addOp(fn, args);\n      return Promise.resolve();\n    },\n\n    getOperatorList({ stream, task, resources, operatorList,\n                      initialState = null, }) {\n      // Ensure that `resources`/`initialState` is correctly initialized,\n      // even if the provided parameter is e.g. `null`.\n      resources = resources || Dict.empty;\n      initialState = initialState || new EvalState();\n\n      if (!operatorList) {\n        throw new Error('getOperatorList: missing \"operatorList\" parameter');\n      }\n\n      var self = this;\n      var xref = this.xref;\n      var imageCache = Object.create(null);\n\n      var xobjs = (resources.get('XObject') || Dict.empty);\n      var patterns = (resources.get('Pattern') || Dict.empty);\n      var stateManager = new StateManager(initialState);\n      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n      var timeSlotManager = new TimeSlotManager();\n\n      function closePendingRestoreOPS(argument) {\n        for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n          operatorList.addOp(OPS.restore, []);\n        }\n      }\n\n      return new Promise(function promiseBody(resolve, reject) {\n        var next = function (promise) {\n          promise.then(function () {\n            try {\n              promiseBody(resolve, reject);\n            } catch (ex) {\n              reject(ex);\n            }\n          }, reject);\n        };\n        task.ensureNotTerminated();\n        timeSlotManager.reset();\n        var stop, operation = {}, i, ii, cs;\n        while (!(stop = timeSlotManager.check())) {\n          // The arguments parsed by read() are used beyond this loop, so we\n          // cannot reuse the same array on each iteration. Therefore we pass\n          // in |null| as the initial value (see the comment on\n          // EvaluatorPreprocessor_read() for why).\n          operation.args = null;\n          if (!(preprocessor.read(operation))) {\n            break;\n          }\n          var args = operation.args;\n          var fn = operation.fn;\n\n          switch (fn | 0) {\n            case OPS.paintXObject:\n              // eagerly compile XForm objects\n              var name = args[0].name;\n              if (name && imageCache[name] !== undefined) {\n                operatorList.addOp(imageCache[name].fn, imageCache[name].args);\n                args = null;\n                continue;\n              }\n\n              next(new Promise(function(resolveXObject, rejectXObject) {\n                if (!name) {\n                  throw new FormatError('XObject must be referred to by name.');\n                }\n\n                let xobj = xobjs.get(name);\n                if (!xobj) {\n                  operatorList.addOp(fn, args);\n                  resolveXObject();\n                  return;\n                }\n                if (!isStream(xobj)) {\n                  throw new FormatError('XObject should be a stream');\n                }\n\n                let type = xobj.dict.get('Subtype');\n                if (!isName(type)) {\n                  throw new FormatError('XObject should have a Name subtype');\n                }\n\n                if (type.name === 'Form') {\n                  stateManager.save();\n                  self.buildFormXObject(resources, xobj, null, operatorList,\n                                        task, stateManager.state.clone()).\n                    then(function() {\n                      stateManager.restore();\n                      resolveXObject();\n                    }, rejectXObject);\n                  return;\n                } else if (type.name === 'Image') {\n                  self.buildPaintImageXObject({\n                    resources,\n                    image: xobj,\n                    operatorList,\n                    cacheKey: name,\n                    imageCache,\n                  }).then(resolveXObject, rejectXObject);\n                  return;\n                } else if (type.name === 'PS') {\n                  // PostScript XObjects are unused when viewing documents.\n                  // See section 4.7.1 of Adobe's PDF reference.\n                  info('Ignored XObject subtype PS');\n                } else {\n                  throw new FormatError(\n                    `Unhandled XObject subtype ${type.name}`);\n                }\n                resolveXObject();\n              }).catch(function(reason) {\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- sending unsupported feature\n                  // notification and allow rendering to continue.\n                  self.handler.send('UnsupportedFeature',\n                    { featureId: UNSUPPORTED_FEATURES.unknown, });\n                  warn(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              }));\n              return;\n            case OPS.setFont:\n              var fontSize = args[1];\n              // eagerly collect all fonts\n              next(self.handleSetFont(resources, args, null, operatorList,\n                                      task, stateManager.state).\n                then(function (loadedName) {\n                  operatorList.addDependency(loadedName);\n                  operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n                }));\n              return;\n            case OPS.endInlineImage:\n              var cacheKey = args[0].cacheKey;\n              if (cacheKey) {\n                var cacheEntry = imageCache[cacheKey];\n                if (cacheEntry !== undefined) {\n                  operatorList.addOp(cacheEntry.fn, cacheEntry.args);\n                  args = null;\n                  continue;\n                }\n              }\n              next(self.buildPaintImageXObject({\n                resources,\n                image: args[0],\n                isInline: true,\n                operatorList,\n                cacheKey,\n                imageCache,\n              }));\n              return;\n            case OPS.showText:\n              args[0] = self.handleText(args[0], stateManager.state);\n              break;\n            case OPS.showSpacedText:\n              var arr = args[0];\n              var combinedGlyphs = [];\n              var arrLength = arr.length;\n              var state = stateManager.state;\n              for (i = 0; i < arrLength; ++i) {\n                var arrItem = arr[i];\n                if (isString(arrItem)) {\n                  Array.prototype.push.apply(combinedGlyphs,\n                    self.handleText(arrItem, state));\n                } else if (isNum(arrItem)) {\n                  combinedGlyphs.push(arrItem);\n                }\n              }\n              args[0] = combinedGlyphs;\n              fn = OPS.showText;\n              break;\n            case OPS.nextLineShowText:\n              operatorList.addOp(OPS.nextLine);\n              args[0] = self.handleText(args[0], stateManager.state);\n              fn = OPS.showText;\n              break;\n            case OPS.nextLineSetSpacingShowText:\n              operatorList.addOp(OPS.nextLine);\n              operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n              operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n              args[0] = self.handleText(args[0], stateManager.state);\n              fn = OPS.showText;\n              break;\n            case OPS.setTextRenderingMode:\n              stateManager.state.textRenderingMode = args[0];\n              break;\n\n            case OPS.setFillColorSpace:\n              stateManager.state.fillColorSpace =\n                ColorSpace.parse(args[0], xref, resources,\n                                 self.pdfFunctionFactory);\n              continue;\n            case OPS.setStrokeColorSpace:\n              stateManager.state.strokeColorSpace =\n                ColorSpace.parse(args[0], xref, resources,\n                                 self.pdfFunctionFactory);\n              continue;\n            case OPS.setFillColor:\n              cs = stateManager.state.fillColorSpace;\n              args = cs.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeColor:\n              cs = stateManager.state.strokeColorSpace;\n              args = cs.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillGray:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n              args = ColorSpace.singletons.gray.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeGray:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n              args = ColorSpace.singletons.gray.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillCMYKColor:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n              args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeCMYKColor:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n              args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n            case OPS.setFillRGBColor:\n              stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n              args = ColorSpace.singletons.rgb.getRgb(args, 0);\n              break;\n            case OPS.setStrokeRGBColor:\n              stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n              args = ColorSpace.singletons.rgb.getRgb(args, 0);\n              break;\n            case OPS.setFillColorN:\n              cs = stateManager.state.fillColorSpace;\n              if (cs.name === 'Pattern') {\n                next(self.handleColorN(operatorList, OPS.setFillColorN, args,\n                                       cs, patterns, resources, task));\n                return;\n              }\n              args = cs.getRgb(args, 0);\n              fn = OPS.setFillRGBColor;\n              break;\n            case OPS.setStrokeColorN:\n              cs = stateManager.state.strokeColorSpace;\n              if (cs.name === 'Pattern') {\n                next(self.handleColorN(operatorList, OPS.setStrokeColorN, args,\n                                       cs, patterns, resources, task));\n                return;\n              }\n              args = cs.getRgb(args, 0);\n              fn = OPS.setStrokeRGBColor;\n              break;\n\n            case OPS.shadingFill:\n              var shadingRes = resources.get('Shading');\n              if (!shadingRes) {\n                throw new FormatError('No shading resource found');\n              }\n\n              var shading = shadingRes.get(args[0].name);\n              if (!shading) {\n                throw new FormatError('No shading object found');\n              }\n\n              var shadingFill = Pattern.parseShading(shading, null, xref,\n                resources, self.handler, self.pdfFunctionFactory);\n              var patternIR = shadingFill.getIR();\n              args = [patternIR];\n              fn = OPS.shadingFill;\n              break;\n            case OPS.setGState:\n              var dictName = args[0];\n              var extGState = resources.get('ExtGState');\n\n              if (!isDict(extGState) || !extGState.has(dictName.name)) {\n                break;\n              }\n\n              var gState = extGState.get(dictName.name);\n              next(self.setGState(resources, gState, operatorList, task,\n                                  stateManager));\n              return;\n            case OPS.moveTo:\n            case OPS.lineTo:\n            case OPS.curveTo:\n            case OPS.curveTo2:\n            case OPS.curveTo3:\n            case OPS.closePath:\n              self.buildPath(operatorList, fn, args);\n              continue;\n            case OPS.rectangle:\n              self.buildPath(operatorList, fn, args);\n              continue;\n            case OPS.markPoint:\n            case OPS.markPointProps:\n            case OPS.beginMarkedContent:\n            case OPS.beginMarkedContentProps:\n            case OPS.endMarkedContent:\n            case OPS.beginCompat:\n            case OPS.endCompat:\n              // Ignore operators where the corresponding handlers are known to\n              // be no-op in CanvasGraphics (display/canvas.js). This prevents\n              // serialization errors and is also a bit more efficient.\n              // We could also try to serialize all objects in a general way,\n              // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n              // but doing so is meaningless without knowing the semantics.\n              continue;\n            default:\n              // Note: Ignore the operator if it has `Dict` arguments, since\n              // those are non-serializable, otherwise postMessage will throw\n              // \"An object could not be cloned.\".\n              if (args !== null) {\n                for (i = 0, ii = args.length; i < ii; i++) {\n                  if (args[i] instanceof Dict) {\n                    break;\n                  }\n                }\n                if (i < ii) {\n                  warn('getOperatorList - ignoring operator: ' + fn);\n                  continue;\n                }\n              }\n          }\n          operatorList.addOp(fn, args);\n        }\n        if (stop) {\n          next(deferred);\n          return;\n        }\n        // Some PDFs don't close all restores inside object/form.\n        // Closing those for them.\n        closePendingRestoreOPS();\n        resolve();\n      }).catch((reason) => {\n        if (this.options.ignoreErrors) {\n          // Error(s) in the OperatorList -- sending unsupported feature\n          // notification and allow rendering to continue.\n          this.handler.send('UnsupportedFeature',\n                            { featureId: UNSUPPORTED_FEATURES.unknown, });\n          warn(`getOperatorList - ignoring errors during \"${task.name}\" ` +\n               `task: \"${reason}\".`);\n\n          closePendingRestoreOPS();\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    getTextContent({ stream, task, resources, stateManager = null,\n                     normalizeWhitespace = false, combineTextItems = false,\n                     sink, seenStyles = Object.create(null), }) {\n      // Ensure that `resources`/`stateManager` is correctly initialized,\n      // even if the provided parameter is e.g. `null`.\n      resources = resources || Dict.empty;\n      stateManager = stateManager || new StateManager(new TextState());\n\n      var WhitespaceRegexp = /\\s/g;\n\n      var textContent = {\n        items: [],\n        styles: Object.create(null),\n      };\n      var textContentItem = {\n        initialized: false,\n        str: [],\n        width: 0,\n        height: 0,\n        vertical: false,\n        lastAdvanceWidth: 0,\n        lastAdvanceHeight: 0,\n        textAdvanceScale: 0,\n        spaceWidth: 0,\n        fakeSpaceMin: Infinity,\n        fakeMultiSpaceMin: Infinity,\n        fakeMultiSpaceMax: -0,\n        textRunBreakAllowed: false,\n        transform: null,\n        fontName: null,\n      };\n      var SPACE_FACTOR = 0.3;\n      var MULTI_SPACE_FACTOR = 1.5;\n      var MULTI_SPACE_FACTOR_MAX = 4;\n\n      var self = this;\n      var xref = this.xref;\n\n      // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n      var xobjs = null;\n      var skipEmptyXObjs = Object.create(null);\n\n      var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n      var textState;\n\n      function ensureTextContentItem() {\n        if (textContentItem.initialized) {\n          return textContentItem;\n        }\n        var font = textState.font;\n        if (!(font.loadedName in seenStyles)) {\n          seenStyles[font.loadedName] = true;\n          textContent.styles[font.loadedName] = {\n            fontFamily: font.fallbackName,\n            ascent: font.ascent,\n            descent: font.descent,\n            vertical: font.vertical,\n          };\n        }\n        textContentItem.fontName = font.loadedName;\n\n        // 9.4.4 Text Space Details\n        var tsm = [textState.fontSize * textState.textHScale, 0,\n                   0, textState.fontSize,\n                   0, textState.textRise];\n\n        if (font.isType3Font &&\n            textState.fontMatrix !== FONT_IDENTITY_MATRIX &&\n            textState.fontSize === 1) {\n          var glyphHeight = font.bbox[3] - font.bbox[1];\n          if (glyphHeight > 0) {\n            glyphHeight = glyphHeight * textState.fontMatrix[3];\n            tsm[3] *= glyphHeight;\n          }\n        }\n\n        var trm = Util.transform(textState.ctm,\n                                 Util.transform(textState.textMatrix, tsm));\n        textContentItem.transform = trm;\n        if (!font.vertical) {\n          textContentItem.width = 0;\n          textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n          textContentItem.vertical = false;\n        } else {\n          textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n          textContentItem.height = 0;\n          textContentItem.vertical = true;\n        }\n\n        var a = textState.textLineMatrix[0];\n        var b = textState.textLineMatrix[1];\n        var scaleLineX = Math.sqrt(a * a + b * b);\n        a = textState.ctm[0];\n        b = textState.ctm[1];\n        var scaleCtmX = Math.sqrt(a * a + b * b);\n        textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n        textContentItem.lastAdvanceWidth = 0;\n        textContentItem.lastAdvanceHeight = 0;\n\n        var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;\n        if (spaceWidth) {\n          textContentItem.spaceWidth = spaceWidth;\n          textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n          textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n          textContentItem.fakeMultiSpaceMax =\n            spaceWidth * MULTI_SPACE_FACTOR_MAX;\n          // It's okay for monospace fonts to fake as much space as needed.\n          textContentItem.textRunBreakAllowed = !font.isMonospace;\n        } else {\n          textContentItem.spaceWidth = 0;\n          textContentItem.fakeSpaceMin = Infinity;\n          textContentItem.fakeMultiSpaceMin = Infinity;\n          textContentItem.fakeMultiSpaceMax = 0;\n          textContentItem.textRunBreakAllowed = false;\n        }\n\n        textContentItem.initialized = true;\n        return textContentItem;\n      }\n\n      function replaceWhitespace(str) {\n        // Replaces all whitespaces with standard spaces (0x20), to avoid\n        // alignment issues between the textLayer and the canvas if the text\n        // contains e.g. tabs (fixes issue6612.pdf).\n        var i = 0, ii = str.length, code;\n        while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7F) {\n          i++;\n        }\n        return (i < ii ? str.replace(WhitespaceRegexp, ' ') : str);\n      }\n\n      function runBidiTransform(textChunk) {\n        var str = textChunk.str.join('');\n        var bidiResult = bidi(str, -1, textChunk.vertical);\n        return {\n          str: (normalizeWhitespace ? replaceWhitespace(bidiResult.str) :\n                                      bidiResult.str),\n          dir: bidiResult.dir,\n          width: textChunk.width,\n          height: textChunk.height,\n          transform: textChunk.transform,\n          fontName: textChunk.fontName,\n        };\n      }\n\n      function handleSetFont(fontName, fontRef) {\n        return self.loadFont(fontName, fontRef, resources).\n          then(function (translated) {\n            textState.font = translated.font;\n            textState.fontMatrix = translated.font.fontMatrix ||\n              FONT_IDENTITY_MATRIX;\n          });\n      }\n\n      function buildTextContentItem(chars) {\n        var font = textState.font;\n        var textChunk = ensureTextContentItem();\n        var width = 0;\n        var height = 0;\n        var glyphs = font.charsToGlyphs(chars);\n        for (var i = 0; i < glyphs.length; i++) {\n          var glyph = glyphs[i];\n          var glyphWidth = null;\n          if (font.vertical && glyph.vmetric) {\n            glyphWidth = glyph.vmetric[0];\n          } else {\n            glyphWidth = glyph.width;\n          }\n\n          var glyphUnicode = glyph.unicode;\n          var NormalizedUnicodes = getNormalizedUnicodes();\n          if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n            glyphUnicode = NormalizedUnicodes[glyphUnicode];\n          }\n          glyphUnicode = reverseIfRtl(glyphUnicode);\n\n          var charSpacing = textState.charSpacing;\n          if (glyph.isSpace) {\n            var wordSpacing = textState.wordSpacing;\n            charSpacing += wordSpacing;\n            if (wordSpacing > 0) {\n              addFakeSpaces(wordSpacing, textChunk.str);\n            }\n          }\n\n          var tx = 0;\n          var ty = 0;\n          if (!font.vertical) {\n            var w0 = glyphWidth * textState.fontMatrix[0];\n            tx = (w0 * textState.fontSize + charSpacing) *\n                 textState.textHScale;\n            width += tx;\n          } else {\n            var w1 = glyphWidth * textState.fontMatrix[0];\n            ty = w1 * textState.fontSize + charSpacing;\n            height += ty;\n          }\n          textState.translateTextMatrix(tx, ty);\n\n          textChunk.str.push(glyphUnicode);\n        }\n\n        if (!font.vertical) {\n          textChunk.lastAdvanceWidth = width;\n          textChunk.width += width;\n        } else {\n          textChunk.lastAdvanceHeight = height;\n          textChunk.height += Math.abs(height);\n        }\n\n        return textChunk;\n      }\n\n      function addFakeSpaces(width, strBuf) {\n        if (width < textContentItem.fakeSpaceMin) {\n          return;\n        }\n        if (width < textContentItem.fakeMultiSpaceMin) {\n          strBuf.push(' ');\n          return;\n        }\n        var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n        while (fakeSpaces-- > 0) {\n          strBuf.push(' ');\n        }\n      }\n\n      function flushTextContentItem() {\n        if (!textContentItem.initialized) {\n          return;\n        }\n\n        // Do final text scaling\n        textContentItem.width *= textContentItem.textAdvanceScale;\n        textContentItem.height *= textContentItem.textAdvanceScale;\n        textContent.items.push(runBidiTransform(textContentItem));\n\n        textContentItem.initialized = false;\n        textContentItem.str.length = 0;\n      }\n\n      function enqueueChunk() {\n        let length = textContent.items.length;\n        if (length > 0) {\n          sink.enqueue(textContent, length);\n          textContent.items = [];\n          textContent.styles = Object.create(null);\n        }\n      }\n\n      var timeSlotManager = new TimeSlotManager();\n\n      return new Promise(function promiseBody(resolve, reject) {\n        let next = function (promise) {\n          enqueueChunk();\n          Promise.all([promise, sink.ready]).then(function () {\n            try {\n              promiseBody(resolve, reject);\n            } catch (ex) {\n              reject(ex);\n            }\n          }, reject);\n        };\n        task.ensureNotTerminated();\n        timeSlotManager.reset();\n        var stop, operation = {}, args = [];\n        while (!(stop = timeSlotManager.check())) {\n          // The arguments parsed by read() are not used beyond this loop, so\n          // we can reuse the same array on every iteration, thus avoiding\n          // unnecessary allocations.\n          args.length = 0;\n          operation.args = args;\n          if (!(preprocessor.read(operation))) {\n            break;\n          }\n          textState = stateManager.state;\n          var fn = operation.fn;\n          args = operation.args;\n          var advance, diff;\n\n          switch (fn | 0) {\n            case OPS.setFont:\n              // Optimization to ignore multiple identical Tf commands.\n              var fontNameArg = args[0].name, fontSizeArg = args[1];\n              if (textState.font && fontNameArg === textState.fontName &&\n                  fontSizeArg === textState.fontSize) {\n                break;\n              }\n\n              flushTextContentItem();\n              textState.fontName = fontNameArg;\n              textState.fontSize = fontSizeArg;\n              next(handleSetFont(fontNameArg, null));\n              return;\n            case OPS.setTextRise:\n              flushTextContentItem();\n              textState.textRise = args[0];\n              break;\n            case OPS.setHScale:\n              flushTextContentItem();\n              textState.textHScale = args[0] / 100;\n              break;\n            case OPS.setLeading:\n              flushTextContentItem();\n              textState.leading = args[0];\n              break;\n            case OPS.moveText:\n              // Optimization to treat same line movement as advance\n              var isSameTextLine = !textState.font ? false :\n                ((textState.font.vertical ? args[0] : args[1]) === 0);\n              advance = args[0] - args[1];\n              if (combineTextItems &&\n                  isSameTextLine && textContentItem.initialized &&\n                  advance > 0 &&\n                  advance <= textContentItem.fakeMultiSpaceMax) {\n                textState.translateTextLineMatrix(args[0], args[1]);\n                textContentItem.width +=\n                  (args[0] - textContentItem.lastAdvanceWidth);\n                textContentItem.height +=\n                  (args[1] - textContentItem.lastAdvanceHeight);\n                diff = (args[0] - textContentItem.lastAdvanceWidth) -\n                       (args[1] - textContentItem.lastAdvanceHeight);\n                addFakeSpaces(diff, textContentItem.str);\n                break;\n              }\n\n              flushTextContentItem();\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textState.textMatrix = textState.textLineMatrix.slice();\n              break;\n            case OPS.setLeadingMoveText:\n              flushTextContentItem();\n              textState.leading = -args[1];\n              textState.translateTextLineMatrix(args[0], args[1]);\n              textState.textMatrix = textState.textLineMatrix.slice();\n              break;\n            case OPS.nextLine:\n              flushTextContentItem();\n              textState.carriageReturn();\n              break;\n            case OPS.setTextMatrix:\n              // Optimization to treat same line movement as advance.\n              advance = textState.calcTextLineMatrixAdvance(\n                args[0], args[1], args[2], args[3], args[4], args[5]);\n              if (combineTextItems &&\n                  advance !== null && textContentItem.initialized &&\n                  advance.value > 0 &&\n                  advance.value <= textContentItem.fakeMultiSpaceMax) {\n                textState.translateTextLineMatrix(advance.width,\n                                                  advance.height);\n                textContentItem.width +=\n                  (advance.width - textContentItem.lastAdvanceWidth);\n                textContentItem.height +=\n                  (advance.height - textContentItem.lastAdvanceHeight);\n                diff = (advance.width - textContentItem.lastAdvanceWidth) -\n                       (advance.height - textContentItem.lastAdvanceHeight);\n                addFakeSpaces(diff, textContentItem.str);\n                break;\n              }\n\n              flushTextContentItem();\n              textState.setTextMatrix(args[0], args[1], args[2], args[3],\n                args[4], args[5]);\n              textState.setTextLineMatrix(args[0], args[1], args[2], args[3],\n                args[4], args[5]);\n              break;\n            case OPS.setCharSpacing:\n              textState.charSpacing = args[0];\n              break;\n            case OPS.setWordSpacing:\n              textState.wordSpacing = args[0];\n              break;\n            case OPS.beginText:\n              flushTextContentItem();\n              textState.textMatrix = IDENTITY_MATRIX.slice();\n              textState.textLineMatrix = IDENTITY_MATRIX.slice();\n              break;\n            case OPS.showSpacedText:\n              var items = args[0];\n              var offset;\n              for (var j = 0, jj = items.length; j < jj; j++) {\n                if (typeof items[j] === 'string') {\n                  buildTextContentItem(items[j]);\n                } else if (isNum(items[j])) {\n                  ensureTextContentItem();\n\n                  // PDF Specification 5.3.2 states:\n                  // The number is expressed in thousandths of a unit of text\n                  // space.\n                  // This amount is subtracted from the current horizontal or\n                  // vertical coordinate, depending on the writing mode.\n                  // In the default coordinate system, a positive adjustment\n                  // has the effect of moving the next glyph painted either to\n                  // the left or down by the given amount.\n                  advance = items[j] * textState.fontSize / 1000;\n                  var breakTextRun = false;\n                  if (textState.font.vertical) {\n                    offset = advance;\n                    textState.translateTextMatrix(0, offset);\n                    breakTextRun = textContentItem.textRunBreakAllowed &&\n                                   advance > textContentItem.fakeMultiSpaceMax;\n                    if (!breakTextRun) {\n                      // Value needs to be added to height to paint down.\n                      textContentItem.height += offset;\n                    }\n                  } else {\n                    advance = -advance;\n                    offset = advance * textState.textHScale;\n                    textState.translateTextMatrix(offset, 0);\n                    breakTextRun = textContentItem.textRunBreakAllowed &&\n                                   advance > textContentItem.fakeMultiSpaceMax;\n                    if (!breakTextRun) {\n                      // Value needs to be subtracted from width to paint left.\n                      textContentItem.width += offset;\n                    }\n                  }\n                  if (breakTextRun) {\n                    flushTextContentItem();\n                  } else if (advance > 0) {\n                    addFakeSpaces(advance, textContentItem.str);\n                  }\n                }\n              }\n              break;\n            case OPS.showText:\n              buildTextContentItem(args[0]);\n              break;\n            case OPS.nextLineShowText:\n              flushTextContentItem();\n              textState.carriageReturn();\n              buildTextContentItem(args[0]);\n              break;\n            case OPS.nextLineSetSpacingShowText:\n              flushTextContentItem();\n              textState.wordSpacing = args[0];\n              textState.charSpacing = args[1];\n              textState.carriageReturn();\n              buildTextContentItem(args[2]);\n              break;\n            case OPS.paintXObject:\n              flushTextContentItem();\n              if (!xobjs) {\n                xobjs = (resources.get('XObject') || Dict.empty);\n              }\n\n              var name = args[0].name;\n              if (name && skipEmptyXObjs[name] !== undefined) {\n                break;\n              }\n\n              next(new Promise(function(resolveXObject, rejectXObject) {\n                if (!name) {\n                  throw new FormatError('XObject must be referred to by name.');\n                }\n\n                let xobj = xobjs.get(name);\n                if (!xobj) {\n                  resolveXObject();\n                  return;\n                }\n                if (!isStream(xobj)) {\n                  throw new FormatError('XObject should be a stream');\n                }\n\n                let type = xobj.dict.get('Subtype');\n                if (!isName(type)) {\n                  throw new FormatError('XObject should have a Name subtype');\n                }\n\n                if (type.name !== 'Form') {\n                  skipEmptyXObjs[name] = true;\n                  resolveXObject();\n                  return;\n                }\n\n                // Use a new `StateManager` to prevent incorrect positioning of\n                // textItems *after* the Form XObject, since errors in the data\n                // can otherwise prevent `restore` operators from executing.\n                // NOTE: Only an issue when `options.ignoreErrors === true`.\n                let currentState = stateManager.state.clone();\n                let xObjStateManager = new StateManager(currentState);\n\n                let matrix = xobj.dict.getArray('Matrix');\n                if (Array.isArray(matrix) && matrix.length === 6) {\n                  xObjStateManager.transform(matrix);\n                }\n\n                // Enqueue the `textContent` chunk before parsing the /Form\n                // XObject.\n                enqueueChunk();\n                let sinkWrapper = {\n                  enqueueInvoked: false,\n\n                  enqueue(chunk, size) {\n                    this.enqueueInvoked = true;\n                    sink.enqueue(chunk, size);\n                  },\n\n                  get desiredSize() {\n                    return sink.desiredSize;\n                  },\n\n                  get ready() {\n                    return sink.ready;\n                  },\n                };\n\n                self.getTextContent({\n                  stream: xobj,\n                  task,\n                  resources: xobj.dict.get('Resources') || resources,\n                  stateManager: xObjStateManager,\n                  normalizeWhitespace,\n                  combineTextItems,\n                  sink: sinkWrapper,\n                  seenStyles,\n                }).then(function() {\n                  if (!sinkWrapper.enqueueInvoked) {\n                    skipEmptyXObjs[name] = true;\n                  }\n                  resolveXObject();\n                }, rejectXObject);\n              }).catch(function(reason) {\n                if (reason instanceof AbortException) {\n                  return;\n                }\n                if (self.options.ignoreErrors) {\n                  // Error(s) in the XObject -- allow text-extraction to\n                  // continue.\n                  warn(`getTextContent - ignoring XObject: \"${reason}\".`);\n                  return;\n                }\n                throw reason;\n              }));\n              return;\n            case OPS.setGState:\n              flushTextContentItem();\n              var dictName = args[0];\n              var extGState = resources.get('ExtGState');\n\n              if (!isDict(extGState) || !isName(dictName)) {\n                break;\n              }\n              var gState = extGState.get(dictName.name);\n              if (!isDict(gState)) {\n                break;\n              }\n              var gStateFont = gState.get('Font');\n              if (gStateFont) {\n                textState.fontName = null;\n                textState.fontSize = gStateFont[1];\n                next(handleSetFont(null, gStateFont[0]));\n                return;\n              }\n              break;\n          } // switch\n          if (textContent.items.length >= sink.desiredSize) {\n            // Wait for ready, if we reach highWaterMark.\n            stop = true;\n            break;\n          }\n        } // while\n        if (stop) {\n          next(deferred);\n          return;\n        }\n        flushTextContentItem();\n        enqueueChunk();\n        resolve();\n      }).catch((reason) => {\n        if (reason instanceof AbortException) {\n          return;\n        }\n        if (this.options.ignoreErrors) {\n          // Error(s) in the TextContent -- allow text-extraction to continue.\n          warn(`getTextContent - ignoring errors during \"${task.name}\" ` +\n               `task: \"${reason}\".`);\n\n          flushTextContentItem();\n          enqueueChunk();\n          return;\n        }\n        throw reason;\n      });\n    },\n\n    extractDataStructures:\n        function PartialEvaluator_extractDataStructures(dict, baseDict,\n                                                        properties) {\n      var xref = this.xref;\n      // 9.10.2\n      var toUnicode = (dict.get('ToUnicode') || baseDict.get('ToUnicode'));\n      var toUnicodePromise = toUnicode ?\n        this.readToUnicode(toUnicode) : Promise.resolve(undefined);\n\n      if (properties.composite) {\n        // CIDSystemInfo helps to match CID to glyphs\n        var cidSystemInfo = dict.get('CIDSystemInfo');\n        if (isDict(cidSystemInfo)) {\n          properties.cidSystemInfo = {\n            registry: stringToPDFString(cidSystemInfo.get('Registry')),\n            ordering: stringToPDFString(cidSystemInfo.get('Ordering')),\n            supplement: cidSystemInfo.get('Supplement'),\n          };\n        }\n\n        var cidToGidMap = dict.get('CIDToGIDMap');\n        if (isStream(cidToGidMap)) {\n          properties.cidToGidMap = this.readCidToGidMap(cidToGidMap);\n        }\n      }\n\n      // Based on 9.6.6 of the spec the encoding can come from multiple places\n      // and depends on the font type. The base encoding and differences are\n      // read here, but the encoding that is actually used is chosen during\n      // glyph mapping in the font.\n      // TODO: Loading the built in encoding in the font would allow the\n      // differences to be merged in here not require us to hold on to it.\n      var differences = [];\n      var baseEncodingName = null;\n      var encoding;\n      if (dict.has('Encoding')) {\n        encoding = dict.get('Encoding');\n        if (isDict(encoding)) {\n          baseEncodingName = encoding.get('BaseEncoding');\n          baseEncodingName = (isName(baseEncodingName) ?\n                              baseEncodingName.name : null);\n          // Load the differences between the base and original\n          if (encoding.has('Differences')) {\n            var diffEncoding = encoding.get('Differences');\n            var index = 0;\n            for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n              var data = xref.fetchIfRef(diffEncoding[j]);\n              if (isNum(data)) {\n                index = data;\n              } else if (isName(data)) {\n                differences[index++] = data.name;\n              } else {\n                throw new FormatError(\n                  `Invalid entry in 'Differences' array: ${data}`);\n              }\n            }\n          }\n        } else if (isName(encoding)) {\n          baseEncodingName = encoding.name;\n        } else {\n          throw new FormatError('Encoding is not a Name nor a Dict');\n        }\n        // According to table 114 if the encoding is a named encoding it must be\n        // one of these predefined encodings.\n        if ((baseEncodingName !== 'MacRomanEncoding' &&\n             baseEncodingName !== 'MacExpertEncoding' &&\n             baseEncodingName !== 'WinAnsiEncoding')) {\n          baseEncodingName = null;\n        }\n      }\n\n      if (baseEncodingName) {\n        properties.defaultEncoding = getEncoding(baseEncodingName).slice();\n      } else {\n        var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n        var isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n        // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n        // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n        // font should use the `StandardEncoding` if no encoding is specified.\n        encoding = StandardEncoding;\n        if (properties.type === 'TrueType' && !isNonsymbolicFont) {\n          encoding = WinAnsiEncoding;\n        }\n        // The Symbolic attribute can be misused for regular fonts\n        // Heuristic: we have to check if the font is a standard one also\n        if (isSymbolicFont) {\n          encoding = MacRomanEncoding;\n          if (!properties.file) {\n            if (/Symbol/i.test(properties.name)) {\n              encoding = SymbolSetEncoding;\n            } else if (/Dingbats/i.test(properties.name)) {\n              encoding = ZapfDingbatsEncoding;\n            }\n          }\n        }\n        properties.defaultEncoding = encoding;\n      }\n\n      properties.differences = differences;\n      properties.baseEncodingName = baseEncodingName;\n      properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n      properties.dict = dict;\n      return toUnicodePromise.then((toUnicode) => {\n        properties.toUnicode = toUnicode;\n        return this.buildToUnicode(properties);\n      }).then(function (toUnicode) {\n        properties.toUnicode = toUnicode;\n        return properties;\n      });\n    },\n\n    /**\n     * @returns {ToUnicodeMap}\n     * @private\n     */\n    _buildSimpleFontToUnicode(properties) {\n      assert(!properties.composite, 'Must be a simple font.');\n\n      let toUnicode = [], charcode, glyphName;\n      let encoding = properties.defaultEncoding.slice();\n      let baseEncodingName = properties.baseEncodingName;\n      // Merge in the differences array.\n      let differences = properties.differences;\n      for (charcode in differences) {\n        glyphName = differences[charcode];\n        if (glyphName === '.notdef') {\n          // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n          // where there should be spaces (fixes issue5256.pdf).\n          continue;\n        }\n        encoding[charcode] = glyphName;\n      }\n      let glyphsUnicodeMap = getGlyphsUnicode();\n      for (charcode in encoding) {\n        // a) Map the character code to a character name.\n        glyphName = encoding[charcode];\n        // b) Look up the character name in the Adobe Glyph List (see the\n        //    Bibliography) to obtain the corresponding Unicode value.\n        if (glyphName === '') {\n          continue;\n        } else if (glyphsUnicodeMap[glyphName] === undefined) {\n          // (undocumented) c) Few heuristics to recognize unknown glyphs\n          // NOTE: Adobe Reader does not do this step, but OSX Preview does\n          let code = 0;\n          switch (glyphName[0]) {\n            case 'G': // Gxx glyph\n              if (glyphName.length === 3) {\n                code = parseInt(glyphName.substring(1), 16);\n              }\n              break;\n            case 'g': // g00xx glyph\n              if (glyphName.length === 5) {\n                code = parseInt(glyphName.substring(1), 16);\n              }\n              break;\n            case 'C': // Cddd glyph\n            case 'c': // cddd glyph\n              if (glyphName.length >= 3) {\n                code = +glyphName.substring(1);\n              }\n              break;\n            default:\n              // 'uniXXXX'/'uXXXX{XX}' glyphs\n              let unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n              if (unicode !== -1) {\n                code = unicode;\n              }\n          }\n          if (code) {\n            // If `baseEncodingName` is one the predefined encodings, and `code`\n            // equals `charcode`, using the glyph defined in the baseEncoding\n            // seems to yield a better `toUnicode` mapping (fixes issue 5070).\n            if (baseEncodingName && code === +charcode) {\n              let baseEncoding = getEncoding(baseEncodingName);\n              if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n                toUnicode[charcode] =\n                  String.fromCharCode(glyphsUnicodeMap[glyphName]);\n                continue;\n              }\n            }\n            toUnicode[charcode] = String.fromCharCode(code);\n          }\n          continue;\n        }\n        toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n      }\n      return new ToUnicodeMap(toUnicode);\n    },\n\n    /**\n     * Builds a char code to unicode map based on section 9.10 of the spec.\n     * @param {Object} properties Font properties object.\n     * @return {Promise} A Promise that is resolved with a\n     *   {ToUnicodeMap|IdentityToUnicodeMap} object.\n     */\n    buildToUnicode(properties) {\n      properties.hasIncludedToUnicodeMap =\n        !!properties.toUnicode && properties.toUnicode.length > 0;\n\n      // Section 9.10.2 Mapping Character Codes to Unicode Values\n      if (properties.hasIncludedToUnicodeMap) {\n        // Some fonts contain incomplete ToUnicode data, causing issues with\n        // text-extraction. For simple fonts, containing encoding information,\n        // use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\n        if (!properties.composite && properties.hasEncoding) {\n          properties.fallbackToUnicode =\n            this._buildSimpleFontToUnicode(properties);\n        }\n\n        return Promise.resolve(properties.toUnicode);\n      }\n\n      // According to the spec if the font is a simple font we should only map\n      // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n      // the differences array only contains adobe standard or symbol set names,\n      // in pratice it seems better to always try to create a toUnicode map\n      // based of the default encoding.\n      if (!properties.composite /* is simple font */) {\n        return Promise.resolve(this._buildSimpleFontToUnicode(properties));\n      }\n\n      // If the font is a composite font that uses one of the predefined CMaps\n      // listed in Table 118 (except Identity–H and Identity–V) or whose\n      // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n      // Adobe-Korea1 character collection:\n      if (properties.composite && (\n           (properties.cMap.builtInCMap &&\n            !(properties.cMap instanceof IdentityCMap)) ||\n           (properties.cidSystemInfo.registry === 'Adobe' &&\n             (properties.cidSystemInfo.ordering === 'GB1' ||\n              properties.cidSystemInfo.ordering === 'CNS1' ||\n              properties.cidSystemInfo.ordering === 'Japan1' ||\n              properties.cidSystemInfo.ordering === 'Korea1')))) {\n        // Then:\n        // a) Map the character code to a character identifier (CID) according\n        // to the font’s CMap.\n        // b) Obtain the registry and ordering of the character collection used\n        // by the font’s CMap (for example, Adobe and Japan1) from its\n        // CIDSystemInfo dictionary.\n        let registry = properties.cidSystemInfo.registry;\n        let ordering = properties.cidSystemInfo.ordering;\n        // c) Construct a second CMap name by concatenating the registry and\n        // ordering obtained in step (b) in the format registry–ordering–UCS2\n        // (for example, Adobe–Japan1–UCS2).\n        let ucs2CMapName = Name.get(registry + '-' + ordering + '-UCS2');\n        // d) Obtain the CMap with the name constructed in step (c) (available\n        // from the ASN Web site; see the Bibliography).\n        return CMapFactory.create({\n          encoding: ucs2CMapName,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function (ucs2CMap) {\n          let cMap = properties.cMap;\n          let toUnicode = [];\n          cMap.forEach(function(charcode, cid) {\n            if (cid > 0xffff) {\n              throw new FormatError('Max size of CID is 65,535');\n            }\n            // e) Map the CID obtained in step (a) according to the CMap\n            // obtained in step (d), producing a Unicode value.\n            let ucs2 = ucs2CMap.lookup(cid);\n            if (ucs2) {\n              toUnicode[charcode] =\n                String.fromCharCode((ucs2.charCodeAt(0) << 8) +\n                                    ucs2.charCodeAt(1));\n            }\n          });\n          return new ToUnicodeMap(toUnicode);\n        });\n      }\n\n      // The viewer's choice, just use an identity map.\n      return Promise.resolve(new IdentityToUnicodeMap(properties.firstChar,\n                                                      properties.lastChar));\n    },\n\n    readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {\n      var cmapObj = toUnicode;\n      if (isName(cmapObj)) {\n        return CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function (cmap) {\n          if (cmap instanceof IdentityCMap) {\n            return new IdentityToUnicodeMap(0, 0xFFFF);\n          }\n          return new ToUnicodeMap(cmap.getMap());\n        });\n      } else if (isStream(cmapObj)) {\n        return CMapFactory.create({\n          encoding: cmapObj,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function (cmap) {\n          if (cmap instanceof IdentityCMap) {\n            return new IdentityToUnicodeMap(0, 0xFFFF);\n          }\n          var map = new Array(cmap.length);\n          // Convert UTF-16BE\n          // NOTE: cmap can be a sparse array, so use forEach instead of for(;;)\n          // to iterate over all keys.\n          cmap.forEach(function(charCode, token) {\n            var str = [];\n            for (var k = 0; k < token.length; k += 2) {\n              var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              if ((w1 & 0xF800) !== 0xD800) { // w1 < 0xD800 || w1 > 0xDFFF\n                str.push(w1);\n                continue;\n              }\n              k += 2;\n              var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n              str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n            }\n            map[charCode] = String.fromCharCode.apply(String, str);\n          });\n          return new ToUnicodeMap(map);\n        });\n      }\n      return Promise.resolve(null);\n    },\n\n    readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) {\n      // Extract the encoding from the CIDToGIDMap\n      var glyphsData = cidToGidStream.getBytes();\n\n      // Set encoding 0 to later verify the font has an encoding\n      var result = [];\n      for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n        var glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n        if (glyphID === 0) {\n          continue;\n        }\n        var code = j >> 1;\n        result[code] = glyphID;\n      }\n      return result;\n    },\n\n    extractWidths: function PartialEvaluator_extractWidths(dict, descriptor,\n                                                           properties) {\n      var xref = this.xref;\n      var glyphsWidths = [];\n      var defaultWidth = 0;\n      var glyphsVMetrics = [];\n      var defaultVMetrics;\n      var i, ii, j, jj, start, code, widths;\n      if (properties.composite) {\n        defaultWidth = dict.has('DW') ? dict.get('DW') : 1000;\n\n        widths = dict.get('W');\n        if (widths) {\n          for (i = 0, ii = widths.length; i < ii; i++) {\n            start = xref.fetchIfRef(widths[i++]);\n            code = xref.fetchIfRef(widths[i]);\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n              }\n            } else {\n              var width = xref.fetchIfRef(widths[++i]);\n              for (j = start; j <= code; j++) {\n                glyphsWidths[j] = width;\n              }\n            }\n          }\n        }\n\n        if (properties.vertical) {\n          var vmetrics = dict.getArray('DW2') || [880, -1000];\n          defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n          vmetrics = dict.get('W2');\n          if (vmetrics) {\n            for (i = 0, ii = vmetrics.length; i < ii; i++) {\n              start = xref.fetchIfRef(vmetrics[i++]);\n              code = xref.fetchIfRef(vmetrics[i]);\n              if (Array.isArray(code)) {\n                for (j = 0, jj = code.length; j < jj; j++) {\n                  glyphsVMetrics[start++] = [\n                    xref.fetchIfRef(code[j++]),\n                    xref.fetchIfRef(code[j++]),\n                    xref.fetchIfRef(code[j])\n                  ];\n                }\n              } else {\n                var vmetric = [\n                  xref.fetchIfRef(vmetrics[++i]),\n                  xref.fetchIfRef(vmetrics[++i]),\n                  xref.fetchIfRef(vmetrics[++i])\n                ];\n                for (j = start; j <= code; j++) {\n                  glyphsVMetrics[j] = vmetric;\n                }\n              }\n            }\n          }\n        }\n      } else {\n        var firstChar = properties.firstChar;\n        widths = dict.get('Widths');\n        if (widths) {\n          j = firstChar;\n          for (i = 0, ii = widths.length; i < ii; i++) {\n            glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n          }\n          defaultWidth = (parseFloat(descriptor.get('MissingWidth')) || 0);\n        } else {\n          // Trying get the BaseFont metrics (see comment above).\n          var baseFontName = dict.get('BaseFont');\n          if (isName(baseFontName)) {\n            var metrics = this.getBaseFontMetrics(baseFontName.name);\n\n            glyphsWidths = this.buildCharCodeToWidth(metrics.widths,\n                                                     properties);\n            defaultWidth = metrics.defaultWidth;\n          }\n        }\n      }\n\n      // Heuristic: detection of monospace font by checking all non-zero widths\n      var isMonospace = true;\n      var firstWidth = defaultWidth;\n      for (var glyph in glyphsWidths) {\n        var glyphWidth = glyphsWidths[glyph];\n        if (!glyphWidth) {\n          continue;\n        }\n        if (!firstWidth) {\n          firstWidth = glyphWidth;\n          continue;\n        }\n        if (firstWidth !== glyphWidth) {\n          isMonospace = false;\n          break;\n        }\n      }\n      if (isMonospace) {\n        properties.flags |= FontFlags.FixedPitch;\n      }\n\n      properties.defaultWidth = defaultWidth;\n      properties.widths = glyphsWidths;\n      properties.defaultVMetrics = defaultVMetrics;\n      properties.vmetrics = glyphsVMetrics;\n    },\n\n    isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {\n      // Simulating descriptor flags attribute\n      var fontNameWoStyle = baseFontName.split('-')[0];\n      return (fontNameWoStyle in getSerifFonts()) ||\n              (fontNameWoStyle.search(/serif/gi) !== -1);\n    },\n\n    getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {\n      var defaultWidth = 0;\n      var widths = [];\n      var monospace = false;\n      var stdFontMap = getStdFontMap();\n      var lookupName = (stdFontMap[name] || name);\n      var Metrics = getMetrics();\n\n      if (!(lookupName in Metrics)) {\n        // Use default fonts for looking up font metrics if the passed\n        // font is not a base font\n        if (this.isSerifFont(name)) {\n          lookupName = 'Times-Roman';\n        } else {\n          lookupName = 'Helvetica';\n        }\n      }\n      var glyphWidths = Metrics[lookupName];\n\n      if (isNum(glyphWidths)) {\n        defaultWidth = glyphWidths;\n        monospace = true;\n      } else {\n        widths = glyphWidths(); // expand lazy widths array\n      }\n\n      return {\n        defaultWidth,\n        monospace,\n        widths,\n      };\n    },\n\n    buildCharCodeToWidth:\n        function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName,\n                                                        properties) {\n      var widths = Object.create(null);\n      var differences = properties.differences;\n      var encoding = properties.defaultEncoding;\n      for (var charCode = 0; charCode < 256; charCode++) {\n        if (charCode in differences &&\n            widthsByGlyphName[differences[charCode]]) {\n          widths[charCode] = widthsByGlyphName[differences[charCode]];\n          continue;\n        }\n        if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n          widths[charCode] = widthsByGlyphName[encoding[charCode]];\n          continue;\n        }\n      }\n      return widths;\n    },\n\n    preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) {\n      var baseDict = dict;\n      var type = dict.get('Subtype');\n      if (!isName(type)) {\n        throw new FormatError('invalid font Subtype');\n      }\n\n      var composite = false;\n      var uint8array;\n      if (type.name === 'Type0') {\n        // If font is a composite\n        //  - get the descendant font\n        //  - set the type according to the descendant font\n        //  - get the FontDescriptor from the descendant font\n        var df = dict.get('DescendantFonts');\n        if (!df) {\n          throw new FormatError('Descendant fonts are not specified');\n        }\n        dict = (Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df);\n\n        type = dict.get('Subtype');\n        if (!isName(type)) {\n          throw new FormatError('invalid font Subtype');\n        }\n        composite = true;\n      }\n\n      var descriptor = dict.get('FontDescriptor');\n      if (descriptor) {\n        var hash = new MurmurHash3_64();\n        var encoding = baseDict.getRaw('Encoding');\n        if (isName(encoding)) {\n          hash.update(encoding.name);\n        } else if (isRef(encoding)) {\n          hash.update(encoding.toString());\n        } else if (isDict(encoding)) {\n          var keys = encoding.getKeys();\n          for (var i = 0, ii = keys.length; i < ii; i++) {\n            var entry = encoding.getRaw(keys[i]);\n            if (isName(entry)) {\n              hash.update(entry.name);\n            } else if (isRef(entry)) {\n              hash.update(entry.toString());\n            } else if (Array.isArray(entry)) {\n              // 'Differences' array (fixes bug1157493.pdf).\n              var diffLength = entry.length, diffBuf = new Array(diffLength);\n\n              for (var j = 0; j < diffLength; j++) {\n                var diffEntry = entry[j];\n                if (isName(diffEntry)) {\n                  diffBuf[j] = diffEntry.name;\n                } else if (isNum(diffEntry) || isRef(diffEntry)) {\n                  diffBuf[j] = diffEntry.toString();\n                }\n              }\n              hash.update(diffBuf.join());\n            }\n          }\n        }\n\n        var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');\n        if (isStream(toUnicode)) {\n          var stream = toUnicode.str || toUnicode;\n          uint8array = stream.buffer ?\n            new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) :\n            new Uint8Array(stream.bytes.buffer,\n                           stream.start, stream.end - stream.start);\n          hash.update(uint8array);\n\n        } else if (isName(toUnicode)) {\n          hash.update(toUnicode.name);\n        }\n\n        var widths = dict.get('Widths') || baseDict.get('Widths');\n        if (widths) {\n          uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n          hash.update(uint8array);\n        }\n      }\n\n      return {\n        descriptor,\n        dict,\n        baseDict,\n        composite,\n        type: type.name,\n        hash: hash ? hash.hexdigest() : '',\n      };\n    },\n\n    translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) {\n      var baseDict = preEvaluatedFont.baseDict;\n      var dict = preEvaluatedFont.dict;\n      var composite = preEvaluatedFont.composite;\n      var descriptor = preEvaluatedFont.descriptor;\n      var type = preEvaluatedFont.type;\n      var maxCharIndex = (composite ? 0xFFFF : 0xFF);\n      var properties;\n\n      if (!descriptor) {\n        if (type === 'Type3') {\n          // FontDescriptor is only required for Type3 fonts when the document\n          // is a tagged pdf. Create a barbebones one to get by.\n          descriptor = new Dict(null);\n          descriptor.set('FontName', Name.get(type));\n          descriptor.set('FontBBox', dict.getArray('FontBBox'));\n        } else {\n          // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n          // FontDescriptor was not required.\n          // This case is here for compatibility.\n          var baseFontName = dict.get('BaseFont');\n          if (!isName(baseFontName)) {\n            throw new FormatError('Base font is not specified');\n          }\n\n          // Using base font name as a font name.\n          baseFontName = baseFontName.name.replace(/[,_]/g, '-');\n          var metrics = this.getBaseFontMetrics(baseFontName);\n\n          // Simulating descriptor flags attribute\n          var fontNameWoStyle = baseFontName.split('-')[0];\n          var flags =\n            (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n            (metrics.monospace ? FontFlags.FixedPitch : 0) |\n            (getSymbolsFonts()[fontNameWoStyle] ? FontFlags.Symbolic :\n                                                  FontFlags.Nonsymbolic);\n\n          properties = {\n            type,\n            name: baseFontName,\n            widths: metrics.widths,\n            defaultWidth: metrics.defaultWidth,\n            flags,\n            firstChar: 0,\n            lastChar: maxCharIndex,\n          };\n          return this.extractDataStructures(dict, dict, properties).\n            then((properties) => {\n              properties.widths = this.buildCharCodeToWidth(metrics.widths,\n                                                            properties);\n              return new Font(baseFontName, null, properties);\n            });\n        }\n      }\n\n      // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n      // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n      // to ignore this rule when a variant of a standard font is used.\n      // TODO Fill the width array depending on which of the base font this is\n      // a variant.\n      var firstChar = (dict.get('FirstChar') || 0);\n      var lastChar = (dict.get('LastChar') || maxCharIndex);\n\n      var fontName = descriptor.get('FontName');\n      var baseFont = dict.get('BaseFont');\n      // Some bad PDFs have a string as the font name.\n      if (isString(fontName)) {\n        fontName = Name.get(fontName);\n      }\n      if (isString(baseFont)) {\n        baseFont = Name.get(baseFont);\n      }\n\n      if (type !== 'Type3') {\n        var fontNameStr = fontName && fontName.name;\n        var baseFontStr = baseFont && baseFont.name;\n        if (fontNameStr !== baseFontStr) {\n          info('The FontDescriptor\\'s FontName is \"' + fontNameStr +\n               '\" but should be the same as the Font\\'s BaseFont \"' +\n               baseFontStr + '\"');\n          // Workaround for cases where e.g. fontNameStr = 'Arial' and\n          // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n          if (fontNameStr && baseFontStr &&\n              baseFontStr.indexOf(fontNameStr) === 0) {\n            fontName = baseFont;\n          }\n        }\n      }\n      fontName = (fontName || baseFont);\n\n      if (!isName(fontName)) {\n        throw new FormatError('invalid font name');\n      }\n\n      var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3');\n      if (fontFile) {\n        if (fontFile.dict) {\n          var subtype = fontFile.dict.get('Subtype');\n          if (subtype) {\n            subtype = subtype.name;\n          }\n          var length1 = fontFile.dict.get('Length1');\n          var length2 = fontFile.dict.get('Length2');\n          var length3 = fontFile.dict.get('Length3');\n        }\n      }\n\n      properties = {\n        type,\n        name: fontName.name,\n        subtype,\n        file: fontFile,\n        length1,\n        length2,\n        length3,\n        loadedName: baseDict.loadedName,\n        composite,\n        wideChars: composite,\n        fixedPitch: false,\n        fontMatrix: (dict.getArray('FontMatrix') || FONT_IDENTITY_MATRIX),\n        firstChar: firstChar || 0,\n        lastChar: (lastChar || maxCharIndex),\n        bbox: descriptor.getArray('FontBBox'),\n        ascent: descriptor.get('Ascent'),\n        descent: descriptor.get('Descent'),\n        xHeight: descriptor.get('XHeight'),\n        capHeight: descriptor.get('CapHeight'),\n        flags: descriptor.get('Flags'),\n        italicAngle: descriptor.get('ItalicAngle'),\n        isType3Font: false,\n      };\n\n      var cMapPromise;\n      if (composite) {\n        var cidEncoding = baseDict.get('Encoding');\n        if (isName(cidEncoding)) {\n          properties.cidEncoding = cidEncoding.name;\n        }\n        cMapPromise = CMapFactory.create({\n          encoding: cidEncoding,\n          fetchBuiltInCMap: this.fetchBuiltInCMap,\n          useCMap: null,\n        }).then(function (cMap) {\n          properties.cMap = cMap;\n          properties.vertical = properties.cMap.vertical;\n        });\n      } else {\n        cMapPromise = Promise.resolve(undefined);\n      }\n\n      return cMapPromise.then(() => {\n        return this.extractDataStructures(dict, baseDict, properties);\n      }).then((properties) => {\n        this.extractWidths(dict, descriptor, properties);\n\n        if (type === 'Type3') {\n          properties.isType3Font = true;\n        }\n        return new Font(fontName.name, fontFile, properties);\n      });\n    },\n  };\n\n  return PartialEvaluator;\n})();\n\nvar TranslatedFont = (function TranslatedFontClosure() {\n  function TranslatedFont(loadedName, font, dict) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this.type3Loaded = null;\n    this.sent = false;\n  }\n  TranslatedFont.prototype = {\n    send(handler) {\n      if (this.sent) {\n        return;\n      }\n      var fontData = this.font.exportData();\n      handler.send('commonobj', [\n        this.loadedName,\n        'Font',\n        fontData\n      ]);\n      this.sent = true;\n    },\n    loadType3Data(evaluator, resources, parentOperatorList, task) {\n      if (!this.font.isType3Font) {\n        throw new Error('Must be a Type3 font.');\n      }\n\n      if (this.type3Loaded) {\n        return this.type3Loaded;\n      }\n      // When parsing Type3 glyphs, always ignore them if there are errors.\n      // Compared to the parsing of e.g. an entire page, it doesn't really\n      // make sense to only be able to render a Type3 glyph partially.\n      var type3Options = Object.create(evaluator.options);\n      type3Options.ignoreErrors = false;\n      var type3Evaluator = evaluator.clone(type3Options);\n\n      var translatedFont = this.font;\n      var loadCharProcsPromise = Promise.resolve();\n      var charProcs = this.dict.get('CharProcs');\n      var fontResources = this.dict.get('Resources') || resources;\n      var charProcKeys = charProcs.getKeys();\n      var charProcOperatorList = Object.create(null);\n\n      for (var i = 0, n = charProcKeys.length; i < n; ++i) {\n        let key = charProcKeys[i];\n        loadCharProcsPromise = loadCharProcsPromise.then(function () {\n          var glyphStream = charProcs.get(key);\n          var operatorList = new OperatorList();\n          return type3Evaluator.getOperatorList({\n            stream: glyphStream,\n            task,\n            resources: fontResources,\n            operatorList,\n          }).then(function () {\n            charProcOperatorList[key] = operatorList.getIR();\n\n            // Add the dependencies to the parent operator list so they are\n            // resolved before sub operator list is executed synchronously.\n            parentOperatorList.addDependencies(operatorList.dependencies);\n          }).catch(function(reason) {\n            warn(`Type3 font resource \"${key}\" is not available.`);\n            var operatorList = new OperatorList();\n            charProcOperatorList[key] = operatorList.getIR();\n          });\n        });\n      }\n      this.type3Loaded = loadCharProcsPromise.then(function () {\n        translatedFont.charProcOperatorList = charProcOperatorList;\n      });\n      return this.type3Loaded;\n    },\n  };\n  return TranslatedFont;\n})();\n\nvar StateManager = (function StateManagerClosure() {\n  function StateManager(initialState) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n  StateManager.prototype = {\n    save() {\n      var old = this.state;\n      this.stateStack.push(this.state);\n      this.state = old.clone();\n    },\n    restore() {\n      var prev = this.stateStack.pop();\n      if (prev) {\n        this.state = prev;\n      }\n    },\n    transform(args) {\n      this.state.ctm = Util.transform(this.state.ctm, args);\n    },\n  };\n  return StateManager;\n})();\n\nvar TextState = (function TextStateClosure() {\n  function TextState() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\n    this.textMatrix = IDENTITY_MATRIX.slice();\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n\n  TextState.prototype = {\n    setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n      var m = this.textMatrix;\n      m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f;\n    },\n    setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n      var m = this.textLineMatrix;\n      m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f;\n    },\n    translateTextMatrix: function TextState_translateTextMatrix(x, y) {\n      var m = this.textMatrix;\n      m[4] = m[0] * x + m[2] * y + m[4];\n      m[5] = m[1] * x + m[3] * y + m[5];\n    },\n    translateTextLineMatrix: function TextState_translateTextMatrix(x, y) {\n      var m = this.textLineMatrix;\n      m[4] = m[0] * x + m[2] * y + m[4];\n      m[5] = m[1] * x + m[3] * y + m[5];\n    },\n    calcTextLineMatrixAdvance:\n        function TextState_calcTextLineMatrixAdvance(a, b, c, d, e, f) {\n      var font = this.font;\n      if (!font) {\n        return null;\n      }\n      var m = this.textLineMatrix;\n      if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n        return null;\n      }\n      var txDiff = e - m[4], tyDiff = f - m[5];\n      if ((font.vertical && txDiff !== 0) || (!font.vertical && tyDiff !== 0)) {\n        return null;\n      }\n      var tx, ty, denominator = a * d - b * c;\n      if (font.vertical) {\n        tx = -tyDiff * c / denominator;\n        ty = tyDiff * a / denominator;\n      } else {\n        tx = txDiff * d / denominator;\n        ty = -txDiff * b / denominator;\n      }\n      return { width: tx, height: ty, value: (font.vertical ? ty : tx), };\n    },\n    calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {\n      // 9.4.4 Text Space Details\n      var tsm = [this.fontSize * this.textHScale, 0,\n                0, this.fontSize,\n                0, this.textRise];\n      return Util.transform(ctm, Util.transform(this.textMatrix, tsm));\n    },\n    carriageReturn: function TextState_carriageReturn() {\n      this.translateTextLineMatrix(0, -this.leading);\n      this.textMatrix = this.textLineMatrix.slice();\n    },\n    clone: function TextState_clone() {\n      var clone = Object.create(this);\n      clone.textMatrix = this.textMatrix.slice();\n      clone.textLineMatrix = this.textLineMatrix.slice();\n      clone.fontMatrix = this.fontMatrix.slice();\n      return clone;\n    },\n  };\n  return TextState;\n})();\n\nvar EvalState = (function EvalStateClosure() {\n  function EvalState() {\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = TextRenderingMode.FILL;\n    this.fillColorSpace = ColorSpace.singletons.gray;\n    this.strokeColorSpace = ColorSpace.singletons.gray;\n  }\n  EvalState.prototype = {\n    clone: function CanvasExtraState_clone() {\n      return Object.create(this);\n    },\n  };\n  return EvalState;\n})();\n\nvar EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() {\n  // Specifies properties for each command\n  //\n  // If variableArgs === true: [0, `numArgs`] expected\n  // If variableArgs === false: exactly `numArgs` expected\n  var getOPMap = getLookupTableFactory(function (t) {\n    // Graphic state\n    t['w'] = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false, };\n    t['J'] = { id: OPS.setLineCap, numArgs: 1, variableArgs: false, };\n    t['j'] = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false, };\n    t['M'] = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false, };\n    t['d'] = { id: OPS.setDash, numArgs: 2, variableArgs: false, };\n    t['ri'] = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false, };\n    t['i'] = { id: OPS.setFlatness, numArgs: 1, variableArgs: false, };\n    t['gs'] = { id: OPS.setGState, numArgs: 1, variableArgs: false, };\n    t['q'] = { id: OPS.save, numArgs: 0, variableArgs: false, };\n    t['Q'] = { id: OPS.restore, numArgs: 0, variableArgs: false, };\n    t['cm'] = { id: OPS.transform, numArgs: 6, variableArgs: false, };\n\n    // Path\n    t['m'] = { id: OPS.moveTo, numArgs: 2, variableArgs: false, };\n    t['l'] = { id: OPS.lineTo, numArgs: 2, variableArgs: false, };\n    t['c'] = { id: OPS.curveTo, numArgs: 6, variableArgs: false, };\n    t['v'] = { id: OPS.curveTo2, numArgs: 4, variableArgs: false, };\n    t['y'] = { id: OPS.curveTo3, numArgs: 4, variableArgs: false, };\n    t['h'] = { id: OPS.closePath, numArgs: 0, variableArgs: false, };\n    t['re'] = { id: OPS.rectangle, numArgs: 4, variableArgs: false, };\n    t['S'] = { id: OPS.stroke, numArgs: 0, variableArgs: false, };\n    t['s'] = { id: OPS.closeStroke, numArgs: 0, variableArgs: false, };\n    t['f'] = { id: OPS.fill, numArgs: 0, variableArgs: false, };\n    t['F'] = { id: OPS.fill, numArgs: 0, variableArgs: false, };\n    t['f*'] = { id: OPS.eoFill, numArgs: 0, variableArgs: false, };\n    t['B'] = { id: OPS.fillStroke, numArgs: 0, variableArgs: false, };\n    t['B*'] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false, };\n    t['b'] = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false, };\n    t['b*'] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false, };\n    t['n'] = { id: OPS.endPath, numArgs: 0, variableArgs: false, };\n\n    // Clipping\n    t['W'] = { id: OPS.clip, numArgs: 0, variableArgs: false, };\n    t['W*'] = { id: OPS.eoClip, numArgs: 0, variableArgs: false, };\n\n    // Text\n    t['BT'] = { id: OPS.beginText, numArgs: 0, variableArgs: false, };\n    t['ET'] = { id: OPS.endText, numArgs: 0, variableArgs: false, };\n    t['Tc'] = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false, };\n    t['Tw'] = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false, };\n    t['Tz'] = { id: OPS.setHScale, numArgs: 1, variableArgs: false, };\n    t['TL'] = { id: OPS.setLeading, numArgs: 1, variableArgs: false, };\n    t['Tf'] = { id: OPS.setFont, numArgs: 2, variableArgs: false, };\n    t['Tr'] = { id: OPS.setTextRenderingMode, numArgs: 1,\n                variableArgs: false, };\n    t['Ts'] = { id: OPS.setTextRise, numArgs: 1, variableArgs: false, };\n    t['Td'] = { id: OPS.moveText, numArgs: 2, variableArgs: false, };\n    t['TD'] = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false, };\n    t['Tm'] = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false, };\n    t['T*'] = { id: OPS.nextLine, numArgs: 0, variableArgs: false, };\n    t['Tj'] = { id: OPS.showText, numArgs: 1, variableArgs: false, };\n    t['TJ'] = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false, };\n    t['\\''] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false, };\n    t['\"'] = { id: OPS.nextLineSetSpacingShowText, numArgs: 3,\n               variableArgs: false, };\n\n    // Type3 fonts\n    t['d0'] = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false, };\n    t['d1'] = { id: OPS.setCharWidthAndBounds, numArgs: 6,\n                variableArgs: false, };\n\n    // Color\n    t['CS'] = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false, };\n    t['cs'] = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false, };\n    t['SC'] = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true, };\n    t['SCN'] = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true, };\n    t['sc'] = { id: OPS.setFillColor, numArgs: 4, variableArgs: true, };\n    t['scn'] = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true, };\n    t['G'] = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false, };\n    t['g'] = { id: OPS.setFillGray, numArgs: 1, variableArgs: false, };\n    t['RG'] = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false, };\n    t['rg'] = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false, };\n    t['K'] = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false, };\n    t['k'] = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false, };\n\n    // Shading\n    t['sh'] = { id: OPS.shadingFill, numArgs: 1, variableArgs: false, };\n\n    // Images\n    t['BI'] = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false, };\n    t['ID'] = { id: OPS.beginImageData, numArgs: 0, variableArgs: false, };\n    t['EI'] = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false, };\n\n    // XObjects\n    t['Do'] = { id: OPS.paintXObject, numArgs: 1, variableArgs: false, };\n    t['MP'] = { id: OPS.markPoint, numArgs: 1, variableArgs: false, };\n    t['DP'] = { id: OPS.markPointProps, numArgs: 2, variableArgs: false, };\n    t['BMC'] = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false, };\n    t['BDC'] = { id: OPS.beginMarkedContentProps, numArgs: 2,\n                 variableArgs: false, };\n    t['EMC'] = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false, };\n\n    // Compatibility\n    t['BX'] = { id: OPS.beginCompat, numArgs: 0, variableArgs: false, };\n    t['EX'] = { id: OPS.endCompat, numArgs: 0, variableArgs: false, };\n\n    // (reserved partial commands for the lexer)\n    t['BM'] = null;\n    t['BD'] = null;\n    t['true'] = null;\n    t['fa'] = null;\n    t['fal'] = null;\n    t['fals'] = null;\n    t['false'] = null;\n    t['nu'] = null;\n    t['nul'] = null;\n    t['null'] = null;\n  });\n\n  const MAX_INVALID_PATH_OPS = 20;\n\n  function EvaluatorPreprocessor(stream, xref, stateManager) {\n    this.opMap = getOPMap();\n    // TODO(mduan): pass array of knownCommands rather than this.opMap\n    // dictionary\n    this.parser = new Parser(new Lexer(stream, this.opMap), false, xref);\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._numInvalidPathOPS = 0;\n  }\n\n  EvaluatorPreprocessor.prototype = {\n    get savedStatesDepth() {\n      return this.stateManager.stateStack.length;\n    },\n\n    // |operation| is an object with two fields:\n    //\n    // - |fn| is an out param.\n    //\n    // - |args| is an inout param. On entry, it should have one of two values.\n    //\n    //   - An empty array. This indicates that the caller is providing the\n    //     array in which the args will be stored in. The caller should use\n    //     this value if it can reuse a single array for each call to read().\n    //\n    //   - |null|. This indicates that the caller needs this function to create\n    //     the array in which any args are stored in. If there are zero args,\n    //     this function will leave |operation.args| as |null| (thus avoiding\n    //     allocations that would occur if we used an empty array to represent\n    //     zero arguments). Otherwise, it will replace |null| with a new array\n    //     containing the arguments. The caller should use this value if it\n    //     cannot reuse an array for each call to read().\n    //\n    // These two modes are present because this function is very hot and so\n    // avoiding allocations where possible is worthwhile.\n    //\n    read: function EvaluatorPreprocessor_read(operation) {\n      var args = operation.args;\n      while (true) {\n        var obj = this.parser.getObj();\n        if (isCmd(obj)) {\n          var cmd = obj.cmd;\n          // Check that the command is valid\n          var opSpec = this.opMap[cmd];\n          if (!opSpec) {\n            warn(`Unknown command \"${cmd}\".`);\n            continue;\n          }\n\n          var fn = opSpec.id;\n          var numArgs = opSpec.numArgs;\n          var argsLength = args !== null ? args.length : 0;\n\n          if (!opSpec.variableArgs) {\n            // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n            if (argsLength !== numArgs) {\n              var nonProcessedArgs = this.nonProcessedArgs;\n              while (argsLength > numArgs) {\n                nonProcessedArgs.push(args.shift());\n                argsLength--;\n              }\n              while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n                if (args === null) {\n                  args = [];\n                }\n                args.unshift(nonProcessedArgs.pop());\n                argsLength++;\n              }\n            }\n\n            if (argsLength < numArgs) {\n              const partialMsg = `command ${cmd}: expected ${numArgs} args, ` +\n                                 `but received ${argsLength} args.`;\n\n              // Incomplete path operators, in particular, can result in fairly\n              // chaotic rendering artifacts. Hence the following heuristics is\n              // used to error, rather than just warn, once a number of invalid\n              // path operators have been encountered (fixes bug1443140.pdf).\n              if ((fn >= OPS.moveTo && fn <= OPS.endPath) && // Path operator\n                  ++this._numInvalidPathOPS > MAX_INVALID_PATH_OPS) {\n                throw new FormatError(`Invalid ${partialMsg}`);\n              }\n              // If we receive too few arguments, it's not possible to execute\n              // the command, hence we skip the command.\n              warn(`Skipping ${partialMsg}`);\n              if (args !== null) {\n                args.length = 0;\n              }\n              continue;\n            }\n          } else if (argsLength > numArgs) {\n            info(`Command ${cmd}: expected [0, ${numArgs}] args, ` +\n                 `but received ${argsLength} args.`);\n          }\n\n          // TODO figure out how to type-check vararg functions\n          this.preprocessCommand(fn, args);\n\n          operation.fn = fn;\n          operation.args = args;\n          return true;\n        }\n        if (isEOF(obj)) {\n          return false; // no more commands\n        }\n        // argument\n        if (obj !== null) {\n          if (args === null) {\n            args = [];\n          }\n          args.push(obj);\n          if (args.length > 33) {\n            throw new FormatError('Too many arguments');\n          }\n        }\n      }\n    },\n\n    preprocessCommand:\n        function EvaluatorPreprocessor_preprocessCommand(fn, args) {\n      switch (fn | 0) {\n        case OPS.save:\n          this.stateManager.save();\n          break;\n        case OPS.restore:\n          this.stateManager.restore();\n          break;\n        case OPS.transform:\n          this.stateManager.transform(args);\n          break;\n      }\n    },\n  };\n  return EvaluatorPreprocessor;\n})();\n\nexport {\n  PartialEvaluator,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CMapCompressionType, FormatError, isString, MissingDataException, unreachable,\n  warn\n} from '../shared/util';\nimport { isCmd, isEOF, isName, isStream } from './primitives';\nimport { Lexer } from './parser';\nimport { Stream } from './stream';\n\nvar BUILT_IN_CMAPS = [\n// << Start unicode maps.\n'Adobe-GB1-UCS2',\n'Adobe-CNS1-UCS2',\n'Adobe-Japan1-UCS2',\n'Adobe-Korea1-UCS2',\n// >> End unicode maps.\n'78-EUC-H',\n'78-EUC-V',\n'78-H',\n'78-RKSJ-H',\n'78-RKSJ-V',\n'78-V',\n'78ms-RKSJ-H',\n'78ms-RKSJ-V',\n'83pv-RKSJ-H',\n'90ms-RKSJ-H',\n'90ms-RKSJ-V',\n'90msp-RKSJ-H',\n'90msp-RKSJ-V',\n'90pv-RKSJ-H',\n'90pv-RKSJ-V',\n'Add-H',\n'Add-RKSJ-H',\n'Add-RKSJ-V',\n'Add-V',\n'Adobe-CNS1-0',\n'Adobe-CNS1-1',\n'Adobe-CNS1-2',\n'Adobe-CNS1-3',\n'Adobe-CNS1-4',\n'Adobe-CNS1-5',\n'Adobe-CNS1-6',\n'Adobe-GB1-0',\n'Adobe-GB1-1',\n'Adobe-GB1-2',\n'Adobe-GB1-3',\n'Adobe-GB1-4',\n'Adobe-GB1-5',\n'Adobe-Japan1-0',\n'Adobe-Japan1-1',\n'Adobe-Japan1-2',\n'Adobe-Japan1-3',\n'Adobe-Japan1-4',\n'Adobe-Japan1-5',\n'Adobe-Japan1-6',\n'Adobe-Korea1-0',\n'Adobe-Korea1-1',\n'Adobe-Korea1-2',\n'B5-H',\n'B5-V',\n'B5pc-H',\n'B5pc-V',\n'CNS-EUC-H',\n'CNS-EUC-V',\n'CNS1-H',\n'CNS1-V',\n'CNS2-H',\n'CNS2-V',\n'ETHK-B5-H',\n'ETHK-B5-V',\n'ETen-B5-H',\n'ETen-B5-V',\n'ETenms-B5-H',\n'ETenms-B5-V',\n'EUC-H',\n'EUC-V',\n'Ext-H',\n'Ext-RKSJ-H',\n'Ext-RKSJ-V',\n'Ext-V',\n'GB-EUC-H',\n'GB-EUC-V',\n'GB-H',\n'GB-V',\n'GBK-EUC-H',\n'GBK-EUC-V',\n'GBK2K-H',\n'GBK2K-V',\n'GBKp-EUC-H',\n'GBKp-EUC-V',\n'GBT-EUC-H',\n'GBT-EUC-V',\n'GBT-H',\n'GBT-V',\n'GBTpc-EUC-H',\n'GBTpc-EUC-V',\n'GBpc-EUC-H',\n'GBpc-EUC-V',\n'H',\n'HKdla-B5-H',\n'HKdla-B5-V',\n'HKdlb-B5-H',\n'HKdlb-B5-V',\n'HKgccs-B5-H',\n'HKgccs-B5-V',\n'HKm314-B5-H',\n'HKm314-B5-V',\n'HKm471-B5-H',\n'HKm471-B5-V',\n'HKscs-B5-H',\n'HKscs-B5-V',\n'Hankaku',\n'Hiragana',\n'KSC-EUC-H',\n'KSC-EUC-V',\n'KSC-H',\n'KSC-Johab-H',\n'KSC-Johab-V',\n'KSC-V',\n'KSCms-UHC-H',\n'KSCms-UHC-HW-H',\n'KSCms-UHC-HW-V',\n'KSCms-UHC-V',\n'KSCpc-EUC-H',\n'KSCpc-EUC-V',\n'Katakana',\n'NWP-H',\n'NWP-V',\n'RKSJ-H',\n'RKSJ-V',\n'Roman',\n'UniCNS-UCS2-H',\n'UniCNS-UCS2-V',\n'UniCNS-UTF16-H',\n'UniCNS-UTF16-V',\n'UniCNS-UTF32-H',\n'UniCNS-UTF32-V',\n'UniCNS-UTF8-H',\n'UniCNS-UTF8-V',\n'UniGB-UCS2-H',\n'UniGB-UCS2-V',\n'UniGB-UTF16-H',\n'UniGB-UTF16-V',\n'UniGB-UTF32-H',\n'UniGB-UTF32-V',\n'UniGB-UTF8-H',\n'UniGB-UTF8-V',\n'UniJIS-UCS2-H',\n'UniJIS-UCS2-HW-H',\n'UniJIS-UCS2-HW-V',\n'UniJIS-UCS2-V',\n'UniJIS-UTF16-H',\n'UniJIS-UTF16-V',\n'UniJIS-UTF32-H',\n'UniJIS-UTF32-V',\n'UniJIS-UTF8-H',\n'UniJIS-UTF8-V',\n'UniJIS2004-UTF16-H',\n'UniJIS2004-UTF16-V',\n'UniJIS2004-UTF32-H',\n'UniJIS2004-UTF32-V',\n'UniJIS2004-UTF8-H',\n'UniJIS2004-UTF8-V',\n'UniJISPro-UCS2-HW-V',\n'UniJISPro-UCS2-V',\n'UniJISPro-UTF8-V',\n'UniJISX0213-UTF32-H',\n'UniJISX0213-UTF32-V',\n'UniJISX02132004-UTF32-H',\n'UniJISX02132004-UTF32-V',\n'UniKS-UCS2-H',\n'UniKS-UCS2-V',\n'UniKS-UTF16-H',\n'UniKS-UTF16-V',\n'UniKS-UTF32-H',\n'UniKS-UTF32-V',\n'UniKS-UTF8-H',\n'UniKS-UTF8-V',\n'V',\n'WP-Symbol'];\n\n// CMap, not to be confused with TrueType's cmap.\nclass CMap {\n  constructor(builtInCMap = false) {\n    // Codespace ranges are stored as follows:\n    // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n    // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    // Map entries have one of two forms.\n    // - cid chars are 16-bit unsigned integers, stored as integers.\n    // - bf chars are variable-length byte sequences, stored as strings, with\n    //   one byte per character.\n    this._map = [];\n    this.name = '';\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n\n  mapCidRange(low, high, dstLow) {\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n\n  mapBfRange(low, high, dstLow) {\n    var lastByte = dstLow.length - 1;\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      // Only the last byte has to be incremented.\n      dstLow = dstLow.substring(0, lastByte) +\n               String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n    }\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    let i = 0, ii = array.length;\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n\n  // This is used for both bf and cid chars.\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n\n  lookup(code) {\n    return this._map[code];\n  }\n\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n\n  forEach(callback) {\n    // Most maps have fewer than 65536 entries, and for those we use normal\n    // array iteration. But really sparse tables are possible -- e.g. with\n    // indices in the *billions*. For such tables we use for..in, which isn't\n    // ideal because it stringifies the indices for all present elements, but\n    // it does avoid iterating over every undefined entry.\n    let map = this._map;\n    let length = map.length;\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (let i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n\n  charCodeOf(value) {\n    // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n    // are both very sparse and very large (see issue8372.pdf).\n    const map = this._map;\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n    for (let charCode in map) {\n      if (map[charCode] === value) {\n        return (charCode | 0);\n      }\n    }\n    return -1;\n  }\n\n  getMap() {\n    return this._map;\n  }\n\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n    // 9.7.6.2 CMap Mapping\n    // The code length is at most 4.\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n      // Check each codespace range to see if it falls within.\n      const codespaceRange = codespaceRanges[n];\n      for (let k = 0, kk = codespaceRange.length; k < kk;) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n    out.charcode = 0;\n    out.length = 1;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  get isIdentityCMap() {\n    if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) {\n      return false;\n    }\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n\n  mapCidRange(low, high, dstLow) {\n    unreachable('should not call mapCidRange');\n  }\n\n  mapBfRange(low, high, dstLow) {\n    unreachable('should not call mapBfRange');\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    unreachable('should not call mapBfRangeToArray');\n  }\n\n  mapOne(src, dst) {\n    unreachable('should not call mapCidOne');\n  }\n\n  lookup(code) {\n    return (Number.isInteger(code) && code <= 0xffff) ? code : undefined;\n  }\n\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n\n  charCodeOf(value) {\n    return (Number.isInteger(value) && value <= 0xffff) ? value : -1;\n  }\n\n  getMap() {\n    // Sometimes identity maps must be instantiated, but it's rare.\n    const map = new Array(0x10000);\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n    return map;\n  }\n\n  get length() {\n    return 0x10000;\n  }\n\n  get isIdentityCMap() {\n    unreachable('should not access .isIdentityCMap');\n  }\n}\n\nvar BinaryCMapReader = (function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    var n = 0;\n    for (var i = 0; i <= size; i++) {\n      n = (n << 8) | a[i];\n    }\n    return n >>> 0;\n  }\n\n  function hexToStr(a, size) {\n    // This code is hot. Special-case some common values to avoid creating an\n    // object with subarray().\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n\n  function addHex(a, b, size) {\n    var c = 0;\n    for (var i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  function incHex(a, size) {\n    var c = 1;\n    for (var i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  var MAX_NUM_SIZE = 16;\n  var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n  function BinaryCMapStream(data) {\n    this.buffer = data;\n    this.pos = 0;\n    this.end = data.length;\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n  }\n\n  BinaryCMapStream.prototype = {\n    readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n      return this.buffer[this.pos++];\n    },\n    readNumber() {\n      var n = 0;\n      var last;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError('unexpected EOF in bcmap');\n        }\n        last = !(b & 0x80);\n        n = (n << 7) | (b & 0x7F);\n      } while (!last);\n      return n;\n    },\n    readSigned() {\n      var n = this.readNumber();\n      return (n & 1) ? ~(n >>> 1) : n >>> 1;\n    },\n    readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos,\n        this.pos + size + 1));\n      this.pos += size + 1;\n    },\n    readHexNumber(num, size) {\n      var last;\n      var stack = this.tmpBuf, sp = 0;\n      do {\n        var b = this.readByte();\n        if (b < 0) {\n          throw new FormatError('unexpected EOF in bcmap');\n        }\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7F;\n      } while (!last);\n      var i = size, buffer = 0, bufferSize = 0;\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer = (stack[--sp] << bufferSize) | buffer;\n          bufferSize += 7;\n        }\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    },\n    readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      var sign = num[size] & 1 ? 255 : 0;\n      var c = 0;\n      for (var i = 0; i <= size; i++) {\n        c = ((c & 1) << 8) | num[i];\n        num[i] = (c >> 1) ^ sign;\n      }\n    },\n    readString() {\n      var len = this.readNumber();\n      var s = '';\n      for (var i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n      return s;\n    },\n  };\n\n  function processBinaryCMap(data, cMap, extend) {\n    return new Promise(function (resolve, reject) {\n      var stream = new BinaryCMapStream(data);\n      var header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n\n      var useCMap = null;\n      var start = new Uint8Array(MAX_NUM_SIZE);\n      var end = new Uint8Array(MAX_NUM_SIZE);\n      var char = new Uint8Array(MAX_NUM_SIZE);\n      var charCode = new Uint8Array(MAX_NUM_SIZE);\n      var tmp = new Uint8Array(MAX_NUM_SIZE);\n      var code;\n\n      var b;\n      while ((b = stream.readByte()) >= 0) {\n        var type = b >> 5;\n        if (type === 7) { // metadata, e.g. comment or usecmap\n          switch (b & 0x1F) {\n            case 0:\n              stream.readString(); // skipping comment\n              break;\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n          continue;\n        }\n        var sequence = !!(b & 0x10);\n        var dataSize = b & 15;\n\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error('processBinaryCMap: Invalid dataSize.');\n        }\n\n        var ucs2DataSize = 1;\n        var subitemsCount = stream.readNumber();\n        var i;\n        switch (type) {\n          case 0: // codespacerange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize),\n                                   hexToInt(end, dataSize));\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize),\n                                     hexToInt(end, dataSize));\n            }\n            break;\n          case 1: // notdefrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber(); // code\n            // undefined range, skipping\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber(); // code\n              // nop\n            }\n            break;\n          case 2: // cidchar\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n            break;\n          case 3: // cidrange\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize),\n                             code);\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(hexToInt(start, dataSize),\n                               hexToInt(end, dataSize), code);\n            }\n            break;\n          case 4: // bfchar\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(hexToInt(char, ucs2DataSize),\n                        hexToStr(charCode, dataSize));\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(hexToInt(char, ucs2DataSize),\n                          hexToStr(charCode, dataSize));\n            }\n            break;\n          case 5: // bfrange\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(hexToInt(start, ucs2DataSize),\n                            hexToInt(end, ucs2DataSize),\n                            hexToStr(charCode, dataSize));\n            for (i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(hexToInt(start, ucs2DataSize),\n                              hexToInt(end, ucs2DataSize),\n                              hexToStr(charCode, dataSize));\n            }\n            break;\n          default:\n            reject(new Error('processBinaryCMap: Unknown type: ' + type));\n            return;\n        }\n      }\n\n      if (useCMap) {\n        resolve(extend(useCMap));\n        return;\n      }\n      resolve(cMap);\n    });\n  }\n\n  function BinaryCMapReader() {}\n\n  BinaryCMapReader.prototype = {\n    process: processBinaryCMap,\n  };\n\n  return BinaryCMapReader;\n})();\n\nvar CMapFactory = (function CMapFactoryClosure() {\n  function strToInt(str) {\n    var a = 0;\n    for (var i = 0; i < str.length; i++) {\n      a = (a << 8) | str.charCodeAt(i);\n    }\n    return a >>> 0;\n  }\n\n  function expectString(obj) {\n    if (!isString(obj)) {\n      throw new FormatError('Malformed CMap: expected string.');\n    }\n  }\n\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new FormatError('Malformed CMap: expected int.');\n    }\n  }\n\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, 'endbfchar')) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      // TODO are /dstName used?\n      expectString(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, 'endbfrange')) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      if (Number.isInteger(obj) || isString(obj)) {\n        var dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if (isCmd(obj, '[')) {\n        obj = lexer.getObj();\n        var array = [];\n        while (!isCmd(obj, ']') && !isEOF(obj)) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n    throw new FormatError('Invalid bf range.');\n  }\n\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, 'endcidchar')) {\n        return;\n      }\n      expectString(obj);\n      var src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, 'endcidrange')) {\n        return;\n      }\n      expectString(obj);\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      var high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      var dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      var obj = lexer.getObj();\n      if (isEOF(obj)) {\n        break;\n      }\n      if (isCmd(obj, 'endcodespacerange')) {\n        return;\n      }\n      if (!isString(obj)) {\n        break;\n      }\n      var low = strToInt(obj);\n      obj = lexer.getObj();\n      if (!isString(obj)) {\n        break;\n      }\n      var high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n    throw new FormatError('Invalid codespace range.');\n  }\n\n  function parseWMode(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n\n  function parseCMapName(cMap, lexer) {\n    var obj = lexer.getObj();\n    if (isName(obj) && isString(obj.name)) {\n      cMap.name = obj.name;\n    }\n  }\n\n  function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    var previous;\n    var embeddedUseCMap;\n    objLoop: while (true) {\n      try {\n        var obj = lexer.getObj();\n        if (isEOF(obj)) {\n          break;\n        } else if (isName(obj)) {\n          if (obj.name === 'WMode') {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === 'CMapName') {\n            parseCMapName(cMap, lexer);\n          }\n          previous = obj;\n        } else if (isCmd(obj)) {\n          switch (obj.cmd) {\n            case 'endcmap':\n              break objLoop;\n            case 'usecmap':\n              if (isName(previous)) {\n                embeddedUseCMap = previous.name;\n              }\n              break;\n            case 'begincodespacerange':\n              parseCodespaceRange(cMap, lexer);\n              break;\n            case 'beginbfchar':\n              parseBfChar(cMap, lexer);\n              break;\n            case 'begincidchar':\n              parseCidChar(cMap, lexer);\n              break;\n            case 'beginbfrange':\n              parseBfRange(cMap, lexer);\n              break;\n            case 'begincidrange':\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof MissingDataException) {\n          throw ex;\n        }\n        warn('Invalid cMap data: ' + ex);\n        continue;\n      }\n    }\n\n    if (!useCMap && embeddedUseCMap) {\n      // Load the useCMap definition from the file only if there wasn't one\n      // specified.\n      useCMap = embeddedUseCMap;\n    }\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n    return Promise.resolve(cMap);\n  }\n\n  function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function(newCMap) {\n      cMap.useCMap = newCMap;\n      // If there aren't any code space ranges defined clone all the parent ones\n      // into this cMap.\n      if (cMap.numCodespaceRanges === 0) {\n        var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n        for (var i = 0; i < useCodespaceRanges.length; i++) {\n          cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n        }\n        cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n      }\n      // Merge the map into the current one, making sure not to override\n      // any previously defined entries.\n      cMap.useCMap.forEach(function(key, value) {\n        if (!cMap.contains(key)) {\n          cMap.mapOne(key, cMap.useCMap.lookup(key));\n        }\n      });\n\n      return cMap;\n    });\n  }\n\n  function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === 'Identity-H') {\n      return Promise.resolve(new IdentityCMap(false, 2));\n    } else if (name === 'Identity-V') {\n      return Promise.resolve(new IdentityCMap(true, 2));\n    }\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      return Promise.reject(new Error('Unknown CMap name: ' + name));\n    }\n    if (!fetchBuiltInCMap) {\n      return Promise.reject(new Error(\n        'Built-in CMap parameters are not provided.'));\n    }\n\n    return fetchBuiltInCMap(name).then(function (data) {\n      var cMapData = data.cMapData, compressionType = data.compressionType;\n      var cMap = new CMap(true);\n\n      if (compressionType === CMapCompressionType.BINARY) {\n        return new BinaryCMapReader().process(cMapData, cMap,\n            function (useCMap) {\n          return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n        });\n      }\n      if (compressionType === CMapCompressionType.NONE) {\n        var lexer = new Lexer(new Stream(cMapData));\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n      }\n      return Promise.reject(new Error(\n        'TODO: Only BINARY/NONE CMap compression is currently supported.'));\n    });\n  }\n\n  return {\n    create(params) {\n      var encoding = params.encoding;\n      var fetchBuiltInCMap = params.fetchBuiltInCMap;\n      var useCMap = params.useCMap;\n\n      if (isName(encoding)) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if (isStream(encoding)) {\n        var cMap = new CMap();\n        var lexer = new Lexer(encoding);\n        return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(\n            function (parsedCMap) {\n          if (parsedCMap.isIdentityCMap) {\n            return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n          }\n          return parsedCMap;\n        });\n      }\n      return Promise.reject(new Error('Encoding required.'));\n    },\n  };\n})();\n\nexport {\n  CMap,\n  IdentityCMap,\n  CMapFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert, bytesToString, FONT_IDENTITY_MATRIX, FontType, FormatError, info,\n  isNum, isSpace, MissingDataException, readUint32, shadow, string32,\n  unreachable, warn\n} from '../shared/util';\nimport {\n  CFF, CFFCharset, CFFCompiler, CFFHeader, CFFIndex, CFFParser, CFFPrivateDict,\n  CFFStandardStrings, CFFStrings, CFFTopDict\n} from './cff_parser';\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from './glyphlist';\nimport {\n  getEncoding, MacRomanEncoding, StandardEncoding, SymbolSetEncoding,\n  ZapfDingbatsEncoding\n} from './encodings';\nimport {\n  getGlyphMapForStandardFonts, getNonStdFontMap, getStdFontMap,\n  getSupplementalGlyphMapForArialBlack, getSupplementalGlyphMapForCalibri\n} from './standard_fonts';\nimport {\n  getUnicodeForGlyph, getUnicodeRangeFor, mapSpecialUnicodeValues\n} from './unicode';\nimport { FontRendererFactory } from './font_renderer';\nimport { IdentityCMap } from './cmap';\nimport { Stream } from './stream';\nimport { Type1Parser } from './type1_parser';\n\n // Unicode Private Use Areas:\nconst PRIVATE_USE_AREAS = [\n  [0xE000, 0xF8FF],     // BMP (0)\n  [0x100000, 0x10FFFD], // PUP (16)\n];\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nvar PDF_GLYPH_SPACE_UNITS = 1000;\n\n// Accented characters have issues on Windows and Linux. When this flag is\n// enabled glyphs that use seac and seac style endchar operators are truncated\n// and we instead just store the glyph id's of the base glyph and its accent to\n// be drawn individually.\n// Linux (freetype) requires that when a seac style endchar is used\n// that the charset must be a predefined one, however we build a\n// custom one. Windows just refuses to draw glyphs with seac operators.\nvar SEAC_ANALYSIS_ENABLED = true;\n\nvar FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144,\n};\n\nvar MacStandardGlyphOrdering = [\n  '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl',\n  'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft',\n  'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash',\n  'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',\n  'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at',\n  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',\n  'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft',\n  'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b',\n  'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',\n  'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright',\n  'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde',\n  'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis',\n  'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',\n  'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve',\n  'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex',\n  'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet',\n  'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute',\n  'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal',\n  'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi',\n  'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash',\n  'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin',\n  'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis',\n  'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash',\n  'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright',\n  'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency',\n  'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered',\n  'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex',\n  'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex',\n  'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute',\n  'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron',\n  'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron',\n  'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar',\n  'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply',\n  'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter',\n  'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla',\n  'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];\n\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n  // adjusting width to fontMatrix scale\n  var scale = 0.001 / properties.fontMatrix[0];\n  var glyphsWidths = properties.widths;\n  for (var glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n  properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.hasIncludedToUnicodeMap) {\n    return; // The font dictionary has a `ToUnicode` entry.\n  }\n  if (properties.hasEncoding) {\n    return; // The font dictionary has an `Encoding` entry.\n  }\n  if (builtInEncoding === properties.defaultEncoding) {\n    return; // No point in trying to adjust `toUnicode` if the encodings match.\n  }\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n    return;\n  }\n  var toUnicode = [], glyphsUnicodeMap = getGlyphsUnicode();\n  for (var charCode in builtInEncoding) {\n    var glyphName = builtInEncoding[charCode];\n    var unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n  properties.toUnicode.amend(toUnicode);\n}\n\nfunction getFontType(type, subtype) {\n  switch (type) {\n    case 'Type1':\n      return subtype === 'Type1C' ? FontType.TYPE1C : FontType.TYPE1;\n    case 'CIDFontType0':\n      return subtype === 'CIDFontType0C' ? FontType.CIDFONTTYPE0C :\n        FontType.CIDFONTTYPE0;\n    case 'OpenType':\n      return FontType.OPENTYPE;\n    case 'TrueType':\n      return FontType.TRUETYPE;\n    case 'CIDFontType2':\n      return FontType.CIDFONTTYPE2;\n    case 'MMType1':\n      return FontType.MMTYPE1;\n    case 'Type0':\n      return FontType.TYPE0;\n    default:\n      return FontType.UNKNOWN;\n  }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n  // The glyph name is non-standard, trying to recover.\n  var unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n  if (unicode !== -1) {\n    for (var key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n  info('Unable to recover a standard glyph name for: ' + name);\n  return name;\n}\n\nvar Glyph = (function GlyphClosure() {\n  function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId,\n                 isSpace, isInFont) {\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n  }\n\n  Glyph.prototype.matchesForCache = function(fontChar, unicode, accent, width,\n                                             vmetric, operatorListId, isSpace,\n                                             isInFont) {\n    return this.fontChar === fontChar &&\n           this.unicode === unicode &&\n           this.accent === accent &&\n           this.width === width &&\n           this.vmetric === vmetric &&\n           this.operatorListId === operatorListId &&\n           this.isSpace === isSpace &&\n           this.isInFont === isInFont;\n  };\n\n  return Glyph;\n})();\n\nvar ToUnicodeMap = (function ToUnicodeMapClosure() {\n  function ToUnicodeMap(cmap = []) {\n    // The elements of this._map can be integers or strings, depending on how\n    // `cmap` was created.\n    this._map = cmap;\n  }\n\n  ToUnicodeMap.prototype = {\n    get length() {\n      return this._map.length;\n    },\n\n    forEach(callback) {\n      for (var charCode in this._map) {\n        callback(charCode, this._map[charCode].charCodeAt(0));\n      }\n    },\n\n    has(i) {\n      return this._map[i] !== undefined;\n    },\n\n    get(i) {\n      return this._map[i];\n    },\n\n    charCodeOf(value) {\n      // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n      // are both very sparse and very large (see issue8372.pdf).\n      let map = this._map;\n      if (map.length <= 0x10000) {\n        return map.indexOf(value);\n      }\n      for (let charCode in map) {\n        if (map[charCode] === value) {\n          return (charCode | 0);\n        }\n      }\n      return -1;\n    },\n\n    amend(map) {\n      for (var charCode in map) {\n        this._map[charCode] = map[charCode];\n      }\n    },\n  };\n\n  return ToUnicodeMap;\n})();\n\nvar IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() {\n  function IdentityToUnicodeMap(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n\n  IdentityToUnicodeMap.prototype = {\n    get length() {\n      return (this.lastChar + 1) - this.firstChar;\n    },\n\n    forEach(callback) {\n      for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n        callback(i, i);\n      }\n    },\n\n    has(i) {\n      return this.firstChar <= i && i <= this.lastChar;\n    },\n\n    get(i) {\n      if (this.firstChar <= i && i <= this.lastChar) {\n        return String.fromCharCode(i);\n      }\n      return undefined;\n    },\n\n    charCodeOf(v) {\n      return (Number.isInteger(v) &&\n              v >= this.firstChar && v <= this.lastChar) ? v : -1;\n    },\n\n    amend(map) {\n      unreachable('Should not call amend()');\n    },\n  };\n\n  return IdentityToUnicodeMap;\n})();\n\nvar OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {\n  function writeInt16(dest, offset, num) {\n    dest[offset] = (num >> 8) & 0xFF;\n    dest[offset + 1] = num & 0xFF;\n  }\n\n  function writeInt32(dest, offset, num) {\n    dest[offset] = (num >> 24) & 0xFF;\n    dest[offset + 1] = (num >> 16) & 0xFF;\n    dest[offset + 2] = (num >> 8) & 0xFF;\n    dest[offset + 3] = num & 0xFF;\n  }\n\n  function writeData(dest, offset, data) {\n    var i, ii;\n    if (data instanceof Uint8Array) {\n      dest.set(data, offset);\n    } else if (typeof data === 'string') {\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data.charCodeAt(i) & 0xFF;\n      }\n    } else {\n      // treating everything else as array\n      for (i = 0, ii = data.length; i < ii; i++) {\n        dest[offset++] = data[i] & 0xFF;\n      }\n    }\n  }\n\n  function OpenTypeFileBuilder(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n\n  OpenTypeFileBuilder.getSearchParams =\n      function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {\n    var maxPower2 = 1, log2 = 0;\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n    var searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange,\n    };\n  };\n\n  var OTF_HEADER_SIZE = 12;\n  var OTF_TABLE_ENTRY_SIZE = 16;\n\n  OpenTypeFileBuilder.prototype = {\n    toArray: function OpenTypeFileBuilder_toArray() {\n      var sfnt = this.sfnt;\n\n      // Tables needs to be written by ascendant alphabetic order\n      var tables = this.tables;\n      var tablesNames = Object.keys(tables);\n      tablesNames.sort();\n      var numTables = tablesNames.length;\n\n      var i, j, jj, table, tableName;\n      // layout the tables data\n      var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n      var tableOffsets = [offset];\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        var paddedLength = ((table.length + 3) & ~3) >>> 0;\n        offset += paddedLength;\n        tableOffsets.push(offset);\n      }\n\n      var file = new Uint8Array(offset);\n      // write the table data first (mostly for checksum)\n      for (i = 0; i < numTables; i++) {\n        table = tables[tablesNames[i]];\n        writeData(file, tableOffsets[i], table);\n      }\n\n      // sfnt version (4 bytes)\n      if (sfnt === 'true') {\n        // Windows hates the Mac TrueType sfnt version number\n        sfnt = string32(0x00010000);\n      }\n      file[0] = sfnt.charCodeAt(0) & 0xFF;\n      file[1] = sfnt.charCodeAt(1) & 0xFF;\n      file[2] = sfnt.charCodeAt(2) & 0xFF;\n      file[3] = sfnt.charCodeAt(3) & 0xFF;\n\n      // numTables (2 bytes)\n      writeInt16(file, 4, numTables);\n\n      var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n      // searchRange (2 bytes)\n      writeInt16(file, 6, searchParams.range);\n      // entrySelector (2 bytes)\n      writeInt16(file, 8, searchParams.entry);\n      // rangeShift (2 bytes)\n      writeInt16(file, 10, searchParams.rangeShift);\n\n      offset = OTF_HEADER_SIZE;\n      // writing table entries\n      for (i = 0; i < numTables; i++) {\n        tableName = tablesNames[i];\n        file[offset] = tableName.charCodeAt(0) & 0xFF;\n        file[offset + 1] = tableName.charCodeAt(1) & 0xFF;\n        file[offset + 2] = tableName.charCodeAt(2) & 0xFF;\n        file[offset + 3] = tableName.charCodeAt(3) & 0xFF;\n\n        // checksum\n        var checksum = 0;\n        for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n          var quad = readUint32(file, j);\n          checksum = (checksum + quad) >>> 0;\n        }\n        writeInt32(file, offset + 4, checksum);\n\n        // offset\n        writeInt32(file, offset + 8, tableOffsets[i]);\n        // length\n        writeInt32(file, offset + 12, tables[tableName].length);\n\n        offset += OTF_TABLE_ENTRY_SIZE;\n      }\n      return file;\n    },\n\n    addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n      if (tag in this.tables) {\n        throw new Error('Table ' + tag + ' already exists');\n      }\n      this.tables[tag] = data;\n    },\n  };\n\n  return OpenTypeFileBuilder;\n})();\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n *\n * For example to read a Type1 font and to attach it to the document:\n *   var type1Font = new Font(\"MyFontName\", binaryFile, propertiesObject);\n *   type1Font.bind();\n */\nvar Font = (function FontClosure() {\n  function Font(name, file, properties) {\n    var charCode;\n\n    this.name = name;\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.sizes = [];\n    this.missingFile = false;\n\n    this.glyphCache = Object.create(null);\n\n    this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n    var type = properties.type;\n    var subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n\n    this.fallbackName = (this.isMonospace ? 'monospace' :\n                         (this.isSerifFont ? 'serif' : 'sans-serif'));\n\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.wideChars = properties.wideChars;\n    this.cMap = properties.cMap;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n\n    this.toUnicode = properties.toUnicode;\n    this.fallbackToUnicode = properties.fallbackToUnicode || new ToUnicodeMap();\n\n    this.toFontChar = [];\n\n    if (properties.type === 'Type3') {\n      for (charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] = (this.differences[charCode] ||\n                                     properties.defaultEncoding[charCode]);\n      }\n      this.fontType = FontType.TYPE3;\n      return;\n    }\n\n    this.cidEncoding = properties.cidEncoding;\n    this.vertical = properties.vertical;\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n\n    if (!file || file.isEmpty) {\n      if (file) {\n        // Some bad PDF generators will include empty font files,\n        // attempting to recover by assuming that no file exists.\n        warn('Font file is empty in \"' + name + '\" (' + this.loadedName + ')');\n      }\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    // Parse the font file to determine the correct type/subtype, rather than\n    // relying on the (often incorrect) data in the font dictionary; (see e.g.\n    //  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\n    [type, subtype] = getFontFileType(file, properties);\n\n    if (type !== this.type || subtype !== this.subtype) {\n      info('Inconsistent font file Type/SubType, expected: ' +\n           `${this.type}/${this.subtype} but found: ${type}/${subtype}.`);\n    }\n\n    try {\n      var data;\n      switch (type) {\n        case 'MMType1':\n          info('MMType1 font (' + name + '), falling back to Type1.');\n          /* falls through */\n        case 'Type1':\n        case 'CIDFontType0':\n          this.mimetype = 'font/opentype';\n\n          var cff = (subtype === 'Type1C' || subtype === 'CIDFontType0C') ?\n            new CFFFont(file, properties) :\n            new Type1Font(name, file, properties);\n\n          adjustWidths(properties);\n\n          // Wrap the CFF data inside an OTF font file\n          data = this.convert(name, cff, properties);\n          break;\n\n        case 'OpenType':\n        case 'TrueType':\n        case 'CIDFontType2':\n          this.mimetype = 'font/opentype';\n\n          // Repair the TrueType file. It is can be damaged in the point of\n          // view of the sanitizer\n          data = this.checkAndRepair(name, file, properties);\n          if (this.isOpenType) {\n            adjustWidths(properties);\n\n            type = 'OpenType';\n          }\n          break;\n\n        default:\n          throw new FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      warn(e);\n      this.fallbackToSystemFont();\n      return;\n    }\n\n    this.data = data;\n    this.fontType = getFontType(type, subtype);\n\n    // Transfer some properties again that could change during font conversion\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.encoding = properties.baseEncoding;\n    this.seacMap = properties.seacMap;\n  }\n\n  Font.getFontID = (function () {\n    var ID = 1;\n    return function Font_getFontID() {\n      return String(ID++);\n    };\n  })();\n\n  function int16(b0, b1) {\n    return (b0 << 8) + b1;\n  }\n\n  function writeSignedInt16(bytes, index, value) {\n    bytes[index + 1] = value;\n    bytes[index] = value >>> 8;\n  }\n\n  function signedInt16(b0, b1) {\n    var value = (b0 << 8) + b1;\n    return value & (1 << 15) ? value - 0x10000 : value;\n  }\n\n  function int32(b0, b1, b2, b3) {\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  function string16(value) {\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function safeString16(value) {\n    // clamp value to the 16-bit int range\n    value = (value > 0x7FFF ? 0x7FFF : (value < -0x8000 ? -0x8000 : value));\n    return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n  }\n\n  function isTrueTypeFile(file) {\n    var header = file.peekBytes(4);\n    return (readUint32(header, 0) === 0x00010000 ||\n            bytesToString(header) === 'true');\n  }\n\n  function isTrueTypeCollectionFile(file) {\n    let header = file.peekBytes(4);\n    return bytesToString(header) === 'ttcf';\n  }\n\n  function isOpenTypeFile(file) {\n    var header = file.peekBytes(4);\n    return bytesToString(header) === 'OTTO';\n  }\n\n  function isType1File(file) {\n    var header = file.peekBytes(2);\n    // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n    if (header[0] === 0x25 && header[1] === 0x21) {\n      return true;\n    }\n    // ... obviously some fonts violate that part of the specification,\n    // please refer to the comment in |Type1Font| below.\n    if (header[0] === 0x80 && header[1] === 0x01) { // pfb file header.\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Compared to other font formats, the header in CFF files is not constant\n   * but contains version numbers. To reduce the possibility of misclassifying\n   * font files as CFF, it's recommended to check for other font formats first.\n   */\n  function isCFFFile(file) {\n    const header = file.peekBytes(4);\n    if (/* major version, [1, 255] */ header[0] >= 1 &&\n        /* minor version, [0, 255]; header[1] */\n        /* header size, [0, 255]; header[2] */\n        /* offset(0) size, [1, 4] */ (header[3] >= 1 && header[3] <= 4)) {\n      return true;\n    }\n    return false;\n  }\n\n  function getFontFileType(file, { type, subtype, composite, }) {\n    let fileType, fileSubtype;\n\n    if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n      if (composite) {\n        fileType = 'CIDFontType2';\n      } else {\n        fileType = 'TrueType';\n      }\n    } else if (isOpenTypeFile(file)) {\n      if (composite) {\n        fileType = 'CIDFontType2';\n      } else {\n        fileType = 'OpenType';\n      }\n    } else if (isType1File(file)) {\n      if (composite) {\n        fileType = 'CIDFontType0';\n      } else {\n        fileType = (type === 'MMType1' ? 'MMType1' : 'Type1');\n      }\n    } else if (isCFFFile(file)) {\n      if (composite) {\n        fileType = 'CIDFontType0';\n        fileSubtype = 'CIDFontType0C';\n      } else {\n        fileType = (type === 'MMType1' ? 'MMType1' : 'Type1');\n        fileSubtype = 'Type1C';\n      }\n    } else {\n      warn('getFontFileType: Unable to detect correct font file Type/Subtype.');\n      fileType = type;\n      fileSubtype = subtype;\n    }\n\n    return [fileType, fileSubtype];\n  }\n\n  function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n    var toFontChar = [], unicode;\n    for (var i = 0, ii = encoding.length; i < ii; i++) {\n      unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[i] = unicode;\n      }\n    }\n    for (var charCode in differences) {\n      unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n      if (unicode !== -1) {\n        toFontChar[+charCode] = unicode;\n      }\n    }\n    return toFontChar;\n  }\n\n  /**\n   * Rebuilds the char code to glyph ID map by moving all char codes to the\n   * private use area. This is done to avoid issues with various problematic\n   * unicode areas where either a glyph won't be drawn or is deformed by a\n   * shaper.\n   * @return {Object} Two properties:\n   * 'toFontChar' - maps original char codes(the value that will be read\n   * from commands such as show text) to the char codes that will be used in the\n   * font that we build\n   * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n   */\n  function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n    var newMap = Object.create(null);\n    var toFontChar = [];\n    var privateUseAreaIndex = 0;\n    var nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n    var privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    for (var originalCharCode in charCodeToGlyphId) {\n      originalCharCode |= 0;\n      var glyphId = charCodeToGlyphId[originalCharCode];\n      // For missing glyphs don't create the mappings so the glyph isn't\n      // drawn.\n      if (!hasGlyph(glyphId)) {\n        continue;\n      }\n      if (nextAvailableFontCharCode > privateUseOffetEnd) {\n        privateUseAreaIndex++;\n        if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n          warn('Ran out of space in font private use area.');\n          break;\n        }\n        nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n        privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n      }\n      var fontCharCode = nextAvailableFontCharCode++;\n      if (glyphId === 0) {\n        glyphId = newGlyphZeroId;\n      }\n\n      newMap[fontCharCode] = glyphId;\n      toFontChar[originalCharCode] = fontCharCode;\n    }\n    return {\n      toFontChar,\n      charCodeToGlyphId: newMap,\n      nextAvailableFontCharCode,\n    };\n  }\n\n  function getRanges(glyphs, numGlyphs) {\n    // Array.sort() sorts by characters, not numerically, so convert to an\n    // array of characters.\n    var codes = [];\n    for (var charCode in glyphs) {\n      // Remove an invalid glyph ID mappings to make OTS happy.\n      if (glyphs[charCode] >= numGlyphs) {\n        continue;\n      }\n      codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode], });\n    }\n    // Some fonts have zero glyphs and are used only for text selection, but\n    // there needs to be at least one to build a valid cmap table.\n    if (codes.length === 0) {\n      codes.push({ fontCharCode: 0, glyphId: 0, });\n    }\n    codes.sort(function fontGetRangesSort(a, b) {\n      return a.fontCharCode - b.fontCharCode;\n    });\n\n    // Split the sorted codes into ranges.\n    var ranges = [];\n    var length = codes.length;\n    for (var n = 0; n < length; ) { // eslint-disable-line space-in-parens\n      var start = codes[n].fontCharCode;\n      var codeIndices = [codes[n].glyphId];\n      ++n;\n      var end = start;\n      while (n < length && end + 1 === codes[n].fontCharCode) {\n        codeIndices.push(codes[n].glyphId);\n        ++end;\n        ++n;\n        if (end === 0xFFFF) {\n          break;\n        }\n      }\n      ranges.push([start, end, codeIndices]);\n    }\n\n    return ranges;\n  }\n\n  function createCmapTable(glyphs, numGlyphs) {\n    var ranges = getRanges(glyphs, numGlyphs);\n    var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1;\n    var cmap = '\\x00\\x00' + // version\n               string16(numTables) +  // numTables\n               '\\x00\\x03' + // platformID\n               '\\x00\\x01' + // encodingID\n               string32(4 + numTables * 8); // start of the table record\n\n    var i, ii, j, jj;\n    for (i = ranges.length - 1; i >= 0; --i) {\n      if (ranges[i][0] <= 0xFFFF) {\n        break;\n      }\n    }\n    var bmpLength = i + 1;\n\n    if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) {\n      ranges[i][1] = 0xFFFE;\n    }\n    var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0;\n    var segCount = bmpLength + trailingRangesCount;\n    var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n    // Fill up the 4 parallel arrays describing the segments.\n    var startCount = '';\n    var endCount = '';\n    var idDeltas = '';\n    var idRangeOffsets = '';\n    var glyphsIds = '';\n    var bias = 0;\n\n    var range, start, end, codes;\n    for (i = 0, ii = bmpLength; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      end = range[1];\n      startCount += string16(start);\n      endCount += string16(end);\n      codes = range[2];\n      var contiguous = true;\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          contiguous = false;\n          break;\n        }\n      }\n      if (!contiguous) {\n        var offset = (segCount - i) * 2 + bias * 2;\n        bias += (end - start + 1);\n\n        idDeltas += string16(0);\n        idRangeOffsets += string16(offset);\n\n        for (j = 0, jj = codes.length; j < jj; ++j) {\n          glyphsIds += string16(codes[j]);\n        }\n      } else {\n        var startCode = codes[0];\n\n        idDeltas += string16((startCode - start) & 0xFFFF);\n        idRangeOffsets += string16(0);\n      }\n    }\n\n    if (trailingRangesCount > 0) {\n      endCount += '\\xFF\\xFF';\n      startCount += '\\xFF\\xFF';\n      idDeltas += '\\x00\\x01';\n      idRangeOffsets += '\\x00\\x00';\n    }\n\n    var format314 = '\\x00\\x00' + // language\n                    string16(2 * segCount) +\n                    string16(searchParams.range) +\n                    string16(searchParams.entry) +\n                    string16(searchParams.rangeShift) +\n                    endCount + '\\x00\\x00' + startCount +\n                    idDeltas + idRangeOffsets + glyphsIds;\n\n    var format31012 = '';\n    var header31012 = '';\n    if (numTables > 1) {\n      cmap += '\\x00\\x03' + // platformID\n              '\\x00\\x0A' + // encodingID\n              string32(4 + numTables * 8 +\n                       4 + format314.length); // start of the table record\n      format31012 = '';\n      for (i = 0, ii = ranges.length; i < ii; i++) {\n        range = ranges[i];\n        start = range[0];\n        codes = range[2];\n        var code = codes[0];\n        for (j = 1, jj = codes.length; j < jj; ++j) {\n          if (codes[j] !== codes[j - 1] + 1) {\n            end = range[0] + j - 1;\n            format31012 += string32(start) + // startCharCode\n                           string32(end) + // endCharCode\n                           string32(code); // startGlyphID\n            start = end + 1;\n            code = codes[j];\n          }\n        }\n        format31012 += string32(start) + // startCharCode\n                       string32(range[1]) + // endCharCode\n                       string32(code); // startGlyphID\n      }\n      header31012 = '\\x00\\x0C' + // format\n                    '\\x00\\x00' + // reserved\n                    string32(format31012.length + 16) + // length\n                    '\\x00\\x00\\x00\\x00' + // language\n                    string32(format31012.length / 12); // nGroups\n    }\n\n    return cmap + '\\x00\\x04' + // format\n                  string16(format314.length + 4) + // length\n                  format314 + header31012 + format31012;\n  }\n\n  function validateOS2Table(os2) {\n    var stream = new Stream(os2.data);\n    var version = stream.getUint16();\n    // TODO verify all OS/2 tables fields, but currently we validate only those\n    // that give us issues\n    stream.getBytes(60); // skipping type, misc sizes, panose, unicode ranges\n    var selection = stream.getUint16();\n    if (version < 4 && (selection & 0x0300)) {\n      return false;\n    }\n    var firstChar = stream.getUint16();\n    var lastChar = stream.getUint16();\n    if (firstChar > lastChar) {\n      return false;\n    }\n    stream.getBytes(6); // skipping sTypoAscender/Descender/LineGap\n    var usWinAscent = stream.getUint16();\n    if (usWinAscent === 0) { // makes font unreadable by windows\n      return false;\n    }\n\n    // OS/2 appears to be valid, resetting some fields\n    os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n    return true;\n  }\n\n  function createOS2Table(properties, charstrings, override) {\n    override = override || {\n      unitsPerEm: 0,\n      yMax: 0,\n      yMin: 0,\n      ascent: 0,\n      descent: 0,\n    };\n\n    var ulUnicodeRange1 = 0;\n    var ulUnicodeRange2 = 0;\n    var ulUnicodeRange3 = 0;\n    var ulUnicodeRange4 = 0;\n\n    var firstCharIndex = null;\n    var lastCharIndex = 0;\n\n    if (charstrings) {\n      for (var code in charstrings) {\n        code |= 0;\n        if (firstCharIndex > code || !firstCharIndex) {\n          firstCharIndex = code;\n        }\n        if (lastCharIndex < code) {\n          lastCharIndex = code;\n        }\n\n        var position = getUnicodeRangeFor(code);\n        if (position < 32) {\n          ulUnicodeRange1 |= 1 << position;\n        } else if (position < 64) {\n          ulUnicodeRange2 |= 1 << position - 32;\n        } else if (position < 96) {\n          ulUnicodeRange3 |= 1 << position - 64;\n        } else if (position < 123) {\n          ulUnicodeRange4 |= 1 << position - 96;\n        } else {\n          throw new FormatError(\n            'Unicode ranges Bits > 123 are reserved for internal usage');\n        }\n      }\n      if (lastCharIndex > 0xFFFF) {\n        // OS2 only supports a 16 bit int. The spec says if supplementary\n        // characters are used the field should just be set to 0xFFFF.\n        lastCharIndex = 0xFFFF;\n      }\n    } else {\n      // TODO\n      firstCharIndex = 0;\n      lastCharIndex = 255;\n    }\n\n    var bbox = properties.bbox || [0, 0, 0, 0];\n    var unitsPerEm = (override.unitsPerEm ||\n                      1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0]);\n\n    // if the font units differ to the PDF glyph space units\n    // then scale up the values\n    var scale = (properties.ascentScaled ? 1.0 :\n                 unitsPerEm / PDF_GLYPH_SPACE_UNITS);\n\n    var typoAscent = (override.ascent ||\n                      Math.round(scale * (properties.ascent || bbox[3])));\n    var typoDescent = (override.descent ||\n                       Math.round(scale * (properties.descent || bbox[1])));\n    if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n      typoDescent = -typoDescent; // fixing incorrect descent\n    }\n    var winAscent = override.yMax || typoAscent;\n    var winDescent = -override.yMin || -typoDescent;\n\n    return '\\x00\\x03' + // version\n           '\\x02\\x24' + // xAvgCharWidth\n           '\\x01\\xF4' + // usWeightClass\n           '\\x00\\x05' + // usWidthClass\n           '\\x00\\x00' + // fstype (0 to let the font loads via font-face on IE)\n           '\\x02\\x8A' + // ySubscriptXSize\n           '\\x02\\xBB' + // ySubscriptYSize\n           '\\x00\\x00' + // ySubscriptXOffset\n           '\\x00\\x8C' + // ySubscriptYOffset\n           '\\x02\\x8A' + // ySuperScriptXSize\n           '\\x02\\xBB' + // ySuperScriptYSize\n           '\\x00\\x00' + // ySuperScriptXOffset\n           '\\x01\\xDF' + // ySuperScriptYOffset\n           '\\x00\\x31' + // yStrikeOutSize\n           '\\x01\\x02' + // yStrikeOutPosition\n           '\\x00\\x00' + // sFamilyClass\n           '\\x00\\x00\\x06' +\n           String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n           '\\x00\\x00\\x00\\x00\\x00\\x00' + // Panose\n           string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n           string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n           string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n           string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n           '\\x2A\\x32\\x31\\x2A' + // achVendID\n           string16(properties.italicAngle ? 1 : 0) + // fsSelection\n           string16(firstCharIndex ||\n                    properties.firstChar) + // usFirstCharIndex\n           string16(lastCharIndex || properties.lastChar) +  // usLastCharIndex\n           string16(typoAscent) + // sTypoAscender\n           string16(typoDescent) + // sTypoDescender\n           '\\x00\\x64' + // sTypoLineGap (7%-10% of the unitsPerEM value)\n           string16(winAscent) + // usWinAscent\n           string16(winDescent) + // usWinDescent\n           '\\x00\\x00\\x00\\x00' + // ulCodePageRange1 (Bits 0-31)\n           '\\x00\\x00\\x00\\x00' + // ulCodePageRange2 (Bits 32-63)\n           string16(properties.xHeight) + // sxHeight\n           string16(properties.capHeight) + // sCapHeight\n           string16(0) + // usDefaultChar\n           string16(firstCharIndex || properties.firstChar) + // usBreakChar\n           '\\x00\\x03';  // usMaxContext\n  }\n\n  function createPostTable(properties) {\n    var angle = Math.floor(properties.italicAngle * (Math.pow(2, 16)));\n    return ('\\x00\\x03\\x00\\x00' + // Version number\n            string32(angle) + // italicAngle\n            '\\x00\\x00' + // underlinePosition\n            '\\x00\\x00' + // underlineThickness\n            string32(properties.fixedPitch) + // isFixedPitch\n            '\\x00\\x00\\x00\\x00' + // minMemType42\n            '\\x00\\x00\\x00\\x00' + // maxMemType42\n            '\\x00\\x00\\x00\\x00' + // minMemType1\n            '\\x00\\x00\\x00\\x00');  // maxMemType1\n  }\n\n  function createNameTable(name, proto) {\n    if (!proto) {\n      proto = [[], []]; // no strings and unicode strings\n    }\n\n    var strings = [\n      proto[0][0] || 'Original licence',  // 0.Copyright\n      proto[0][1] || name,                // 1.Font family\n      proto[0][2] || 'Unknown',           // 2.Font subfamily (font weight)\n      proto[0][3] || 'uniqueID',          // 3.Unique ID\n      proto[0][4] || name,                // 4.Full font name\n      proto[0][5] || 'Version 0.11',      // 5.Version\n      proto[0][6] || '',                  // 6.Postscript name\n      proto[0][7] || 'Unknown',           // 7.Trademark\n      proto[0][8] || 'Unknown',           // 8.Manufacturer\n      proto[0][9] || 'Unknown'            // 9.Designer\n    ];\n\n    // Mac want 1-byte per character strings while Windows want\n    // 2-bytes per character, so duplicate the names table\n    var stringsUnicode = [];\n    var i, ii, j, jj, str;\n    for (i = 0, ii = strings.length; i < ii; i++) {\n      str = proto[1][i] || strings[i];\n\n      var strBufUnicode = [];\n      for (j = 0, jj = str.length; j < jj; j++) {\n        strBufUnicode.push(string16(str.charCodeAt(j)));\n      }\n      stringsUnicode.push(strBufUnicode.join(''));\n    }\n\n    var names = [strings, stringsUnicode];\n    var platforms = ['\\x00\\x01', '\\x00\\x03'];\n    var encodings = ['\\x00\\x00', '\\x00\\x01'];\n    var languages = ['\\x00\\x00', '\\x04\\x09'];\n\n    var namesRecordCount = strings.length * platforms.length;\n    var nameTable =\n      '\\x00\\x00' +                           // format\n      string16(namesRecordCount) +           // Number of names Record\n      string16(namesRecordCount * 12 + 6);   // Storage\n\n    // Build the name records field\n    var strOffset = 0;\n    for (i = 0, ii = platforms.length; i < ii; i++) {\n      var strs = names[i];\n      for (j = 0, jj = strs.length; j < jj; j++) {\n        str = strs[j];\n        var nameRecord =\n          platforms[i] + // platform ID\n          encodings[i] + // encoding ID\n          languages[i] + // language ID\n          string16(j) + // name ID\n          string16(str.length) +\n          string16(strOffset);\n        nameTable += nameRecord;\n        strOffset += str.length;\n      }\n    }\n\n    nameTable += strings.join('') + stringsUnicode.join('');\n    return nameTable;\n  }\n\n  Font.prototype = {\n    name: null,\n    font: null,\n    mimetype: null,\n    encoding: null,\n    get renderer() {\n      var renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n      return shadow(this, 'renderer', renderer);\n    },\n\n    exportData: function Font_exportData() {\n      // TODO remove enumerating of the properties, e.g. hardcode exact names.\n      var data = {};\n      for (var i in this) {\n        if (this.hasOwnProperty(i)) {\n          data[i] = this[i];\n        }\n      }\n      return data;\n    },\n\n    fallbackToSystemFont: function Font_fallbackToSystemFont() {\n      this.missingFile = true;\n      var charCode, unicode;\n      // The file data is not specified. Trying to fix the font name\n      // to be used with the canvas.font.\n      var name = this.name;\n      var type = this.type;\n      var subtype = this.subtype;\n      var fontName = name.replace(/[,_]/g, '-');\n      var stdFontMap = getStdFontMap(), nonStdFontMap = getNonStdFontMap();\n      var isStandardFont = !!stdFontMap[fontName] ||\n        !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n      fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n      this.bold = (fontName.search(/bold/gi) !== -1);\n      this.italic = ((fontName.search(/oblique/gi) !== -1) ||\n                     (fontName.search(/italic/gi) !== -1));\n\n      // Use 'name' instead of 'fontName' here because the original\n      // name ArialBlack for example will be replaced by Helvetica.\n      this.black = (name.search(/Black/g) !== -1);\n\n      // if at least one width is present, remeasure all chars when exists\n      this.remeasure = Object.keys(this.widths).length > 0;\n      if (isStandardFont && type === 'CIDFontType2' &&\n          this.cidEncoding.indexOf('Identity-') === 0) {\n        var GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n        // Standard fonts might be embedded as CID font without glyph mapping.\n        // Building one based on GlyphMapForStandardFonts.\n        var map = [];\n        for (charCode in GlyphMapForStandardFonts) {\n          map[+charCode] = GlyphMapForStandardFonts[charCode];\n        }\n        if (/Arial-?Black/i.test(name)) {\n          var SupplementalGlyphMapForArialBlack =\n            getSupplementalGlyphMapForArialBlack();\n          for (charCode in SupplementalGlyphMapForArialBlack) {\n            map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];\n          }\n        } else if (/Calibri/i.test(name)) {\n          let SupplementalGlyphMapForCalibri =\n            getSupplementalGlyphMapForCalibri();\n          for (charCode in SupplementalGlyphMapForCalibri) {\n            map[+charCode] = SupplementalGlyphMapForCalibri[charCode];\n          }\n        }\n\n        var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n        if (!isIdentityUnicode) {\n          this.toUnicode.forEach(function(charCode, unicodeCharCode) {\n            map[+charCode] = unicodeCharCode;\n          });\n        }\n        this.toFontChar = map;\n        this.toUnicode = new ToUnicodeMap(map);\n      } else if (/Symbol/i.test(fontName)) {\n        this.toFontChar = buildToFontChar(SymbolSetEncoding, getGlyphsUnicode(),\n                                          this.differences);\n      } else if (/Dingbats/i.test(fontName)) {\n        if (/Wingdings/i.test(name)) {\n          warn('Non-embedded Wingdings font, falling back to ZapfDingbats.');\n        }\n        this.toFontChar = buildToFontChar(ZapfDingbatsEncoding,\n                                          getDingbatsGlyphsUnicode(),\n                                          this.differences);\n      } else if (isStandardFont) {\n        this.toFontChar = buildToFontChar(this.defaultEncoding,\n                                          getGlyphsUnicode(),\n                                          this.differences);\n      } else {\n        var glyphsUnicodeMap = getGlyphsUnicode();\n        this.toUnicode.forEach((charCode, unicodeCharCode) => {\n          if (!this.composite) {\n            var glyphName = (this.differences[charCode] ||\n                             this.defaultEncoding[charCode]);\n            unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n            if (unicode !== -1) {\n              unicodeCharCode = unicode;\n            }\n          }\n          this.toFontChar[charCode] = unicodeCharCode;\n        });\n      }\n      this.loadedName = fontName.split('-')[0];\n      this.fontType = getFontType(type, subtype);\n    },\n\n    checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n      const VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp',\n        'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF '];\n\n      function readTables(file, numTables) {\n        let tables = Object.create(null);\n        tables['OS/2'] = null;\n        tables['cmap'] = null;\n        tables['head'] = null;\n        tables['hhea'] = null;\n        tables['hmtx'] = null;\n        tables['maxp'] = null;\n        tables['name'] = null;\n        tables['post'] = null;\n\n        for (let i = 0; i < numTables; i++) {\n          let table = readTableEntry(font);\n          if (!VALID_TABLES.includes(table.tag)) {\n            continue; // skipping table if it's not a required or optional table\n          }\n          if (table.length === 0) {\n            continue; // skipping empty tables\n          }\n          tables[table.tag] = table;\n        }\n        return tables;\n      }\n\n      function readTableEntry(file) {\n        var tag = bytesToString(file.getBytes(4));\n\n        var checksum = file.getInt32() >>> 0;\n        var offset = file.getInt32() >>> 0;\n        var length = file.getInt32() >>> 0;\n\n        // Read the table associated data\n        var previousPosition = file.pos;\n        file.pos = file.start ? file.start : 0;\n        file.skip(offset);\n        var data = file.getBytes(length);\n        file.pos = previousPosition;\n\n        if (tag === 'head') {\n          // clearing checksum adjustment\n          data[8] = data[9] = data[10] = data[11] = 0;\n          data[17] |= 0x20; // Set font optimized for cleartype flag.\n        }\n\n        return {\n          tag,\n          checksum,\n          length,\n          offset,\n          data,\n        };\n      }\n\n      function readOpenTypeHeader(ttf) {\n        return {\n          version: bytesToString(ttf.getBytes(4)),\n          numTables: ttf.getUint16(),\n          searchRange: ttf.getUint16(),\n          entrySelector: ttf.getUint16(),\n          rangeShift: ttf.getUint16(),\n        };\n      }\n\n      function readTrueTypeCollectionHeader(ttc) {\n        let ttcTag = bytesToString(ttc.getBytes(4));\n        assert(ttcTag === 'ttcf', 'Must be a TrueType Collection font.');\n\n        let majorVersion = ttc.getUint16();\n        let minorVersion = ttc.getUint16();\n        let numFonts = ttc.getInt32() >>> 0;\n        let offsetTable = [];\n        for (let i = 0; i < numFonts; i++) {\n          offsetTable.push(ttc.getInt32() >>> 0);\n        }\n\n        let header = {\n          ttcTag,\n          majorVersion,\n          minorVersion,\n          numFonts,\n          offsetTable,\n        };\n        switch (majorVersion) {\n          case 1:\n            return header;\n          case 2:\n            header.dsigTag = ttc.getInt32() >>> 0;\n            header.dsigLength = ttc.getInt32() >>> 0;\n            header.dsigOffset = ttc.getInt32() >>> 0;\n            return header;\n        }\n        throw new FormatError(\n          `Invalid TrueType Collection majorVersion: ${majorVersion}.`);\n      }\n\n      function readTrueTypeCollectionData(ttc, fontName) {\n        let { numFonts, offsetTable, } = readTrueTypeCollectionHeader(ttc);\n\n        for (let i = 0; i < numFonts; i++) {\n          ttc.pos = (ttc.start || 0) + offsetTable[i];\n          let potentialHeader = readOpenTypeHeader(ttc);\n          let potentialTables = readTables(ttc, potentialHeader.numTables);\n\n          if (!potentialTables['name']) {\n            throw new FormatError(\n              'TrueType Collection font must contain a \"name\" table.');\n          }\n          let nameTable = readNameTable(potentialTables['name']);\n\n          for (let j = 0, jj = nameTable.length; j < jj; j++) {\n            for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n              let nameEntry = nameTable[j][k];\n              if (nameEntry && nameEntry.replace(/\\s/g, '') === fontName) {\n                return {\n                  header: potentialHeader,\n                  tables: potentialTables,\n                };\n              }\n            }\n          }\n        }\n        throw new FormatError(\n          `TrueType Collection does not contain \"${fontName}\" font.`);\n      }\n\n      /**\n       * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n       * PDF spec\n       */\n      function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) {\n        if (!cmap) {\n          warn('No cmap table available.');\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n        var segment;\n        var start = (font.start ? font.start : 0) + cmap.offset;\n        font.pos = start;\n\n        font.getUint16(); // version\n        var numTables = font.getUint16();\n\n        var potentialTable;\n        var canBreak = false;\n        // There's an order of preference in terms of which cmap subtable to\n        // use:\n        // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n        // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n        // The following takes advantage of the fact that the tables are sorted\n        // to work.\n        for (var i = 0; i < numTables; i++) {\n          var platformId = font.getUint16();\n          var encodingId = font.getUint16();\n          var offset = font.getInt32() >>> 0;\n          var useTable = false;\n\n          // Sometimes there are multiple of the same type of table. Default\n          // to choosing the first table and skip the rest.\n          if (potentialTable && potentialTable.platformId === platformId &&\n              potentialTable.encodingId === encodingId) {\n            continue;\n          }\n\n          if (platformId === 0 && encodingId === 0) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (platformId === 1 && encodingId === 0) {\n            useTable = true;\n            // Continue the loop since there still may be a higher priority\n            // table.\n          } else if (platformId === 3 && encodingId === 1 &&\n                     (hasEncoding || !potentialTable)) {\n            useTable = true;\n            if (!isSymbolicFont) {\n              canBreak = true;\n            }\n          } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n            useTable = true;\n            canBreak = true;\n          }\n\n          if (useTable) {\n            potentialTable = {\n              platformId,\n              encodingId,\n              offset,\n            };\n          }\n          if (canBreak) {\n            break;\n          }\n        }\n\n        if (potentialTable) {\n          font.pos = start + potentialTable.offset;\n        }\n        if (!potentialTable || font.peekByte() === -1) {\n          warn('Could not find a preferred cmap table.');\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        var format = font.getUint16();\n        font.getUint16(); // length\n        font.getUint16(); // language\n\n        var hasShortCmap = false;\n        var mappings = [];\n        var j, glyphId;\n\n        // TODO(mack): refactor this cmap subtable reading logic out\n        if (format === 0) {\n          for (j = 0; j < 256; j++) {\n            var index = font.getByte();\n            if (!index) {\n              continue;\n            }\n            mappings.push({\n              charCode: j,\n              glyphId: index,\n            });\n          }\n          hasShortCmap = true;\n        } else if (format === 4) {\n          // re-creating the table in format 4 since the encoding\n          // might be changed\n          var segCount = (font.getUint16() >> 1);\n          font.getBytes(6); // skipping range fields\n          var segIndex, segments = [];\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments.push({ end: font.getUint16(), });\n          }\n          font.getUint16();\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].start = font.getUint16();\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segments[segIndex].delta = font.getUint16();\n          }\n\n          var offsetsCount = 0;\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            var rangeOffset = font.getUint16();\n            if (!rangeOffset) {\n              segment.offsetIndex = -1;\n              continue;\n            }\n\n            var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n            segment.offsetIndex = offsetIndex;\n            offsetsCount = Math.max(offsetsCount, offsetIndex +\n                                    segment.end - segment.start + 1);\n          }\n\n          var offsets = [];\n          for (j = 0; j < offsetsCount; j++) {\n            offsets.push(font.getUint16());\n          }\n\n          for (segIndex = 0; segIndex < segCount; segIndex++) {\n            segment = segments[segIndex];\n            start = segment.start;\n            var end = segment.end;\n            var delta = segment.delta;\n            offsetIndex = segment.offsetIndex;\n\n            for (j = start; j <= end; j++) {\n              if (j === 0xFFFF) {\n                continue;\n              }\n\n              glyphId = (offsetIndex < 0 ?\n                         j : offsets[offsetIndex + j - start]);\n              glyphId = (glyphId + delta) & 0xFFFF;\n              mappings.push({\n                charCode: j,\n                glyphId,\n              });\n            }\n          }\n        } else if (format === 6) {\n          // Format 6 is a 2-bytes dense mapping, which means the font data\n          // lives glue together even if they are pretty far in the unicode\n          // table. (This looks weird, so I can have missed something), this\n          // works on Linux but seems to fails on Mac so let's rewrite the\n          // cmap table to a 3-1-4 style\n          var firstCode = font.getUint16();\n          var entryCount = font.getUint16();\n\n          for (j = 0; j < entryCount; j++) {\n            glyphId = font.getUint16();\n            var charCode = firstCode + j;\n\n            mappings.push({\n              charCode,\n              glyphId,\n            });\n          }\n        } else {\n          warn('cmap table has unsupported format: ' + format);\n          return {\n            platformId: -1,\n            encodingId: -1,\n            mappings: [],\n            hasShortCmap: false,\n          };\n        }\n\n        // removing duplicate entries\n        mappings.sort(function (a, b) {\n          return a.charCode - b.charCode;\n        });\n        for (i = 1; i < mappings.length; i++) {\n          if (mappings[i - 1].charCode === mappings[i].charCode) {\n            mappings.splice(i, 1);\n            i--;\n          }\n        }\n\n        return {\n          platformId: potentialTable.platformId,\n          encodingId: potentialTable.encodingId,\n          mappings,\n          hasShortCmap,\n        };\n      }\n\n      function sanitizeMetrics(font, header, metrics, numGlyphs) {\n        if (!header) {\n          if (metrics) {\n            metrics.data = null;\n          }\n          return;\n        }\n\n        font.pos = (font.start ? font.start : 0) + header.offset;\n        font.pos += header.length - 2;\n        var numOfMetrics = font.getUint16();\n\n        if (numOfMetrics > numGlyphs) {\n          info('The numOfMetrics (' + numOfMetrics + ') should not be ' +\n               'greater than the numGlyphs (' + numGlyphs + ')');\n          // Reduce numOfMetrics if it is greater than numGlyphs\n          numOfMetrics = numGlyphs;\n          header.data[34] = (numOfMetrics & 0xff00) >> 8;\n          header.data[35] = numOfMetrics & 0x00ff;\n        }\n\n        var numOfSidebearings = numGlyphs - numOfMetrics;\n        var numMissing = numOfSidebearings -\n          ((metrics.length - numOfMetrics * 4) >> 1);\n\n        if (numMissing > 0) {\n          // For each missing glyph, we set both the width and lsb to 0 (zero).\n          // Since we need to add two properties for each glyph, this explains\n          // the use of |numMissing * 2| when initializing the typed array.\n          var entries = new Uint8Array(metrics.length + numMissing * 2);\n          entries.set(metrics.data);\n          metrics.data = entries;\n        }\n      }\n\n      function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart,\n                             hintsValid) {\n        var glyphProfile = {\n          length: 0,\n          sizeOfInstructions: 0,\n        };\n        if (sourceEnd - sourceStart <= 12) {\n          // glyph with data less than 12 is invalid one\n          return glyphProfile;\n        }\n        var glyf = source.subarray(sourceStart, sourceEnd);\n        var contoursCount = signedInt16(glyf[0], glyf[1]);\n        if (contoursCount < 0) {\n          // OTS doesn't like contour count to be less than -1.\n          contoursCount = -1;\n          writeSignedInt16(glyf, 0, contoursCount);\n          // complex glyph, writing as is\n          dest.set(glyf, destStart);\n          glyphProfile.length = glyf.length;\n          return glyphProfile;\n        }\n\n        var i, j = 10, flagsCount = 0;\n        for (i = 0; i < contoursCount; i++) {\n          var endPoint = (glyf[j] << 8) | glyf[j + 1];\n          flagsCount = endPoint + 1;\n          j += 2;\n        }\n        // skipping instructions\n        var instructionsStart = j;\n        var instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n        glyphProfile.sizeOfInstructions = instructionsLength;\n        j += 2 + instructionsLength;\n        var instructionsEnd = j;\n        // validating flags\n        var coordinatesLength = 0;\n        for (i = 0; i < flagsCount; i++) {\n          var flag = glyf[j++];\n          if (flag & 0xC0) {\n            // reserved flags must be zero, cleaning up\n            glyf[j - 1] = flag & 0x3F;\n          }\n          var xyLength = ((flag & 2) ? 1 : (flag & 16) ? 0 : 2) +\n                         ((flag & 4) ? 1 : (flag & 32) ? 0 : 2);\n          coordinatesLength += xyLength;\n          if (flag & 8) {\n            var repeat = glyf[j++];\n            i += repeat;\n            coordinatesLength += repeat * xyLength;\n          }\n        }\n        // glyph without coordinates will be rejected\n        if (coordinatesLength === 0) {\n          return glyphProfile;\n        }\n        var glyphDataLength = j + coordinatesLength;\n        if (glyphDataLength > glyf.length) {\n          // not enough data for coordinates\n          return glyphProfile;\n        }\n        if (!hintsValid && instructionsLength > 0) {\n          dest.set(glyf.subarray(0, instructionsStart), destStart);\n          dest.set([0, 0], destStart + instructionsStart);\n          dest.set(glyf.subarray(instructionsEnd, glyphDataLength),\n                   destStart + instructionsStart + 2);\n          glyphDataLength -= instructionsLength;\n          if (glyf.length - glyphDataLength > 3) {\n            glyphDataLength = (glyphDataLength + 3) & ~3;\n          }\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        if (glyf.length - glyphDataLength > 3) {\n          // truncating and aligning to 4 bytes the long glyph data\n          glyphDataLength = (glyphDataLength + 3) & ~3;\n          dest.set(glyf.subarray(0, glyphDataLength), destStart);\n          glyphProfile.length = glyphDataLength;\n          return glyphProfile;\n        }\n        // glyph data is fine\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n\n      function sanitizeHead(head, numGlyphs, locaLength) {\n        var data = head.data;\n\n        // Validate version:\n        // Should always be 0x00010000\n        var version = int32(data[0], data[1], data[2], data[3]);\n        if (version >> 16 !== 1) {\n          info('Attempting to fix invalid version in head table: ' + version);\n          data[0] = 0;\n          data[1] = 1;\n          data[2] = 0;\n          data[3] = 0;\n        }\n\n        var indexToLocFormat = int16(data[50], data[51]);\n        if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n          info('Attempting to fix invalid indexToLocFormat in head table: ' +\n               indexToLocFormat);\n\n          // The value of indexToLocFormat should be 0 if the loca table\n          // consists of short offsets, and should be 1 if the loca table\n          // consists of long offsets.\n          //\n          // The number of entries in the loca table should be numGlyphs + 1.\n          //\n          // Using this information, we can work backwards to deduce if the\n          // size of each offset in the loca table, and thus figure out the\n          // appropriate value for indexToLocFormat.\n\n          var numGlyphsPlusOne = numGlyphs + 1;\n          if (locaLength === numGlyphsPlusOne << 1) {\n            // 0x0000 indicates the loca table consists of short offsets\n            data[50] = 0;\n            data[51] = 0;\n          } else if (locaLength === numGlyphsPlusOne << 2) {\n            // 0x0001 indicates the loca table consists of long offsets\n            data[50] = 0;\n            data[51] = 1;\n          } else {\n            throw new FormatError('Could not fix indexToLocFormat: ' +\n                                  indexToLocFormat);\n          }\n        }\n      }\n\n      function sanitizeGlyphLocations(loca, glyf, numGlyphs,\n                                      isGlyphLocationsLong, hintsValid,\n                                      dupFirstEntry, maxSizeOfInstructions) {\n        var itemSize, itemDecode, itemEncode;\n        if (isGlyphLocationsLong) {\n          itemSize = 4;\n          itemDecode = function fontItemDecodeLong(data, offset) {\n            return (data[offset] << 24) | (data[offset + 1] << 16) |\n                   (data[offset + 2] << 8) | data[offset + 3];\n          };\n          itemEncode = function fontItemEncodeLong(data, offset, value) {\n            data[offset] = (value >>> 24) & 0xFF;\n            data[offset + 1] = (value >> 16) & 0xFF;\n            data[offset + 2] = (value >> 8) & 0xFF;\n            data[offset + 3] = value & 0xFF;\n          };\n        } else {\n          itemSize = 2;\n          itemDecode = function fontItemDecode(data, offset) {\n            return (data[offset] << 9) | (data[offset + 1] << 1);\n          };\n          itemEncode = function fontItemEncode(data, offset, value) {\n            data[offset] = (value >> 9) & 0xFF;\n            data[offset + 1] = (value >> 1) & 0xFF;\n          };\n        }\n        // The first glyph is duplicated.\n        var numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n        var locaData = loca.data;\n        var locaDataSize = itemSize * (1 + numGlyphsOut);\n        // Resize loca table to account for duplicated glyph.\n        locaData = new Uint8Array(locaDataSize);\n        locaData.set(loca.data.subarray(0, locaDataSize));\n        loca.data = locaData;\n        // removing the invalid glyphs\n        var oldGlyfData = glyf.data;\n        var oldGlyfDataLength = oldGlyfData.length;\n        var newGlyfData = new Uint8Array(oldGlyfDataLength);\n        var startOffset = itemDecode(locaData, 0);\n        var writeOffset = 0;\n        var missingGlyphs = Object.create(null);\n        itemEncode(locaData, 0, writeOffset);\n        var i, j;\n        for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n          var endOffset = itemDecode(locaData, j);\n          // The spec says the offsets should be in ascending order, however\n          // some fonts use the offset of 0 to mark a glyph as missing.\n          if (endOffset === 0) {\n            endOffset = startOffset;\n          }\n          if (endOffset > oldGlyfDataLength &&\n              ((oldGlyfDataLength + 3) & ~3) === endOffset) {\n            // Aspose breaks fonts by aligning the glyphs to the qword, but not\n            // the glyf table size, which makes last glyph out of range.\n            endOffset = oldGlyfDataLength;\n          }\n          if (endOffset > oldGlyfDataLength) {\n            // glyph end offset points outside glyf data, rejecting the glyph\n            startOffset = endOffset;\n          }\n\n          var glyphProfile = sanitizeGlyph(oldGlyfData, startOffset, endOffset,\n                                           newGlyfData, writeOffset,\n                                           hintsValid);\n          var newLength = glyphProfile.length;\n          if (newLength === 0) {\n            missingGlyphs[i] = true;\n          }\n          if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n            maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n          }\n          writeOffset += newLength;\n          itemEncode(locaData, j, writeOffset);\n          startOffset = endOffset;\n        }\n\n        if (writeOffset === 0) {\n          // glyf table cannot be empty -- redoing the glyf and loca tables\n          // to have single glyph with one point\n          var simpleGlyph = new Uint8Array(\n            [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\n          for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n            itemEncode(locaData, j, simpleGlyph.length);\n          }\n          glyf.data = simpleGlyph;\n        } else if (dupFirstEntry) {\n          // Browsers will not display a glyph at position 0. Typically glyph 0\n          // is notdef, but a number of fonts put a valid glyph there so it must\n          // be duplicated and appended.\n          var firstEntryLength = itemDecode(locaData, itemSize);\n          if (newGlyfData.length > firstEntryLength + writeOffset) {\n            glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n          } else {\n            glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n            glyf.data.set(newGlyfData.subarray(0, writeOffset));\n          }\n          glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n          itemEncode(loca.data, locaData.length - itemSize,\n                     writeOffset + firstEntryLength);\n        } else {\n          glyf.data = newGlyfData.subarray(0, writeOffset);\n        }\n        return {\n          missingGlyphs,\n          maxSizeOfInstructions,\n        };\n      }\n\n      function readPostScriptTable(post, properties, maxpNumGlyphs) {\n        var start = (font.start ? font.start : 0) + post.offset;\n        font.pos = start;\n\n        var length = post.length, end = start + length;\n        var version = font.getInt32();\n        // skip rest to the tables\n        font.getBytes(28);\n\n        var glyphNames;\n        var valid = true;\n        var i;\n\n        switch (version) {\n          case 0x00010000:\n            glyphNames = MacStandardGlyphOrdering;\n            break;\n          case 0x00020000:\n            var numGlyphs = font.getUint16();\n            if (numGlyphs !== maxpNumGlyphs) {\n              valid = false;\n              break;\n            }\n            var glyphNameIndexes = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var index = font.getUint16();\n              if (index >= 32768) {\n                valid = false;\n                break;\n              }\n              glyphNameIndexes.push(index);\n            }\n            if (!valid) {\n              break;\n            }\n            var customNames = [];\n            var strBuf = [];\n            while (font.pos < end) {\n              var stringLength = font.getByte();\n              strBuf.length = stringLength;\n              for (i = 0; i < stringLength; ++i) {\n                strBuf[i] = String.fromCharCode(font.getByte());\n              }\n              customNames.push(strBuf.join(''));\n            }\n            glyphNames = [];\n            for (i = 0; i < numGlyphs; ++i) {\n              var j = glyphNameIndexes[i];\n              if (j < 258) {\n                glyphNames.push(MacStandardGlyphOrdering[j]);\n                continue;\n              }\n              glyphNames.push(customNames[j - 258]);\n            }\n            break;\n          case 0x00030000:\n            break;\n          default:\n            warn('Unknown/unsupported post table version ' + version);\n            valid = false;\n            if (properties.defaultEncoding) {\n              glyphNames = properties.defaultEncoding;\n            }\n            break;\n        }\n        properties.glyphNames = glyphNames;\n        return valid;\n      }\n\n      function readNameTable(nameTable) {\n        var start = (font.start ? font.start : 0) + nameTable.offset;\n        font.pos = start;\n\n        var names = [[], []];\n        var length = nameTable.length, end = start + length;\n        var format = font.getUint16();\n        var FORMAT_0_HEADER_LENGTH = 6;\n        if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n          // unsupported name table format or table \"too\" small\n          return names;\n        }\n        var numRecords = font.getUint16();\n        var stringsStart = font.getUint16();\n        var records = [];\n        var NAME_RECORD_LENGTH = 12;\n        var i, ii;\n\n        for (i = 0; i < numRecords &&\n                        font.pos + NAME_RECORD_LENGTH <= end; i++) {\n          var r = {\n            platform: font.getUint16(),\n            encoding: font.getUint16(),\n            language: font.getUint16(),\n            name: font.getUint16(),\n            length: font.getUint16(),\n            offset: font.getUint16(),\n          };\n          // using only Macintosh and Windows platform/encoding names\n          if ((r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n              (r.platform === 3 && r.encoding === 1 && r.language === 0x409)) {\n            records.push(r);\n          }\n        }\n        for (i = 0, ii = records.length; i < ii; i++) {\n          var record = records[i];\n          if (record.length <= 0) {\n            continue; // Nothing to process, ignoring.\n          }\n          var pos = start + stringsStart + record.offset;\n          if (pos + record.length > end) {\n            continue; // outside of name table, ignoring\n          }\n          font.pos = pos;\n          var nameIndex = record.name;\n          if (record.encoding) {\n            // unicode\n            var str = '';\n            for (var j = 0, jj = record.length; j < jj; j += 2) {\n              str += String.fromCharCode(font.getUint16());\n            }\n            names[1][nameIndex] = str;\n          } else {\n            names[0][nameIndex] = bytesToString(font.getBytes(record.length));\n          }\n        }\n        return names;\n      }\n\n      var TTOpsStackDeltas = [\n        0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n        -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n        1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n        0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n        0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n        -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n        -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n        -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n        -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n        // 0xC0-DF == -1 and 0xE0-FF == -2\n\n      function sanitizeTTProgram(table, ttContext) {\n        var data = table.data;\n        var i = 0, j, n, b, funcId, pc, lastEndf = 0, lastDeff = 0;\n        var stack = [];\n        var callstack = [];\n        var functionsCalled = [];\n        var tooComplexToFollowFunctions =\n          ttContext.tooComplexToFollowFunctions;\n        var inFDEF = false, ifLevel = 0, inELSE = 0;\n        for (var ii = data.length; i < ii;) {\n          var op = data[i++];\n          // The TrueType instruction set docs can be found at\n          // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n          if (op === 0x40) { // NPUSHB - pushes n bytes\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if (op === 0x41) { // NPUSHW - pushes n words\n            n = data[i++];\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if ((op & 0xF8) === 0xB0) { // PUSHB - pushes bytes\n            n = op - 0xB0 + 1;\n            if (inFDEF || inELSE) {\n              i += n;\n            } else {\n              for (j = 0; j < n; j++) {\n                stack.push(data[i++]);\n              }\n            }\n          } else if ((op & 0xF8) === 0xB8) { // PUSHW - pushes words\n            n = op - 0xB8 + 1;\n            if (inFDEF || inELSE) {\n              i += n * 2;\n            } else {\n              for (j = 0; j < n; j++) {\n                b = data[i++];\n                stack.push((b << 8) | data[i++]);\n              }\n            }\n          } else if (op === 0x2B && !tooComplexToFollowFunctions) { // CALL\n            if (!inFDEF && !inELSE) {\n              // collecting information about which functions are used\n              funcId = stack[stack.length - 1];\n              if (isNaN(funcId)) {\n                info('TT: CALL empty stack (or invalid entry).');\n              } else {\n                ttContext.functionsUsed[funcId] = true;\n                if (funcId in ttContext.functionsStackDeltas) {\n                  let newStackLength = stack.length +\n                                       ttContext.functionsStackDeltas[funcId];\n                  if (newStackLength < 0) {\n                    warn('TT: CALL invalid functions stack delta.');\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  stack.length = newStackLength;\n                } else if (funcId in ttContext.functionsDefined &&\n                           !functionsCalled.includes(funcId)) {\n                  callstack.push({ data, i, stackTop: stack.length - 1, });\n                  functionsCalled.push(funcId);\n                  pc = ttContext.functionsDefined[funcId];\n                  if (!pc) {\n                    warn('TT: CALL non-existent function');\n                    ttContext.hintsValid = false;\n                    return;\n                  }\n                  data = pc.data;\n                  i = pc.i;\n                }\n              }\n            }\n          } else if (op === 0x2C && !tooComplexToFollowFunctions) { // FDEF\n            if (inFDEF || inELSE) {\n              warn('TT: nested FDEFs not allowed');\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // collecting information about which functions are defined\n            lastDeff = i;\n            funcId = stack.pop();\n            ttContext.functionsDefined[funcId] = { data, i, };\n          } else if (op === 0x2D) { // ENDF - end of function\n            if (inFDEF) {\n              inFDEF = false;\n              lastEndf = i;\n            } else {\n              pc = callstack.pop();\n              if (!pc) {\n                warn('TT: ENDF bad stack');\n                ttContext.hintsValid = false;\n                return;\n              }\n              funcId = functionsCalled.pop();\n              data = pc.data;\n              i = pc.i;\n              ttContext.functionsStackDeltas[funcId] =\n                stack.length - pc.stackTop;\n            }\n          } else if (op === 0x89) { // IDEF - instruction definition\n            if (inFDEF || inELSE) {\n              warn('TT: nested IDEFs not allowed');\n              tooComplexToFollowFunctions = true;\n            }\n            inFDEF = true;\n            // recording it as a function to track ENDF\n            lastDeff = i;\n          } else if (op === 0x58) { // IF\n            ++ifLevel;\n          } else if (op === 0x1B) { // ELSE\n            inELSE = ifLevel;\n          } else if (op === 0x59) { // EIF\n            if (inELSE === ifLevel) {\n              inELSE = 0;\n            }\n            --ifLevel;\n          } else if (op === 0x1C) { // JMPR\n            if (!inFDEF && !inELSE) {\n              var offset = stack[stack.length - 1];\n              // only jumping forward to prevent infinite loop\n              if (offset > 0) {\n                i += offset - 1;\n              }\n            }\n          }\n          // Adjusting stack not extactly, but just enough to get function id\n          if (!inFDEF && !inELSE) {\n            var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] :\n              op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0;\n            if (op >= 0x71 && op <= 0x75) {\n              n = stack.pop();\n              if (!isNaN(n)) {\n                stackDelta = -n * 2;\n              }\n            }\n            while (stackDelta < 0 && stack.length > 0) {\n              stack.pop();\n              stackDelta++;\n            }\n            while (stackDelta > 0) {\n              stack.push(NaN); // pushing any number into stack\n              stackDelta--;\n            }\n          }\n        }\n        ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n        var content = [data];\n        if (i > data.length) {\n          content.push(new Uint8Array(i - data.length));\n        }\n        if (lastDeff > lastEndf) {\n          warn('TT: complementing a missing function tail');\n          // new function definition started, but not finished\n          // complete function by [CLEAR, ENDF]\n          content.push(new Uint8Array([0x22, 0x2D]));\n        }\n        foldTTTable(table, content);\n      }\n\n      function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n        if (ttContext.tooComplexToFollowFunctions) {\n          return;\n        }\n        if (ttContext.functionsDefined.length > maxFunctionDefs) {\n          warn('TT: more functions defined than expected');\n          ttContext.hintsValid = false;\n          return;\n        }\n        for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n          if (j > maxFunctionDefs) {\n            warn('TT: invalid function id: ' + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n          if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n            warn('TT: undefined function: ' + j);\n            ttContext.hintsValid = false;\n            return;\n          }\n        }\n      }\n\n      function foldTTTable(table, content) {\n        if (content.length > 1) {\n          // concatenating the content items\n          var newLength = 0;\n          var j, jj;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            newLength += content[j].length;\n          }\n          newLength = (newLength + 3) & ~3;\n          var result = new Uint8Array(newLength);\n          var pos = 0;\n          for (j = 0, jj = content.length; j < jj; j++) {\n            result.set(content[j], pos);\n            pos += content[j].length;\n          }\n          table.data = result;\n          table.length = newLength;\n        }\n      }\n\n      function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n        var ttContext = {\n          functionsDefined: [],\n          functionsUsed: [],\n          functionsStackDeltas: [],\n          tooComplexToFollowFunctions: false,\n          hintsValid: true,\n        };\n        if (fpgm) {\n          sanitizeTTProgram(fpgm, ttContext);\n        }\n        if (prep) {\n          sanitizeTTProgram(prep, ttContext);\n        }\n        if (fpgm) {\n          checkInvalidFunctions(ttContext, maxFunctionDefs);\n        }\n        if (cvt && (cvt.length & 1)) {\n          var cvtData = new Uint8Array(cvt.length + 1);\n          cvtData.set(cvt.data);\n          cvt.data = cvtData;\n        }\n        return ttContext.hintsValid;\n      }\n\n      // The following steps modify the original font data, making copy\n      font = new Stream(new Uint8Array(font.getBytes()));\n\n      let header, tables;\n      if (isTrueTypeCollectionFile(font)) {\n        let ttcData = readTrueTypeCollectionData(font, this.name);\n        header = ttcData.header;\n        tables = ttcData.tables;\n      } else {\n        header = readOpenTypeHeader(font);\n        tables = readTables(font, header.numTables);\n      }\n      let cff, cffFile;\n\n      var isTrueType = !tables['CFF '];\n      if (!isTrueType) {\n        const isComposite = properties.composite &&\n                            ((properties.cidToGidMap || []).length > 0 ||\n                             !(properties.cMap instanceof IdentityCMap));\n        // OpenType font (skip composite fonts with non-default glyph mapping).\n        if ((header.version === 'OTTO' && !isComposite) ||\n            !tables['head'] || !tables['hhea'] || !tables['maxp'] ||\n            !tables['post']) {\n          // No major tables: throwing everything at `CFFFont`.\n          cffFile = new Stream(tables['CFF '].data);\n          cff = new CFFFont(cffFile, properties);\n\n          adjustWidths(properties);\n\n          return this.convert(name, cff, properties);\n        }\n\n        delete tables['glyf'];\n        delete tables['loca'];\n        delete tables['fpgm'];\n        delete tables['prep'];\n        delete tables['cvt '];\n        this.isOpenType = true;\n      } else {\n        if (!tables['loca']) {\n          throw new FormatError('Required \"loca\" table is not found');\n        }\n        if (!tables['glyf']) {\n          warn('Required \"glyf\" table is not found -- trying to recover.');\n          // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n          tables['glyf'] = {\n            tag: 'glyf',\n            data: new Uint8Array(0),\n          };\n        }\n        this.isOpenType = false;\n      }\n\n      if (!tables['maxp']) {\n        throw new FormatError('Required \"maxp\" table is not found');\n      }\n\n      font.pos = (font.start || 0) + tables['maxp'].offset;\n      var version = font.getInt32();\n      const numGlyphs = font.getUint16();\n      // Glyph 0 is duplicated and appended.\n      let numGlyphsOut = numGlyphs + 1;\n      let dupFirstEntry = true;\n      if (numGlyphsOut > 0xFFFF) {\n        dupFirstEntry = false;\n        numGlyphsOut = numGlyphs;\n        warn('Not enough space in glyfs to duplicate first glyph.');\n      }\n      var maxFunctionDefs = 0;\n      var maxSizeOfInstructions = 0;\n      if (version >= 0x00010000 && tables['maxp'].length >= 22) {\n        // maxZones can be invalid\n        font.pos += 8;\n        var maxZones = font.getUint16();\n        if (maxZones > 2) { // reset to 2 if font has invalid maxZones\n          tables['maxp'].data[14] = 0;\n          tables['maxp'].data[15] = 2;\n        }\n        font.pos += 4;\n        maxFunctionDefs = font.getUint16();\n        font.pos += 4;\n        maxSizeOfInstructions = font.getUint16();\n      }\n\n      tables['maxp'].data[4] = numGlyphsOut >> 8;\n      tables['maxp'].data[5] = numGlyphsOut & 255;\n\n      var hintsValid = sanitizeTTPrograms(tables['fpgm'], tables['prep'],\n                                          tables['cvt '], maxFunctionDefs);\n      if (!hintsValid) {\n        delete tables['fpgm'];\n        delete tables['prep'];\n        delete tables['cvt '];\n      }\n\n      // Ensure the hmtx table contains the advance width and\n      // sidebearings information for numGlyphs in the maxp table\n      sanitizeMetrics(font, tables['hhea'], tables['hmtx'], numGlyphsOut);\n\n      if (!tables['head']) {\n        throw new FormatError('Required \"head\" table is not found');\n      }\n\n      sanitizeHead(tables['head'], numGlyphs,\n                   isTrueType ? tables['loca'].length : 0);\n\n      var missingGlyphs = Object.create(null);\n      if (isTrueType) {\n        var isGlyphLocationsLong = int16(tables['head'].data[50],\n                                         tables['head'].data[51]);\n        var glyphsInfo = sanitizeGlyphLocations(tables['loca'], tables['glyf'],\n                                                numGlyphs, isGlyphLocationsLong,\n                                                hintsValid, dupFirstEntry,\n                                                maxSizeOfInstructions);\n        missingGlyphs = glyphsInfo.missingGlyphs;\n\n        // Some fonts have incorrect maxSizeOfInstructions values, so we use\n        // the computed value instead.\n        if (version >= 0x00010000 && tables['maxp'].length >= 22) {\n          tables['maxp'].data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n          tables['maxp'].data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n        }\n      }\n      if (!tables['hhea']) {\n        throw new FormatError('Required \"hhea\" table is not found');\n      }\n\n      // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n      // Sometimes it's 0. That needs to be fixed\n      if (tables['hhea'].data[10] === 0 && tables['hhea'].data[11] === 0) {\n        tables['hhea'].data[10] = 0xFF;\n        tables['hhea'].data[11] = 0xFF;\n      }\n\n      // Extract some more font properties from the OpenType head and\n      // hhea tables; yMin and descent value are always negative.\n      var metricsOverride = {\n        unitsPerEm: int16(tables['head'].data[18], tables['head'].data[19]),\n        yMax: int16(tables['head'].data[42], tables['head'].data[43]),\n        yMin: signedInt16(tables['head'].data[38], tables['head'].data[39]),\n        ascent: int16(tables['hhea'].data[4], tables['hhea'].data[5]),\n        descent: signedInt16(tables['hhea'].data[6], tables['hhea'].data[7]),\n      };\n\n      // PDF FontDescriptor metrics lie -- using data from actual font.\n      this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n      this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n\n      // The 'post' table has glyphs names.\n      if (tables['post']) {\n        readPostScriptTable(tables['post'], properties, numGlyphs);\n      }\n\n      // The original 'post' table is not needed, replace it.\n      tables['post'] = {\n        tag: 'post',\n        data: createPostTable(properties),\n      };\n\n      var charCodeToGlyphId = [], charCode;\n\n      // Helper function to try to skip mapping of empty glyphs.\n      function hasGlyph(glyphId) {\n        return !missingGlyphs[glyphId];\n      }\n\n      if (properties.composite) {\n        var cidToGidMap = properties.cidToGidMap || [];\n        var isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n        properties.cMap.forEach(function(charCode, cid) {\n          if (cid > 0xffff) {\n            throw new FormatError('Max size of CID is 65,535');\n          }\n          var glyphId = -1;\n          if (isCidToGidMapEmpty) {\n            glyphId = cid;\n          } else if (cidToGidMap[cid] !== undefined) {\n            glyphId = cidToGidMap[cid];\n          }\n\n          if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        });\n      } else {\n        // Most of the following logic in this code branch is based on the\n        // 9.6.6.4 of the PDF spec.\n        var cmapTable = readCmapTable(tables['cmap'], font, this.isSymbolicFont,\n                                      properties.hasEncoding);\n        var cmapPlatformId = cmapTable.platformId;\n        var cmapEncodingId = cmapTable.encodingId;\n        var cmapMappings = cmapTable.mappings;\n        var cmapMappingsLength = cmapMappings.length;\n\n        // The spec seems to imply that if the font is symbolic the encoding\n        // should be ignored, this doesn't appear to work for 'preistabelle.pdf'\n        // where the the font is symbolic and it has an encoding.\n        if (properties.hasEncoding &&\n            (cmapPlatformId === 3 && cmapEncodingId === 1 ||\n             cmapPlatformId === 1 && cmapEncodingId === 0) ||\n            (cmapPlatformId === -1 && cmapEncodingId === -1 && // Temporary hack\n             !!getEncoding(properties.baseEncodingName))) {    // Temporary hack\n          // When no preferred cmap table was found and |baseEncodingName| is\n          // one of the predefined encodings, we seem to obtain a better\n          // |charCodeToGlyphId| map from the code below (fixes bug 1057544).\n          // TODO: Note that this is a hack which should be removed as soon as\n          //       we have proper support for more exotic cmap tables.\n\n          var baseEncoding = [];\n          if (properties.baseEncodingName === 'MacRomanEncoding' ||\n              properties.baseEncodingName === 'WinAnsiEncoding') {\n            baseEncoding = getEncoding(properties.baseEncodingName);\n          }\n          var glyphsUnicodeMap = getGlyphsUnicode();\n          for (charCode = 0; charCode < 256; charCode++) {\n            var glyphName, standardGlyphName;\n            if (this.differences && charCode in this.differences) {\n              glyphName = this.differences[charCode];\n            } else if (charCode in baseEncoding &&\n                       baseEncoding[charCode] !== '') {\n              glyphName = baseEncoding[charCode];\n            } else {\n              glyphName = StandardEncoding[charCode];\n            }\n            if (!glyphName) {\n              continue;\n            }\n            // Ensure that non-standard glyph names are resolved to valid ones.\n            standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n            var unicodeOrCharCode;\n            if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n              unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n            } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n              // TODO: the encoding needs to be updated with mac os table.\n              unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n            }\n\n            var found = false;\n            for (let i = 0; i < cmapMappingsLength; ++i) {\n              if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n                continue;\n              }\n              charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n              found = true;\n              break;\n            }\n            if (!found && properties.glyphNames) {\n              // Try to map using the post table.\n              var glyphId = properties.glyphNames.indexOf(glyphName);\n              // The post table ought to use the same kind of glyph names as the\n              // `differences` array, but check the standard ones as a fallback.\n              if (glyphId === -1 && standardGlyphName !== glyphName) {\n                glyphId = properties.glyphNames.indexOf(standardGlyphName);\n              }\n              if (glyphId > 0 && hasGlyph(glyphId)) {\n                charCodeToGlyphId[charCode] = glyphId;\n              }\n            }\n          }\n        } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {\n          // Default Unicode semantics, use the charcodes as is.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            charCodeToGlyphId[cmapMappings[i].charCode] =\n              cmapMappings[i].glyphId;\n          }\n        } else {\n          // When there is only a (1, 0) cmap table, the char code is a single\n          // byte and it is used directly as the char code.\n\n          // When a (3, 0) cmap table is present, it is used instead but the\n          // spec has special rules for char codes in the range of 0xF000 to\n          // 0xF0FF and it says the (3, 0) table should map the values from\n          // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n          // this, the upper bits of the char code are cleared, but only for the\n          // special range since some PDFs have char codes outside of this range\n          // (e.g. 0x2013) which when masked would overwrite other values in the\n          // cmap.\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            charCode = cmapMappings[i].charCode;\n            if (cmapPlatformId === 3 &&\n                charCode >= 0xF000 && charCode <= 0xF0FF) {\n              charCode &= 0xFF;\n            }\n            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n          }\n        }\n      }\n\n      if (charCodeToGlyphId.length === 0) {\n        // defines at least one glyph\n        charCodeToGlyphId[0] = 0;\n      }\n\n      // Typically glyph 0 is duplicated and the mapping must be updated, but if\n      // there isn't enough room to duplicate, the glyph id is left the same. In\n      // this case, glyph 0 may not work correctly, but that is better than\n      // having the whole font fail.\n      let glyphZeroId = numGlyphsOut - 1;\n      if (!dupFirstEntry) {\n        glyphZeroId = 0;\n      }\n\n      // Converting glyphs and ids into font's cmap table\n      var newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      tables['cmap'] = {\n        tag: 'cmap',\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut),\n      };\n\n      if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) {\n        tables['OS/2'] = {\n          tag: 'OS/2',\n          data: createOS2Table(properties, newMapping.charCodeToGlyphId,\n                               metricsOverride),\n        };\n      }\n\n      if (!isTrueType) {\n        try {\n          // Trying to repair CFF file\n          cffFile = new Stream(tables['CFF '].data);\n          var parser = new CFFParser(cffFile, properties,\n                                     SEAC_ANALYSIS_ENABLED);\n          cff = parser.parse();\n          cff.duplicateFirstGlyph();\n          var compiler = new CFFCompiler(cff);\n          tables['CFF '].data = compiler.compile();\n        } catch (e) {\n          warn('Failed to compile font ' + properties.loadedName);\n        }\n      }\n\n      // Re-creating 'name' table\n      if (!tables['name']) {\n        tables['name'] = {\n          tag: 'name',\n          data: createNameTable(this.name),\n        };\n      } else {\n        // ... using existing 'name' table as prototype\n        var namePrototype = readNameTable(tables['name']);\n        tables['name'].data = createNameTable(name, namePrototype);\n      }\n\n      var builder = new OpenTypeFileBuilder(header.version);\n      for (var tableTag in tables) {\n        builder.addTable(tableTag, tables[tableTag].data);\n      }\n      return builder.toArray();\n    },\n\n    convert: function Font_convert(fontName, font, properties) {\n      // TODO: Check the charstring widths to determine this.\n      properties.fixedPitch = false;\n\n      if (properties.builtInEncoding) {\n        // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n        // data, attempt to use the `builtInEncoding` to improve text selection.\n        adjustToUnicode(properties, properties.builtInEncoding);\n      }\n\n      // Type 1 fonts have a notdef inserted at the beginning, so glyph 0\n      // becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\n      // char strings.\n      let glyphZeroId = 1;\n      if (font instanceof CFFFont) {\n        glyphZeroId = font.numGlyphs - 1;\n      }\n      var mapping = font.getGlyphMapping(properties);\n      var newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font),\n                                     glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      var numGlyphs = font.numGlyphs;\n\n      function getCharCodes(charCodeToGlyphId, glyphId) {\n        var charCodes = null;\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            if (!charCodes) {\n              charCodes = [];\n            }\n            charCodes.push(charCode | 0);\n          }\n        }\n        return charCodes;\n      }\n\n      function createCharCode(charCodeToGlyphId, glyphId) {\n        for (var charCode in charCodeToGlyphId) {\n          if (glyphId === charCodeToGlyphId[charCode]) {\n            return charCode | 0;\n          }\n        }\n        newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n            glyphId;\n        return newMapping.nextAvailableFontCharCode++;\n      }\n\n      var seacs = font.seacs;\n      if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n        var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n        var charset = font.getCharset();\n        var seacMap = Object.create(null);\n        for (var glyphId in seacs) {\n          glyphId |= 0;\n          var seac = seacs[glyphId];\n          var baseGlyphName = StandardEncoding[seac[2]];\n          var accentGlyphName = StandardEncoding[seac[3]];\n          var baseGlyphId = charset.indexOf(baseGlyphName);\n          var accentGlyphId = charset.indexOf(accentGlyphName);\n          if (baseGlyphId < 0 || accentGlyphId < 0) {\n            continue;\n          }\n          var accentOffset = {\n            x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n            y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n          };\n\n          var charCodes = getCharCodes(mapping, glyphId);\n          if (!charCodes) {\n            // There's no point in mapping it if the char code was never mapped\n            // to begin with.\n            continue;\n          }\n          for (var i = 0, ii = charCodes.length; i < ii; i++) {\n            var charCode = charCodes[i];\n            // Find a fontCharCode that maps to the base and accent glyphs.\n            // If one doesn't exists, create it.\n            var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n            var baseFontCharCode = createCharCode(charCodeToGlyphId,\n                                                  baseGlyphId);\n            var accentFontCharCode = createCharCode(charCodeToGlyphId,\n                                                    accentGlyphId);\n            seacMap[charCode] = {\n              baseFontCharCode,\n              accentFontCharCode,\n              accentOffset,\n            };\n          }\n        }\n        properties.seacMap = seacMap;\n      }\n\n      var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n      var builder = new OpenTypeFileBuilder('\\x4F\\x54\\x54\\x4F');\n      // PostScript Font Program\n      builder.addTable('CFF ', font.data);\n      // OS/2 and Windows Specific metrics\n      builder.addTable('OS/2', createOS2Table(properties,\n                                              newMapping.charCodeToGlyphId));\n      // Character to glyphs mapping\n      builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId,\n                       numGlyphs));\n      // Font header\n      builder.addTable('head',\n            '\\x00\\x01\\x00\\x00' + // Version number\n            '\\x00\\x00\\x10\\x00' + // fontRevision\n            '\\x00\\x00\\x00\\x00' + // checksumAdjustement\n            '\\x5F\\x0F\\x3C\\xF5' + // magicNumber\n            '\\x00\\x00' + // Flags\n            safeString16(unitsPerEm) + // unitsPerEM\n            '\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27' + // creation date\n            '\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27' + // modifification date\n            '\\x00\\x00' + // xMin\n            safeString16(properties.descent) + // yMin\n            '\\x0F\\xFF' + // xMax\n            safeString16(properties.ascent) + // yMax\n            string16(properties.italicAngle ? 2 : 0) + // macStyle\n            '\\x00\\x11' + // lowestRecPPEM\n            '\\x00\\x00' + // fontDirectionHint\n            '\\x00\\x00' + // indexToLocFormat\n            '\\x00\\x00');  // glyphDataFormat\n\n      // Horizontal header\n      builder.addTable('hhea',\n            '\\x00\\x01\\x00\\x00' + // Version number\n            safeString16(properties.ascent) + // Typographic Ascent\n            safeString16(properties.descent) + // Typographic Descent\n            '\\x00\\x00' + // Line Gap\n            '\\xFF\\xFF' + // advanceWidthMax\n            '\\x00\\x00' + // minLeftSidebearing\n            '\\x00\\x00' + // minRightSidebearing\n            '\\x00\\x00' + // xMaxExtent\n            safeString16(properties.capHeight) + // caretSlopeRise\n            safeString16(Math.tan(properties.italicAngle) *\n                         properties.xHeight) + // caretSlopeRun\n            '\\x00\\x00' + // caretOffset\n            '\\x00\\x00' + // -reserved-\n            '\\x00\\x00' + // -reserved-\n            '\\x00\\x00' + // -reserved-\n            '\\x00\\x00' + // -reserved-\n            '\\x00\\x00' + // metricDataFormat\n            string16(numGlyphs)); // Number of HMetrics\n\n      // Horizontal metrics\n      builder.addTable('hmtx', (function fontFieldsHmtx() {\n          var charstrings = font.charstrings;\n          var cffWidths = font.cff ? font.cff.widths : null;\n          var hmtx = '\\x00\\x00\\x00\\x00'; // Fake .notdef\n          for (var i = 1, ii = numGlyphs; i < ii; i++) {\n            var width = 0;\n            if (charstrings) {\n              var charstring = charstrings[i - 1];\n              width = 'width' in charstring ? charstring.width : 0;\n            } else if (cffWidths) {\n              width = Math.ceil(cffWidths[i] || 0);\n            }\n            hmtx += string16(width) + string16(0);\n          }\n          return hmtx;\n        })());\n\n      // Maximum profile\n      builder.addTable('maxp',\n            '\\x00\\x00\\x50\\x00' + // Version number\n            string16(numGlyphs)); // Num of glyphs\n\n      // Naming tables\n      builder.addTable('name', createNameTable(fontName));\n\n      // PostScript information\n      builder.addTable('post', createPostTable(properties));\n\n      return builder.toArray();\n    },\n\n    get spaceWidth() {\n      if ('_shadowWidth' in this) {\n        return this._shadowWidth;\n      }\n\n      // trying to estimate space character width\n      var possibleSpaceReplacements = ['space', 'minus', 'one', 'i', 'I'];\n      var width;\n      for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n        var glyphName = possibleSpaceReplacements[i];\n        // if possible, getting width by glyph name\n        if (glyphName in this.widths) {\n          width = this.widths[glyphName];\n          break;\n        }\n        var glyphsUnicodeMap = getGlyphsUnicode();\n        var glyphUnicode = glyphsUnicodeMap[glyphName];\n        // finding the charcode via unicodeToCID map\n        var charcode = 0;\n        if (this.composite) {\n          if (this.cMap.contains(glyphUnicode)) {\n            charcode = this.cMap.lookup(glyphUnicode);\n          }\n        }\n        // ... via toUnicode map\n        if (!charcode && this.toUnicode) {\n          charcode = this.toUnicode.charCodeOf(glyphUnicode);\n        }\n        // setting it to unicode if negative or undefined\n        if (charcode <= 0) {\n          charcode = glyphUnicode;\n        }\n        // trying to get width via charcode\n        width = this.widths[charcode];\n        if (width) {\n          break; // the non-zero width found\n        }\n      }\n      width = width || this.defaultWidth;\n      // Do not shadow the property here. See discussion:\n      // https://github.com/mozilla/pdf.js/pull/2127#discussion_r1662280\n      this._shadowWidth = width;\n      return width;\n    },\n\n    charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n      var fontCharCode, width, operatorListId;\n\n      var widthCode = charcode;\n      if (this.cMap && this.cMap.contains(charcode)) {\n        widthCode = this.cMap.lookup(charcode);\n      }\n      width = this.widths[widthCode];\n      width = isNum(width) ? width : this.defaultWidth;\n      var vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n      let unicode = this.toUnicode.get(charcode) ||\n        this.fallbackToUnicode.get(charcode) || charcode;\n      if (typeof unicode === 'number') {\n        unicode = String.fromCharCode(unicode);\n      }\n\n      var isInFont = charcode in this.toFontChar;\n      // First try the toFontChar map, if it's not there then try falling\n      // back to the char code.\n      fontCharCode = this.toFontChar[charcode] || charcode;\n      if (this.missingFile) {\n        fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n      }\n\n      if (this.isType3Font) {\n        // Font char code in this case is actually a glyph name.\n        operatorListId = fontCharCode;\n      }\n\n      var accent = null;\n      if (this.seacMap && this.seacMap[charcode]) {\n        isInFont = true;\n        var seac = this.seacMap[charcode];\n        fontCharCode = seac.baseFontCharCode;\n        accent = {\n          fontChar: String.fromCodePoint(seac.accentFontCharCode),\n          offset: seac.accentOffset,\n        };\n      }\n\n      var fontChar = typeof fontCharCode === 'number' ?\n                      String.fromCodePoint(fontCharCode) :\n                      '';\n\n      var glyph = this.glyphCache[charcode];\n      if (!glyph ||\n          !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric,\n                                 operatorListId, isSpace, isInFont)) {\n        glyph = new Glyph(fontChar, unicode, accent, width, vmetric,\n                          operatorListId, isSpace, isInFont);\n        this.glyphCache[charcode] = glyph;\n      }\n      return glyph;\n    },\n\n    charsToGlyphs: function Font_charsToGlyphs(chars) {\n      var charsCache = this.charsCache;\n      var glyphs, glyph, charcode;\n\n      // if we translated this string before, just grab it from the cache\n      if (charsCache) {\n        glyphs = charsCache[chars];\n        if (glyphs) {\n          return glyphs;\n        }\n      }\n\n      // lazily create the translation cache\n      if (!charsCache) {\n        charsCache = this.charsCache = Object.create(null);\n      }\n\n      glyphs = [];\n      var charsCacheKey = chars;\n      var i = 0, ii;\n\n      if (this.cMap) {\n        // composite fonts have multi-byte strings convert the string from\n        // single-byte to multi-byte\n        var c = Object.create(null);\n        while (i < chars.length) {\n          this.cMap.readCharCode(chars, i, c);\n          charcode = c.charcode;\n          var length = c.length;\n          i += length;\n          // Space is char with code 0x20 and length 1 in multiple-byte codes.\n          var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n          glyph = this.charToGlyph(charcode, isSpace);\n          glyphs.push(glyph);\n        }\n      } else {\n        for (i = 0, ii = chars.length; i < ii; ++i) {\n          charcode = chars.charCodeAt(i);\n          glyph = this.charToGlyph(charcode, charcode === 0x20);\n          glyphs.push(glyph);\n        }\n      }\n\n      // Enter the translated string into the cache\n      return (charsCache[charsCacheKey] = glyphs);\n    },\n  };\n\n  return Font;\n})();\n\nvar ErrorFont = (function ErrorFontClosure() {\n  function ErrorFont(error) {\n    this.error = error;\n    this.loadedName = 'g_font_error';\n    this.missingFile = true;\n  }\n\n  ErrorFont.prototype = {\n    charsToGlyphs: function ErrorFont_charsToGlyphs() {\n      return [];\n    },\n    exportData: function ErrorFont_exportData() {\n      return { error: this.error, };\n    },\n  };\n\n  return ErrorFont;\n})();\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  var charCodeToGlyphId = Object.create(null);\n  var glyphId, charCode, baseEncoding;\n  var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n  if (properties.baseEncodingName) {\n    // If a valid base encoding name was used, the mapping is initialized with\n    // that.\n    baseEncoding = getEncoding(properties.baseEncodingName);\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  } else if (isSymbolicFont) {\n    // For a symbolic font the encoding should be the fonts built-in encoding.\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    // For non-symbolic fonts that don't have a base encoding the standard\n    // encoding should be used.\n    baseEncoding = StandardEncoding;\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n\n  // Lastly, merge in the differences.\n  var differences = properties.differences, glyphsUnicodeMap;\n  if (differences) {\n    for (charCode in differences) {\n      var glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = getGlyphsUnicode();\n        }\n        var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0; // notdef\n      }\n    }\n  }\n  return charCodeToGlyphId;\n}\n\n// Type1Font is also a CIDFontType0.\nvar Type1Font = (function Type1FontClosure() {\n  function findBlock(streamBytes, signature, startIndex) {\n    var streamBytesLength = streamBytes.length;\n    var signatureLength = signature.length;\n    var scanLength = streamBytesLength - signatureLength;\n\n    var i = startIndex, j, found = false;\n    while (i < scanLength) {\n      j = 0;\n      while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n        j++;\n      }\n      if (j >= signatureLength) { // `signature` found, skip over whitespace.\n        i += j;\n        while (i < streamBytesLength && isSpace(streamBytes[i])) {\n          i++;\n        }\n        found = true;\n        break;\n      }\n      i++;\n    }\n    return {\n      found,\n      length: i,\n    };\n  }\n\n  function getHeaderBlock(stream, suggestedLength) {\n    var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n    var streamStartPos = stream.pos; // Save the initial stream position.\n    var headerBytes, headerBytesLength, block;\n    try {\n      headerBytes = stream.getBytes(suggestedLength);\n      headerBytesLength = headerBytes.length;\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n      // cannot hold the result of `getBytes`, and fallback to simply checking\n      // the entire stream (fixes issue3928.pdf).\n    }\n\n    if (headerBytesLength === suggestedLength) {\n      // Most of the time `suggestedLength` is correct, so to speed things up we\n      // initially only check the last few bytes to see if the header was found.\n      // Otherwise we (potentially) check the entire stream to prevent errors in\n      // `Type1Parser` (fixes issue5686.pdf).\n      block = findBlock(headerBytes, EEXEC_SIGNATURE,\n                        suggestedLength - 2 * EEXEC_SIGNATURE.length);\n\n      if (block.found && block.length === suggestedLength) {\n        return {\n          stream: new Stream(headerBytes),\n          length: suggestedLength,\n        };\n      }\n    }\n    warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    var SCAN_BLOCK_LENGTH = 2048;\n    var actualLength;\n    while (true) {\n      var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n      if (block.length === 0) {\n        break;\n      }\n      stream.pos += block.length; // Update the stream position.\n\n      if (block.found) {\n        actualLength = stream.pos - streamStartPos;\n        break;\n      }\n    }\n    stream.pos = streamStartPos; // Reset the stream position.\n\n    if (actualLength) {\n      return {\n        stream: new Stream(stream.getBytes(actualLength)),\n        length: actualLength,\n      };\n    }\n    warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n    return {\n      stream: new Stream(stream.getBytes(suggestedLength)),\n      length: suggestedLength,\n    };\n  }\n\n  function getEexecBlock(stream, suggestedLength) {\n    // We should ideally parse the eexec block to ensure that `suggestedLength`\n    // is correct, so we don't truncate the block data if it's too small.\n    // However, this would also require checking if the fixed-content portion\n    // exists (using the 'Length3' property), and ensuring that it's valid.\n    //\n    // Given that `suggestedLength` almost always is correct, all the validation\n    // would require a great deal of unnecessary parsing for most fonts.\n    // To save time, we always fetch the entire stream instead, which also avoid\n    // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n    //\n    // NOTE: This means that the function can include the fixed-content portion\n    // in the returned eexec block. In practice this does *not* seem to matter,\n    // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n    var eexecBytes = stream.getBytes();\n    return {\n      stream: new Stream(eexecBytes),\n      length: eexecBytes.length,\n    };\n  }\n\n  function Type1Font(name, file, properties) {\n    // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n    // Also, length1 and length2 might be off by 6 bytes as well.\n    // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n    var PFB_HEADER_SIZE = 6;\n    var headerBlockLength = properties.length1;\n    var eexecBlockLength = properties.length2;\n    var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) |\n                          (pfbHeader[3] << 8) | pfbHeader[2];\n    }\n\n    // Get the data block containing glyphs and subrs information\n    var headerBlock = getHeaderBlock(file, headerBlockLength);\n    var headerBlockParser = new Type1Parser(headerBlock.stream, false,\n                                            SEAC_ANALYSIS_ENABLED);\n    headerBlockParser.extractFontHeader(properties);\n\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) |\n                         (pfbHeader[3] << 8) | pfbHeader[2];\n    }\n\n    // Decrypt the data blocks and retrieve it's content\n    var eexecBlock = getEexecBlock(file, eexecBlockLength);\n    var eexecBlockParser = new Type1Parser(eexecBlock.stream, true,\n                                           SEAC_ANALYSIS_ENABLED);\n    var data = eexecBlockParser.extractFontProgram();\n    for (var info in data.properties) {\n      properties[info] = data.properties[info];\n    }\n\n    var charstrings = data.charstrings;\n    var type2Charstrings = this.getType2Charstrings(charstrings);\n    var subrs = this.getType2Subrs(data.subrs);\n\n    this.charstrings = charstrings;\n    this.data = this.wrap(name, type2Charstrings, this.charstrings,\n                          subrs, properties);\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n\n  Type1Font.prototype = {\n    get numGlyphs() {\n      return this.charstrings.length + 1;\n    },\n\n    getCharset: function Type1Font_getCharset() {\n      var charset = ['.notdef'];\n      var charstrings = this.charstrings;\n      for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        charset.push(charstrings[glyphId].glyphName);\n      }\n      return charset;\n    },\n\n    getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n      var charstrings = this.charstrings;\n      var glyphNames = ['.notdef'], glyphId;\n      for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n        glyphNames.push(charstrings[glyphId].glyphName);\n      }\n      var encoding = properties.builtInEncoding;\n      if (encoding) {\n        var builtInEncoding = Object.create(null);\n        for (var charCode in encoding) {\n          glyphId = glyphNames.indexOf(encoding[charCode]);\n          if (glyphId >= 0) {\n            builtInEncoding[charCode] = glyphId;\n          }\n        }\n      }\n\n      return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n    },\n\n    hasGlyphId: function Type1Font_hasGlyphID(id) {\n      if (id < 0 || id >= this.numGlyphs) {\n        return false;\n      }\n      if (id === 0) {\n        // notdef is always defined.\n        return true;\n      }\n      var glyph = this.charstrings[id - 1];\n      return glyph.charstring.length > 0;\n    },\n\n    getSeacs: function Type1Font_getSeacs(charstrings) {\n      var i, ii;\n      var seacMap = [];\n      for (i = 0, ii = charstrings.length; i < ii; i++) {\n        var charstring = charstrings[i];\n        if (charstring.seac) {\n          // Offset by 1 for .notdef\n          seacMap[i + 1] = charstring.seac;\n        }\n      }\n      return seacMap;\n    },\n\n    getType2Charstrings: function Type1Font_getType2Charstrings(\n                                    type1Charstrings) {\n      var type2Charstrings = [];\n      for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n        type2Charstrings.push(type1Charstrings[i].charstring);\n      }\n      return type2Charstrings;\n    },\n\n    getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n      var bias = 0;\n      var count = type1Subrs.length;\n      if (count < 1133) {\n        bias = 107;\n      } else if (count < 33769) {\n        bias = 1131;\n      } else {\n        bias = 32768;\n      }\n\n      // Add a bunch of empty subrs to deal with the Type2 bias\n      var type2Subrs = [];\n      var i;\n      for (i = 0; i < bias; i++) {\n        type2Subrs.push([0x0B]);\n      }\n\n      for (i = 0; i < count; i++) {\n        type2Subrs.push(type1Subrs[i]);\n      }\n\n      return type2Subrs;\n    },\n\n    wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs,\n                                  properties) {\n      var cff = new CFF();\n      cff.header = new CFFHeader(1, 0, 4, 4);\n\n      cff.names = [name];\n\n      var topDict = new CFFTopDict();\n      // CFF strings IDs 0...390 are predefined names, so refering\n      // to entries in our own String INDEX starts at SID 391.\n      topDict.setByName('version', 391);\n      topDict.setByName('Notice', 392);\n      topDict.setByName('FullName', 393);\n      topDict.setByName('FamilyName', 394);\n      topDict.setByName('Weight', 395);\n      topDict.setByName('Encoding', null); // placeholder\n      topDict.setByName('FontMatrix', properties.fontMatrix);\n      topDict.setByName('FontBBox', properties.bbox);\n      topDict.setByName('charset', null); // placeholder\n      topDict.setByName('CharStrings', null); // placeholder\n      topDict.setByName('Private', null); // placeholder\n      cff.topDict = topDict;\n\n      var strings = new CFFStrings();\n      strings.add('Version 0.11'); // Version\n      strings.add('See original notice'); // Notice\n      strings.add(name); // FullName\n      strings.add(name); // FamilyName\n      strings.add('Medium'); // Weight\n      cff.strings = strings;\n\n      cff.globalSubrIndex = new CFFIndex();\n\n      var count = glyphs.length;\n      var charsetArray = [0];\n      var i, ii;\n      for (i = 0; i < count; i++) {\n        var index = CFFStandardStrings.indexOf(charstrings[i].glyphName);\n        // TODO: Insert the string and correctly map it.  Previously it was\n        // thought mapping names that aren't in the standard strings to .notdef\n        // was fine, however in issue818 when mapping them all to .notdef the\n        // adieresis glyph no longer worked.\n        if (index === -1) {\n          index = 0;\n        }\n        charsetArray.push((index >> 8) & 0xff, index & 0xff);\n      }\n      cff.charset = new CFFCharset(false, 0, [], charsetArray);\n\n      var charStringsIndex = new CFFIndex();\n      charStringsIndex.add([0x8B, 0x0E]); // .notdef\n      for (i = 0; i < count; i++) {\n        charStringsIndex.add(glyphs[i]);\n      }\n      cff.charStrings = charStringsIndex;\n\n      var privateDict = new CFFPrivateDict();\n      privateDict.setByName('Subrs', null); // placeholder\n      var fields = [\n        'BlueValues',\n        'OtherBlues',\n        'FamilyBlues',\n        'FamilyOtherBlues',\n        'StemSnapH',\n        'StemSnapV',\n        'BlueShift',\n        'BlueFuzz',\n        'BlueScale',\n        'LanguageGroup',\n        'ExpansionFactor',\n        'ForceBold',\n        'StdHW',\n        'StdVW'\n      ];\n      for (i = 0, ii = fields.length; i < ii; i++) {\n        var field = fields[i];\n        if (!(field in properties.privateData)) {\n          continue;\n        }\n        var value = properties.privateData[field];\n        if (Array.isArray(value)) {\n          // All of the private dictionary array data in CFF must be stored as\n          // \"delta-encoded\" numbers.\n          for (var j = value.length - 1; j > 0; j--) {\n            value[j] -= value[j - 1]; // ... difference from previous value\n          }\n        }\n        privateDict.setByName(field, value);\n      }\n      cff.topDict.privateDict = privateDict;\n\n      var subrIndex = new CFFIndex();\n      for (i = 0, ii = subrs.length; i < ii; i++) {\n        subrIndex.add(subrs[i]);\n      }\n      privateDict.subrsIndex = subrIndex;\n\n      var compiler = new CFFCompiler(cff);\n      return compiler.compile();\n    },\n  };\n\n  return Type1Font;\n})();\n\nvar CFFFont = (function CFFFontClosure() {\n  function CFFFont(file, properties) {\n    this.properties = properties;\n\n    var parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    var compiler = new CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      warn('Failed to compile font ' + properties.loadedName);\n      // There may have just been an issue with the compiler, set the data\n      // anyway and hope the font loaded.\n      this.data = file;\n    }\n  }\n\n  CFFFont.prototype = {\n    get numGlyphs() {\n      return this.cff.charStrings.count;\n    },\n    getCharset: function CFFFont_getCharset() {\n      return this.cff.charset.charset;\n    },\n    getGlyphMapping: function CFFFont_getGlyphMapping() {\n      var cff = this.cff;\n      var properties = this.properties;\n      var charsets = cff.charset.charset;\n      var charCodeToGlyphId;\n      var glyphId;\n\n      if (properties.composite) {\n        charCodeToGlyphId = Object.create(null);\n        if (cff.isCIDFont) {\n          // If the font is actually a CID font then we should use the charset\n          // to map CIDs to GIDs.\n          for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n            var cid = charsets[glyphId];\n            var charCode = properties.cMap.charCodeOf(cid);\n            charCodeToGlyphId[charCode] = glyphId;\n          }\n        } else {\n          // If it is NOT actually a CID font then CIDs should be mapped\n          // directly to GIDs.\n          for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n            charCodeToGlyphId[glyphId] = glyphId;\n          }\n        }\n        return charCodeToGlyphId;\n      }\n\n      var encoding = cff.encoding ? cff.encoding.encoding : null;\n      charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n      return charCodeToGlyphId;\n    },\n    hasGlyphId: function CFFFont_hasGlyphID(id) {\n      return this.cff.hasGlyphId(id);\n    },\n  };\n\n  return CFFFont;\n})();\n\nexport {\n  SEAC_ANALYSIS_ENABLED,\n  ErrorFont,\n  Font,\n  FontFlags,\n  ToUnicodeMap,\n  IdentityToUnicodeMap,\n  getFontType,\n};\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString, FormatError, info, stringToBytes, Util, warn\n} from '../shared/util';\nimport {\n  ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset\n} from './charsets';\nimport { ExpertEncoding, StandardEncoding } from './encodings';\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nvar MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\nvar CFFStandardStrings = [\n  '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n  'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',\n  'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',\n  'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',\n  'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',\n  'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',\n  'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum',\n  'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',\n  'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',\n  'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',\n  'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',\n  'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',\n  'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',\n  'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase',\n  'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown',\n  'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent',\n  'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash',\n  'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae',\n  'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior',\n  'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn',\n  'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters',\n  'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior',\n  'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring',\n  'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave',\n  'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute',\n  'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute',\n  'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron',\n  'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde',\n  'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute',\n  'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex',\n  'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex',\n  'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall',\n  'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall',\n  'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',\n  'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle',\n  'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle',\n  'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior',\n  'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior',\n  'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior',\n  'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n  'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior',\n  'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall',\n  'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',\n  'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',\n  'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',\n  'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',\n  'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',\n  'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall',\n  'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior',\n  'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth',\n  'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds',\n  'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',\n  'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior',\n  'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior',\n  'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior',\n  'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior',\n  'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall',\n  'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall',\n  'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall',\n  'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall',\n  'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall',\n  'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall',\n  'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall',\n  'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003',\n  'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'\n];\n\nvar CFFParser = (function CFFParserClosure() {\n  var CharstringValidationData = [\n    null,\n    { id: 'hstem', min: 2, stackClearing: true, stem: true, },\n    null,\n    { id: 'vstem', min: 2, stackClearing: true, stem: true, },\n    { id: 'vmoveto', min: 1, stackClearing: true, },\n    { id: 'rlineto', min: 2, resetStack: true, },\n    { id: 'hlineto', min: 1, resetStack: true, },\n    { id: 'vlineto', min: 1, resetStack: true, },\n    { id: 'rrcurveto', min: 6, resetStack: true, },\n    null,\n    { id: 'callsubr', min: 1, undefStack: true, },\n    { id: 'return', min: 0, undefStack: true, },\n    null, // 12\n    null,\n    { id: 'endchar', min: 0, stackClearing: true, },\n    null,\n    null,\n    null,\n    { id: 'hstemhm', min: 2, stackClearing: true, stem: true, },\n    { id: 'hintmask', min: 0, stackClearing: true, },\n    { id: 'cntrmask', min: 0, stackClearing: true, },\n    { id: 'rmoveto', min: 2, stackClearing: true, },\n    { id: 'hmoveto', min: 1, stackClearing: true, },\n    { id: 'vstemhm', min: 2, stackClearing: true, stem: true, },\n    { id: 'rcurveline', min: 8, resetStack: true, },\n    { id: 'rlinecurve', min: 8, resetStack: true, },\n    { id: 'vvcurveto', min: 4, resetStack: true, },\n    { id: 'hhcurveto', min: 4, resetStack: true, },\n    null, // shortint\n    { id: 'callgsubr', min: 1, undefStack: true, },\n    { id: 'vhcurveto', min: 4, resetStack: true, },\n    { id: 'hvcurveto', min: 4, resetStack: true, }\n  ];\n  var CharstringValidationData12 = [\n    null,\n    null,\n    null,\n    { id: 'and', min: 2, stackDelta: -1, },\n    { id: 'or', min: 2, stackDelta: -1, },\n    { id: 'not', min: 1, stackDelta: 0, },\n    null,\n    null,\n    null,\n    { id: 'abs', min: 1, stackDelta: 0, },\n    { id: 'add', min: 2, stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] + stack[index - 1];\n      },\n    },\n    { id: 'sub', min: 2, stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] - stack[index - 1];\n      },\n    },\n    { id: 'div', min: 2, stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] / stack[index - 1];\n      },\n    },\n    null,\n    { id: 'neg', min: 1, stackDelta: 0,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 1] = -stack[index - 1];\n      },\n    },\n    { id: 'eq', min: 2, stackDelta: -1, },\n    null,\n    null,\n    { id: 'drop', min: 1, stackDelta: -1, },\n    null,\n    { id: 'put', min: 2, stackDelta: -2, },\n    { id: 'get', min: 1, stackDelta: 0, },\n    { id: 'ifelse', min: 4, stackDelta: -3, },\n    { id: 'random', min: 0, stackDelta: 1, },\n    { id: 'mul', min: 2, stackDelta: -1,\n      stackFn: function stack_div(stack, index) {\n        stack[index - 2] = stack[index - 2] * stack[index - 1];\n      },\n    },\n    null,\n    { id: 'sqrt', min: 1, stackDelta: 0, },\n    { id: 'dup', min: 1, stackDelta: 1, },\n    { id: 'exch', min: 2, stackDelta: 0, },\n    { id: 'index', min: 2, stackDelta: 0, },\n    { id: 'roll', min: 3, stackDelta: -2, },\n    null,\n    null,\n    null,\n    { id: 'hflex', min: 7, resetStack: true, },\n    { id: 'flex', min: 13, resetStack: true, },\n    { id: 'hflex1', min: 9, resetStack: true, },\n    { id: 'flex1', min: 11, resetStack: true, }\n  ];\n\n  function CFFParser(file, properties, seacAnalysisEnabled) {\n    this.bytes = file.getBytes();\n    this.properties = properties;\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n  }\n  CFFParser.prototype = {\n    parse: function CFFParser_parse() {\n      var properties = this.properties;\n      var cff = new CFF();\n      this.cff = cff;\n\n      // The first five sections must be in order, all the others are reached\n      // via offsets contained in one of the below.\n      var header = this.parseHeader();\n      var nameIndex = this.parseIndex(header.endPos);\n      var topDictIndex = this.parseIndex(nameIndex.endPos);\n      var stringIndex = this.parseIndex(topDictIndex.endPos);\n      var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n      var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n\n      this.parsePrivateDict(cff.topDict);\n\n      cff.isCIDFont = topDict.hasName('ROS');\n\n      var charStringOffset = topDict.getByName('CharStrings');\n      var charStringIndex = this.parseIndex(charStringOffset).obj;\n\n      var fontMatrix = topDict.getByName('FontMatrix');\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n\n      var fontBBox = topDict.getByName('FontBBox');\n      if (fontBBox) {\n        // adjusting ascent/descent\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n\n      var charset, encoding;\n      if (cff.isCIDFont) {\n        var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj;\n        for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          var dictRaw = fdArrayIndex.get(i);\n          var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw),\n                                         cff.strings);\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n        // cid fonts don't have an encoding\n        encoding = null;\n        charset = this.parseCharsets(topDict.getByName('charset'),\n                                     charStringIndex.count, cff.strings, true);\n        cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'),\n                                          charStringIndex.count);\n      } else {\n        charset = this.parseCharsets(topDict.getByName('charset'),\n                                     charStringIndex.count, cff.strings, false);\n        encoding = this.parseEncoding(topDict.getByName('Encoding'),\n                                      properties,\n                                      cff.strings, charset.charset);\n      }\n\n      cff.charset = charset;\n      cff.encoding = encoding;\n\n      var charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict,\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n\n      return cff;\n    },\n    parseHeader: function CFFParser_parseHeader() {\n      var bytes = this.bytes;\n      var bytesLength = bytes.length;\n      var offset = 0;\n\n      // Prevent an infinite loop, by checking that the offset is within the\n      // bounds of the bytes array. Necessary in empty, or invalid, font files.\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n      if (offset >= bytesLength) {\n        throw new FormatError('Invalid CFF header');\n      }\n      if (offset !== 0) {\n        info('cff data is shifted');\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n      var major = bytes[0];\n      var minor = bytes[1];\n      var hdrSize = bytes[2];\n      var offSize = bytes[3];\n      var header = new CFFHeader(major, minor, hdrSize, offSize);\n      return { obj: header, endPos: hdrSize, };\n    },\n    parseDict: function CFFParser_parseDict(dict) {\n      var pos = 0;\n\n      function parseOperand() {\n        var value = dict[pos++];\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          value = (value << 8) | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return ((value - 247) * 256) + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n        warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n\n      function parseFloatOperand() {\n        var str = '';\n        var eof = 15;\n        var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8',\n            '9', '.', 'E', 'E-', null, '-'];\n        var length = dict.length;\n        while (pos < length) {\n          var b = dict[pos++];\n          var b1 = b >> 4;\n          var b2 = b & 15;\n\n          if (b1 === eof) {\n            break;\n          }\n          str += lookup[b1];\n\n          if (b2 === eof) {\n            break;\n          }\n          str += lookup[b2];\n        }\n        return parseFloat(str);\n      }\n\n      var operands = [];\n      var entries = [];\n\n      pos = 0;\n      var end = dict.length;\n      while (pos < end) {\n        var b = dict[pos];\n        if (b <= 21) {\n          if (b === 12) {\n            b = (b << 8) | dict[++pos];\n          }\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n      return entries;\n    },\n    parseIndex: function CFFParser_parseIndex(pos) {\n      var cffIndex = new CFFIndex();\n      var bytes = this.bytes;\n      var count = (bytes[pos++] << 8) | bytes[pos++];\n      var offsets = [];\n      var end = pos;\n      var i, ii;\n\n      if (count !== 0) {\n        var offsetSize = bytes[pos++];\n        // add 1 for offset to determine size of last object\n        var startPos = pos + ((count + 1) * offsetSize) - 1;\n\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          var offset = 0;\n          for (var j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n          offsets.push(startPos + offset);\n        }\n        end = offsets[count];\n      }\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        var offsetStart = offsets[i];\n        var offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n      return { obj: cffIndex, endPos: end, };\n    },\n    parseNameIndex: function CFFParser_parseNameIndex(index) {\n      var names = [];\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var name = index.get(i);\n        names.push(bytesToString(name));\n      }\n      return names;\n    },\n    parseStringIndex: function CFFParser_parseStringIndex(index) {\n      var strings = new CFFStrings();\n      for (var i = 0, ii = index.count; i < ii; ++i) {\n        var data = index.get(i);\n        strings.add(bytesToString(data));\n      }\n      return strings;\n    },\n    createDict: function CFFParser_createDict(Type, dict, strings) {\n      var cffDict = new Type(strings);\n      for (var i = 0, ii = dict.length; i < ii; ++i) {\n        var pair = dict[i];\n        var key = pair[0];\n        var value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n      return cffDict;\n    },\n    parseCharString: function CFFParser_parseCharString(state, data,\n                                                        localSubrIndex,\n                                                        globalSubrIndex) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n      var stackSize = state.stackSize;\n      var stack = state.stack;\n\n      var length = data.length;\n\n      for (var j = 0; j < length;) {\n        var value = data[j++];\n        var validationCommand = null;\n        if (value === 12) {\n          var q = data[j++];\n          if (q === 0) {\n            // The CFF specification state that the 'dotsection' command\n            // (12, 0) is deprecated and treated as a no-op, but all Type2\n            // charstrings processors should support them. Unfortunately\n            // the font sanitizer don't. As a workaround the sequence (12, 0)\n            // is replaced by a useless (0, hmoveto).\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) { // number (16 bit)\n          stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {  // number\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {  // number (+1 bytes)\n          stack[stackSize] = (value < 251 ?\n                              ((value - 247) << 8) + data[j] + 108 :\n                              -((value - 251) << 8) - data[j] - 108);\n          j++;\n          stackSize++;\n        } else if (value === 255) {  // number (32 bit)\n          stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16) |\n                              (data[j + 2] << 8) | data[j + 3]) / 65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          // skipping right amount of hints flag data\n          j += (state.hints + 7) >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          var subrsIndex;\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            warn('Missing subrsIndex for ' + validationCommand.id);\n            return false;\n          }\n          var bias = 32768;\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n          var subrNumber = stack[--stackSize] + bias;\n          if (subrNumber < 0 || subrNumber >= subrsIndex.count ||\n              isNaN(subrNumber)) {\n            validationCommand = CharstringValidationData[value];\n            warn('Out of bounds subrIndex for ' + validationCommand.id);\n            return false;\n          }\n          state.stackSize = stackSize;\n          state.callDepth++;\n          var valid = this.parseCharString(state, subrsIndex.get(subrNumber),\n                                           localSubrIndex, globalSubrIndex);\n          if (!valid) {\n            return false;\n          }\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n          }\n          if ('min' in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              warn('Not enough parameters for ' + validationCommand.id +\n                   '; actual: ' + stackSize +\n                   ', expected: ' + validationCommand.min);\n              return false;\n            }\n          }\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            // the optional character width can be found before the first\n            // stack-clearing command arguments\n            stackSize -= validationCommand.min;\n            if (stackSize >= 2 && validationCommand.stem) {\n              // there are even amount of arguments for stem commands\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              warn('Found too many parameters for stack-clearing command');\n            }\n            if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n              state.width = stack[stackSize - 1];\n            }\n          }\n          if ('stackDelta' in validationCommand) {\n            if ('stackFn' in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n      state.stackSize = stackSize;\n      return true;\n    },\n    parseCharStrings({ charStrings, localSubrIndex, globalSubrIndex, fdSelect,\n                       fdArray, privateDict, }) {\n      var seacs = [];\n      var widths = [];\n      var count = charStrings.count;\n      for (var i = 0; i < count; i++) {\n        var charstring = charStrings.get(i);\n        var state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null,\n        };\n        var valid = true;\n        var localSubrToUse = null;\n        var privateDictToUse = privateDict;\n        if (fdSelect && fdArray.length) {\n          var fdIndex = fdSelect.getFDIndex(i);\n          if (fdIndex === -1) {\n            warn('Glyph index is not in fd select.');\n            valid = false;\n          }\n          if (fdIndex >= fdArray.length) {\n            warn('Invalid fd index for glyph index.');\n            valid = false;\n          }\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n        if (valid) {\n          valid = this.parseCharString(state, charstring, localSubrToUse,\n                                       globalSubrIndex);\n        }\n        if (state.width !== null) {\n          const nominalWidth = privateDictToUse.getByName('nominalWidthX');\n          widths[i] = nominalWidth + state.width;\n        } else {\n          const defaultWidth = privateDictToUse.getByName('defaultWidthX');\n          widths[i] = defaultWidth;\n        }\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n        if (!valid) {\n          // resetting invalid charstring to single 'endchar'\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n      return { charStrings, seacs, widths, };\n    },\n    emptyPrivateDictionary:\n      function CFFParser_emptyPrivateDictionary(parentDict) {\n      var privateDict = this.createDict(CFFPrivateDict, [],\n                                        parentDict.strings);\n      parentDict.setByKey(18, [0, 0]);\n      parentDict.privateDict = privateDict;\n    },\n    parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {\n      // no private dict, do nothing\n      if (!parentDict.hasName('Private')) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var privateOffset = parentDict.getByName('Private');\n      // make sure the params are formatted correctly\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName('Private');\n        return;\n      }\n      var size = privateOffset[0];\n      var offset = privateOffset[1];\n      // remove empty dicts or ones that refer to invalid location\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      var privateDictEnd = offset + size;\n      var dictData = this.bytes.subarray(offset, privateDictEnd);\n      var dict = this.parseDict(dictData);\n      var privateDict = this.createDict(CFFPrivateDict, dict,\n                                        parentDict.strings);\n      parentDict.privateDict = privateDict;\n\n      // Parse the Subrs index also since it's relative to the private dict.\n      if (!privateDict.getByName('Subrs')) {\n        return;\n      }\n      var subrsOffset = privateDict.getByName('Subrs');\n      var relativeOffset = offset + subrsOffset;\n      // Validate the offset.\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n      var subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    },\n    parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE,\n                              ISOAdobeCharset);\n      } else if (pos === 1) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT,\n                              ExpertCharset);\n      } else if (pos === 2) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n                              ExpertSubsetCharset);\n      }\n\n      var bytes = this.bytes;\n      var start = pos;\n      var format = bytes[pos++];\n      var charset = ['.notdef'];\n      var id, count, i;\n\n      // subtract 1 for the .notdef glyph\n      length -= 1;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n          break;\n        case 1:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        case 2:\n          while (charset.length <= length) {\n            id = (bytes[pos++] << 8) | bytes[pos++];\n            count = (bytes[pos++] << 8) | bytes[pos++];\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n          break;\n        default:\n          throw new FormatError('Unknown charset format');\n      }\n      // Raw won't be needed if we actually compile the charset.\n      var end = pos;\n      var raw = bytes.subarray(start, end);\n\n      return new CFFCharset(false, format, charset, raw);\n    },\n    parseEncoding: function CFFParser_parseEncoding(pos,\n                                                    properties,\n                                                    strings,\n                                                    charset) {\n      var encoding = Object.create(null);\n      var bytes = this.bytes;\n      var predefined = false;\n      var format, i, ii;\n      var raw = null;\n\n      function readSupplement() {\n        var supplementsCount = bytes[pos++];\n        for (i = 0; i < supplementsCount; i++) {\n          var code = bytes[pos++];\n          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        var baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          var index = baseEncoding.indexOf(charset[i]);\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        var dataStart = pos;\n        format = bytes[pos++];\n        switch (format & 0x7f) {\n          case 0:\n            var glyphsCount = bytes[pos++];\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n            break;\n\n          case 1:\n            var rangesCount = bytes[pos++];\n            var gid = 1;\n            for (i = 0; i < rangesCount; i++) {\n              var start = bytes[pos++];\n              var left = bytes[pos++];\n              for (var j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n            break;\n\n          default:\n            throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n        }\n        var dataEnd = pos;\n        if (format & 0x80) { // hasSupplement\n          // The font sanitizer does not support CFF encoding with a\n          // supplement, since the encoding is not really used to map\n          // between gid to glyph, let's overwrite what is declared in\n          // the top dictionary to let the sanitizer think the font use\n          // StandardEncoding, that's a lie but that's ok.\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n      format = format & 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    },\n    parseFDSelect: function CFFParser_parseFDSelect(pos, length) {\n      var bytes = this.bytes;\n      var format = bytes[pos++];\n      var fdSelect = [];\n      var i;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; ++i) {\n            var id = bytes[pos++];\n            fdSelect.push(id);\n          }\n          break;\n        case 3:\n          var rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n          for (i = 0; i < rangesCount; ++i) {\n            var first = (bytes[pos++] << 8) | bytes[pos++];\n            if (i === 0 && first !== 0) {\n              warn('parseFDSelect: The first range must have a first GID of 0' +\n                   ' -- trying to recover.');\n              first = 0;\n            }\n            var fdIndex = bytes[pos++];\n            var next = (bytes[pos] << 8) | bytes[pos + 1];\n            for (var j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n          // Advance past the sentinel(next).\n          pos += 2;\n          break;\n        default:\n          throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n      }\n      if (fdSelect.length !== length) {\n        throw new FormatError('parseFDSelect: Invalid font data.');\n      }\n\n      return new CFFFDSelect(format, fdSelect);\n    },\n  };\n  return CFFParser;\n})();\n\n// Compact Font Format\nvar CFF = (function CFFClosure() {\n  function CFF() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n\n    // The following could really be per font, but since we only have one font\n    // store them here.\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n\n    this.isCIDFont = false;\n  }\n  CFF.prototype = {\n    duplicateFirstGlyph: function CFF_duplicateFirstGlyph() {\n      // Browsers will not display a glyph at position 0. Typically glyph 0 is\n      // notdef, but a number of fonts put a valid glyph there so it must be\n      // duplicated and appended.\n      if (this.charStrings.count >= 65535) {\n        warn('Not enough space in charstrings to duplicate first glyph.');\n        return;\n      }\n      var glyphZero = this.charStrings.get(0);\n      this.charStrings.add(glyphZero);\n      if (this.isCIDFont) {\n        this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n      }\n    },\n    hasGlyphId: function CFF_hasGlyphID(id) {\n      if (id < 0 || id >= this.charStrings.count) {\n        return false;\n      }\n      var glyph = this.charStrings.get(id);\n      return glyph.length > 0;\n    },\n  };\n\n  return CFF;\n})();\n\nvar CFFHeader = (function CFFHeaderClosure() {\n  function CFFHeader(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n  return CFFHeader;\n})();\n\nvar CFFStrings = (function CFFStringsClosure() {\n  function CFFStrings() {\n    this.strings = [];\n  }\n  CFFStrings.prototype = {\n    get: function CFFStrings_get(index) {\n      if (index >= 0 && index <= 390) {\n        return CFFStandardStrings[index];\n      }\n      if (index - 391 <= this.strings.length) {\n        return this.strings[index - 391];\n      }\n      return CFFStandardStrings[0];\n    },\n    add: function CFFStrings_add(value) {\n      this.strings.push(value);\n    },\n    get count() {\n      return this.strings.length;\n    },\n  };\n  return CFFStrings;\n})();\n\nvar CFFIndex = (function CFFIndexClosure() {\n  function CFFIndex() {\n    this.objects = [];\n    this.length = 0;\n  }\n  CFFIndex.prototype = {\n    add: function CFFIndex_add(data) {\n      this.length += data.length;\n      this.objects.push(data);\n    },\n    set: function CFFIndex_set(index, data) {\n      this.length += data.length - this.objects[index].length;\n      this.objects[index] = data;\n    },\n    get: function CFFIndex_get(index) {\n      return this.objects[index];\n    },\n    get count() {\n      return this.objects.length;\n    },\n  };\n  return CFFIndex;\n})();\n\nvar CFFDict = (function CFFDictClosure() {\n  function CFFDict(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n  CFFDict.prototype = {\n    // value should always be an array\n    setByKey: function CFFDict_setByKey(key, value) {\n      if (!(key in this.keyToNameMap)) {\n        return false;\n      }\n      var valueLength = value.length;\n      // ignore empty values\n      if (valueLength === 0) {\n        return true;\n      }\n      // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n      for (var i = 0; i < valueLength; i++) {\n        if (isNaN(value[i])) {\n          warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n          return true;\n        }\n      }\n      var type = this.types[key];\n      // remove the array wrapping these types of values\n      if (type === 'num' || type === 'sid' || type === 'offset') {\n        value = value[0];\n      }\n      this.values[key] = value;\n      return true;\n    },\n    setByName: function CFFDict_setByName(name, value) {\n      if (!(name in this.nameToKeyMap)) {\n        throw new FormatError(`Invalid dictionary name \"${name}\"`);\n      }\n      this.values[this.nameToKeyMap[name]] = value;\n    },\n    hasName: function CFFDict_hasName(name) {\n      return this.nameToKeyMap[name] in this.values;\n    },\n    getByName: function CFFDict_getByName(name) {\n      if (!(name in this.nameToKeyMap)) {\n        throw new FormatError(`Invalid dictionary name ${name}\"`);\n      }\n      var key = this.nameToKeyMap[name];\n      if (!(key in this.values)) {\n        return this.defaults[key];\n      }\n      return this.values[key];\n    },\n    removeByName: function CFFDict_removeByName(name) {\n      delete this.values[this.nameToKeyMap[name]];\n    },\n  };\n  CFFDict.createTables = function CFFDict_createTables(layout) {\n    var tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: [],\n    };\n    for (var i = 0, ii = layout.length; i < ii; ++i) {\n      var entry = layout[i];\n      var key = Array.isArray(entry[0]) ?\n                (entry[0][0] << 8) + entry[0][1] : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n    return tables;\n  };\n  return CFFDict;\n})();\n\nvar CFFTopDict = (function CFFTopDictClosure() {\n  var layout = [\n    [[12, 30], 'ROS', ['sid', 'sid', 'num'], null],\n    [[12, 20], 'SyntheticBase', 'num', null],\n    [0, 'version', 'sid', null],\n    [1, 'Notice', 'sid', null],\n    [[12, 0], 'Copyright', 'sid', null],\n    [2, 'FullName', 'sid', null],\n    [3, 'FamilyName', 'sid', null],\n    [4, 'Weight', 'sid', null],\n    [[12, 1], 'isFixedPitch', 'num', 0],\n    [[12, 2], 'ItalicAngle', 'num', 0],\n    [[12, 3], 'UnderlinePosition', 'num', -100],\n    [[12, 4], 'UnderlineThickness', 'num', 50],\n    [[12, 5], 'PaintType', 'num', 0],\n    [[12, 6], 'CharstringType', 'num', 2],\n    [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'],\n                            [0.001, 0, 0, 0.001, 0, 0]],\n    [13, 'UniqueID', 'num', null],\n    [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]],\n    [[12, 8], 'StrokeWidth', 'num', 0],\n    [14, 'XUID', 'array', null],\n    [15, 'charset', 'offset', 0],\n    [16, 'Encoding', 'offset', 0],\n    [17, 'CharStrings', 'offset', 0],\n    [18, 'Private', ['offset', 'offset'], null],\n    [[12, 21], 'PostScript', 'sid', null],\n    [[12, 22], 'BaseFontName', 'sid', null],\n    [[12, 23], 'BaseFontBlend', 'delta', null],\n    [[12, 31], 'CIDFontVersion', 'num', 0],\n    [[12, 32], 'CIDFontRevision', 'num', 0],\n    [[12, 33], 'CIDFontType', 'num', 0],\n    [[12, 34], 'CIDCount', 'num', 8720],\n    [[12, 35], 'UIDBase', 'num', null],\n    // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n    // before FDArray.\n    [[12, 37], 'FDSelect', 'offset', null],\n    [[12, 36], 'FDArray', 'offset', null],\n    [[12, 38], 'FontName', 'sid', null]\n  ];\n  var tables = null;\n  function CFFTopDict(strings) {\n    if (tables === null) {\n      tables = CFFDict.createTables(layout);\n    }\n    CFFDict.call(this, tables, strings);\n    this.privateDict = null;\n  }\n  CFFTopDict.prototype = Object.create(CFFDict.prototype);\n  return CFFTopDict;\n})();\n\nvar CFFPrivateDict = (function CFFPrivateDictClosure() {\n  var layout = [\n    [6, 'BlueValues', 'delta', null],\n    [7, 'OtherBlues', 'delta', null],\n    [8, 'FamilyBlues', 'delta', null],\n    [9, 'FamilyOtherBlues', 'delta', null],\n    [[12, 9], 'BlueScale', 'num', 0.039625],\n    [[12, 10], 'BlueShift', 'num', 7],\n    [[12, 11], 'BlueFuzz', 'num', 1],\n    [10, 'StdHW', 'num', null],\n    [11, 'StdVW', 'num', null],\n    [[12, 12], 'StemSnapH', 'delta', null],\n    [[12, 13], 'StemSnapV', 'delta', null],\n    [[12, 14], 'ForceBold', 'num', 0],\n    [[12, 17], 'LanguageGroup', 'num', 0],\n    [[12, 18], 'ExpansionFactor', 'num', 0.06],\n    [[12, 19], 'initialRandomSeed', 'num', 0],\n    [20, 'defaultWidthX', 'num', 0],\n    [21, 'nominalWidthX', 'num', 0],\n    [19, 'Subrs', 'offset', null]\n  ];\n  var tables = null;\n  function CFFPrivateDict(strings) {\n    if (tables === null) {\n      tables = CFFDict.createTables(layout);\n    }\n    CFFDict.call(this, tables, strings);\n    this.subrsIndex = null;\n  }\n  CFFPrivateDict.prototype = Object.create(CFFDict.prototype);\n  return CFFPrivateDict;\n})();\n\nvar CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2,\n};\nvar CFFCharset = (function CFFCharsetClosure() {\n  function CFFCharset(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n  return CFFCharset;\n})();\n\nvar CFFEncoding = (function CFFEncodingClosure() {\n  function CFFEncoding(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n  return CFFEncoding;\n})();\n\nvar CFFFDSelect = (function CFFFDSelectClosure() {\n  function CFFFDSelect(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n  CFFFDSelect.prototype = {\n    getFDIndex: function CFFFDSelect_get(glyphIndex) {\n      if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n        return -1;\n      }\n      return this.fdSelect[glyphIndex];\n    },\n  };\n  return CFFFDSelect;\n})();\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nvar CFFOffsetTracker = (function CFFOffsetTrackerClosure() {\n  function CFFOffsetTracker() {\n    this.offsets = Object.create(null);\n  }\n  CFFOffsetTracker.prototype = {\n    isTracking: function CFFOffsetTracker_isTracking(key) {\n      return key in this.offsets;\n    },\n    track: function CFFOffsetTracker_track(key, location) {\n      if (key in this.offsets) {\n        throw new FormatError(`Already tracking location of ${key}`);\n      }\n      this.offsets[key] = location;\n    },\n    offset: function CFFOffsetTracker_offset(value) {\n      for (var key in this.offsets) {\n        this.offsets[key] += value;\n      }\n    },\n    setEntryLocation: function CFFOffsetTracker_setEntryLocation(key,\n                                                                 values,\n                                                                 output) {\n      if (!(key in this.offsets)) {\n        throw new FormatError(`Not tracking location of ${key}`);\n      }\n      var data = output.data;\n      var dataOffset = this.offsets[key];\n      var size = 5;\n      for (var i = 0, ii = values.length; i < ii; ++i) {\n        var offset0 = i * size + dataOffset;\n        var offset1 = offset0 + 1;\n        var offset2 = offset0 + 2;\n        var offset3 = offset0 + 3;\n        var offset4 = offset0 + 4;\n        // It's easy to screw up offsets so perform this sanity check.\n        if (data[offset0] !== 0x1d || data[offset1] !== 0 ||\n            data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n          throw new FormatError('writing to an offset that is not empty');\n        }\n        var value = values[i];\n        data[offset0] = 0x1d;\n        data[offset1] = (value >> 24) & 0xFF;\n        data[offset2] = (value >> 16) & 0xFF;\n        data[offset3] = (value >> 8) & 0xFF;\n        data[offset4] = value & 0xFF;\n      }\n    },\n  };\n  return CFFOffsetTracker;\n})();\n\n// Takes a CFF and converts it to the binary representation.\nvar CFFCompiler = (function CFFCompilerClosure() {\n  function CFFCompiler(cff) {\n    this.cff = cff;\n  }\n  CFFCompiler.prototype = {\n    compile: function CFFCompiler_compile() {\n      var cff = this.cff;\n      var output = {\n        data: [],\n        length: 0,\n        add: function CFFCompiler_add(data) {\n          this.data = this.data.concat(data);\n          this.length = this.data.length;\n        },\n      };\n\n      // Compile the five entries that must be in order.\n      var header = this.compileHeader(cff.header);\n      output.add(header);\n\n      var nameIndex = this.compileNameIndex(cff.names);\n      output.add(nameIndex);\n\n      if (cff.isCIDFont) {\n        // The spec is unclear on how font matrices should relate to each other\n        // when there is one in the main top dict and the sub top dicts.\n        // Windows handles this differently than linux and osx so we have to\n        // normalize to work on all.\n        // Rules based off of some mailing list discussions:\n        // - If main font has a matrix and subfont doesn't, use the main matrix.\n        // - If no main font matrix and there is a subfont matrix, use the\n        //   subfont matrix.\n        // - If both have matrices, concat together.\n        // - If neither have matrices, use default.\n        // To make this work on all platforms we move the top matrix into each\n        // sub top dict and concat if necessary.\n        if (cff.topDict.hasName('FontMatrix')) {\n          var base = cff.topDict.getByName('FontMatrix');\n          cff.topDict.removeByName('FontMatrix');\n          for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n            var subDict = cff.fdArray[i];\n            var matrix = base.slice(0);\n            if (subDict.hasName('FontMatrix')) {\n              matrix = Util.transform(matrix, subDict.getByName('FontMatrix'));\n            }\n            subDict.setByName('FontMatrix', matrix);\n          }\n        }\n      }\n\n      cff.topDict.setByName('charset', 0);\n      var compiled = this.compileTopDicts([cff.topDict],\n                                          output.length,\n                                          cff.isCIDFont);\n      output.add(compiled.output);\n      var topDictTracker = compiled.trackers[0];\n\n      var stringIndex = this.compileStringIndex(cff.strings.strings);\n      output.add(stringIndex);\n\n      var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n      output.add(globalSubrIndex);\n\n      // Now start on the other entries that have no specific order.\n      if (cff.encoding && cff.topDict.hasName('Encoding')) {\n        if (cff.encoding.predefined) {\n          topDictTracker.setEntryLocation('Encoding', [cff.encoding.format],\n                                          output);\n        } else {\n          var encoding = this.compileEncoding(cff.encoding);\n          topDictTracker.setEntryLocation('Encoding', [output.length], output);\n          output.add(encoding);\n        }\n      }\n      var charset = this.compileCharset(cff.charset);\n      topDictTracker.setEntryLocation('charset', [output.length], output);\n      output.add(charset);\n\n      var charStrings = this.compileCharStrings(cff.charStrings);\n      topDictTracker.setEntryLocation('CharStrings', [output.length], output);\n      output.add(charStrings);\n\n      if (cff.isCIDFont) {\n        // For some reason FDSelect must be in front of FDArray on windows. OSX\n        // and linux don't seem to care.\n        topDictTracker.setEntryLocation('FDSelect', [output.length], output);\n        var fdSelect = this.compileFDSelect(cff.fdSelect);\n        output.add(fdSelect);\n        // It is unclear if the sub font dictionary can have CID related\n        // dictionary keys, but the sanitizer doesn't like them so remove them.\n        compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n        topDictTracker.setEntryLocation('FDArray', [output.length], output);\n        output.add(compiled.output);\n        var fontDictTrackers = compiled.trackers;\n\n        this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n      }\n\n      this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n      // If the font data ends with INDEX whose object data is zero-length,\n      // the sanitizer will bail out. Add a dummy byte to avoid that.\n      output.add([0]);\n\n      return output.data;\n    },\n    encodeNumber: function CFFCompiler_encodeNumber(value) {\n      if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) { // isInt\n        return this.encodeInteger(value);\n      }\n      return this.encodeFloat(value);\n    },\n    encodeFloat: function CFFCompiler_encodeFloat(num) {\n      var value = num.toString();\n\n      // rounding inaccurate doubles\n      var m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n      if (m) {\n        var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));\n        value = (Math.round(num * epsilon) / epsilon).toString();\n      }\n\n      var nibbles = '';\n      var i, ii;\n      for (i = 0, ii = value.length; i < ii; ++i) {\n        var a = value[i];\n        if (a === 'e') {\n          nibbles += value[++i] === '-' ? 'c' : 'b';\n        } else if (a === '.') {\n          nibbles += 'a';\n        } else if (a === '-') {\n          nibbles += 'e';\n        } else {\n          nibbles += a;\n        }\n      }\n      nibbles += (nibbles.length & 1) ? 'f' : 'ff';\n      var out = [30];\n      for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n        out.push(parseInt(nibbles.substring(i, i + 2), 16));\n      }\n      return out;\n    },\n    encodeInteger: function CFFCompiler_encodeInteger(value) {\n      var code;\n      if (value >= -107 && value <= 107) {\n        code = [value + 139];\n      } else if (value >= 108 && value <= 1131) {\n        value = value - 108;\n        code = [(value >> 8) + 247, value & 0xFF];\n      } else if (value >= -1131 && value <= -108) {\n        value = -value - 108;\n        code = [(value >> 8) + 251, value & 0xFF];\n      } else if (value >= -32768 && value <= 32767) {\n        code = [0x1c, (value >> 8) & 0xFF, value & 0xFF];\n      } else {\n        code = [0x1d,\n                (value >> 24) & 0xFF,\n                (value >> 16) & 0xFF,\n                (value >> 8) & 0xFF,\n                 value & 0xFF];\n      }\n      return code;\n    },\n    compileHeader: function CFFCompiler_compileHeader(header) {\n      return [\n        header.major,\n        header.minor,\n        header.hdrSize,\n        header.offSize\n      ];\n    },\n    compileNameIndex: function CFFCompiler_compileNameIndex(names) {\n      var nameIndex = new CFFIndex();\n      for (var i = 0, ii = names.length; i < ii; ++i) {\n        var name = names[i];\n        // OTS doesn't allow names to be over 127 characters.\n        var length = Math.min(name.length, 127);\n        var sanitizedName = new Array(length);\n        for (var j = 0; j < length; j++) {\n          // OTS requires chars to be between a range and not certain other\n          // chars.\n          var char = name[j];\n          if (char < '!' || char > '~' || char === '[' || char === ']' ||\n              char === '(' || char === ')' || char === '{' || char === '}' ||\n              char === '<' || char === '>' || char === '/' || char === '%') {\n            char = '_';\n          }\n          sanitizedName[j] = char;\n        }\n        sanitizedName = sanitizedName.join('');\n\n        if (sanitizedName === '') {\n          sanitizedName = 'Bad_Font_Name';\n        }\n        nameIndex.add(stringToBytes(sanitizedName));\n      }\n      return this.compileIndex(nameIndex);\n    },\n    compileTopDicts: function CFFCompiler_compileTopDicts(dicts,\n                                                          length,\n                                                          removeCidKeys) {\n      var fontDictTrackers = [];\n      var fdArrayIndex = new CFFIndex();\n      for (var i = 0, ii = dicts.length; i < ii; ++i) {\n        var fontDict = dicts[i];\n        if (removeCidKeys) {\n          fontDict.removeByName('CIDFontVersion');\n          fontDict.removeByName('CIDFontRevision');\n          fontDict.removeByName('CIDFontType');\n          fontDict.removeByName('CIDCount');\n          fontDict.removeByName('UIDBase');\n        }\n        var fontDictTracker = new CFFOffsetTracker();\n        var fontDictData = this.compileDict(fontDict, fontDictTracker);\n        fontDictTrackers.push(fontDictTracker);\n        fdArrayIndex.add(fontDictData);\n        fontDictTracker.offset(length);\n      }\n      fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n      return {\n        trackers: fontDictTrackers,\n        output: fdArrayIndex,\n      };\n    },\n    compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts,\n                                                                  trackers,\n                                                                  output) {\n      for (var i = 0, ii = dicts.length; i < ii; ++i) {\n        var fontDict = dicts[i];\n        var privateDict = fontDict.privateDict;\n        if (!privateDict || !fontDict.hasName('Private')) {\n          throw new FormatError('There must be a private dictionary.');\n        }\n        var privateDictTracker = new CFFOffsetTracker();\n        var privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n        var outputLength = output.length;\n        privateDictTracker.offset(outputLength);\n        if (!privateDictData.length) {\n          // The private dictionary was empty, set the output length to zero to\n          // ensure the offset length isn't out of bounds in the eyes of the\n          // sanitizer.\n          outputLength = 0;\n        }\n\n        trackers[i].setEntryLocation('Private',\n                                     [privateDictData.length, outputLength],\n                                     output);\n        output.add(privateDictData);\n\n        if (privateDict.subrsIndex && privateDict.hasName('Subrs')) {\n          var subrs = this.compileIndex(privateDict.subrsIndex);\n          privateDictTracker.setEntryLocation('Subrs', [privateDictData.length],\n                                              output);\n          output.add(subrs);\n        }\n      }\n    },\n    compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {\n      var out = [];\n      // The dictionary keys must be in a certain order.\n      var order = dict.order;\n      for (var i = 0; i < order.length; ++i) {\n        var key = order[i];\n        if (!(key in dict.values)) {\n          continue;\n        }\n        var values = dict.values[key];\n        var types = dict.types[key];\n        if (!Array.isArray(types)) {\n          types = [types];\n        }\n        if (!Array.isArray(values)) {\n          values = [values];\n        }\n\n        // Remove any empty dict values.\n        if (values.length === 0) {\n          continue;\n        }\n\n        for (var j = 0, jj = types.length; j < jj; ++j) {\n          var type = types[j];\n          var value = values[j];\n          switch (type) {\n            case 'num':\n            case 'sid':\n              out = out.concat(this.encodeNumber(value));\n              break;\n            case 'offset':\n              // For offsets we just insert a 32bit integer so we don't have to\n              // deal with figuring out the length of the offset when it gets\n              // replaced later on by the compiler.\n              var name = dict.keyToNameMap[key];\n              // Some offsets have the offset and the length, so just record the\n              // position of the first one.\n              if (!offsetTracker.isTracking(name)) {\n                offsetTracker.track(name, out.length);\n              }\n              out = out.concat([0x1d, 0, 0, 0, 0]);\n              break;\n            case 'array':\n            case 'delta':\n              out = out.concat(this.encodeNumber(value));\n              for (var k = 1, kk = values.length; k < kk; ++k) {\n                out = out.concat(this.encodeNumber(values[k]));\n              }\n              break;\n            default:\n              throw new FormatError(`Unknown data type of ${type}`);\n          }\n        }\n        out = out.concat(dict.opcodes[key]);\n      }\n      return out;\n    },\n    compileStringIndex: function CFFCompiler_compileStringIndex(strings) {\n      var stringIndex = new CFFIndex();\n      for (var i = 0, ii = strings.length; i < ii; ++i) {\n        stringIndex.add(stringToBytes(strings[i]));\n      }\n      return this.compileIndex(stringIndex);\n    },\n    compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {\n      var globalSubrIndex = this.cff.globalSubrIndex;\n      this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n    },\n    compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {\n      var charStringsIndex = new CFFIndex();\n      for (var i = 0; i < charStrings.count; i++) {\n        var glyph = charStrings.get(i);\n        // If the CharString outline is empty, replace it with .notdef to\n        // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n        if (glyph.length === 0) {\n          charStringsIndex.add(new Uint8Array([0x8B, 0x0E]));\n          continue;\n        }\n        charStringsIndex.add(glyph);\n      }\n      return this.compileIndex(charStringsIndex);\n    },\n    compileCharset: function CFFCompiler_compileCharset(charset) {\n      let length = 1 + (this.cff.charStrings.count - 1) * 2;\n      // The contents of the charset doesn't matter, it's just there to make\n      // freetype happy.\n      let out = new Uint8Array(length);\n      return this.compileTypedArray(out);\n    },\n    compileEncoding: function CFFCompiler_compileEncoding(encoding) {\n      return this.compileTypedArray(encoding.raw);\n    },\n    compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {\n      let format = fdSelect.format;\n      let out, i;\n      switch (format) {\n        case 0:\n          out = new Uint8Array(1 + fdSelect.fdSelect.length);\n          out[0] = format;\n          for (i = 0; i < fdSelect.fdSelect.length; i++) {\n            out[i + 1] = fdSelect.fdSelect[i];\n          }\n          break;\n        case 3:\n          let start = 0;\n          let lastFD = fdSelect.fdSelect[0];\n          let ranges = [\n            format,\n            0, // nRanges place holder\n            0, // nRanges place holder\n            (start >> 8) & 0xFF,\n            start & 0xFF,\n            lastFD\n          ];\n          for (i = 1; i < fdSelect.fdSelect.length; i++) {\n            let currentFD = fdSelect.fdSelect[i];\n            if (currentFD !== lastFD) {\n              ranges.push((i >> 8) & 0xFF, i & 0xFF, currentFD);\n              lastFD = currentFD;\n            }\n          }\n          // 3 bytes are pushed for every range and there are 3 header bytes.\n          let numRanges = (ranges.length - 3) / 3;\n          ranges[1] = (numRanges >> 8) & 0xFF;\n          ranges[2] = numRanges & 0xFF;\n          // sentinel\n          ranges.push((i >> 8) & 0xFF, i & 0xFF);\n          out = new Uint8Array(ranges);\n          break;\n      }\n      return this.compileTypedArray(out);\n    },\n    compileTypedArray: function CFFCompiler_compileTypedArray(data) {\n      var out = [];\n      for (var i = 0, ii = data.length; i < ii; ++i) {\n        out[i] = data[i];\n      }\n      return out;\n    },\n    compileIndex: function CFFCompiler_compileIndex(index, trackers) {\n      trackers = trackers || [];\n      var objects = index.objects;\n      // First 2 bytes contains the number of objects contained into this index\n      var count = objects.length;\n\n      // If there is no object, just create an index. This technically\n      // should just be [0, 0] but OTS has an issue with that.\n      if (count === 0) {\n        return [0, 0, 0];\n      }\n\n      var data = [(count >> 8) & 0xFF, count & 0xff];\n\n      var lastOffset = 1, i;\n      for (i = 0; i < count; ++i) {\n        lastOffset += objects[i].length;\n      }\n\n      var offsetSize;\n      if (lastOffset < 0x100) {\n        offsetSize = 1;\n      } else if (lastOffset < 0x10000) {\n        offsetSize = 2;\n      } else if (lastOffset < 0x1000000) {\n        offsetSize = 3;\n      } else {\n        offsetSize = 4;\n      }\n\n      // Next byte contains the offset size use to reference object in the file\n      data.push(offsetSize);\n\n      // Add another offset after this one because we need a new offset\n      var relativeOffset = 1;\n      for (i = 0; i < count + 1; i++) {\n        if (offsetSize === 1) {\n          data.push(relativeOffset & 0xFF);\n        } else if (offsetSize === 2) {\n          data.push((relativeOffset >> 8) & 0xFF,\n                     relativeOffset & 0xFF);\n        } else if (offsetSize === 3) {\n          data.push((relativeOffset >> 16) & 0xFF,\n                    (relativeOffset >> 8) & 0xFF,\n                     relativeOffset & 0xFF);\n        } else {\n          data.push((relativeOffset >>> 24) & 0xFF,\n                    (relativeOffset >> 16) & 0xFF,\n                    (relativeOffset >> 8) & 0xFF,\n                     relativeOffset & 0xFF);\n        }\n\n        if (objects[i]) {\n          relativeOffset += objects[i].length;\n        }\n      }\n\n      for (i = 0; i < count; i++) {\n        // Notify the tracker where the object will be offset in the data.\n        if (trackers[i]) {\n          trackers[i].offset(data.length);\n        }\n        for (var j = 0, jj = objects[i].length; j < jj; j++) {\n          data.push(objects[i][j]);\n        }\n      }\n      return data;\n    },\n  };\n  return CFFCompiler;\n})();\n\nexport {\n  CFFStandardStrings,\n  CFFParser,\n  CFF,\n  CFFHeader,\n  CFFStrings,\n  CFFIndex,\n  CFFCharset,\n  CFFTopDict,\n  CFFPrivateDict,\n  CFFCompiler,\n  CFFFDSelect,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar ISOAdobeCharset = [\n  '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar',\n  'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright',\n  'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero',\n  'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',\n  'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question',\n  'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n  'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n  'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',\n  'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',\n  'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',\n  'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',\n  'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',\n  'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',\n  'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',\n  'periodcentered', 'paragraph', 'bullet', 'quotesinglbase',\n  'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',\n  'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde',\n  'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla',\n  'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine',\n  'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash',\n  'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu',\n  'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter',\n  'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior',\n  'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright',\n  'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde',\n  'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute',\n  'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex',\n  'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex',\n  'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute',\n  'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla',\n  'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex',\n  'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis',\n  'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis',\n  'ugrave', 'yacute', 'ydieresis', 'zcaron'\n];\n\nvar ExpertCharset = [\n  '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle',\n  'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',\n  'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',\n  'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',\n  'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',\n  'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle',\n  'colon', 'semicolon', 'commasuperior', 'threequartersemdash',\n  'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior',\n  'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n  'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n  'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',\n  'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',\n  'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',\n  'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',\n  'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',\n  'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',\n  'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle',\n  'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',\n  'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall',\n  'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall',\n  'Cedillasmall', 'onequarter', 'onehalf', 'threequarters',\n  'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',\n  'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',\n  'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n  'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',\n  'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',\n  'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',\n  'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall',\n  'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall',\n  'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',\n  'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n  'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',\n  'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',\n  'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n  'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',\n  'Ydieresissmall'\n];\n\nvar ExpertSubsetCharset = [\n  '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior',\n  'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',\n  'onedotenleader', 'comma', 'hyphen', 'period', 'fraction',\n  'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',\n  'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle',\n  'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior',\n  'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior',\n  'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n  'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n  'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',\n  'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted',\n  'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter',\n  'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',\n  'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',\n  'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n  'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n  'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',\n  'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',\n  'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',\n  'periodinferior', 'commainferior'\n];\n\nexport {\n  ISOAdobeCharset,\n  ExpertCharset,\n  ExpertSubsetCharset,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ExpertEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle',\n  'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',\n  'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',\n  'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',\n  'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',\n  'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon',\n  'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior',\n  'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior',\n  'esuperior', '', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior',\n  'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior',\n  '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '',\n  'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',\n  'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',\n  'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',\n  'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',\n  'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',\n  'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',\n  '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall',\n  'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '',\n  'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall',\n  'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters',\n  'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',\n  'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior',\n  'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior',\n  'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior',\n  'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',\n  'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior',\n  'seveninferior', 'eightinferior', 'nineinferior', 'centinferior',\n  'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',\n  'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall',\n  'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',\n  'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n  'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',\n  'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',\n  'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n  'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',\n  'Ydieresissmall'];\n\nconst MacExpertEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle',\n  'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall',\n  'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',\n  'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle',\n  'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle',\n  'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle',\n  'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '',\n  'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter',\n  'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',\n  'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff',\n  'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior',\n  'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall',\n  'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',\n  'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',\n  'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',\n  'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',\n  'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '',\n  'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall',\n  'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall',\n  'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall',\n  'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall',\n  'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall',\n  'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '',\n  'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior',\n  'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior',\n  'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior',\n  'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '',\n  'dollarinferior', '', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior',\n  'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall',\n  'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '',\n  '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '',\n  'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior',\n  'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',\n  'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior',\n  'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior',\n  '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall',\n  'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior',\n  'periodsuperior', 'Dotaccentsmall', 'Ringsmall', '', '', '', ''];\n\nconst MacRomanEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n  'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',\n  'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',\n  'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',\n  'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',\n  'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',\n  'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',\n  'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',\n  'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',\n  'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '',\n  'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis',\n  'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde',\n  'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',\n  'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute',\n  'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave',\n  'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling',\n  'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright',\n  'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity',\n  'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff',\n  'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine',\n  'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot',\n  'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft',\n  'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE',\n  'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft',\n  'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction',\n  'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl',\n  'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand',\n  'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute',\n  'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple',\n  'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex',\n  'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut',\n  'ogonek', 'caron'];\n\nconst StandardEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n  'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',\n  'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',\n  'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',\n  'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',\n  'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',\n  'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',\n  'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f',\n  'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',\n  'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown',\n  'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',\n  'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',\n  'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl',\n  'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase',\n  'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',\n  'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex',\n  'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla',\n  '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '',\n  '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae',\n  '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls', '',\n  '', '', ''];\n\nconst WinAnsiEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n  'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',\n  'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',\n  'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',\n  'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',\n  'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',\n  'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',\n  'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',\n  'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',\n  'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',\n  'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase',\n  'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron',\n  'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft',\n  'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash',\n  'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet',\n  'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling',\n  'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright',\n  'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered',\n  'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute',\n  'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior',\n  'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters',\n  'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis',\n  'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',\n  'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve',\n  'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash',\n  'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn',\n  'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis',\n  'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis',\n  'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve',\n  'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash',\n  'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn',\n  'ydieresis'];\n\nconst SymbolSetEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent',\n  'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus',\n  'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',\n  'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',\n  'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi',\n  'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa',\n  'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau',\n  'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft',\n  'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex',\n  'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota',\n  'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho',\n  'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta',\n  'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal',\n  'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade',\n  'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree',\n  'plusminus', 'second', 'greaterequal', 'multiply', 'proportional',\n  'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence',\n  'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn',\n  'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply',\n  'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset',\n  'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element',\n  'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif',\n  'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot',\n  'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup',\n  'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans',\n  'copyrightsans', 'trademarksans', 'summation', 'parenlefttp',\n  'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex',\n  'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex',\n  '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt',\n  'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp',\n  'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid',\n  'bracerightbt', ''];\n\nconst ZapfDingbatsEncoding = [\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n  'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117',\n  'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19',\n  'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7',\n  'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36',\n  'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46',\n  'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56',\n  'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66',\n  'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75',\n  'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97',\n  'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205',\n  'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '',\n  '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103',\n  'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120',\n  'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129',\n  'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138',\n  'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147',\n  'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156',\n  'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165',\n  'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173',\n  'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180',\n  'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185',\n  'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191', ''];\n\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case 'WinAnsiEncoding':\n      return WinAnsiEncoding;\n    case 'StandardEncoding':\n      return StandardEncoding;\n    case 'MacRomanEncoding':\n      return MacRomanEncoding;\n    case 'SymbolSetEncoding':\n      return SymbolSetEncoding;\n    case 'ZapfDingbatsEncoding':\n      return ZapfDingbatsEncoding;\n    case 'ExpertEncoding':\n      return ExpertEncoding;\n    case 'MacExpertEncoding':\n      return MacExpertEncoding;\n    default:\n      return null;\n  }\n}\n\nexport {\n  WinAnsiEncoding,\n  StandardEncoding,\n  MacRomanEncoding,\n  SymbolSetEncoding,\n  ZapfDingbatsEncoding,\n  ExpertEncoding,\n  getEncoding,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require('../shared/util').getLookupTableFactory;\n\nvar getGlyphsUnicode = getLookupTableFactory(function (t) {\n  t['A'] = 0x0041;\n  t['AE'] = 0x00C6;\n  t['AEacute'] = 0x01FC;\n  t['AEmacron'] = 0x01E2;\n  t['AEsmall'] = 0xF7E6;\n  t['Aacute'] = 0x00C1;\n  t['Aacutesmall'] = 0xF7E1;\n  t['Abreve'] = 0x0102;\n  t['Abreveacute'] = 0x1EAE;\n  t['Abrevecyrillic'] = 0x04D0;\n  t['Abrevedotbelow'] = 0x1EB6;\n  t['Abrevegrave'] = 0x1EB0;\n  t['Abrevehookabove'] = 0x1EB2;\n  t['Abrevetilde'] = 0x1EB4;\n  t['Acaron'] = 0x01CD;\n  t['Acircle'] = 0x24B6;\n  t['Acircumflex'] = 0x00C2;\n  t['Acircumflexacute'] = 0x1EA4;\n  t['Acircumflexdotbelow'] = 0x1EAC;\n  t['Acircumflexgrave'] = 0x1EA6;\n  t['Acircumflexhookabove'] = 0x1EA8;\n  t['Acircumflexsmall'] = 0xF7E2;\n  t['Acircumflextilde'] = 0x1EAA;\n  t['Acute'] = 0xF6C9;\n  t['Acutesmall'] = 0xF7B4;\n  t['Acyrillic'] = 0x0410;\n  t['Adblgrave'] = 0x0200;\n  t['Adieresis'] = 0x00C4;\n  t['Adieresiscyrillic'] = 0x04D2;\n  t['Adieresismacron'] = 0x01DE;\n  t['Adieresissmall'] = 0xF7E4;\n  t['Adotbelow'] = 0x1EA0;\n  t['Adotmacron'] = 0x01E0;\n  t['Agrave'] = 0x00C0;\n  t['Agravesmall'] = 0xF7E0;\n  t['Ahookabove'] = 0x1EA2;\n  t['Aiecyrillic'] = 0x04D4;\n  t['Ainvertedbreve'] = 0x0202;\n  t['Alpha'] = 0x0391;\n  t['Alphatonos'] = 0x0386;\n  t['Amacron'] = 0x0100;\n  t['Amonospace'] = 0xFF21;\n  t['Aogonek'] = 0x0104;\n  t['Aring'] = 0x00C5;\n  t['Aringacute'] = 0x01FA;\n  t['Aringbelow'] = 0x1E00;\n  t['Aringsmall'] = 0xF7E5;\n  t['Asmall'] = 0xF761;\n  t['Atilde'] = 0x00C3;\n  t['Atildesmall'] = 0xF7E3;\n  t['Aybarmenian'] = 0x0531;\n  t['B'] = 0x0042;\n  t['Bcircle'] = 0x24B7;\n  t['Bdotaccent'] = 0x1E02;\n  t['Bdotbelow'] = 0x1E04;\n  t['Becyrillic'] = 0x0411;\n  t['Benarmenian'] = 0x0532;\n  t['Beta'] = 0x0392;\n  t['Bhook'] = 0x0181;\n  t['Blinebelow'] = 0x1E06;\n  t['Bmonospace'] = 0xFF22;\n  t['Brevesmall'] = 0xF6F4;\n  t['Bsmall'] = 0xF762;\n  t['Btopbar'] = 0x0182;\n  t['C'] = 0x0043;\n  t['Caarmenian'] = 0x053E;\n  t['Cacute'] = 0x0106;\n  t['Caron'] = 0xF6CA;\n  t['Caronsmall'] = 0xF6F5;\n  t['Ccaron'] = 0x010C;\n  t['Ccedilla'] = 0x00C7;\n  t['Ccedillaacute'] = 0x1E08;\n  t['Ccedillasmall'] = 0xF7E7;\n  t['Ccircle'] = 0x24B8;\n  t['Ccircumflex'] = 0x0108;\n  t['Cdot'] = 0x010A;\n  t['Cdotaccent'] = 0x010A;\n  t['Cedillasmall'] = 0xF7B8;\n  t['Chaarmenian'] = 0x0549;\n  t['Cheabkhasiancyrillic'] = 0x04BC;\n  t['Checyrillic'] = 0x0427;\n  t['Chedescenderabkhasiancyrillic'] = 0x04BE;\n  t['Chedescendercyrillic'] = 0x04B6;\n  t['Chedieresiscyrillic'] = 0x04F4;\n  t['Cheharmenian'] = 0x0543;\n  t['Chekhakassiancyrillic'] = 0x04CB;\n  t['Cheverticalstrokecyrillic'] = 0x04B8;\n  t['Chi'] = 0x03A7;\n  t['Chook'] = 0x0187;\n  t['Circumflexsmall'] = 0xF6F6;\n  t['Cmonospace'] = 0xFF23;\n  t['Coarmenian'] = 0x0551;\n  t['Csmall'] = 0xF763;\n  t['D'] = 0x0044;\n  t['DZ'] = 0x01F1;\n  t['DZcaron'] = 0x01C4;\n  t['Daarmenian'] = 0x0534;\n  t['Dafrican'] = 0x0189;\n  t['Dcaron'] = 0x010E;\n  t['Dcedilla'] = 0x1E10;\n  t['Dcircle'] = 0x24B9;\n  t['Dcircumflexbelow'] = 0x1E12;\n  t['Dcroat'] = 0x0110;\n  t['Ddotaccent'] = 0x1E0A;\n  t['Ddotbelow'] = 0x1E0C;\n  t['Decyrillic'] = 0x0414;\n  t['Deicoptic'] = 0x03EE;\n  t['Delta'] = 0x2206;\n  t['Deltagreek'] = 0x0394;\n  t['Dhook'] = 0x018A;\n  t['Dieresis'] = 0xF6CB;\n  t['DieresisAcute'] = 0xF6CC;\n  t['DieresisGrave'] = 0xF6CD;\n  t['Dieresissmall'] = 0xF7A8;\n  t['Digammagreek'] = 0x03DC;\n  t['Djecyrillic'] = 0x0402;\n  t['Dlinebelow'] = 0x1E0E;\n  t['Dmonospace'] = 0xFF24;\n  t['Dotaccentsmall'] = 0xF6F7;\n  t['Dslash'] = 0x0110;\n  t['Dsmall'] = 0xF764;\n  t['Dtopbar'] = 0x018B;\n  t['Dz'] = 0x01F2;\n  t['Dzcaron'] = 0x01C5;\n  t['Dzeabkhasiancyrillic'] = 0x04E0;\n  t['Dzecyrillic'] = 0x0405;\n  t['Dzhecyrillic'] = 0x040F;\n  t['E'] = 0x0045;\n  t['Eacute'] = 0x00C9;\n  t['Eacutesmall'] = 0xF7E9;\n  t['Ebreve'] = 0x0114;\n  t['Ecaron'] = 0x011A;\n  t['Ecedillabreve'] = 0x1E1C;\n  t['Echarmenian'] = 0x0535;\n  t['Ecircle'] = 0x24BA;\n  t['Ecircumflex'] = 0x00CA;\n  t['Ecircumflexacute'] = 0x1EBE;\n  t['Ecircumflexbelow'] = 0x1E18;\n  t['Ecircumflexdotbelow'] = 0x1EC6;\n  t['Ecircumflexgrave'] = 0x1EC0;\n  t['Ecircumflexhookabove'] = 0x1EC2;\n  t['Ecircumflexsmall'] = 0xF7EA;\n  t['Ecircumflextilde'] = 0x1EC4;\n  t['Ecyrillic'] = 0x0404;\n  t['Edblgrave'] = 0x0204;\n  t['Edieresis'] = 0x00CB;\n  t['Edieresissmall'] = 0xF7EB;\n  t['Edot'] = 0x0116;\n  t['Edotaccent'] = 0x0116;\n  t['Edotbelow'] = 0x1EB8;\n  t['Efcyrillic'] = 0x0424;\n  t['Egrave'] = 0x00C8;\n  t['Egravesmall'] = 0xF7E8;\n  t['Eharmenian'] = 0x0537;\n  t['Ehookabove'] = 0x1EBA;\n  t['Eightroman'] = 0x2167;\n  t['Einvertedbreve'] = 0x0206;\n  t['Eiotifiedcyrillic'] = 0x0464;\n  t['Elcyrillic'] = 0x041B;\n  t['Elevenroman'] = 0x216A;\n  t['Emacron'] = 0x0112;\n  t['Emacronacute'] = 0x1E16;\n  t['Emacrongrave'] = 0x1E14;\n  t['Emcyrillic'] = 0x041C;\n  t['Emonospace'] = 0xFF25;\n  t['Encyrillic'] = 0x041D;\n  t['Endescendercyrillic'] = 0x04A2;\n  t['Eng'] = 0x014A;\n  t['Enghecyrillic'] = 0x04A4;\n  t['Enhookcyrillic'] = 0x04C7;\n  t['Eogonek'] = 0x0118;\n  t['Eopen'] = 0x0190;\n  t['Epsilon'] = 0x0395;\n  t['Epsilontonos'] = 0x0388;\n  t['Ercyrillic'] = 0x0420;\n  t['Ereversed'] = 0x018E;\n  t['Ereversedcyrillic'] = 0x042D;\n  t['Escyrillic'] = 0x0421;\n  t['Esdescendercyrillic'] = 0x04AA;\n  t['Esh'] = 0x01A9;\n  t['Esmall'] = 0xF765;\n  t['Eta'] = 0x0397;\n  t['Etarmenian'] = 0x0538;\n  t['Etatonos'] = 0x0389;\n  t['Eth'] = 0x00D0;\n  t['Ethsmall'] = 0xF7F0;\n  t['Etilde'] = 0x1EBC;\n  t['Etildebelow'] = 0x1E1A;\n  t['Euro'] = 0x20AC;\n  t['Ezh'] = 0x01B7;\n  t['Ezhcaron'] = 0x01EE;\n  t['Ezhreversed'] = 0x01B8;\n  t['F'] = 0x0046;\n  t['Fcircle'] = 0x24BB;\n  t['Fdotaccent'] = 0x1E1E;\n  t['Feharmenian'] = 0x0556;\n  t['Feicoptic'] = 0x03E4;\n  t['Fhook'] = 0x0191;\n  t['Fitacyrillic'] = 0x0472;\n  t['Fiveroman'] = 0x2164;\n  t['Fmonospace'] = 0xFF26;\n  t['Fourroman'] = 0x2163;\n  t['Fsmall'] = 0xF766;\n  t['G'] = 0x0047;\n  t['GBsquare'] = 0x3387;\n  t['Gacute'] = 0x01F4;\n  t['Gamma'] = 0x0393;\n  t['Gammaafrican'] = 0x0194;\n  t['Gangiacoptic'] = 0x03EA;\n  t['Gbreve'] = 0x011E;\n  t['Gcaron'] = 0x01E6;\n  t['Gcedilla'] = 0x0122;\n  t['Gcircle'] = 0x24BC;\n  t['Gcircumflex'] = 0x011C;\n  t['Gcommaaccent'] = 0x0122;\n  t['Gdot'] = 0x0120;\n  t['Gdotaccent'] = 0x0120;\n  t['Gecyrillic'] = 0x0413;\n  t['Ghadarmenian'] = 0x0542;\n  t['Ghemiddlehookcyrillic'] = 0x0494;\n  t['Ghestrokecyrillic'] = 0x0492;\n  t['Gheupturncyrillic'] = 0x0490;\n  t['Ghook'] = 0x0193;\n  t['Gimarmenian'] = 0x0533;\n  t['Gjecyrillic'] = 0x0403;\n  t['Gmacron'] = 0x1E20;\n  t['Gmonospace'] = 0xFF27;\n  t['Grave'] = 0xF6CE;\n  t['Gravesmall'] = 0xF760;\n  t['Gsmall'] = 0xF767;\n  t['Gsmallhook'] = 0x029B;\n  t['Gstroke'] = 0x01E4;\n  t['H'] = 0x0048;\n  t['H18533'] = 0x25CF;\n  t['H18543'] = 0x25AA;\n  t['H18551'] = 0x25AB;\n  t['H22073'] = 0x25A1;\n  t['HPsquare'] = 0x33CB;\n  t['Haabkhasiancyrillic'] = 0x04A8;\n  t['Hadescendercyrillic'] = 0x04B2;\n  t['Hardsigncyrillic'] = 0x042A;\n  t['Hbar'] = 0x0126;\n  t['Hbrevebelow'] = 0x1E2A;\n  t['Hcedilla'] = 0x1E28;\n  t['Hcircle'] = 0x24BD;\n  t['Hcircumflex'] = 0x0124;\n  t['Hdieresis'] = 0x1E26;\n  t['Hdotaccent'] = 0x1E22;\n  t['Hdotbelow'] = 0x1E24;\n  t['Hmonospace'] = 0xFF28;\n  t['Hoarmenian'] = 0x0540;\n  t['Horicoptic'] = 0x03E8;\n  t['Hsmall'] = 0xF768;\n  t['Hungarumlaut'] = 0xF6CF;\n  t['Hungarumlautsmall'] = 0xF6F8;\n  t['Hzsquare'] = 0x3390;\n  t['I'] = 0x0049;\n  t['IAcyrillic'] = 0x042F;\n  t['IJ'] = 0x0132;\n  t['IUcyrillic'] = 0x042E;\n  t['Iacute'] = 0x00CD;\n  t['Iacutesmall'] = 0xF7ED;\n  t['Ibreve'] = 0x012C;\n  t['Icaron'] = 0x01CF;\n  t['Icircle'] = 0x24BE;\n  t['Icircumflex'] = 0x00CE;\n  t['Icircumflexsmall'] = 0xF7EE;\n  t['Icyrillic'] = 0x0406;\n  t['Idblgrave'] = 0x0208;\n  t['Idieresis'] = 0x00CF;\n  t['Idieresisacute'] = 0x1E2E;\n  t['Idieresiscyrillic'] = 0x04E4;\n  t['Idieresissmall'] = 0xF7EF;\n  t['Idot'] = 0x0130;\n  t['Idotaccent'] = 0x0130;\n  t['Idotbelow'] = 0x1ECA;\n  t['Iebrevecyrillic'] = 0x04D6;\n  t['Iecyrillic'] = 0x0415;\n  t['Ifraktur'] = 0x2111;\n  t['Igrave'] = 0x00CC;\n  t['Igravesmall'] = 0xF7EC;\n  t['Ihookabove'] = 0x1EC8;\n  t['Iicyrillic'] = 0x0418;\n  t['Iinvertedbreve'] = 0x020A;\n  t['Iishortcyrillic'] = 0x0419;\n  t['Imacron'] = 0x012A;\n  t['Imacroncyrillic'] = 0x04E2;\n  t['Imonospace'] = 0xFF29;\n  t['Iniarmenian'] = 0x053B;\n  t['Iocyrillic'] = 0x0401;\n  t['Iogonek'] = 0x012E;\n  t['Iota'] = 0x0399;\n  t['Iotaafrican'] = 0x0196;\n  t['Iotadieresis'] = 0x03AA;\n  t['Iotatonos'] = 0x038A;\n  t['Ismall'] = 0xF769;\n  t['Istroke'] = 0x0197;\n  t['Itilde'] = 0x0128;\n  t['Itildebelow'] = 0x1E2C;\n  t['Izhitsacyrillic'] = 0x0474;\n  t['Izhitsadblgravecyrillic'] = 0x0476;\n  t['J'] = 0x004A;\n  t['Jaarmenian'] = 0x0541;\n  t['Jcircle'] = 0x24BF;\n  t['Jcircumflex'] = 0x0134;\n  t['Jecyrillic'] = 0x0408;\n  t['Jheharmenian'] = 0x054B;\n  t['Jmonospace'] = 0xFF2A;\n  t['Jsmall'] = 0xF76A;\n  t['K'] = 0x004B;\n  t['KBsquare'] = 0x3385;\n  t['KKsquare'] = 0x33CD;\n  t['Kabashkircyrillic'] = 0x04A0;\n  t['Kacute'] = 0x1E30;\n  t['Kacyrillic'] = 0x041A;\n  t['Kadescendercyrillic'] = 0x049A;\n  t['Kahookcyrillic'] = 0x04C3;\n  t['Kappa'] = 0x039A;\n  t['Kastrokecyrillic'] = 0x049E;\n  t['Kaverticalstrokecyrillic'] = 0x049C;\n  t['Kcaron'] = 0x01E8;\n  t['Kcedilla'] = 0x0136;\n  t['Kcircle'] = 0x24C0;\n  t['Kcommaaccent'] = 0x0136;\n  t['Kdotbelow'] = 0x1E32;\n  t['Keharmenian'] = 0x0554;\n  t['Kenarmenian'] = 0x053F;\n  t['Khacyrillic'] = 0x0425;\n  t['Kheicoptic'] = 0x03E6;\n  t['Khook'] = 0x0198;\n  t['Kjecyrillic'] = 0x040C;\n  t['Klinebelow'] = 0x1E34;\n  t['Kmonospace'] = 0xFF2B;\n  t['Koppacyrillic'] = 0x0480;\n  t['Koppagreek'] = 0x03DE;\n  t['Ksicyrillic'] = 0x046E;\n  t['Ksmall'] = 0xF76B;\n  t['L'] = 0x004C;\n  t['LJ'] = 0x01C7;\n  t['LL'] = 0xF6BF;\n  t['Lacute'] = 0x0139;\n  t['Lambda'] = 0x039B;\n  t['Lcaron'] = 0x013D;\n  t['Lcedilla'] = 0x013B;\n  t['Lcircle'] = 0x24C1;\n  t['Lcircumflexbelow'] = 0x1E3C;\n  t['Lcommaaccent'] = 0x013B;\n  t['Ldot'] = 0x013F;\n  t['Ldotaccent'] = 0x013F;\n  t['Ldotbelow'] = 0x1E36;\n  t['Ldotbelowmacron'] = 0x1E38;\n  t['Liwnarmenian'] = 0x053C;\n  t['Lj'] = 0x01C8;\n  t['Ljecyrillic'] = 0x0409;\n  t['Llinebelow'] = 0x1E3A;\n  t['Lmonospace'] = 0xFF2C;\n  t['Lslash'] = 0x0141;\n  t['Lslashsmall'] = 0xF6F9;\n  t['Lsmall'] = 0xF76C;\n  t['M'] = 0x004D;\n  t['MBsquare'] = 0x3386;\n  t['Macron'] = 0xF6D0;\n  t['Macronsmall'] = 0xF7AF;\n  t['Macute'] = 0x1E3E;\n  t['Mcircle'] = 0x24C2;\n  t['Mdotaccent'] = 0x1E40;\n  t['Mdotbelow'] = 0x1E42;\n  t['Menarmenian'] = 0x0544;\n  t['Mmonospace'] = 0xFF2D;\n  t['Msmall'] = 0xF76D;\n  t['Mturned'] = 0x019C;\n  t['Mu'] = 0x039C;\n  t['N'] = 0x004E;\n  t['NJ'] = 0x01CA;\n  t['Nacute'] = 0x0143;\n  t['Ncaron'] = 0x0147;\n  t['Ncedilla'] = 0x0145;\n  t['Ncircle'] = 0x24C3;\n  t['Ncircumflexbelow'] = 0x1E4A;\n  t['Ncommaaccent'] = 0x0145;\n  t['Ndotaccent'] = 0x1E44;\n  t['Ndotbelow'] = 0x1E46;\n  t['Nhookleft'] = 0x019D;\n  t['Nineroman'] = 0x2168;\n  t['Nj'] = 0x01CB;\n  t['Njecyrillic'] = 0x040A;\n  t['Nlinebelow'] = 0x1E48;\n  t['Nmonospace'] = 0xFF2E;\n  t['Nowarmenian'] = 0x0546;\n  t['Nsmall'] = 0xF76E;\n  t['Ntilde'] = 0x00D1;\n  t['Ntildesmall'] = 0xF7F1;\n  t['Nu'] = 0x039D;\n  t['O'] = 0x004F;\n  t['OE'] = 0x0152;\n  t['OEsmall'] = 0xF6FA;\n  t['Oacute'] = 0x00D3;\n  t['Oacutesmall'] = 0xF7F3;\n  t['Obarredcyrillic'] = 0x04E8;\n  t['Obarreddieresiscyrillic'] = 0x04EA;\n  t['Obreve'] = 0x014E;\n  t['Ocaron'] = 0x01D1;\n  t['Ocenteredtilde'] = 0x019F;\n  t['Ocircle'] = 0x24C4;\n  t['Ocircumflex'] = 0x00D4;\n  t['Ocircumflexacute'] = 0x1ED0;\n  t['Ocircumflexdotbelow'] = 0x1ED8;\n  t['Ocircumflexgrave'] = 0x1ED2;\n  t['Ocircumflexhookabove'] = 0x1ED4;\n  t['Ocircumflexsmall'] = 0xF7F4;\n  t['Ocircumflextilde'] = 0x1ED6;\n  t['Ocyrillic'] = 0x041E;\n  t['Odblacute'] = 0x0150;\n  t['Odblgrave'] = 0x020C;\n  t['Odieresis'] = 0x00D6;\n  t['Odieresiscyrillic'] = 0x04E6;\n  t['Odieresissmall'] = 0xF7F6;\n  t['Odotbelow'] = 0x1ECC;\n  t['Ogoneksmall'] = 0xF6FB;\n  t['Ograve'] = 0x00D2;\n  t['Ogravesmall'] = 0xF7F2;\n  t['Oharmenian'] = 0x0555;\n  t['Ohm'] = 0x2126;\n  t['Ohookabove'] = 0x1ECE;\n  t['Ohorn'] = 0x01A0;\n  t['Ohornacute'] = 0x1EDA;\n  t['Ohorndotbelow'] = 0x1EE2;\n  t['Ohorngrave'] = 0x1EDC;\n  t['Ohornhookabove'] = 0x1EDE;\n  t['Ohorntilde'] = 0x1EE0;\n  t['Ohungarumlaut'] = 0x0150;\n  t['Oi'] = 0x01A2;\n  t['Oinvertedbreve'] = 0x020E;\n  t['Omacron'] = 0x014C;\n  t['Omacronacute'] = 0x1E52;\n  t['Omacrongrave'] = 0x1E50;\n  t['Omega'] = 0x2126;\n  t['Omegacyrillic'] = 0x0460;\n  t['Omegagreek'] = 0x03A9;\n  t['Omegaroundcyrillic'] = 0x047A;\n  t['Omegatitlocyrillic'] = 0x047C;\n  t['Omegatonos'] = 0x038F;\n  t['Omicron'] = 0x039F;\n  t['Omicrontonos'] = 0x038C;\n  t['Omonospace'] = 0xFF2F;\n  t['Oneroman'] = 0x2160;\n  t['Oogonek'] = 0x01EA;\n  t['Oogonekmacron'] = 0x01EC;\n  t['Oopen'] = 0x0186;\n  t['Oslash'] = 0x00D8;\n  t['Oslashacute'] = 0x01FE;\n  t['Oslashsmall'] = 0xF7F8;\n  t['Osmall'] = 0xF76F;\n  t['Ostrokeacute'] = 0x01FE;\n  t['Otcyrillic'] = 0x047E;\n  t['Otilde'] = 0x00D5;\n  t['Otildeacute'] = 0x1E4C;\n  t['Otildedieresis'] = 0x1E4E;\n  t['Otildesmall'] = 0xF7F5;\n  t['P'] = 0x0050;\n  t['Pacute'] = 0x1E54;\n  t['Pcircle'] = 0x24C5;\n  t['Pdotaccent'] = 0x1E56;\n  t['Pecyrillic'] = 0x041F;\n  t['Peharmenian'] = 0x054A;\n  t['Pemiddlehookcyrillic'] = 0x04A6;\n  t['Phi'] = 0x03A6;\n  t['Phook'] = 0x01A4;\n  t['Pi'] = 0x03A0;\n  t['Piwrarmenian'] = 0x0553;\n  t['Pmonospace'] = 0xFF30;\n  t['Psi'] = 0x03A8;\n  t['Psicyrillic'] = 0x0470;\n  t['Psmall'] = 0xF770;\n  t['Q'] = 0x0051;\n  t['Qcircle'] = 0x24C6;\n  t['Qmonospace'] = 0xFF31;\n  t['Qsmall'] = 0xF771;\n  t['R'] = 0x0052;\n  t['Raarmenian'] = 0x054C;\n  t['Racute'] = 0x0154;\n  t['Rcaron'] = 0x0158;\n  t['Rcedilla'] = 0x0156;\n  t['Rcircle'] = 0x24C7;\n  t['Rcommaaccent'] = 0x0156;\n  t['Rdblgrave'] = 0x0210;\n  t['Rdotaccent'] = 0x1E58;\n  t['Rdotbelow'] = 0x1E5A;\n  t['Rdotbelowmacron'] = 0x1E5C;\n  t['Reharmenian'] = 0x0550;\n  t['Rfraktur'] = 0x211C;\n  t['Rho'] = 0x03A1;\n  t['Ringsmall'] = 0xF6FC;\n  t['Rinvertedbreve'] = 0x0212;\n  t['Rlinebelow'] = 0x1E5E;\n  t['Rmonospace'] = 0xFF32;\n  t['Rsmall'] = 0xF772;\n  t['Rsmallinverted'] = 0x0281;\n  t['Rsmallinvertedsuperior'] = 0x02B6;\n  t['S'] = 0x0053;\n  t['SF010000'] = 0x250C;\n  t['SF020000'] = 0x2514;\n  t['SF030000'] = 0x2510;\n  t['SF040000'] = 0x2518;\n  t['SF050000'] = 0x253C;\n  t['SF060000'] = 0x252C;\n  t['SF070000'] = 0x2534;\n  t['SF080000'] = 0x251C;\n  t['SF090000'] = 0x2524;\n  t['SF100000'] = 0x2500;\n  t['SF110000'] = 0x2502;\n  t['SF190000'] = 0x2561;\n  t['SF200000'] = 0x2562;\n  t['SF210000'] = 0x2556;\n  t['SF220000'] = 0x2555;\n  t['SF230000'] = 0x2563;\n  t['SF240000'] = 0x2551;\n  t['SF250000'] = 0x2557;\n  t['SF260000'] = 0x255D;\n  t['SF270000'] = 0x255C;\n  t['SF280000'] = 0x255B;\n  t['SF360000'] = 0x255E;\n  t['SF370000'] = 0x255F;\n  t['SF380000'] = 0x255A;\n  t['SF390000'] = 0x2554;\n  t['SF400000'] = 0x2569;\n  t['SF410000'] = 0x2566;\n  t['SF420000'] = 0x2560;\n  t['SF430000'] = 0x2550;\n  t['SF440000'] = 0x256C;\n  t['SF450000'] = 0x2567;\n  t['SF460000'] = 0x2568;\n  t['SF470000'] = 0x2564;\n  t['SF480000'] = 0x2565;\n  t['SF490000'] = 0x2559;\n  t['SF500000'] = 0x2558;\n  t['SF510000'] = 0x2552;\n  t['SF520000'] = 0x2553;\n  t['SF530000'] = 0x256B;\n  t['SF540000'] = 0x256A;\n  t['Sacute'] = 0x015A;\n  t['Sacutedotaccent'] = 0x1E64;\n  t['Sampigreek'] = 0x03E0;\n  t['Scaron'] = 0x0160;\n  t['Scarondotaccent'] = 0x1E66;\n  t['Scaronsmall'] = 0xF6FD;\n  t['Scedilla'] = 0x015E;\n  t['Schwa'] = 0x018F;\n  t['Schwacyrillic'] = 0x04D8;\n  t['Schwadieresiscyrillic'] = 0x04DA;\n  t['Scircle'] = 0x24C8;\n  t['Scircumflex'] = 0x015C;\n  t['Scommaaccent'] = 0x0218;\n  t['Sdotaccent'] = 0x1E60;\n  t['Sdotbelow'] = 0x1E62;\n  t['Sdotbelowdotaccent'] = 0x1E68;\n  t['Seharmenian'] = 0x054D;\n  t['Sevenroman'] = 0x2166;\n  t['Shaarmenian'] = 0x0547;\n  t['Shacyrillic'] = 0x0428;\n  t['Shchacyrillic'] = 0x0429;\n  t['Sheicoptic'] = 0x03E2;\n  t['Shhacyrillic'] = 0x04BA;\n  t['Shimacoptic'] = 0x03EC;\n  t['Sigma'] = 0x03A3;\n  t['Sixroman'] = 0x2165;\n  t['Smonospace'] = 0xFF33;\n  t['Softsigncyrillic'] = 0x042C;\n  t['Ssmall'] = 0xF773;\n  t['Stigmagreek'] = 0x03DA;\n  t['T'] = 0x0054;\n  t['Tau'] = 0x03A4;\n  t['Tbar'] = 0x0166;\n  t['Tcaron'] = 0x0164;\n  t['Tcedilla'] = 0x0162;\n  t['Tcircle'] = 0x24C9;\n  t['Tcircumflexbelow'] = 0x1E70;\n  t['Tcommaaccent'] = 0x0162;\n  t['Tdotaccent'] = 0x1E6A;\n  t['Tdotbelow'] = 0x1E6C;\n  t['Tecyrillic'] = 0x0422;\n  t['Tedescendercyrillic'] = 0x04AC;\n  t['Tenroman'] = 0x2169;\n  t['Tetsecyrillic'] = 0x04B4;\n  t['Theta'] = 0x0398;\n  t['Thook'] = 0x01AC;\n  t['Thorn'] = 0x00DE;\n  t['Thornsmall'] = 0xF7FE;\n  t['Threeroman'] = 0x2162;\n  t['Tildesmall'] = 0xF6FE;\n  t['Tiwnarmenian'] = 0x054F;\n  t['Tlinebelow'] = 0x1E6E;\n  t['Tmonospace'] = 0xFF34;\n  t['Toarmenian'] = 0x0539;\n  t['Tonefive'] = 0x01BC;\n  t['Tonesix'] = 0x0184;\n  t['Tonetwo'] = 0x01A7;\n  t['Tretroflexhook'] = 0x01AE;\n  t['Tsecyrillic'] = 0x0426;\n  t['Tshecyrillic'] = 0x040B;\n  t['Tsmall'] = 0xF774;\n  t['Twelveroman'] = 0x216B;\n  t['Tworoman'] = 0x2161;\n  t['U'] = 0x0055;\n  t['Uacute'] = 0x00DA;\n  t['Uacutesmall'] = 0xF7FA;\n  t['Ubreve'] = 0x016C;\n  t['Ucaron'] = 0x01D3;\n  t['Ucircle'] = 0x24CA;\n  t['Ucircumflex'] = 0x00DB;\n  t['Ucircumflexbelow'] = 0x1E76;\n  t['Ucircumflexsmall'] = 0xF7FB;\n  t['Ucyrillic'] = 0x0423;\n  t['Udblacute'] = 0x0170;\n  t['Udblgrave'] = 0x0214;\n  t['Udieresis'] = 0x00DC;\n  t['Udieresisacute'] = 0x01D7;\n  t['Udieresisbelow'] = 0x1E72;\n  t['Udieresiscaron'] = 0x01D9;\n  t['Udieresiscyrillic'] = 0x04F0;\n  t['Udieresisgrave'] = 0x01DB;\n  t['Udieresismacron'] = 0x01D5;\n  t['Udieresissmall'] = 0xF7FC;\n  t['Udotbelow'] = 0x1EE4;\n  t['Ugrave'] = 0x00D9;\n  t['Ugravesmall'] = 0xF7F9;\n  t['Uhookabove'] = 0x1EE6;\n  t['Uhorn'] = 0x01AF;\n  t['Uhornacute'] = 0x1EE8;\n  t['Uhorndotbelow'] = 0x1EF0;\n  t['Uhorngrave'] = 0x1EEA;\n  t['Uhornhookabove'] = 0x1EEC;\n  t['Uhorntilde'] = 0x1EEE;\n  t['Uhungarumlaut'] = 0x0170;\n  t['Uhungarumlautcyrillic'] = 0x04F2;\n  t['Uinvertedbreve'] = 0x0216;\n  t['Ukcyrillic'] = 0x0478;\n  t['Umacron'] = 0x016A;\n  t['Umacroncyrillic'] = 0x04EE;\n  t['Umacrondieresis'] = 0x1E7A;\n  t['Umonospace'] = 0xFF35;\n  t['Uogonek'] = 0x0172;\n  t['Upsilon'] = 0x03A5;\n  t['Upsilon1'] = 0x03D2;\n  t['Upsilonacutehooksymbolgreek'] = 0x03D3;\n  t['Upsilonafrican'] = 0x01B1;\n  t['Upsilondieresis'] = 0x03AB;\n  t['Upsilondieresishooksymbolgreek'] = 0x03D4;\n  t['Upsilonhooksymbol'] = 0x03D2;\n  t['Upsilontonos'] = 0x038E;\n  t['Uring'] = 0x016E;\n  t['Ushortcyrillic'] = 0x040E;\n  t['Usmall'] = 0xF775;\n  t['Ustraightcyrillic'] = 0x04AE;\n  t['Ustraightstrokecyrillic'] = 0x04B0;\n  t['Utilde'] = 0x0168;\n  t['Utildeacute'] = 0x1E78;\n  t['Utildebelow'] = 0x1E74;\n  t['V'] = 0x0056;\n  t['Vcircle'] = 0x24CB;\n  t['Vdotbelow'] = 0x1E7E;\n  t['Vecyrillic'] = 0x0412;\n  t['Vewarmenian'] = 0x054E;\n  t['Vhook'] = 0x01B2;\n  t['Vmonospace'] = 0xFF36;\n  t['Voarmenian'] = 0x0548;\n  t['Vsmall'] = 0xF776;\n  t['Vtilde'] = 0x1E7C;\n  t['W'] = 0x0057;\n  t['Wacute'] = 0x1E82;\n  t['Wcircle'] = 0x24CC;\n  t['Wcircumflex'] = 0x0174;\n  t['Wdieresis'] = 0x1E84;\n  t['Wdotaccent'] = 0x1E86;\n  t['Wdotbelow'] = 0x1E88;\n  t['Wgrave'] = 0x1E80;\n  t['Wmonospace'] = 0xFF37;\n  t['Wsmall'] = 0xF777;\n  t['X'] = 0x0058;\n  t['Xcircle'] = 0x24CD;\n  t['Xdieresis'] = 0x1E8C;\n  t['Xdotaccent'] = 0x1E8A;\n  t['Xeharmenian'] = 0x053D;\n  t['Xi'] = 0x039E;\n  t['Xmonospace'] = 0xFF38;\n  t['Xsmall'] = 0xF778;\n  t['Y'] = 0x0059;\n  t['Yacute'] = 0x00DD;\n  t['Yacutesmall'] = 0xF7FD;\n  t['Yatcyrillic'] = 0x0462;\n  t['Ycircle'] = 0x24CE;\n  t['Ycircumflex'] = 0x0176;\n  t['Ydieresis'] = 0x0178;\n  t['Ydieresissmall'] = 0xF7FF;\n  t['Ydotaccent'] = 0x1E8E;\n  t['Ydotbelow'] = 0x1EF4;\n  t['Yericyrillic'] = 0x042B;\n  t['Yerudieresiscyrillic'] = 0x04F8;\n  t['Ygrave'] = 0x1EF2;\n  t['Yhook'] = 0x01B3;\n  t['Yhookabove'] = 0x1EF6;\n  t['Yiarmenian'] = 0x0545;\n  t['Yicyrillic'] = 0x0407;\n  t['Yiwnarmenian'] = 0x0552;\n  t['Ymonospace'] = 0xFF39;\n  t['Ysmall'] = 0xF779;\n  t['Ytilde'] = 0x1EF8;\n  t['Yusbigcyrillic'] = 0x046A;\n  t['Yusbigiotifiedcyrillic'] = 0x046C;\n  t['Yuslittlecyrillic'] = 0x0466;\n  t['Yuslittleiotifiedcyrillic'] = 0x0468;\n  t['Z'] = 0x005A;\n  t['Zaarmenian'] = 0x0536;\n  t['Zacute'] = 0x0179;\n  t['Zcaron'] = 0x017D;\n  t['Zcaronsmall'] = 0xF6FF;\n  t['Zcircle'] = 0x24CF;\n  t['Zcircumflex'] = 0x1E90;\n  t['Zdot'] = 0x017B;\n  t['Zdotaccent'] = 0x017B;\n  t['Zdotbelow'] = 0x1E92;\n  t['Zecyrillic'] = 0x0417;\n  t['Zedescendercyrillic'] = 0x0498;\n  t['Zedieresiscyrillic'] = 0x04DE;\n  t['Zeta'] = 0x0396;\n  t['Zhearmenian'] = 0x053A;\n  t['Zhebrevecyrillic'] = 0x04C1;\n  t['Zhecyrillic'] = 0x0416;\n  t['Zhedescendercyrillic'] = 0x0496;\n  t['Zhedieresiscyrillic'] = 0x04DC;\n  t['Zlinebelow'] = 0x1E94;\n  t['Zmonospace'] = 0xFF3A;\n  t['Zsmall'] = 0xF77A;\n  t['Zstroke'] = 0x01B5;\n  t['a'] = 0x0061;\n  t['aabengali'] = 0x0986;\n  t['aacute'] = 0x00E1;\n  t['aadeva'] = 0x0906;\n  t['aagujarati'] = 0x0A86;\n  t['aagurmukhi'] = 0x0A06;\n  t['aamatragurmukhi'] = 0x0A3E;\n  t['aarusquare'] = 0x3303;\n  t['aavowelsignbengali'] = 0x09BE;\n  t['aavowelsigndeva'] = 0x093E;\n  t['aavowelsigngujarati'] = 0x0ABE;\n  t['abbreviationmarkarmenian'] = 0x055F;\n  t['abbreviationsigndeva'] = 0x0970;\n  t['abengali'] = 0x0985;\n  t['abopomofo'] = 0x311A;\n  t['abreve'] = 0x0103;\n  t['abreveacute'] = 0x1EAF;\n  t['abrevecyrillic'] = 0x04D1;\n  t['abrevedotbelow'] = 0x1EB7;\n  t['abrevegrave'] = 0x1EB1;\n  t['abrevehookabove'] = 0x1EB3;\n  t['abrevetilde'] = 0x1EB5;\n  t['acaron'] = 0x01CE;\n  t['acircle'] = 0x24D0;\n  t['acircumflex'] = 0x00E2;\n  t['acircumflexacute'] = 0x1EA5;\n  t['acircumflexdotbelow'] = 0x1EAD;\n  t['acircumflexgrave'] = 0x1EA7;\n  t['acircumflexhookabove'] = 0x1EA9;\n  t['acircumflextilde'] = 0x1EAB;\n  t['acute'] = 0x00B4;\n  t['acutebelowcmb'] = 0x0317;\n  t['acutecmb'] = 0x0301;\n  t['acutecomb'] = 0x0301;\n  t['acutedeva'] = 0x0954;\n  t['acutelowmod'] = 0x02CF;\n  t['acutetonecmb'] = 0x0341;\n  t['acyrillic'] = 0x0430;\n  t['adblgrave'] = 0x0201;\n  t['addakgurmukhi'] = 0x0A71;\n  t['adeva'] = 0x0905;\n  t['adieresis'] = 0x00E4;\n  t['adieresiscyrillic'] = 0x04D3;\n  t['adieresismacron'] = 0x01DF;\n  t['adotbelow'] = 0x1EA1;\n  t['adotmacron'] = 0x01E1;\n  t['ae'] = 0x00E6;\n  t['aeacute'] = 0x01FD;\n  t['aekorean'] = 0x3150;\n  t['aemacron'] = 0x01E3;\n  t['afii00208'] = 0x2015;\n  t['afii08941'] = 0x20A4;\n  t['afii10017'] = 0x0410;\n  t['afii10018'] = 0x0411;\n  t['afii10019'] = 0x0412;\n  t['afii10020'] = 0x0413;\n  t['afii10021'] = 0x0414;\n  t['afii10022'] = 0x0415;\n  t['afii10023'] = 0x0401;\n  t['afii10024'] = 0x0416;\n  t['afii10025'] = 0x0417;\n  t['afii10026'] = 0x0418;\n  t['afii10027'] = 0x0419;\n  t['afii10028'] = 0x041A;\n  t['afii10029'] = 0x041B;\n  t['afii10030'] = 0x041C;\n  t['afii10031'] = 0x041D;\n  t['afii10032'] = 0x041E;\n  t['afii10033'] = 0x041F;\n  t['afii10034'] = 0x0420;\n  t['afii10035'] = 0x0421;\n  t['afii10036'] = 0x0422;\n  t['afii10037'] = 0x0423;\n  t['afii10038'] = 0x0424;\n  t['afii10039'] = 0x0425;\n  t['afii10040'] = 0x0426;\n  t['afii10041'] = 0x0427;\n  t['afii10042'] = 0x0428;\n  t['afii10043'] = 0x0429;\n  t['afii10044'] = 0x042A;\n  t['afii10045'] = 0x042B;\n  t['afii10046'] = 0x042C;\n  t['afii10047'] = 0x042D;\n  t['afii10048'] = 0x042E;\n  t['afii10049'] = 0x042F;\n  t['afii10050'] = 0x0490;\n  t['afii10051'] = 0x0402;\n  t['afii10052'] = 0x0403;\n  t['afii10053'] = 0x0404;\n  t['afii10054'] = 0x0405;\n  t['afii10055'] = 0x0406;\n  t['afii10056'] = 0x0407;\n  t['afii10057'] = 0x0408;\n  t['afii10058'] = 0x0409;\n  t['afii10059'] = 0x040A;\n  t['afii10060'] = 0x040B;\n  t['afii10061'] = 0x040C;\n  t['afii10062'] = 0x040E;\n  t['afii10063'] = 0xF6C4;\n  t['afii10064'] = 0xF6C5;\n  t['afii10065'] = 0x0430;\n  t['afii10066'] = 0x0431;\n  t['afii10067'] = 0x0432;\n  t['afii10068'] = 0x0433;\n  t['afii10069'] = 0x0434;\n  t['afii10070'] = 0x0435;\n  t['afii10071'] = 0x0451;\n  t['afii10072'] = 0x0436;\n  t['afii10073'] = 0x0437;\n  t['afii10074'] = 0x0438;\n  t['afii10075'] = 0x0439;\n  t['afii10076'] = 0x043A;\n  t['afii10077'] = 0x043B;\n  t['afii10078'] = 0x043C;\n  t['afii10079'] = 0x043D;\n  t['afii10080'] = 0x043E;\n  t['afii10081'] = 0x043F;\n  t['afii10082'] = 0x0440;\n  t['afii10083'] = 0x0441;\n  t['afii10084'] = 0x0442;\n  t['afii10085'] = 0x0443;\n  t['afii10086'] = 0x0444;\n  t['afii10087'] = 0x0445;\n  t['afii10088'] = 0x0446;\n  t['afii10089'] = 0x0447;\n  t['afii10090'] = 0x0448;\n  t['afii10091'] = 0x0449;\n  t['afii10092'] = 0x044A;\n  t['afii10093'] = 0x044B;\n  t['afii10094'] = 0x044C;\n  t['afii10095'] = 0x044D;\n  t['afii10096'] = 0x044E;\n  t['afii10097'] = 0x044F;\n  t['afii10098'] = 0x0491;\n  t['afii10099'] = 0x0452;\n  t['afii10100'] = 0x0453;\n  t['afii10101'] = 0x0454;\n  t['afii10102'] = 0x0455;\n  t['afii10103'] = 0x0456;\n  t['afii10104'] = 0x0457;\n  t['afii10105'] = 0x0458;\n  t['afii10106'] = 0x0459;\n  t['afii10107'] = 0x045A;\n  t['afii10108'] = 0x045B;\n  t['afii10109'] = 0x045C;\n  t['afii10110'] = 0x045E;\n  t['afii10145'] = 0x040F;\n  t['afii10146'] = 0x0462;\n  t['afii10147'] = 0x0472;\n  t['afii10148'] = 0x0474;\n  t['afii10192'] = 0xF6C6;\n  t['afii10193'] = 0x045F;\n  t['afii10194'] = 0x0463;\n  t['afii10195'] = 0x0473;\n  t['afii10196'] = 0x0475;\n  t['afii10831'] = 0xF6C7;\n  t['afii10832'] = 0xF6C8;\n  t['afii10846'] = 0x04D9;\n  t['afii299'] = 0x200E;\n  t['afii300'] = 0x200F;\n  t['afii301'] = 0x200D;\n  t['afii57381'] = 0x066A;\n  t['afii57388'] = 0x060C;\n  t['afii57392'] = 0x0660;\n  t['afii57393'] = 0x0661;\n  t['afii57394'] = 0x0662;\n  t['afii57395'] = 0x0663;\n  t['afii57396'] = 0x0664;\n  t['afii57397'] = 0x0665;\n  t['afii57398'] = 0x0666;\n  t['afii57399'] = 0x0667;\n  t['afii57400'] = 0x0668;\n  t['afii57401'] = 0x0669;\n  t['afii57403'] = 0x061B;\n  t['afii57407'] = 0x061F;\n  t['afii57409'] = 0x0621;\n  t['afii57410'] = 0x0622;\n  t['afii57411'] = 0x0623;\n  t['afii57412'] = 0x0624;\n  t['afii57413'] = 0x0625;\n  t['afii57414'] = 0x0626;\n  t['afii57415'] = 0x0627;\n  t['afii57416'] = 0x0628;\n  t['afii57417'] = 0x0629;\n  t['afii57418'] = 0x062A;\n  t['afii57419'] = 0x062B;\n  t['afii57420'] = 0x062C;\n  t['afii57421'] = 0x062D;\n  t['afii57422'] = 0x062E;\n  t['afii57423'] = 0x062F;\n  t['afii57424'] = 0x0630;\n  t['afii57425'] = 0x0631;\n  t['afii57426'] = 0x0632;\n  t['afii57427'] = 0x0633;\n  t['afii57428'] = 0x0634;\n  t['afii57429'] = 0x0635;\n  t['afii57430'] = 0x0636;\n  t['afii57431'] = 0x0637;\n  t['afii57432'] = 0x0638;\n  t['afii57433'] = 0x0639;\n  t['afii57434'] = 0x063A;\n  t['afii57440'] = 0x0640;\n  t['afii57441'] = 0x0641;\n  t['afii57442'] = 0x0642;\n  t['afii57443'] = 0x0643;\n  t['afii57444'] = 0x0644;\n  t['afii57445'] = 0x0645;\n  t['afii57446'] = 0x0646;\n  t['afii57448'] = 0x0648;\n  t['afii57449'] = 0x0649;\n  t['afii57450'] = 0x064A;\n  t['afii57451'] = 0x064B;\n  t['afii57452'] = 0x064C;\n  t['afii57453'] = 0x064D;\n  t['afii57454'] = 0x064E;\n  t['afii57455'] = 0x064F;\n  t['afii57456'] = 0x0650;\n  t['afii57457'] = 0x0651;\n  t['afii57458'] = 0x0652;\n  t['afii57470'] = 0x0647;\n  t['afii57505'] = 0x06A4;\n  t['afii57506'] = 0x067E;\n  t['afii57507'] = 0x0686;\n  t['afii57508'] = 0x0698;\n  t['afii57509'] = 0x06AF;\n  t['afii57511'] = 0x0679;\n  t['afii57512'] = 0x0688;\n  t['afii57513'] = 0x0691;\n  t['afii57514'] = 0x06BA;\n  t['afii57519'] = 0x06D2;\n  t['afii57534'] = 0x06D5;\n  t['afii57636'] = 0x20AA;\n  t['afii57645'] = 0x05BE;\n  t['afii57658'] = 0x05C3;\n  t['afii57664'] = 0x05D0;\n  t['afii57665'] = 0x05D1;\n  t['afii57666'] = 0x05D2;\n  t['afii57667'] = 0x05D3;\n  t['afii57668'] = 0x05D4;\n  t['afii57669'] = 0x05D5;\n  t['afii57670'] = 0x05D6;\n  t['afii57671'] = 0x05D7;\n  t['afii57672'] = 0x05D8;\n  t['afii57673'] = 0x05D9;\n  t['afii57674'] = 0x05DA;\n  t['afii57675'] = 0x05DB;\n  t['afii57676'] = 0x05DC;\n  t['afii57677'] = 0x05DD;\n  t['afii57678'] = 0x05DE;\n  t['afii57679'] = 0x05DF;\n  t['afii57680'] = 0x05E0;\n  t['afii57681'] = 0x05E1;\n  t['afii57682'] = 0x05E2;\n  t['afii57683'] = 0x05E3;\n  t['afii57684'] = 0x05E4;\n  t['afii57685'] = 0x05E5;\n  t['afii57686'] = 0x05E6;\n  t['afii57687'] = 0x05E7;\n  t['afii57688'] = 0x05E8;\n  t['afii57689'] = 0x05E9;\n  t['afii57690'] = 0x05EA;\n  t['afii57694'] = 0xFB2A;\n  t['afii57695'] = 0xFB2B;\n  t['afii57700'] = 0xFB4B;\n  t['afii57705'] = 0xFB1F;\n  t['afii57716'] = 0x05F0;\n  t['afii57717'] = 0x05F1;\n  t['afii57718'] = 0x05F2;\n  t['afii57723'] = 0xFB35;\n  t['afii57793'] = 0x05B4;\n  t['afii57794'] = 0x05B5;\n  t['afii57795'] = 0x05B6;\n  t['afii57796'] = 0x05BB;\n  t['afii57797'] = 0x05B8;\n  t['afii57798'] = 0x05B7;\n  t['afii57799'] = 0x05B0;\n  t['afii57800'] = 0x05B2;\n  t['afii57801'] = 0x05B1;\n  t['afii57802'] = 0x05B3;\n  t['afii57803'] = 0x05C2;\n  t['afii57804'] = 0x05C1;\n  t['afii57806'] = 0x05B9;\n  t['afii57807'] = 0x05BC;\n  t['afii57839'] = 0x05BD;\n  t['afii57841'] = 0x05BF;\n  t['afii57842'] = 0x05C0;\n  t['afii57929'] = 0x02BC;\n  t['afii61248'] = 0x2105;\n  t['afii61289'] = 0x2113;\n  t['afii61352'] = 0x2116;\n  t['afii61573'] = 0x202C;\n  t['afii61574'] = 0x202D;\n  t['afii61575'] = 0x202E;\n  t['afii61664'] = 0x200C;\n  t['afii63167'] = 0x066D;\n  t['afii64937'] = 0x02BD;\n  t['agrave'] = 0x00E0;\n  t['agujarati'] = 0x0A85;\n  t['agurmukhi'] = 0x0A05;\n  t['ahiragana'] = 0x3042;\n  t['ahookabove'] = 0x1EA3;\n  t['aibengali'] = 0x0990;\n  t['aibopomofo'] = 0x311E;\n  t['aideva'] = 0x0910;\n  t['aiecyrillic'] = 0x04D5;\n  t['aigujarati'] = 0x0A90;\n  t['aigurmukhi'] = 0x0A10;\n  t['aimatragurmukhi'] = 0x0A48;\n  t['ainarabic'] = 0x0639;\n  t['ainfinalarabic'] = 0xFECA;\n  t['aininitialarabic'] = 0xFECB;\n  t['ainmedialarabic'] = 0xFECC;\n  t['ainvertedbreve'] = 0x0203;\n  t['aivowelsignbengali'] = 0x09C8;\n  t['aivowelsigndeva'] = 0x0948;\n  t['aivowelsigngujarati'] = 0x0AC8;\n  t['akatakana'] = 0x30A2;\n  t['akatakanahalfwidth'] = 0xFF71;\n  t['akorean'] = 0x314F;\n  t['alef'] = 0x05D0;\n  t['alefarabic'] = 0x0627;\n  t['alefdageshhebrew'] = 0xFB30;\n  t['aleffinalarabic'] = 0xFE8E;\n  t['alefhamzaabovearabic'] = 0x0623;\n  t['alefhamzaabovefinalarabic'] = 0xFE84;\n  t['alefhamzabelowarabic'] = 0x0625;\n  t['alefhamzabelowfinalarabic'] = 0xFE88;\n  t['alefhebrew'] = 0x05D0;\n  t['aleflamedhebrew'] = 0xFB4F;\n  t['alefmaddaabovearabic'] = 0x0622;\n  t['alefmaddaabovefinalarabic'] = 0xFE82;\n  t['alefmaksuraarabic'] = 0x0649;\n  t['alefmaksurafinalarabic'] = 0xFEF0;\n  t['alefmaksurainitialarabic'] = 0xFEF3;\n  t['alefmaksuramedialarabic'] = 0xFEF4;\n  t['alefpatahhebrew'] = 0xFB2E;\n  t['alefqamatshebrew'] = 0xFB2F;\n  t['aleph'] = 0x2135;\n  t['allequal'] = 0x224C;\n  t['alpha'] = 0x03B1;\n  t['alphatonos'] = 0x03AC;\n  t['amacron'] = 0x0101;\n  t['amonospace'] = 0xFF41;\n  t['ampersand'] = 0x0026;\n  t['ampersandmonospace'] = 0xFF06;\n  t['ampersandsmall'] = 0xF726;\n  t['amsquare'] = 0x33C2;\n  t['anbopomofo'] = 0x3122;\n  t['angbopomofo'] = 0x3124;\n  t['angbracketleft'] = 0x3008; // Glyph is missing from Adobe's original list.\n  t['angbracketright'] = 0x3009; // Glyph is missing from Adobe's original list.\n  t['angkhankhuthai'] = 0x0E5A;\n  t['angle'] = 0x2220;\n  t['anglebracketleft'] = 0x3008;\n  t['anglebracketleftvertical'] = 0xFE3F;\n  t['anglebracketright'] = 0x3009;\n  t['anglebracketrightvertical'] = 0xFE40;\n  t['angleleft'] = 0x2329;\n  t['angleright'] = 0x232A;\n  t['angstrom'] = 0x212B;\n  t['anoteleia'] = 0x0387;\n  t['anudattadeva'] = 0x0952;\n  t['anusvarabengali'] = 0x0982;\n  t['anusvaradeva'] = 0x0902;\n  t['anusvaragujarati'] = 0x0A82;\n  t['aogonek'] = 0x0105;\n  t['apaatosquare'] = 0x3300;\n  t['aparen'] = 0x249C;\n  t['apostrophearmenian'] = 0x055A;\n  t['apostrophemod'] = 0x02BC;\n  t['apple'] = 0xF8FF;\n  t['approaches'] = 0x2250;\n  t['approxequal'] = 0x2248;\n  t['approxequalorimage'] = 0x2252;\n  t['approximatelyequal'] = 0x2245;\n  t['araeaekorean'] = 0x318E;\n  t['araeakorean'] = 0x318D;\n  t['arc'] = 0x2312;\n  t['arighthalfring'] = 0x1E9A;\n  t['aring'] = 0x00E5;\n  t['aringacute'] = 0x01FB;\n  t['aringbelow'] = 0x1E01;\n  t['arrowboth'] = 0x2194;\n  t['arrowdashdown'] = 0x21E3;\n  t['arrowdashleft'] = 0x21E0;\n  t['arrowdashright'] = 0x21E2;\n  t['arrowdashup'] = 0x21E1;\n  t['arrowdblboth'] = 0x21D4;\n  t['arrowdbldown'] = 0x21D3;\n  t['arrowdblleft'] = 0x21D0;\n  t['arrowdblright'] = 0x21D2;\n  t['arrowdblup'] = 0x21D1;\n  t['arrowdown'] = 0x2193;\n  t['arrowdownleft'] = 0x2199;\n  t['arrowdownright'] = 0x2198;\n  t['arrowdownwhite'] = 0x21E9;\n  t['arrowheaddownmod'] = 0x02C5;\n  t['arrowheadleftmod'] = 0x02C2;\n  t['arrowheadrightmod'] = 0x02C3;\n  t['arrowheadupmod'] = 0x02C4;\n  t['arrowhorizex'] = 0xF8E7;\n  t['arrowleft'] = 0x2190;\n  t['arrowleftdbl'] = 0x21D0;\n  t['arrowleftdblstroke'] = 0x21CD;\n  t['arrowleftoverright'] = 0x21C6;\n  t['arrowleftwhite'] = 0x21E6;\n  t['arrowright'] = 0x2192;\n  t['arrowrightdblstroke'] = 0x21CF;\n  t['arrowrightheavy'] = 0x279E;\n  t['arrowrightoverleft'] = 0x21C4;\n  t['arrowrightwhite'] = 0x21E8;\n  t['arrowtableft'] = 0x21E4;\n  t['arrowtabright'] = 0x21E5;\n  t['arrowup'] = 0x2191;\n  t['arrowupdn'] = 0x2195;\n  t['arrowupdnbse'] = 0x21A8;\n  t['arrowupdownbase'] = 0x21A8;\n  t['arrowupleft'] = 0x2196;\n  t['arrowupleftofdown'] = 0x21C5;\n  t['arrowupright'] = 0x2197;\n  t['arrowupwhite'] = 0x21E7;\n  t['arrowvertex'] = 0xF8E6;\n  t['asciicircum'] = 0x005E;\n  t['asciicircummonospace'] = 0xFF3E;\n  t['asciitilde'] = 0x007E;\n  t['asciitildemonospace'] = 0xFF5E;\n  t['ascript'] = 0x0251;\n  t['ascriptturned'] = 0x0252;\n  t['asmallhiragana'] = 0x3041;\n  t['asmallkatakana'] = 0x30A1;\n  t['asmallkatakanahalfwidth'] = 0xFF67;\n  t['asterisk'] = 0x002A;\n  t['asteriskaltonearabic'] = 0x066D;\n  t['asteriskarabic'] = 0x066D;\n  t['asteriskmath'] = 0x2217;\n  t['asteriskmonospace'] = 0xFF0A;\n  t['asterisksmall'] = 0xFE61;\n  t['asterism'] = 0x2042;\n  t['asuperior'] = 0xF6E9;\n  t['asymptoticallyequal'] = 0x2243;\n  t['at'] = 0x0040;\n  t['atilde'] = 0x00E3;\n  t['atmonospace'] = 0xFF20;\n  t['atsmall'] = 0xFE6B;\n  t['aturned'] = 0x0250;\n  t['aubengali'] = 0x0994;\n  t['aubopomofo'] = 0x3120;\n  t['audeva'] = 0x0914;\n  t['augujarati'] = 0x0A94;\n  t['augurmukhi'] = 0x0A14;\n  t['aulengthmarkbengali'] = 0x09D7;\n  t['aumatragurmukhi'] = 0x0A4C;\n  t['auvowelsignbengali'] = 0x09CC;\n  t['auvowelsigndeva'] = 0x094C;\n  t['auvowelsigngujarati'] = 0x0ACC;\n  t['avagrahadeva'] = 0x093D;\n  t['aybarmenian'] = 0x0561;\n  t['ayin'] = 0x05E2;\n  t['ayinaltonehebrew'] = 0xFB20;\n  t['ayinhebrew'] = 0x05E2;\n  t['b'] = 0x0062;\n  t['babengali'] = 0x09AC;\n  t['backslash'] = 0x005C;\n  t['backslashmonospace'] = 0xFF3C;\n  t['badeva'] = 0x092C;\n  t['bagujarati'] = 0x0AAC;\n  t['bagurmukhi'] = 0x0A2C;\n  t['bahiragana'] = 0x3070;\n  t['bahtthai'] = 0x0E3F;\n  t['bakatakana'] = 0x30D0;\n  t['bar'] = 0x007C;\n  t['barmonospace'] = 0xFF5C;\n  t['bbopomofo'] = 0x3105;\n  t['bcircle'] = 0x24D1;\n  t['bdotaccent'] = 0x1E03;\n  t['bdotbelow'] = 0x1E05;\n  t['beamedsixteenthnotes'] = 0x266C;\n  t['because'] = 0x2235;\n  t['becyrillic'] = 0x0431;\n  t['beharabic'] = 0x0628;\n  t['behfinalarabic'] = 0xFE90;\n  t['behinitialarabic'] = 0xFE91;\n  t['behiragana'] = 0x3079;\n  t['behmedialarabic'] = 0xFE92;\n  t['behmeeminitialarabic'] = 0xFC9F;\n  t['behmeemisolatedarabic'] = 0xFC08;\n  t['behnoonfinalarabic'] = 0xFC6D;\n  t['bekatakana'] = 0x30D9;\n  t['benarmenian'] = 0x0562;\n  t['bet'] = 0x05D1;\n  t['beta'] = 0x03B2;\n  t['betasymbolgreek'] = 0x03D0;\n  t['betdagesh'] = 0xFB31;\n  t['betdageshhebrew'] = 0xFB31;\n  t['bethebrew'] = 0x05D1;\n  t['betrafehebrew'] = 0xFB4C;\n  t['bhabengali'] = 0x09AD;\n  t['bhadeva'] = 0x092D;\n  t['bhagujarati'] = 0x0AAD;\n  t['bhagurmukhi'] = 0x0A2D;\n  t['bhook'] = 0x0253;\n  t['bihiragana'] = 0x3073;\n  t['bikatakana'] = 0x30D3;\n  t['bilabialclick'] = 0x0298;\n  t['bindigurmukhi'] = 0x0A02;\n  t['birusquare'] = 0x3331;\n  t['blackcircle'] = 0x25CF;\n  t['blackdiamond'] = 0x25C6;\n  t['blackdownpointingtriangle'] = 0x25BC;\n  t['blackleftpointingpointer'] = 0x25C4;\n  t['blackleftpointingtriangle'] = 0x25C0;\n  t['blacklenticularbracketleft'] = 0x3010;\n  t['blacklenticularbracketleftvertical'] = 0xFE3B;\n  t['blacklenticularbracketright'] = 0x3011;\n  t['blacklenticularbracketrightvertical'] = 0xFE3C;\n  t['blacklowerlefttriangle'] = 0x25E3;\n  t['blacklowerrighttriangle'] = 0x25E2;\n  t['blackrectangle'] = 0x25AC;\n  t['blackrightpointingpointer'] = 0x25BA;\n  t['blackrightpointingtriangle'] = 0x25B6;\n  t['blacksmallsquare'] = 0x25AA;\n  t['blacksmilingface'] = 0x263B;\n  t['blacksquare'] = 0x25A0;\n  t['blackstar'] = 0x2605;\n  t['blackupperlefttriangle'] = 0x25E4;\n  t['blackupperrighttriangle'] = 0x25E5;\n  t['blackuppointingsmalltriangle'] = 0x25B4;\n  t['blackuppointingtriangle'] = 0x25B2;\n  t['blank'] = 0x2423;\n  t['blinebelow'] = 0x1E07;\n  t['block'] = 0x2588;\n  t['bmonospace'] = 0xFF42;\n  t['bobaimaithai'] = 0x0E1A;\n  t['bohiragana'] = 0x307C;\n  t['bokatakana'] = 0x30DC;\n  t['bparen'] = 0x249D;\n  t['bqsquare'] = 0x33C3;\n  t['braceex'] = 0xF8F4;\n  t['braceleft'] = 0x007B;\n  t['braceleftbt'] = 0xF8F3;\n  t['braceleftmid'] = 0xF8F2;\n  t['braceleftmonospace'] = 0xFF5B;\n  t['braceleftsmall'] = 0xFE5B;\n  t['bracelefttp'] = 0xF8F1;\n  t['braceleftvertical'] = 0xFE37;\n  t['braceright'] = 0x007D;\n  t['bracerightbt'] = 0xF8FE;\n  t['bracerightmid'] = 0xF8FD;\n  t['bracerightmonospace'] = 0xFF5D;\n  t['bracerightsmall'] = 0xFE5C;\n  t['bracerighttp'] = 0xF8FC;\n  t['bracerightvertical'] = 0xFE38;\n  t['bracketleft'] = 0x005B;\n  t['bracketleftbt'] = 0xF8F0;\n  t['bracketleftex'] = 0xF8EF;\n  t['bracketleftmonospace'] = 0xFF3B;\n  t['bracketlefttp'] = 0xF8EE;\n  t['bracketright'] = 0x005D;\n  t['bracketrightbt'] = 0xF8FB;\n  t['bracketrightex'] = 0xF8FA;\n  t['bracketrightmonospace'] = 0xFF3D;\n  t['bracketrighttp'] = 0xF8F9;\n  t['breve'] = 0x02D8;\n  t['brevebelowcmb'] = 0x032E;\n  t['brevecmb'] = 0x0306;\n  t['breveinvertedbelowcmb'] = 0x032F;\n  t['breveinvertedcmb'] = 0x0311;\n  t['breveinverteddoublecmb'] = 0x0361;\n  t['bridgebelowcmb'] = 0x032A;\n  t['bridgeinvertedbelowcmb'] = 0x033A;\n  t['brokenbar'] = 0x00A6;\n  t['bstroke'] = 0x0180;\n  t['bsuperior'] = 0xF6EA;\n  t['btopbar'] = 0x0183;\n  t['buhiragana'] = 0x3076;\n  t['bukatakana'] = 0x30D6;\n  t['bullet'] = 0x2022;\n  t['bulletinverse'] = 0x25D8;\n  t['bulletoperator'] = 0x2219;\n  t['bullseye'] = 0x25CE;\n  t['c'] = 0x0063;\n  t['caarmenian'] = 0x056E;\n  t['cabengali'] = 0x099A;\n  t['cacute'] = 0x0107;\n  t['cadeva'] = 0x091A;\n  t['cagujarati'] = 0x0A9A;\n  t['cagurmukhi'] = 0x0A1A;\n  t['calsquare'] = 0x3388;\n  t['candrabindubengali'] = 0x0981;\n  t['candrabinducmb'] = 0x0310;\n  t['candrabindudeva'] = 0x0901;\n  t['candrabindugujarati'] = 0x0A81;\n  t['capslock'] = 0x21EA;\n  t['careof'] = 0x2105;\n  t['caron'] = 0x02C7;\n  t['caronbelowcmb'] = 0x032C;\n  t['caroncmb'] = 0x030C;\n  t['carriagereturn'] = 0x21B5;\n  t['cbopomofo'] = 0x3118;\n  t['ccaron'] = 0x010D;\n  t['ccedilla'] = 0x00E7;\n  t['ccedillaacute'] = 0x1E09;\n  t['ccircle'] = 0x24D2;\n  t['ccircumflex'] = 0x0109;\n  t['ccurl'] = 0x0255;\n  t['cdot'] = 0x010B;\n  t['cdotaccent'] = 0x010B;\n  t['cdsquare'] = 0x33C5;\n  t['cedilla'] = 0x00B8;\n  t['cedillacmb'] = 0x0327;\n  t['cent'] = 0x00A2;\n  t['centigrade'] = 0x2103;\n  t['centinferior'] = 0xF6DF;\n  t['centmonospace'] = 0xFFE0;\n  t['centoldstyle'] = 0xF7A2;\n  t['centsuperior'] = 0xF6E0;\n  t['chaarmenian'] = 0x0579;\n  t['chabengali'] = 0x099B;\n  t['chadeva'] = 0x091B;\n  t['chagujarati'] = 0x0A9B;\n  t['chagurmukhi'] = 0x0A1B;\n  t['chbopomofo'] = 0x3114;\n  t['cheabkhasiancyrillic'] = 0x04BD;\n  t['checkmark'] = 0x2713;\n  t['checyrillic'] = 0x0447;\n  t['chedescenderabkhasiancyrillic'] = 0x04BF;\n  t['chedescendercyrillic'] = 0x04B7;\n  t['chedieresiscyrillic'] = 0x04F5;\n  t['cheharmenian'] = 0x0573;\n  t['chekhakassiancyrillic'] = 0x04CC;\n  t['cheverticalstrokecyrillic'] = 0x04B9;\n  t['chi'] = 0x03C7;\n  t['chieuchacirclekorean'] = 0x3277;\n  t['chieuchaparenkorean'] = 0x3217;\n  t['chieuchcirclekorean'] = 0x3269;\n  t['chieuchkorean'] = 0x314A;\n  t['chieuchparenkorean'] = 0x3209;\n  t['chochangthai'] = 0x0E0A;\n  t['chochanthai'] = 0x0E08;\n  t['chochingthai'] = 0x0E09;\n  t['chochoethai'] = 0x0E0C;\n  t['chook'] = 0x0188;\n  t['cieucacirclekorean'] = 0x3276;\n  t['cieucaparenkorean'] = 0x3216;\n  t['cieuccirclekorean'] = 0x3268;\n  t['cieuckorean'] = 0x3148;\n  t['cieucparenkorean'] = 0x3208;\n  t['cieucuparenkorean'] = 0x321C;\n  t['circle'] = 0x25CB;\n  t['circlecopyrt'] = 0x00A9; // Glyph is missing from Adobe's original list.\n  t['circlemultiply'] = 0x2297;\n  t['circleot'] = 0x2299;\n  t['circleplus'] = 0x2295;\n  t['circlepostalmark'] = 0x3036;\n  t['circlewithlefthalfblack'] = 0x25D0;\n  t['circlewithrighthalfblack'] = 0x25D1;\n  t['circumflex'] = 0x02C6;\n  t['circumflexbelowcmb'] = 0x032D;\n  t['circumflexcmb'] = 0x0302;\n  t['clear'] = 0x2327;\n  t['clickalveolar'] = 0x01C2;\n  t['clickdental'] = 0x01C0;\n  t['clicklateral'] = 0x01C1;\n  t['clickretroflex'] = 0x01C3;\n  t['club'] = 0x2663;\n  t['clubsuitblack'] = 0x2663;\n  t['clubsuitwhite'] = 0x2667;\n  t['cmcubedsquare'] = 0x33A4;\n  t['cmonospace'] = 0xFF43;\n  t['cmsquaredsquare'] = 0x33A0;\n  t['coarmenian'] = 0x0581;\n  t['colon'] = 0x003A;\n  t['colonmonetary'] = 0x20A1;\n  t['colonmonospace'] = 0xFF1A;\n  t['colonsign'] = 0x20A1;\n  t['colonsmall'] = 0xFE55;\n  t['colontriangularhalfmod'] = 0x02D1;\n  t['colontriangularmod'] = 0x02D0;\n  t['comma'] = 0x002C;\n  t['commaabovecmb'] = 0x0313;\n  t['commaaboverightcmb'] = 0x0315;\n  t['commaaccent'] = 0xF6C3;\n  t['commaarabic'] = 0x060C;\n  t['commaarmenian'] = 0x055D;\n  t['commainferior'] = 0xF6E1;\n  t['commamonospace'] = 0xFF0C;\n  t['commareversedabovecmb'] = 0x0314;\n  t['commareversedmod'] = 0x02BD;\n  t['commasmall'] = 0xFE50;\n  t['commasuperior'] = 0xF6E2;\n  t['commaturnedabovecmb'] = 0x0312;\n  t['commaturnedmod'] = 0x02BB;\n  t['compass'] = 0x263C;\n  t['congruent'] = 0x2245;\n  t['contourintegral'] = 0x222E;\n  t['control'] = 0x2303;\n  t['controlACK'] = 0x0006;\n  t['controlBEL'] = 0x0007;\n  t['controlBS'] = 0x0008;\n  t['controlCAN'] = 0x0018;\n  t['controlCR'] = 0x000D;\n  t['controlDC1'] = 0x0011;\n  t['controlDC2'] = 0x0012;\n  t['controlDC3'] = 0x0013;\n  t['controlDC4'] = 0x0014;\n  t['controlDEL'] = 0x007F;\n  t['controlDLE'] = 0x0010;\n  t['controlEM'] = 0x0019;\n  t['controlENQ'] = 0x0005;\n  t['controlEOT'] = 0x0004;\n  t['controlESC'] = 0x001B;\n  t['controlETB'] = 0x0017;\n  t['controlETX'] = 0x0003;\n  t['controlFF'] = 0x000C;\n  t['controlFS'] = 0x001C;\n  t['controlGS'] = 0x001D;\n  t['controlHT'] = 0x0009;\n  t['controlLF'] = 0x000A;\n  t['controlNAK'] = 0x0015;\n  t['controlNULL'] = 0x0000; // Glyph is missing from Adobe's original list.\n  t['controlRS'] = 0x001E;\n  t['controlSI'] = 0x000F;\n  t['controlSO'] = 0x000E;\n  t['controlSOT'] = 0x0002;\n  t['controlSTX'] = 0x0001;\n  t['controlSUB'] = 0x001A;\n  t['controlSYN'] = 0x0016;\n  t['controlUS'] = 0x001F;\n  t['controlVT'] = 0x000B;\n  t['copyright'] = 0x00A9;\n  t['copyrightsans'] = 0xF8E9;\n  t['copyrightserif'] = 0xF6D9;\n  t['cornerbracketleft'] = 0x300C;\n  t['cornerbracketlefthalfwidth'] = 0xFF62;\n  t['cornerbracketleftvertical'] = 0xFE41;\n  t['cornerbracketright'] = 0x300D;\n  t['cornerbracketrighthalfwidth'] = 0xFF63;\n  t['cornerbracketrightvertical'] = 0xFE42;\n  t['corporationsquare'] = 0x337F;\n  t['cosquare'] = 0x33C7;\n  t['coverkgsquare'] = 0x33C6;\n  t['cparen'] = 0x249E;\n  t['cruzeiro'] = 0x20A2;\n  t['cstretched'] = 0x0297;\n  t['curlyand'] = 0x22CF;\n  t['curlyor'] = 0x22CE;\n  t['currency'] = 0x00A4;\n  t['cyrBreve'] = 0xF6D1;\n  t['cyrFlex'] = 0xF6D2;\n  t['cyrbreve'] = 0xF6D4;\n  t['cyrflex'] = 0xF6D5;\n  t['d'] = 0x0064;\n  t['daarmenian'] = 0x0564;\n  t['dabengali'] = 0x09A6;\n  t['dadarabic'] = 0x0636;\n  t['dadeva'] = 0x0926;\n  t['dadfinalarabic'] = 0xFEBE;\n  t['dadinitialarabic'] = 0xFEBF;\n  t['dadmedialarabic'] = 0xFEC0;\n  t['dagesh'] = 0x05BC;\n  t['dageshhebrew'] = 0x05BC;\n  t['dagger'] = 0x2020;\n  t['daggerdbl'] = 0x2021;\n  t['dagujarati'] = 0x0AA6;\n  t['dagurmukhi'] = 0x0A26;\n  t['dahiragana'] = 0x3060;\n  t['dakatakana'] = 0x30C0;\n  t['dalarabic'] = 0x062F;\n  t['dalet'] = 0x05D3;\n  t['daletdagesh'] = 0xFB33;\n  t['daletdageshhebrew'] = 0xFB33;\n  t['dalethebrew'] = 0x05D3;\n  t['dalfinalarabic'] = 0xFEAA;\n  t['dammaarabic'] = 0x064F;\n  t['dammalowarabic'] = 0x064F;\n  t['dammatanaltonearabic'] = 0x064C;\n  t['dammatanarabic'] = 0x064C;\n  t['danda'] = 0x0964;\n  t['dargahebrew'] = 0x05A7;\n  t['dargalefthebrew'] = 0x05A7;\n  t['dasiapneumatacyrilliccmb'] = 0x0485;\n  t['dblGrave'] = 0xF6D3;\n  t['dblanglebracketleft'] = 0x300A;\n  t['dblanglebracketleftvertical'] = 0xFE3D;\n  t['dblanglebracketright'] = 0x300B;\n  t['dblanglebracketrightvertical'] = 0xFE3E;\n  t['dblarchinvertedbelowcmb'] = 0x032B;\n  t['dblarrowleft'] = 0x21D4;\n  t['dblarrowright'] = 0x21D2;\n  t['dbldanda'] = 0x0965;\n  t['dblgrave'] = 0xF6D6;\n  t['dblgravecmb'] = 0x030F;\n  t['dblintegral'] = 0x222C;\n  t['dbllowline'] = 0x2017;\n  t['dbllowlinecmb'] = 0x0333;\n  t['dbloverlinecmb'] = 0x033F;\n  t['dblprimemod'] = 0x02BA;\n  t['dblverticalbar'] = 0x2016;\n  t['dblverticallineabovecmb'] = 0x030E;\n  t['dbopomofo'] = 0x3109;\n  t['dbsquare'] = 0x33C8;\n  t['dcaron'] = 0x010F;\n  t['dcedilla'] = 0x1E11;\n  t['dcircle'] = 0x24D3;\n  t['dcircumflexbelow'] = 0x1E13;\n  t['dcroat'] = 0x0111;\n  t['ddabengali'] = 0x09A1;\n  t['ddadeva'] = 0x0921;\n  t['ddagujarati'] = 0x0AA1;\n  t['ddagurmukhi'] = 0x0A21;\n  t['ddalarabic'] = 0x0688;\n  t['ddalfinalarabic'] = 0xFB89;\n  t['dddhadeva'] = 0x095C;\n  t['ddhabengali'] = 0x09A2;\n  t['ddhadeva'] = 0x0922;\n  t['ddhagujarati'] = 0x0AA2;\n  t['ddhagurmukhi'] = 0x0A22;\n  t['ddotaccent'] = 0x1E0B;\n  t['ddotbelow'] = 0x1E0D;\n  t['decimalseparatorarabic'] = 0x066B;\n  t['decimalseparatorpersian'] = 0x066B;\n  t['decyrillic'] = 0x0434;\n  t['degree'] = 0x00B0;\n  t['dehihebrew'] = 0x05AD;\n  t['dehiragana'] = 0x3067;\n  t['deicoptic'] = 0x03EF;\n  t['dekatakana'] = 0x30C7;\n  t['deleteleft'] = 0x232B;\n  t['deleteright'] = 0x2326;\n  t['delta'] = 0x03B4;\n  t['deltaturned'] = 0x018D;\n  t['denominatorminusonenumeratorbengali'] = 0x09F8;\n  t['dezh'] = 0x02A4;\n  t['dhabengali'] = 0x09A7;\n  t['dhadeva'] = 0x0927;\n  t['dhagujarati'] = 0x0AA7;\n  t['dhagurmukhi'] = 0x0A27;\n  t['dhook'] = 0x0257;\n  t['dialytikatonos'] = 0x0385;\n  t['dialytikatonoscmb'] = 0x0344;\n  t['diamond'] = 0x2666;\n  t['diamondsuitwhite'] = 0x2662;\n  t['dieresis'] = 0x00A8;\n  t['dieresisacute'] = 0xF6D7;\n  t['dieresisbelowcmb'] = 0x0324;\n  t['dieresiscmb'] = 0x0308;\n  t['dieresisgrave'] = 0xF6D8;\n  t['dieresistonos'] = 0x0385;\n  t['dihiragana'] = 0x3062;\n  t['dikatakana'] = 0x30C2;\n  t['dittomark'] = 0x3003;\n  t['divide'] = 0x00F7;\n  t['divides'] = 0x2223;\n  t['divisionslash'] = 0x2215;\n  t['djecyrillic'] = 0x0452;\n  t['dkshade'] = 0x2593;\n  t['dlinebelow'] = 0x1E0F;\n  t['dlsquare'] = 0x3397;\n  t['dmacron'] = 0x0111;\n  t['dmonospace'] = 0xFF44;\n  t['dnblock'] = 0x2584;\n  t['dochadathai'] = 0x0E0E;\n  t['dodekthai'] = 0x0E14;\n  t['dohiragana'] = 0x3069;\n  t['dokatakana'] = 0x30C9;\n  t['dollar'] = 0x0024;\n  t['dollarinferior'] = 0xF6E3;\n  t['dollarmonospace'] = 0xFF04;\n  t['dollaroldstyle'] = 0xF724;\n  t['dollarsmall'] = 0xFE69;\n  t['dollarsuperior'] = 0xF6E4;\n  t['dong'] = 0x20AB;\n  t['dorusquare'] = 0x3326;\n  t['dotaccent'] = 0x02D9;\n  t['dotaccentcmb'] = 0x0307;\n  t['dotbelowcmb'] = 0x0323;\n  t['dotbelowcomb'] = 0x0323;\n  t['dotkatakana'] = 0x30FB;\n  t['dotlessi'] = 0x0131;\n  t['dotlessj'] = 0xF6BE;\n  t['dotlessjstrokehook'] = 0x0284;\n  t['dotmath'] = 0x22C5;\n  t['dottedcircle'] = 0x25CC;\n  t['doubleyodpatah'] = 0xFB1F;\n  t['doubleyodpatahhebrew'] = 0xFB1F;\n  t['downtackbelowcmb'] = 0x031E;\n  t['downtackmod'] = 0x02D5;\n  t['dparen'] = 0x249F;\n  t['dsuperior'] = 0xF6EB;\n  t['dtail'] = 0x0256;\n  t['dtopbar'] = 0x018C;\n  t['duhiragana'] = 0x3065;\n  t['dukatakana'] = 0x30C5;\n  t['dz'] = 0x01F3;\n  t['dzaltone'] = 0x02A3;\n  t['dzcaron'] = 0x01C6;\n  t['dzcurl'] = 0x02A5;\n  t['dzeabkhasiancyrillic'] = 0x04E1;\n  t['dzecyrillic'] = 0x0455;\n  t['dzhecyrillic'] = 0x045F;\n  t['e'] = 0x0065;\n  t['eacute'] = 0x00E9;\n  t['earth'] = 0x2641;\n  t['ebengali'] = 0x098F;\n  t['ebopomofo'] = 0x311C;\n  t['ebreve'] = 0x0115;\n  t['ecandradeva'] = 0x090D;\n  t['ecandragujarati'] = 0x0A8D;\n  t['ecandravowelsigndeva'] = 0x0945;\n  t['ecandravowelsigngujarati'] = 0x0AC5;\n  t['ecaron'] = 0x011B;\n  t['ecedillabreve'] = 0x1E1D;\n  t['echarmenian'] = 0x0565;\n  t['echyiwnarmenian'] = 0x0587;\n  t['ecircle'] = 0x24D4;\n  t['ecircumflex'] = 0x00EA;\n  t['ecircumflexacute'] = 0x1EBF;\n  t['ecircumflexbelow'] = 0x1E19;\n  t['ecircumflexdotbelow'] = 0x1EC7;\n  t['ecircumflexgrave'] = 0x1EC1;\n  t['ecircumflexhookabove'] = 0x1EC3;\n  t['ecircumflextilde'] = 0x1EC5;\n  t['ecyrillic'] = 0x0454;\n  t['edblgrave'] = 0x0205;\n  t['edeva'] = 0x090F;\n  t['edieresis'] = 0x00EB;\n  t['edot'] = 0x0117;\n  t['edotaccent'] = 0x0117;\n  t['edotbelow'] = 0x1EB9;\n  t['eegurmukhi'] = 0x0A0F;\n  t['eematragurmukhi'] = 0x0A47;\n  t['efcyrillic'] = 0x0444;\n  t['egrave'] = 0x00E8;\n  t['egujarati'] = 0x0A8F;\n  t['eharmenian'] = 0x0567;\n  t['ehbopomofo'] = 0x311D;\n  t['ehiragana'] = 0x3048;\n  t['ehookabove'] = 0x1EBB;\n  t['eibopomofo'] = 0x311F;\n  t['eight'] = 0x0038;\n  t['eightarabic'] = 0x0668;\n  t['eightbengali'] = 0x09EE;\n  t['eightcircle'] = 0x2467;\n  t['eightcircleinversesansserif'] = 0x2791;\n  t['eightdeva'] = 0x096E;\n  t['eighteencircle'] = 0x2471;\n  t['eighteenparen'] = 0x2485;\n  t['eighteenperiod'] = 0x2499;\n  t['eightgujarati'] = 0x0AEE;\n  t['eightgurmukhi'] = 0x0A6E;\n  t['eighthackarabic'] = 0x0668;\n  t['eighthangzhou'] = 0x3028;\n  t['eighthnotebeamed'] = 0x266B;\n  t['eightideographicparen'] = 0x3227;\n  t['eightinferior'] = 0x2088;\n  t['eightmonospace'] = 0xFF18;\n  t['eightoldstyle'] = 0xF738;\n  t['eightparen'] = 0x247B;\n  t['eightperiod'] = 0x248F;\n  t['eightpersian'] = 0x06F8;\n  t['eightroman'] = 0x2177;\n  t['eightsuperior'] = 0x2078;\n  t['eightthai'] = 0x0E58;\n  t['einvertedbreve'] = 0x0207;\n  t['eiotifiedcyrillic'] = 0x0465;\n  t['ekatakana'] = 0x30A8;\n  t['ekatakanahalfwidth'] = 0xFF74;\n  t['ekonkargurmukhi'] = 0x0A74;\n  t['ekorean'] = 0x3154;\n  t['elcyrillic'] = 0x043B;\n  t['element'] = 0x2208;\n  t['elevencircle'] = 0x246A;\n  t['elevenparen'] = 0x247E;\n  t['elevenperiod'] = 0x2492;\n  t['elevenroman'] = 0x217A;\n  t['ellipsis'] = 0x2026;\n  t['ellipsisvertical'] = 0x22EE;\n  t['emacron'] = 0x0113;\n  t['emacronacute'] = 0x1E17;\n  t['emacrongrave'] = 0x1E15;\n  t['emcyrillic'] = 0x043C;\n  t['emdash'] = 0x2014;\n  t['emdashvertical'] = 0xFE31;\n  t['emonospace'] = 0xFF45;\n  t['emphasismarkarmenian'] = 0x055B;\n  t['emptyset'] = 0x2205;\n  t['enbopomofo'] = 0x3123;\n  t['encyrillic'] = 0x043D;\n  t['endash'] = 0x2013;\n  t['endashvertical'] = 0xFE32;\n  t['endescendercyrillic'] = 0x04A3;\n  t['eng'] = 0x014B;\n  t['engbopomofo'] = 0x3125;\n  t['enghecyrillic'] = 0x04A5;\n  t['enhookcyrillic'] = 0x04C8;\n  t['enspace'] = 0x2002;\n  t['eogonek'] = 0x0119;\n  t['eokorean'] = 0x3153;\n  t['eopen'] = 0x025B;\n  t['eopenclosed'] = 0x029A;\n  t['eopenreversed'] = 0x025C;\n  t['eopenreversedclosed'] = 0x025E;\n  t['eopenreversedhook'] = 0x025D;\n  t['eparen'] = 0x24A0;\n  t['epsilon'] = 0x03B5;\n  t['epsilontonos'] = 0x03AD;\n  t['equal'] = 0x003D;\n  t['equalmonospace'] = 0xFF1D;\n  t['equalsmall'] = 0xFE66;\n  t['equalsuperior'] = 0x207C;\n  t['equivalence'] = 0x2261;\n  t['erbopomofo'] = 0x3126;\n  t['ercyrillic'] = 0x0440;\n  t['ereversed'] = 0x0258;\n  t['ereversedcyrillic'] = 0x044D;\n  t['escyrillic'] = 0x0441;\n  t['esdescendercyrillic'] = 0x04AB;\n  t['esh'] = 0x0283;\n  t['eshcurl'] = 0x0286;\n  t['eshortdeva'] = 0x090E;\n  t['eshortvowelsigndeva'] = 0x0946;\n  t['eshreversedloop'] = 0x01AA;\n  t['eshsquatreversed'] = 0x0285;\n  t['esmallhiragana'] = 0x3047;\n  t['esmallkatakana'] = 0x30A7;\n  t['esmallkatakanahalfwidth'] = 0xFF6A;\n  t['estimated'] = 0x212E;\n  t['esuperior'] = 0xF6EC;\n  t['eta'] = 0x03B7;\n  t['etarmenian'] = 0x0568;\n  t['etatonos'] = 0x03AE;\n  t['eth'] = 0x00F0;\n  t['etilde'] = 0x1EBD;\n  t['etildebelow'] = 0x1E1B;\n  t['etnahtafoukhhebrew'] = 0x0591;\n  t['etnahtafoukhlefthebrew'] = 0x0591;\n  t['etnahtahebrew'] = 0x0591;\n  t['etnahtalefthebrew'] = 0x0591;\n  t['eturned'] = 0x01DD;\n  t['eukorean'] = 0x3161;\n  t['euro'] = 0x20AC;\n  t['evowelsignbengali'] = 0x09C7;\n  t['evowelsigndeva'] = 0x0947;\n  t['evowelsigngujarati'] = 0x0AC7;\n  t['exclam'] = 0x0021;\n  t['exclamarmenian'] = 0x055C;\n  t['exclamdbl'] = 0x203C;\n  t['exclamdown'] = 0x00A1;\n  t['exclamdownsmall'] = 0xF7A1;\n  t['exclammonospace'] = 0xFF01;\n  t['exclamsmall'] = 0xF721;\n  t['existential'] = 0x2203;\n  t['ezh'] = 0x0292;\n  t['ezhcaron'] = 0x01EF;\n  t['ezhcurl'] = 0x0293;\n  t['ezhreversed'] = 0x01B9;\n  t['ezhtail'] = 0x01BA;\n  t['f'] = 0x0066;\n  t['fadeva'] = 0x095E;\n  t['fagurmukhi'] = 0x0A5E;\n  t['fahrenheit'] = 0x2109;\n  t['fathaarabic'] = 0x064E;\n  t['fathalowarabic'] = 0x064E;\n  t['fathatanarabic'] = 0x064B;\n  t['fbopomofo'] = 0x3108;\n  t['fcircle'] = 0x24D5;\n  t['fdotaccent'] = 0x1E1F;\n  t['feharabic'] = 0x0641;\n  t['feharmenian'] = 0x0586;\n  t['fehfinalarabic'] = 0xFED2;\n  t['fehinitialarabic'] = 0xFED3;\n  t['fehmedialarabic'] = 0xFED4;\n  t['feicoptic'] = 0x03E5;\n  t['female'] = 0x2640;\n  t['ff'] = 0xFB00;\n  t['ffi'] = 0xFB03;\n  t['ffl'] = 0xFB04;\n  t['fi'] = 0xFB01;\n  t['fifteencircle'] = 0x246E;\n  t['fifteenparen'] = 0x2482;\n  t['fifteenperiod'] = 0x2496;\n  t['figuredash'] = 0x2012;\n  t['filledbox'] = 0x25A0;\n  t['filledrect'] = 0x25AC;\n  t['finalkaf'] = 0x05DA;\n  t['finalkafdagesh'] = 0xFB3A;\n  t['finalkafdageshhebrew'] = 0xFB3A;\n  t['finalkafhebrew'] = 0x05DA;\n  t['finalmem'] = 0x05DD;\n  t['finalmemhebrew'] = 0x05DD;\n  t['finalnun'] = 0x05DF;\n  t['finalnunhebrew'] = 0x05DF;\n  t['finalpe'] = 0x05E3;\n  t['finalpehebrew'] = 0x05E3;\n  t['finaltsadi'] = 0x05E5;\n  t['finaltsadihebrew'] = 0x05E5;\n  t['firsttonechinese'] = 0x02C9;\n  t['fisheye'] = 0x25C9;\n  t['fitacyrillic'] = 0x0473;\n  t['five'] = 0x0035;\n  t['fivearabic'] = 0x0665;\n  t['fivebengali'] = 0x09EB;\n  t['fivecircle'] = 0x2464;\n  t['fivecircleinversesansserif'] = 0x278E;\n  t['fivedeva'] = 0x096B;\n  t['fiveeighths'] = 0x215D;\n  t['fivegujarati'] = 0x0AEB;\n  t['fivegurmukhi'] = 0x0A6B;\n  t['fivehackarabic'] = 0x0665;\n  t['fivehangzhou'] = 0x3025;\n  t['fiveideographicparen'] = 0x3224;\n  t['fiveinferior'] = 0x2085;\n  t['fivemonospace'] = 0xFF15;\n  t['fiveoldstyle'] = 0xF735;\n  t['fiveparen'] = 0x2478;\n  t['fiveperiod'] = 0x248C;\n  t['fivepersian'] = 0x06F5;\n  t['fiveroman'] = 0x2174;\n  t['fivesuperior'] = 0x2075;\n  t['fivethai'] = 0x0E55;\n  t['fl'] = 0xFB02;\n  t['florin'] = 0x0192;\n  t['fmonospace'] = 0xFF46;\n  t['fmsquare'] = 0x3399;\n  t['fofanthai'] = 0x0E1F;\n  t['fofathai'] = 0x0E1D;\n  t['fongmanthai'] = 0x0E4F;\n  t['forall'] = 0x2200;\n  t['four'] = 0x0034;\n  t['fourarabic'] = 0x0664;\n  t['fourbengali'] = 0x09EA;\n  t['fourcircle'] = 0x2463;\n  t['fourcircleinversesansserif'] = 0x278D;\n  t['fourdeva'] = 0x096A;\n  t['fourgujarati'] = 0x0AEA;\n  t['fourgurmukhi'] = 0x0A6A;\n  t['fourhackarabic'] = 0x0664;\n  t['fourhangzhou'] = 0x3024;\n  t['fourideographicparen'] = 0x3223;\n  t['fourinferior'] = 0x2084;\n  t['fourmonospace'] = 0xFF14;\n  t['fournumeratorbengali'] = 0x09F7;\n  t['fouroldstyle'] = 0xF734;\n  t['fourparen'] = 0x2477;\n  t['fourperiod'] = 0x248B;\n  t['fourpersian'] = 0x06F4;\n  t['fourroman'] = 0x2173;\n  t['foursuperior'] = 0x2074;\n  t['fourteencircle'] = 0x246D;\n  t['fourteenparen'] = 0x2481;\n  t['fourteenperiod'] = 0x2495;\n  t['fourthai'] = 0x0E54;\n  t['fourthtonechinese'] = 0x02CB;\n  t['fparen'] = 0x24A1;\n  t['fraction'] = 0x2044;\n  t['franc'] = 0x20A3;\n  t['g'] = 0x0067;\n  t['gabengali'] = 0x0997;\n  t['gacute'] = 0x01F5;\n  t['gadeva'] = 0x0917;\n  t['gafarabic'] = 0x06AF;\n  t['gaffinalarabic'] = 0xFB93;\n  t['gafinitialarabic'] = 0xFB94;\n  t['gafmedialarabic'] = 0xFB95;\n  t['gagujarati'] = 0x0A97;\n  t['gagurmukhi'] = 0x0A17;\n  t['gahiragana'] = 0x304C;\n  t['gakatakana'] = 0x30AC;\n  t['gamma'] = 0x03B3;\n  t['gammalatinsmall'] = 0x0263;\n  t['gammasuperior'] = 0x02E0;\n  t['gangiacoptic'] = 0x03EB;\n  t['gbopomofo'] = 0x310D;\n  t['gbreve'] = 0x011F;\n  t['gcaron'] = 0x01E7;\n  t['gcedilla'] = 0x0123;\n  t['gcircle'] = 0x24D6;\n  t['gcircumflex'] = 0x011D;\n  t['gcommaaccent'] = 0x0123;\n  t['gdot'] = 0x0121;\n  t['gdotaccent'] = 0x0121;\n  t['gecyrillic'] = 0x0433;\n  t['gehiragana'] = 0x3052;\n  t['gekatakana'] = 0x30B2;\n  t['geometricallyequal'] = 0x2251;\n  t['gereshaccenthebrew'] = 0x059C;\n  t['gereshhebrew'] = 0x05F3;\n  t['gereshmuqdamhebrew'] = 0x059D;\n  t['germandbls'] = 0x00DF;\n  t['gershayimaccenthebrew'] = 0x059E;\n  t['gershayimhebrew'] = 0x05F4;\n  t['getamark'] = 0x3013;\n  t['ghabengali'] = 0x0998;\n  t['ghadarmenian'] = 0x0572;\n  t['ghadeva'] = 0x0918;\n  t['ghagujarati'] = 0x0A98;\n  t['ghagurmukhi'] = 0x0A18;\n  t['ghainarabic'] = 0x063A;\n  t['ghainfinalarabic'] = 0xFECE;\n  t['ghaininitialarabic'] = 0xFECF;\n  t['ghainmedialarabic'] = 0xFED0;\n  t['ghemiddlehookcyrillic'] = 0x0495;\n  t['ghestrokecyrillic'] = 0x0493;\n  t['gheupturncyrillic'] = 0x0491;\n  t['ghhadeva'] = 0x095A;\n  t['ghhagurmukhi'] = 0x0A5A;\n  t['ghook'] = 0x0260;\n  t['ghzsquare'] = 0x3393;\n  t['gihiragana'] = 0x304E;\n  t['gikatakana'] = 0x30AE;\n  t['gimarmenian'] = 0x0563;\n  t['gimel'] = 0x05D2;\n  t['gimeldagesh'] = 0xFB32;\n  t['gimeldageshhebrew'] = 0xFB32;\n  t['gimelhebrew'] = 0x05D2;\n  t['gjecyrillic'] = 0x0453;\n  t['glottalinvertedstroke'] = 0x01BE;\n  t['glottalstop'] = 0x0294;\n  t['glottalstopinverted'] = 0x0296;\n  t['glottalstopmod'] = 0x02C0;\n  t['glottalstopreversed'] = 0x0295;\n  t['glottalstopreversedmod'] = 0x02C1;\n  t['glottalstopreversedsuperior'] = 0x02E4;\n  t['glottalstopstroke'] = 0x02A1;\n  t['glottalstopstrokereversed'] = 0x02A2;\n  t['gmacron'] = 0x1E21;\n  t['gmonospace'] = 0xFF47;\n  t['gohiragana'] = 0x3054;\n  t['gokatakana'] = 0x30B4;\n  t['gparen'] = 0x24A2;\n  t['gpasquare'] = 0x33AC;\n  t['gradient'] = 0x2207;\n  t['grave'] = 0x0060;\n  t['gravebelowcmb'] = 0x0316;\n  t['gravecmb'] = 0x0300;\n  t['gravecomb'] = 0x0300;\n  t['gravedeva'] = 0x0953;\n  t['gravelowmod'] = 0x02CE;\n  t['gravemonospace'] = 0xFF40;\n  t['gravetonecmb'] = 0x0340;\n  t['greater'] = 0x003E;\n  t['greaterequal'] = 0x2265;\n  t['greaterequalorless'] = 0x22DB;\n  t['greatermonospace'] = 0xFF1E;\n  t['greaterorequivalent'] = 0x2273;\n  t['greaterorless'] = 0x2277;\n  t['greateroverequal'] = 0x2267;\n  t['greatersmall'] = 0xFE65;\n  t['gscript'] = 0x0261;\n  t['gstroke'] = 0x01E5;\n  t['guhiragana'] = 0x3050;\n  t['guillemotleft'] = 0x00AB;\n  t['guillemotright'] = 0x00BB;\n  t['guilsinglleft'] = 0x2039;\n  t['guilsinglright'] = 0x203A;\n  t['gukatakana'] = 0x30B0;\n  t['guramusquare'] = 0x3318;\n  t['gysquare'] = 0x33C9;\n  t['h'] = 0x0068;\n  t['haabkhasiancyrillic'] = 0x04A9;\n  t['haaltonearabic'] = 0x06C1;\n  t['habengali'] = 0x09B9;\n  t['hadescendercyrillic'] = 0x04B3;\n  t['hadeva'] = 0x0939;\n  t['hagujarati'] = 0x0AB9;\n  t['hagurmukhi'] = 0x0A39;\n  t['haharabic'] = 0x062D;\n  t['hahfinalarabic'] = 0xFEA2;\n  t['hahinitialarabic'] = 0xFEA3;\n  t['hahiragana'] = 0x306F;\n  t['hahmedialarabic'] = 0xFEA4;\n  t['haitusquare'] = 0x332A;\n  t['hakatakana'] = 0x30CF;\n  t['hakatakanahalfwidth'] = 0xFF8A;\n  t['halantgurmukhi'] = 0x0A4D;\n  t['hamzaarabic'] = 0x0621;\n  t['hamzalowarabic'] = 0x0621;\n  t['hangulfiller'] = 0x3164;\n  t['hardsigncyrillic'] = 0x044A;\n  t['harpoonleftbarbup'] = 0x21BC;\n  t['harpoonrightbarbup'] = 0x21C0;\n  t['hasquare'] = 0x33CA;\n  t['hatafpatah'] = 0x05B2;\n  t['hatafpatah16'] = 0x05B2;\n  t['hatafpatah23'] = 0x05B2;\n  t['hatafpatah2f'] = 0x05B2;\n  t['hatafpatahhebrew'] = 0x05B2;\n  t['hatafpatahnarrowhebrew'] = 0x05B2;\n  t['hatafpatahquarterhebrew'] = 0x05B2;\n  t['hatafpatahwidehebrew'] = 0x05B2;\n  t['hatafqamats'] = 0x05B3;\n  t['hatafqamats1b'] = 0x05B3;\n  t['hatafqamats28'] = 0x05B3;\n  t['hatafqamats34'] = 0x05B3;\n  t['hatafqamatshebrew'] = 0x05B3;\n  t['hatafqamatsnarrowhebrew'] = 0x05B3;\n  t['hatafqamatsquarterhebrew'] = 0x05B3;\n  t['hatafqamatswidehebrew'] = 0x05B3;\n  t['hatafsegol'] = 0x05B1;\n  t['hatafsegol17'] = 0x05B1;\n  t['hatafsegol24'] = 0x05B1;\n  t['hatafsegol30'] = 0x05B1;\n  t['hatafsegolhebrew'] = 0x05B1;\n  t['hatafsegolnarrowhebrew'] = 0x05B1;\n  t['hatafsegolquarterhebrew'] = 0x05B1;\n  t['hatafsegolwidehebrew'] = 0x05B1;\n  t['hbar'] = 0x0127;\n  t['hbopomofo'] = 0x310F;\n  t['hbrevebelow'] = 0x1E2B;\n  t['hcedilla'] = 0x1E29;\n  t['hcircle'] = 0x24D7;\n  t['hcircumflex'] = 0x0125;\n  t['hdieresis'] = 0x1E27;\n  t['hdotaccent'] = 0x1E23;\n  t['hdotbelow'] = 0x1E25;\n  t['he'] = 0x05D4;\n  t['heart'] = 0x2665;\n  t['heartsuitblack'] = 0x2665;\n  t['heartsuitwhite'] = 0x2661;\n  t['hedagesh'] = 0xFB34;\n  t['hedageshhebrew'] = 0xFB34;\n  t['hehaltonearabic'] = 0x06C1;\n  t['heharabic'] = 0x0647;\n  t['hehebrew'] = 0x05D4;\n  t['hehfinalaltonearabic'] = 0xFBA7;\n  t['hehfinalalttwoarabic'] = 0xFEEA;\n  t['hehfinalarabic'] = 0xFEEA;\n  t['hehhamzaabovefinalarabic'] = 0xFBA5;\n  t['hehhamzaaboveisolatedarabic'] = 0xFBA4;\n  t['hehinitialaltonearabic'] = 0xFBA8;\n  t['hehinitialarabic'] = 0xFEEB;\n  t['hehiragana'] = 0x3078;\n  t['hehmedialaltonearabic'] = 0xFBA9;\n  t['hehmedialarabic'] = 0xFEEC;\n  t['heiseierasquare'] = 0x337B;\n  t['hekatakana'] = 0x30D8;\n  t['hekatakanahalfwidth'] = 0xFF8D;\n  t['hekutaarusquare'] = 0x3336;\n  t['henghook'] = 0x0267;\n  t['herutusquare'] = 0x3339;\n  t['het'] = 0x05D7;\n  t['hethebrew'] = 0x05D7;\n  t['hhook'] = 0x0266;\n  t['hhooksuperior'] = 0x02B1;\n  t['hieuhacirclekorean'] = 0x327B;\n  t['hieuhaparenkorean'] = 0x321B;\n  t['hieuhcirclekorean'] = 0x326D;\n  t['hieuhkorean'] = 0x314E;\n  t['hieuhparenkorean'] = 0x320D;\n  t['hihiragana'] = 0x3072;\n  t['hikatakana'] = 0x30D2;\n  t['hikatakanahalfwidth'] = 0xFF8B;\n  t['hiriq'] = 0x05B4;\n  t['hiriq14'] = 0x05B4;\n  t['hiriq21'] = 0x05B4;\n  t['hiriq2d'] = 0x05B4;\n  t['hiriqhebrew'] = 0x05B4;\n  t['hiriqnarrowhebrew'] = 0x05B4;\n  t['hiriqquarterhebrew'] = 0x05B4;\n  t['hiriqwidehebrew'] = 0x05B4;\n  t['hlinebelow'] = 0x1E96;\n  t['hmonospace'] = 0xFF48;\n  t['hoarmenian'] = 0x0570;\n  t['hohipthai'] = 0x0E2B;\n  t['hohiragana'] = 0x307B;\n  t['hokatakana'] = 0x30DB;\n  t['hokatakanahalfwidth'] = 0xFF8E;\n  t['holam'] = 0x05B9;\n  t['holam19'] = 0x05B9;\n  t['holam26'] = 0x05B9;\n  t['holam32'] = 0x05B9;\n  t['holamhebrew'] = 0x05B9;\n  t['holamnarrowhebrew'] = 0x05B9;\n  t['holamquarterhebrew'] = 0x05B9;\n  t['holamwidehebrew'] = 0x05B9;\n  t['honokhukthai'] = 0x0E2E;\n  t['hookabovecomb'] = 0x0309;\n  t['hookcmb'] = 0x0309;\n  t['hookpalatalizedbelowcmb'] = 0x0321;\n  t['hookretroflexbelowcmb'] = 0x0322;\n  t['hoonsquare'] = 0x3342;\n  t['horicoptic'] = 0x03E9;\n  t['horizontalbar'] = 0x2015;\n  t['horncmb'] = 0x031B;\n  t['hotsprings'] = 0x2668;\n  t['house'] = 0x2302;\n  t['hparen'] = 0x24A3;\n  t['hsuperior'] = 0x02B0;\n  t['hturned'] = 0x0265;\n  t['huhiragana'] = 0x3075;\n  t['huiitosquare'] = 0x3333;\n  t['hukatakana'] = 0x30D5;\n  t['hukatakanahalfwidth'] = 0xFF8C;\n  t['hungarumlaut'] = 0x02DD;\n  t['hungarumlautcmb'] = 0x030B;\n  t['hv'] = 0x0195;\n  t['hyphen'] = 0x002D;\n  t['hypheninferior'] = 0xF6E5;\n  t['hyphenmonospace'] = 0xFF0D;\n  t['hyphensmall'] = 0xFE63;\n  t['hyphensuperior'] = 0xF6E6;\n  t['hyphentwo'] = 0x2010;\n  t['i'] = 0x0069;\n  t['iacute'] = 0x00ED;\n  t['iacyrillic'] = 0x044F;\n  t['ibengali'] = 0x0987;\n  t['ibopomofo'] = 0x3127;\n  t['ibreve'] = 0x012D;\n  t['icaron'] = 0x01D0;\n  t['icircle'] = 0x24D8;\n  t['icircumflex'] = 0x00EE;\n  t['icyrillic'] = 0x0456;\n  t['idblgrave'] = 0x0209;\n  t['ideographearthcircle'] = 0x328F;\n  t['ideographfirecircle'] = 0x328B;\n  t['ideographicallianceparen'] = 0x323F;\n  t['ideographiccallparen'] = 0x323A;\n  t['ideographiccentrecircle'] = 0x32A5;\n  t['ideographicclose'] = 0x3006;\n  t['ideographiccomma'] = 0x3001;\n  t['ideographiccommaleft'] = 0xFF64;\n  t['ideographiccongratulationparen'] = 0x3237;\n  t['ideographiccorrectcircle'] = 0x32A3;\n  t['ideographicearthparen'] = 0x322F;\n  t['ideographicenterpriseparen'] = 0x323D;\n  t['ideographicexcellentcircle'] = 0x329D;\n  t['ideographicfestivalparen'] = 0x3240;\n  t['ideographicfinancialcircle'] = 0x3296;\n  t['ideographicfinancialparen'] = 0x3236;\n  t['ideographicfireparen'] = 0x322B;\n  t['ideographichaveparen'] = 0x3232;\n  t['ideographichighcircle'] = 0x32A4;\n  t['ideographiciterationmark'] = 0x3005;\n  t['ideographiclaborcircle'] = 0x3298;\n  t['ideographiclaborparen'] = 0x3238;\n  t['ideographicleftcircle'] = 0x32A7;\n  t['ideographiclowcircle'] = 0x32A6;\n  t['ideographicmedicinecircle'] = 0x32A9;\n  t['ideographicmetalparen'] = 0x322E;\n  t['ideographicmoonparen'] = 0x322A;\n  t['ideographicnameparen'] = 0x3234;\n  t['ideographicperiod'] = 0x3002;\n  t['ideographicprintcircle'] = 0x329E;\n  t['ideographicreachparen'] = 0x3243;\n  t['ideographicrepresentparen'] = 0x3239;\n  t['ideographicresourceparen'] = 0x323E;\n  t['ideographicrightcircle'] = 0x32A8;\n  t['ideographicsecretcircle'] = 0x3299;\n  t['ideographicselfparen'] = 0x3242;\n  t['ideographicsocietyparen'] = 0x3233;\n  t['ideographicspace'] = 0x3000;\n  t['ideographicspecialparen'] = 0x3235;\n  t['ideographicstockparen'] = 0x3231;\n  t['ideographicstudyparen'] = 0x323B;\n  t['ideographicsunparen'] = 0x3230;\n  t['ideographicsuperviseparen'] = 0x323C;\n  t['ideographicwaterparen'] = 0x322C;\n  t['ideographicwoodparen'] = 0x322D;\n  t['ideographiczero'] = 0x3007;\n  t['ideographmetalcircle'] = 0x328E;\n  t['ideographmooncircle'] = 0x328A;\n  t['ideographnamecircle'] = 0x3294;\n  t['ideographsuncircle'] = 0x3290;\n  t['ideographwatercircle'] = 0x328C;\n  t['ideographwoodcircle'] = 0x328D;\n  t['ideva'] = 0x0907;\n  t['idieresis'] = 0x00EF;\n  t['idieresisacute'] = 0x1E2F;\n  t['idieresiscyrillic'] = 0x04E5;\n  t['idotbelow'] = 0x1ECB;\n  t['iebrevecyrillic'] = 0x04D7;\n  t['iecyrillic'] = 0x0435;\n  t['ieungacirclekorean'] = 0x3275;\n  t['ieungaparenkorean'] = 0x3215;\n  t['ieungcirclekorean'] = 0x3267;\n  t['ieungkorean'] = 0x3147;\n  t['ieungparenkorean'] = 0x3207;\n  t['igrave'] = 0x00EC;\n  t['igujarati'] = 0x0A87;\n  t['igurmukhi'] = 0x0A07;\n  t['ihiragana'] = 0x3044;\n  t['ihookabove'] = 0x1EC9;\n  t['iibengali'] = 0x0988;\n  t['iicyrillic'] = 0x0438;\n  t['iideva'] = 0x0908;\n  t['iigujarati'] = 0x0A88;\n  t['iigurmukhi'] = 0x0A08;\n  t['iimatragurmukhi'] = 0x0A40;\n  t['iinvertedbreve'] = 0x020B;\n  t['iishortcyrillic'] = 0x0439;\n  t['iivowelsignbengali'] = 0x09C0;\n  t['iivowelsigndeva'] = 0x0940;\n  t['iivowelsigngujarati'] = 0x0AC0;\n  t['ij'] = 0x0133;\n  t['ikatakana'] = 0x30A4;\n  t['ikatakanahalfwidth'] = 0xFF72;\n  t['ikorean'] = 0x3163;\n  t['ilde'] = 0x02DC;\n  t['iluyhebrew'] = 0x05AC;\n  t['imacron'] = 0x012B;\n  t['imacroncyrillic'] = 0x04E3;\n  t['imageorapproximatelyequal'] = 0x2253;\n  t['imatragurmukhi'] = 0x0A3F;\n  t['imonospace'] = 0xFF49;\n  t['increment'] = 0x2206;\n  t['infinity'] = 0x221E;\n  t['iniarmenian'] = 0x056B;\n  t['integral'] = 0x222B;\n  t['integralbottom'] = 0x2321;\n  t['integralbt'] = 0x2321;\n  t['integralex'] = 0xF8F5;\n  t['integraltop'] = 0x2320;\n  t['integraltp'] = 0x2320;\n  t['intersection'] = 0x2229;\n  t['intisquare'] = 0x3305;\n  t['invbullet'] = 0x25D8;\n  t['invcircle'] = 0x25D9;\n  t['invsmileface'] = 0x263B;\n  t['iocyrillic'] = 0x0451;\n  t['iogonek'] = 0x012F;\n  t['iota'] = 0x03B9;\n  t['iotadieresis'] = 0x03CA;\n  t['iotadieresistonos'] = 0x0390;\n  t['iotalatin'] = 0x0269;\n  t['iotatonos'] = 0x03AF;\n  t['iparen'] = 0x24A4;\n  t['irigurmukhi'] = 0x0A72;\n  t['ismallhiragana'] = 0x3043;\n  t['ismallkatakana'] = 0x30A3;\n  t['ismallkatakanahalfwidth'] = 0xFF68;\n  t['issharbengali'] = 0x09FA;\n  t['istroke'] = 0x0268;\n  t['isuperior'] = 0xF6ED;\n  t['iterationhiragana'] = 0x309D;\n  t['iterationkatakana'] = 0x30FD;\n  t['itilde'] = 0x0129;\n  t['itildebelow'] = 0x1E2D;\n  t['iubopomofo'] = 0x3129;\n  t['iucyrillic'] = 0x044E;\n  t['ivowelsignbengali'] = 0x09BF;\n  t['ivowelsigndeva'] = 0x093F;\n  t['ivowelsigngujarati'] = 0x0ABF;\n  t['izhitsacyrillic'] = 0x0475;\n  t['izhitsadblgravecyrillic'] = 0x0477;\n  t['j'] = 0x006A;\n  t['jaarmenian'] = 0x0571;\n  t['jabengali'] = 0x099C;\n  t['jadeva'] = 0x091C;\n  t['jagujarati'] = 0x0A9C;\n  t['jagurmukhi'] = 0x0A1C;\n  t['jbopomofo'] = 0x3110;\n  t['jcaron'] = 0x01F0;\n  t['jcircle'] = 0x24D9;\n  t['jcircumflex'] = 0x0135;\n  t['jcrossedtail'] = 0x029D;\n  t['jdotlessstroke'] = 0x025F;\n  t['jecyrillic'] = 0x0458;\n  t['jeemarabic'] = 0x062C;\n  t['jeemfinalarabic'] = 0xFE9E;\n  t['jeeminitialarabic'] = 0xFE9F;\n  t['jeemmedialarabic'] = 0xFEA0;\n  t['jeharabic'] = 0x0698;\n  t['jehfinalarabic'] = 0xFB8B;\n  t['jhabengali'] = 0x099D;\n  t['jhadeva'] = 0x091D;\n  t['jhagujarati'] = 0x0A9D;\n  t['jhagurmukhi'] = 0x0A1D;\n  t['jheharmenian'] = 0x057B;\n  t['jis'] = 0x3004;\n  t['jmonospace'] = 0xFF4A;\n  t['jparen'] = 0x24A5;\n  t['jsuperior'] = 0x02B2;\n  t['k'] = 0x006B;\n  t['kabashkircyrillic'] = 0x04A1;\n  t['kabengali'] = 0x0995;\n  t['kacute'] = 0x1E31;\n  t['kacyrillic'] = 0x043A;\n  t['kadescendercyrillic'] = 0x049B;\n  t['kadeva'] = 0x0915;\n  t['kaf'] = 0x05DB;\n  t['kafarabic'] = 0x0643;\n  t['kafdagesh'] = 0xFB3B;\n  t['kafdageshhebrew'] = 0xFB3B;\n  t['kaffinalarabic'] = 0xFEDA;\n  t['kafhebrew'] = 0x05DB;\n  t['kafinitialarabic'] = 0xFEDB;\n  t['kafmedialarabic'] = 0xFEDC;\n  t['kafrafehebrew'] = 0xFB4D;\n  t['kagujarati'] = 0x0A95;\n  t['kagurmukhi'] = 0x0A15;\n  t['kahiragana'] = 0x304B;\n  t['kahookcyrillic'] = 0x04C4;\n  t['kakatakana'] = 0x30AB;\n  t['kakatakanahalfwidth'] = 0xFF76;\n  t['kappa'] = 0x03BA;\n  t['kappasymbolgreek'] = 0x03F0;\n  t['kapyeounmieumkorean'] = 0x3171;\n  t['kapyeounphieuphkorean'] = 0x3184;\n  t['kapyeounpieupkorean'] = 0x3178;\n  t['kapyeounssangpieupkorean'] = 0x3179;\n  t['karoriisquare'] = 0x330D;\n  t['kashidaautoarabic'] = 0x0640;\n  t['kashidaautonosidebearingarabic'] = 0x0640;\n  t['kasmallkatakana'] = 0x30F5;\n  t['kasquare'] = 0x3384;\n  t['kasraarabic'] = 0x0650;\n  t['kasratanarabic'] = 0x064D;\n  t['kastrokecyrillic'] = 0x049F;\n  t['katahiraprolongmarkhalfwidth'] = 0xFF70;\n  t['kaverticalstrokecyrillic'] = 0x049D;\n  t['kbopomofo'] = 0x310E;\n  t['kcalsquare'] = 0x3389;\n  t['kcaron'] = 0x01E9;\n  t['kcedilla'] = 0x0137;\n  t['kcircle'] = 0x24DA;\n  t['kcommaaccent'] = 0x0137;\n  t['kdotbelow'] = 0x1E33;\n  t['keharmenian'] = 0x0584;\n  t['kehiragana'] = 0x3051;\n  t['kekatakana'] = 0x30B1;\n  t['kekatakanahalfwidth'] = 0xFF79;\n  t['kenarmenian'] = 0x056F;\n  t['kesmallkatakana'] = 0x30F6;\n  t['kgreenlandic'] = 0x0138;\n  t['khabengali'] = 0x0996;\n  t['khacyrillic'] = 0x0445;\n  t['khadeva'] = 0x0916;\n  t['khagujarati'] = 0x0A96;\n  t['khagurmukhi'] = 0x0A16;\n  t['khaharabic'] = 0x062E;\n  t['khahfinalarabic'] = 0xFEA6;\n  t['khahinitialarabic'] = 0xFEA7;\n  t['khahmedialarabic'] = 0xFEA8;\n  t['kheicoptic'] = 0x03E7;\n  t['khhadeva'] = 0x0959;\n  t['khhagurmukhi'] = 0x0A59;\n  t['khieukhacirclekorean'] = 0x3278;\n  t['khieukhaparenkorean'] = 0x3218;\n  t['khieukhcirclekorean'] = 0x326A;\n  t['khieukhkorean'] = 0x314B;\n  t['khieukhparenkorean'] = 0x320A;\n  t['khokhaithai'] = 0x0E02;\n  t['khokhonthai'] = 0x0E05;\n  t['khokhuatthai'] = 0x0E03;\n  t['khokhwaithai'] = 0x0E04;\n  t['khomutthai'] = 0x0E5B;\n  t['khook'] = 0x0199;\n  t['khorakhangthai'] = 0x0E06;\n  t['khzsquare'] = 0x3391;\n  t['kihiragana'] = 0x304D;\n  t['kikatakana'] = 0x30AD;\n  t['kikatakanahalfwidth'] = 0xFF77;\n  t['kiroguramusquare'] = 0x3315;\n  t['kiromeetorusquare'] = 0x3316;\n  t['kirosquare'] = 0x3314;\n  t['kiyeokacirclekorean'] = 0x326E;\n  t['kiyeokaparenkorean'] = 0x320E;\n  t['kiyeokcirclekorean'] = 0x3260;\n  t['kiyeokkorean'] = 0x3131;\n  t['kiyeokparenkorean'] = 0x3200;\n  t['kiyeoksioskorean'] = 0x3133;\n  t['kjecyrillic'] = 0x045C;\n  t['klinebelow'] = 0x1E35;\n  t['klsquare'] = 0x3398;\n  t['kmcubedsquare'] = 0x33A6;\n  t['kmonospace'] = 0xFF4B;\n  t['kmsquaredsquare'] = 0x33A2;\n  t['kohiragana'] = 0x3053;\n  t['kohmsquare'] = 0x33C0;\n  t['kokaithai'] = 0x0E01;\n  t['kokatakana'] = 0x30B3;\n  t['kokatakanahalfwidth'] = 0xFF7A;\n  t['kooposquare'] = 0x331E;\n  t['koppacyrillic'] = 0x0481;\n  t['koreanstandardsymbol'] = 0x327F;\n  t['koroniscmb'] = 0x0343;\n  t['kparen'] = 0x24A6;\n  t['kpasquare'] = 0x33AA;\n  t['ksicyrillic'] = 0x046F;\n  t['ktsquare'] = 0x33CF;\n  t['kturned'] = 0x029E;\n  t['kuhiragana'] = 0x304F;\n  t['kukatakana'] = 0x30AF;\n  t['kukatakanahalfwidth'] = 0xFF78;\n  t['kvsquare'] = 0x33B8;\n  t['kwsquare'] = 0x33BE;\n  t['l'] = 0x006C;\n  t['labengali'] = 0x09B2;\n  t['lacute'] = 0x013A;\n  t['ladeva'] = 0x0932;\n  t['lagujarati'] = 0x0AB2;\n  t['lagurmukhi'] = 0x0A32;\n  t['lakkhangyaothai'] = 0x0E45;\n  t['lamaleffinalarabic'] = 0xFEFC;\n  t['lamalefhamzaabovefinalarabic'] = 0xFEF8;\n  t['lamalefhamzaaboveisolatedarabic'] = 0xFEF7;\n  t['lamalefhamzabelowfinalarabic'] = 0xFEFA;\n  t['lamalefhamzabelowisolatedarabic'] = 0xFEF9;\n  t['lamalefisolatedarabic'] = 0xFEFB;\n  t['lamalefmaddaabovefinalarabic'] = 0xFEF6;\n  t['lamalefmaddaaboveisolatedarabic'] = 0xFEF5;\n  t['lamarabic'] = 0x0644;\n  t['lambda'] = 0x03BB;\n  t['lambdastroke'] = 0x019B;\n  t['lamed'] = 0x05DC;\n  t['lameddagesh'] = 0xFB3C;\n  t['lameddageshhebrew'] = 0xFB3C;\n  t['lamedhebrew'] = 0x05DC;\n  t['lamfinalarabic'] = 0xFEDE;\n  t['lamhahinitialarabic'] = 0xFCCA;\n  t['laminitialarabic'] = 0xFEDF;\n  t['lamjeeminitialarabic'] = 0xFCC9;\n  t['lamkhahinitialarabic'] = 0xFCCB;\n  t['lamlamhehisolatedarabic'] = 0xFDF2;\n  t['lammedialarabic'] = 0xFEE0;\n  t['lammeemhahinitialarabic'] = 0xFD88;\n  t['lammeeminitialarabic'] = 0xFCCC;\n  t['largecircle'] = 0x25EF;\n  t['lbar'] = 0x019A;\n  t['lbelt'] = 0x026C;\n  t['lbopomofo'] = 0x310C;\n  t['lcaron'] = 0x013E;\n  t['lcedilla'] = 0x013C;\n  t['lcircle'] = 0x24DB;\n  t['lcircumflexbelow'] = 0x1E3D;\n  t['lcommaaccent'] = 0x013C;\n  t['ldot'] = 0x0140;\n  t['ldotaccent'] = 0x0140;\n  t['ldotbelow'] = 0x1E37;\n  t['ldotbelowmacron'] = 0x1E39;\n  t['leftangleabovecmb'] = 0x031A;\n  t['lefttackbelowcmb'] = 0x0318;\n  t['less'] = 0x003C;\n  t['lessequal'] = 0x2264;\n  t['lessequalorgreater'] = 0x22DA;\n  t['lessmonospace'] = 0xFF1C;\n  t['lessorequivalent'] = 0x2272;\n  t['lessorgreater'] = 0x2276;\n  t['lessoverequal'] = 0x2266;\n  t['lesssmall'] = 0xFE64;\n  t['lezh'] = 0x026E;\n  t['lfblock'] = 0x258C;\n  t['lhookretroflex'] = 0x026D;\n  t['lira'] = 0x20A4;\n  t['liwnarmenian'] = 0x056C;\n  t['lj'] = 0x01C9;\n  t['ljecyrillic'] = 0x0459;\n  t['ll'] = 0xF6C0;\n  t['lladeva'] = 0x0933;\n  t['llagujarati'] = 0x0AB3;\n  t['llinebelow'] = 0x1E3B;\n  t['llladeva'] = 0x0934;\n  t['llvocalicbengali'] = 0x09E1;\n  t['llvocalicdeva'] = 0x0961;\n  t['llvocalicvowelsignbengali'] = 0x09E3;\n  t['llvocalicvowelsigndeva'] = 0x0963;\n  t['lmiddletilde'] = 0x026B;\n  t['lmonospace'] = 0xFF4C;\n  t['lmsquare'] = 0x33D0;\n  t['lochulathai'] = 0x0E2C;\n  t['logicaland'] = 0x2227;\n  t['logicalnot'] = 0x00AC;\n  t['logicalnotreversed'] = 0x2310;\n  t['logicalor'] = 0x2228;\n  t['lolingthai'] = 0x0E25;\n  t['longs'] = 0x017F;\n  t['lowlinecenterline'] = 0xFE4E;\n  t['lowlinecmb'] = 0x0332;\n  t['lowlinedashed'] = 0xFE4D;\n  t['lozenge'] = 0x25CA;\n  t['lparen'] = 0x24A7;\n  t['lslash'] = 0x0142;\n  t['lsquare'] = 0x2113;\n  t['lsuperior'] = 0xF6EE;\n  t['ltshade'] = 0x2591;\n  t['luthai'] = 0x0E26;\n  t['lvocalicbengali'] = 0x098C;\n  t['lvocalicdeva'] = 0x090C;\n  t['lvocalicvowelsignbengali'] = 0x09E2;\n  t['lvocalicvowelsigndeva'] = 0x0962;\n  t['lxsquare'] = 0x33D3;\n  t['m'] = 0x006D;\n  t['mabengali'] = 0x09AE;\n  t['macron'] = 0x00AF;\n  t['macronbelowcmb'] = 0x0331;\n  t['macroncmb'] = 0x0304;\n  t['macronlowmod'] = 0x02CD;\n  t['macronmonospace'] = 0xFFE3;\n  t['macute'] = 0x1E3F;\n  t['madeva'] = 0x092E;\n  t['magujarati'] = 0x0AAE;\n  t['magurmukhi'] = 0x0A2E;\n  t['mahapakhhebrew'] = 0x05A4;\n  t['mahapakhlefthebrew'] = 0x05A4;\n  t['mahiragana'] = 0x307E;\n  t['maichattawalowleftthai'] = 0xF895;\n  t['maichattawalowrightthai'] = 0xF894;\n  t['maichattawathai'] = 0x0E4B;\n  t['maichattawaupperleftthai'] = 0xF893;\n  t['maieklowleftthai'] = 0xF88C;\n  t['maieklowrightthai'] = 0xF88B;\n  t['maiekthai'] = 0x0E48;\n  t['maiekupperleftthai'] = 0xF88A;\n  t['maihanakatleftthai'] = 0xF884;\n  t['maihanakatthai'] = 0x0E31;\n  t['maitaikhuleftthai'] = 0xF889;\n  t['maitaikhuthai'] = 0x0E47;\n  t['maitholowleftthai'] = 0xF88F;\n  t['maitholowrightthai'] = 0xF88E;\n  t['maithothai'] = 0x0E49;\n  t['maithoupperleftthai'] = 0xF88D;\n  t['maitrilowleftthai'] = 0xF892;\n  t['maitrilowrightthai'] = 0xF891;\n  t['maitrithai'] = 0x0E4A;\n  t['maitriupperleftthai'] = 0xF890;\n  t['maiyamokthai'] = 0x0E46;\n  t['makatakana'] = 0x30DE;\n  t['makatakanahalfwidth'] = 0xFF8F;\n  t['male'] = 0x2642;\n  t['mansyonsquare'] = 0x3347;\n  t['maqafhebrew'] = 0x05BE;\n  t['mars'] = 0x2642;\n  t['masoracirclehebrew'] = 0x05AF;\n  t['masquare'] = 0x3383;\n  t['mbopomofo'] = 0x3107;\n  t['mbsquare'] = 0x33D4;\n  t['mcircle'] = 0x24DC;\n  t['mcubedsquare'] = 0x33A5;\n  t['mdotaccent'] = 0x1E41;\n  t['mdotbelow'] = 0x1E43;\n  t['meemarabic'] = 0x0645;\n  t['meemfinalarabic'] = 0xFEE2;\n  t['meeminitialarabic'] = 0xFEE3;\n  t['meemmedialarabic'] = 0xFEE4;\n  t['meemmeeminitialarabic'] = 0xFCD1;\n  t['meemmeemisolatedarabic'] = 0xFC48;\n  t['meetorusquare'] = 0x334D;\n  t['mehiragana'] = 0x3081;\n  t['meizierasquare'] = 0x337E;\n  t['mekatakana'] = 0x30E1;\n  t['mekatakanahalfwidth'] = 0xFF92;\n  t['mem'] = 0x05DE;\n  t['memdagesh'] = 0xFB3E;\n  t['memdageshhebrew'] = 0xFB3E;\n  t['memhebrew'] = 0x05DE;\n  t['menarmenian'] = 0x0574;\n  t['merkhahebrew'] = 0x05A5;\n  t['merkhakefulahebrew'] = 0x05A6;\n  t['merkhakefulalefthebrew'] = 0x05A6;\n  t['merkhalefthebrew'] = 0x05A5;\n  t['mhook'] = 0x0271;\n  t['mhzsquare'] = 0x3392;\n  t['middledotkatakanahalfwidth'] = 0xFF65;\n  t['middot'] = 0x00B7;\n  t['mieumacirclekorean'] = 0x3272;\n  t['mieumaparenkorean'] = 0x3212;\n  t['mieumcirclekorean'] = 0x3264;\n  t['mieumkorean'] = 0x3141;\n  t['mieumpansioskorean'] = 0x3170;\n  t['mieumparenkorean'] = 0x3204;\n  t['mieumpieupkorean'] = 0x316E;\n  t['mieumsioskorean'] = 0x316F;\n  t['mihiragana'] = 0x307F;\n  t['mikatakana'] = 0x30DF;\n  t['mikatakanahalfwidth'] = 0xFF90;\n  t['minus'] = 0x2212;\n  t['minusbelowcmb'] = 0x0320;\n  t['minuscircle'] = 0x2296;\n  t['minusmod'] = 0x02D7;\n  t['minusplus'] = 0x2213;\n  t['minute'] = 0x2032;\n  t['miribaarusquare'] = 0x334A;\n  t['mirisquare'] = 0x3349;\n  t['mlonglegturned'] = 0x0270;\n  t['mlsquare'] = 0x3396;\n  t['mmcubedsquare'] = 0x33A3;\n  t['mmonospace'] = 0xFF4D;\n  t['mmsquaredsquare'] = 0x339F;\n  t['mohiragana'] = 0x3082;\n  t['mohmsquare'] = 0x33C1;\n  t['mokatakana'] = 0x30E2;\n  t['mokatakanahalfwidth'] = 0xFF93;\n  t['molsquare'] = 0x33D6;\n  t['momathai'] = 0x0E21;\n  t['moverssquare'] = 0x33A7;\n  t['moverssquaredsquare'] = 0x33A8;\n  t['mparen'] = 0x24A8;\n  t['mpasquare'] = 0x33AB;\n  t['mssquare'] = 0x33B3;\n  t['msuperior'] = 0xF6EF;\n  t['mturned'] = 0x026F;\n  t['mu'] = 0x00B5;\n  t['mu1'] = 0x00B5;\n  t['muasquare'] = 0x3382;\n  t['muchgreater'] = 0x226B;\n  t['muchless'] = 0x226A;\n  t['mufsquare'] = 0x338C;\n  t['mugreek'] = 0x03BC;\n  t['mugsquare'] = 0x338D;\n  t['muhiragana'] = 0x3080;\n  t['mukatakana'] = 0x30E0;\n  t['mukatakanahalfwidth'] = 0xFF91;\n  t['mulsquare'] = 0x3395;\n  t['multiply'] = 0x00D7;\n  t['mumsquare'] = 0x339B;\n  t['munahhebrew'] = 0x05A3;\n  t['munahlefthebrew'] = 0x05A3;\n  t['musicalnote'] = 0x266A;\n  t['musicalnotedbl'] = 0x266B;\n  t['musicflatsign'] = 0x266D;\n  t['musicsharpsign'] = 0x266F;\n  t['mussquare'] = 0x33B2;\n  t['muvsquare'] = 0x33B6;\n  t['muwsquare'] = 0x33BC;\n  t['mvmegasquare'] = 0x33B9;\n  t['mvsquare'] = 0x33B7;\n  t['mwmegasquare'] = 0x33BF;\n  t['mwsquare'] = 0x33BD;\n  t['n'] = 0x006E;\n  t['nabengali'] = 0x09A8;\n  t['nabla'] = 0x2207;\n  t['nacute'] = 0x0144;\n  t['nadeva'] = 0x0928;\n  t['nagujarati'] = 0x0AA8;\n  t['nagurmukhi'] = 0x0A28;\n  t['nahiragana'] = 0x306A;\n  t['nakatakana'] = 0x30CA;\n  t['nakatakanahalfwidth'] = 0xFF85;\n  t['napostrophe'] = 0x0149;\n  t['nasquare'] = 0x3381;\n  t['nbopomofo'] = 0x310B;\n  t['nbspace'] = 0x00A0;\n  t['ncaron'] = 0x0148;\n  t['ncedilla'] = 0x0146;\n  t['ncircle'] = 0x24DD;\n  t['ncircumflexbelow'] = 0x1E4B;\n  t['ncommaaccent'] = 0x0146;\n  t['ndotaccent'] = 0x1E45;\n  t['ndotbelow'] = 0x1E47;\n  t['nehiragana'] = 0x306D;\n  t['nekatakana'] = 0x30CD;\n  t['nekatakanahalfwidth'] = 0xFF88;\n  t['newsheqelsign'] = 0x20AA;\n  t['nfsquare'] = 0x338B;\n  t['ngabengali'] = 0x0999;\n  t['ngadeva'] = 0x0919;\n  t['ngagujarati'] = 0x0A99;\n  t['ngagurmukhi'] = 0x0A19;\n  t['ngonguthai'] = 0x0E07;\n  t['nhiragana'] = 0x3093;\n  t['nhookleft'] = 0x0272;\n  t['nhookretroflex'] = 0x0273;\n  t['nieunacirclekorean'] = 0x326F;\n  t['nieunaparenkorean'] = 0x320F;\n  t['nieuncieuckorean'] = 0x3135;\n  t['nieuncirclekorean'] = 0x3261;\n  t['nieunhieuhkorean'] = 0x3136;\n  t['nieunkorean'] = 0x3134;\n  t['nieunpansioskorean'] = 0x3168;\n  t['nieunparenkorean'] = 0x3201;\n  t['nieunsioskorean'] = 0x3167;\n  t['nieuntikeutkorean'] = 0x3166;\n  t['nihiragana'] = 0x306B;\n  t['nikatakana'] = 0x30CB;\n  t['nikatakanahalfwidth'] = 0xFF86;\n  t['nikhahitleftthai'] = 0xF899;\n  t['nikhahitthai'] = 0x0E4D;\n  t['nine'] = 0x0039;\n  t['ninearabic'] = 0x0669;\n  t['ninebengali'] = 0x09EF;\n  t['ninecircle'] = 0x2468;\n  t['ninecircleinversesansserif'] = 0x2792;\n  t['ninedeva'] = 0x096F;\n  t['ninegujarati'] = 0x0AEF;\n  t['ninegurmukhi'] = 0x0A6F;\n  t['ninehackarabic'] = 0x0669;\n  t['ninehangzhou'] = 0x3029;\n  t['nineideographicparen'] = 0x3228;\n  t['nineinferior'] = 0x2089;\n  t['ninemonospace'] = 0xFF19;\n  t['nineoldstyle'] = 0xF739;\n  t['nineparen'] = 0x247C;\n  t['nineperiod'] = 0x2490;\n  t['ninepersian'] = 0x06F9;\n  t['nineroman'] = 0x2178;\n  t['ninesuperior'] = 0x2079;\n  t['nineteencircle'] = 0x2472;\n  t['nineteenparen'] = 0x2486;\n  t['nineteenperiod'] = 0x249A;\n  t['ninethai'] = 0x0E59;\n  t['nj'] = 0x01CC;\n  t['njecyrillic'] = 0x045A;\n  t['nkatakana'] = 0x30F3;\n  t['nkatakanahalfwidth'] = 0xFF9D;\n  t['nlegrightlong'] = 0x019E;\n  t['nlinebelow'] = 0x1E49;\n  t['nmonospace'] = 0xFF4E;\n  t['nmsquare'] = 0x339A;\n  t['nnabengali'] = 0x09A3;\n  t['nnadeva'] = 0x0923;\n  t['nnagujarati'] = 0x0AA3;\n  t['nnagurmukhi'] = 0x0A23;\n  t['nnnadeva'] = 0x0929;\n  t['nohiragana'] = 0x306E;\n  t['nokatakana'] = 0x30CE;\n  t['nokatakanahalfwidth'] = 0xFF89;\n  t['nonbreakingspace'] = 0x00A0;\n  t['nonenthai'] = 0x0E13;\n  t['nonuthai'] = 0x0E19;\n  t['noonarabic'] = 0x0646;\n  t['noonfinalarabic'] = 0xFEE6;\n  t['noonghunnaarabic'] = 0x06BA;\n  t['noonghunnafinalarabic'] = 0xFB9F;\n  t['nooninitialarabic'] = 0xFEE7;\n  t['noonjeeminitialarabic'] = 0xFCD2;\n  t['noonjeemisolatedarabic'] = 0xFC4B;\n  t['noonmedialarabic'] = 0xFEE8;\n  t['noonmeeminitialarabic'] = 0xFCD5;\n  t['noonmeemisolatedarabic'] = 0xFC4E;\n  t['noonnoonfinalarabic'] = 0xFC8D;\n  t['notcontains'] = 0x220C;\n  t['notelement'] = 0x2209;\n  t['notelementof'] = 0x2209;\n  t['notequal'] = 0x2260;\n  t['notgreater'] = 0x226F;\n  t['notgreaternorequal'] = 0x2271;\n  t['notgreaternorless'] = 0x2279;\n  t['notidentical'] = 0x2262;\n  t['notless'] = 0x226E;\n  t['notlessnorequal'] = 0x2270;\n  t['notparallel'] = 0x2226;\n  t['notprecedes'] = 0x2280;\n  t['notsubset'] = 0x2284;\n  t['notsucceeds'] = 0x2281;\n  t['notsuperset'] = 0x2285;\n  t['nowarmenian'] = 0x0576;\n  t['nparen'] = 0x24A9;\n  t['nssquare'] = 0x33B1;\n  t['nsuperior'] = 0x207F;\n  t['ntilde'] = 0x00F1;\n  t['nu'] = 0x03BD;\n  t['nuhiragana'] = 0x306C;\n  t['nukatakana'] = 0x30CC;\n  t['nukatakanahalfwidth'] = 0xFF87;\n  t['nuktabengali'] = 0x09BC;\n  t['nuktadeva'] = 0x093C;\n  t['nuktagujarati'] = 0x0ABC;\n  t['nuktagurmukhi'] = 0x0A3C;\n  t['numbersign'] = 0x0023;\n  t['numbersignmonospace'] = 0xFF03;\n  t['numbersignsmall'] = 0xFE5F;\n  t['numeralsigngreek'] = 0x0374;\n  t['numeralsignlowergreek'] = 0x0375;\n  t['numero'] = 0x2116;\n  t['nun'] = 0x05E0;\n  t['nundagesh'] = 0xFB40;\n  t['nundageshhebrew'] = 0xFB40;\n  t['nunhebrew'] = 0x05E0;\n  t['nvsquare'] = 0x33B5;\n  t['nwsquare'] = 0x33BB;\n  t['nyabengali'] = 0x099E;\n  t['nyadeva'] = 0x091E;\n  t['nyagujarati'] = 0x0A9E;\n  t['nyagurmukhi'] = 0x0A1E;\n  t['o'] = 0x006F;\n  t['oacute'] = 0x00F3;\n  t['oangthai'] = 0x0E2D;\n  t['obarred'] = 0x0275;\n  t['obarredcyrillic'] = 0x04E9;\n  t['obarreddieresiscyrillic'] = 0x04EB;\n  t['obengali'] = 0x0993;\n  t['obopomofo'] = 0x311B;\n  t['obreve'] = 0x014F;\n  t['ocandradeva'] = 0x0911;\n  t['ocandragujarati'] = 0x0A91;\n  t['ocandravowelsigndeva'] = 0x0949;\n  t['ocandravowelsigngujarati'] = 0x0AC9;\n  t['ocaron'] = 0x01D2;\n  t['ocircle'] = 0x24DE;\n  t['ocircumflex'] = 0x00F4;\n  t['ocircumflexacute'] = 0x1ED1;\n  t['ocircumflexdotbelow'] = 0x1ED9;\n  t['ocircumflexgrave'] = 0x1ED3;\n  t['ocircumflexhookabove'] = 0x1ED5;\n  t['ocircumflextilde'] = 0x1ED7;\n  t['ocyrillic'] = 0x043E;\n  t['odblacute'] = 0x0151;\n  t['odblgrave'] = 0x020D;\n  t['odeva'] = 0x0913;\n  t['odieresis'] = 0x00F6;\n  t['odieresiscyrillic'] = 0x04E7;\n  t['odotbelow'] = 0x1ECD;\n  t['oe'] = 0x0153;\n  t['oekorean'] = 0x315A;\n  t['ogonek'] = 0x02DB;\n  t['ogonekcmb'] = 0x0328;\n  t['ograve'] = 0x00F2;\n  t['ogujarati'] = 0x0A93;\n  t['oharmenian'] = 0x0585;\n  t['ohiragana'] = 0x304A;\n  t['ohookabove'] = 0x1ECF;\n  t['ohorn'] = 0x01A1;\n  t['ohornacute'] = 0x1EDB;\n  t['ohorndotbelow'] = 0x1EE3;\n  t['ohorngrave'] = 0x1EDD;\n  t['ohornhookabove'] = 0x1EDF;\n  t['ohorntilde'] = 0x1EE1;\n  t['ohungarumlaut'] = 0x0151;\n  t['oi'] = 0x01A3;\n  t['oinvertedbreve'] = 0x020F;\n  t['okatakana'] = 0x30AA;\n  t['okatakanahalfwidth'] = 0xFF75;\n  t['okorean'] = 0x3157;\n  t['olehebrew'] = 0x05AB;\n  t['omacron'] = 0x014D;\n  t['omacronacute'] = 0x1E53;\n  t['omacrongrave'] = 0x1E51;\n  t['omdeva'] = 0x0950;\n  t['omega'] = 0x03C9;\n  t['omega1'] = 0x03D6;\n  t['omegacyrillic'] = 0x0461;\n  t['omegalatinclosed'] = 0x0277;\n  t['omegaroundcyrillic'] = 0x047B;\n  t['omegatitlocyrillic'] = 0x047D;\n  t['omegatonos'] = 0x03CE;\n  t['omgujarati'] = 0x0AD0;\n  t['omicron'] = 0x03BF;\n  t['omicrontonos'] = 0x03CC;\n  t['omonospace'] = 0xFF4F;\n  t['one'] = 0x0031;\n  t['onearabic'] = 0x0661;\n  t['onebengali'] = 0x09E7;\n  t['onecircle'] = 0x2460;\n  t['onecircleinversesansserif'] = 0x278A;\n  t['onedeva'] = 0x0967;\n  t['onedotenleader'] = 0x2024;\n  t['oneeighth'] = 0x215B;\n  t['onefitted'] = 0xF6DC;\n  t['onegujarati'] = 0x0AE7;\n  t['onegurmukhi'] = 0x0A67;\n  t['onehackarabic'] = 0x0661;\n  t['onehalf'] = 0x00BD;\n  t['onehangzhou'] = 0x3021;\n  t['oneideographicparen'] = 0x3220;\n  t['oneinferior'] = 0x2081;\n  t['onemonospace'] = 0xFF11;\n  t['onenumeratorbengali'] = 0x09F4;\n  t['oneoldstyle'] = 0xF731;\n  t['oneparen'] = 0x2474;\n  t['oneperiod'] = 0x2488;\n  t['onepersian'] = 0x06F1;\n  t['onequarter'] = 0x00BC;\n  t['oneroman'] = 0x2170;\n  t['onesuperior'] = 0x00B9;\n  t['onethai'] = 0x0E51;\n  t['onethird'] = 0x2153;\n  t['oogonek'] = 0x01EB;\n  t['oogonekmacron'] = 0x01ED;\n  t['oogurmukhi'] = 0x0A13;\n  t['oomatragurmukhi'] = 0x0A4B;\n  t['oopen'] = 0x0254;\n  t['oparen'] = 0x24AA;\n  t['openbullet'] = 0x25E6;\n  t['option'] = 0x2325;\n  t['ordfeminine'] = 0x00AA;\n  t['ordmasculine'] = 0x00BA;\n  t['orthogonal'] = 0x221F;\n  t['oshortdeva'] = 0x0912;\n  t['oshortvowelsigndeva'] = 0x094A;\n  t['oslash'] = 0x00F8;\n  t['oslashacute'] = 0x01FF;\n  t['osmallhiragana'] = 0x3049;\n  t['osmallkatakana'] = 0x30A9;\n  t['osmallkatakanahalfwidth'] = 0xFF6B;\n  t['ostrokeacute'] = 0x01FF;\n  t['osuperior'] = 0xF6F0;\n  t['otcyrillic'] = 0x047F;\n  t['otilde'] = 0x00F5;\n  t['otildeacute'] = 0x1E4D;\n  t['otildedieresis'] = 0x1E4F;\n  t['oubopomofo'] = 0x3121;\n  t['overline'] = 0x203E;\n  t['overlinecenterline'] = 0xFE4A;\n  t['overlinecmb'] = 0x0305;\n  t['overlinedashed'] = 0xFE49;\n  t['overlinedblwavy'] = 0xFE4C;\n  t['overlinewavy'] = 0xFE4B;\n  t['overscore'] = 0x00AF;\n  t['ovowelsignbengali'] = 0x09CB;\n  t['ovowelsigndeva'] = 0x094B;\n  t['ovowelsigngujarati'] = 0x0ACB;\n  t['p'] = 0x0070;\n  t['paampssquare'] = 0x3380;\n  t['paasentosquare'] = 0x332B;\n  t['pabengali'] = 0x09AA;\n  t['pacute'] = 0x1E55;\n  t['padeva'] = 0x092A;\n  t['pagedown'] = 0x21DF;\n  t['pageup'] = 0x21DE;\n  t['pagujarati'] = 0x0AAA;\n  t['pagurmukhi'] = 0x0A2A;\n  t['pahiragana'] = 0x3071;\n  t['paiyannoithai'] = 0x0E2F;\n  t['pakatakana'] = 0x30D1;\n  t['palatalizationcyrilliccmb'] = 0x0484;\n  t['palochkacyrillic'] = 0x04C0;\n  t['pansioskorean'] = 0x317F;\n  t['paragraph'] = 0x00B6;\n  t['parallel'] = 0x2225;\n  t['parenleft'] = 0x0028;\n  t['parenleftaltonearabic'] = 0xFD3E;\n  t['parenleftbt'] = 0xF8ED;\n  t['parenleftex'] = 0xF8EC;\n  t['parenleftinferior'] = 0x208D;\n  t['parenleftmonospace'] = 0xFF08;\n  t['parenleftsmall'] = 0xFE59;\n  t['parenleftsuperior'] = 0x207D;\n  t['parenlefttp'] = 0xF8EB;\n  t['parenleftvertical'] = 0xFE35;\n  t['parenright'] = 0x0029;\n  t['parenrightaltonearabic'] = 0xFD3F;\n  t['parenrightbt'] = 0xF8F8;\n  t['parenrightex'] = 0xF8F7;\n  t['parenrightinferior'] = 0x208E;\n  t['parenrightmonospace'] = 0xFF09;\n  t['parenrightsmall'] = 0xFE5A;\n  t['parenrightsuperior'] = 0x207E;\n  t['parenrighttp'] = 0xF8F6;\n  t['parenrightvertical'] = 0xFE36;\n  t['partialdiff'] = 0x2202;\n  t['paseqhebrew'] = 0x05C0;\n  t['pashtahebrew'] = 0x0599;\n  t['pasquare'] = 0x33A9;\n  t['patah'] = 0x05B7;\n  t['patah11'] = 0x05B7;\n  t['patah1d'] = 0x05B7;\n  t['patah2a'] = 0x05B7;\n  t['patahhebrew'] = 0x05B7;\n  t['patahnarrowhebrew'] = 0x05B7;\n  t['patahquarterhebrew'] = 0x05B7;\n  t['patahwidehebrew'] = 0x05B7;\n  t['pazerhebrew'] = 0x05A1;\n  t['pbopomofo'] = 0x3106;\n  t['pcircle'] = 0x24DF;\n  t['pdotaccent'] = 0x1E57;\n  t['pe'] = 0x05E4;\n  t['pecyrillic'] = 0x043F;\n  t['pedagesh'] = 0xFB44;\n  t['pedageshhebrew'] = 0xFB44;\n  t['peezisquare'] = 0x333B;\n  t['pefinaldageshhebrew'] = 0xFB43;\n  t['peharabic'] = 0x067E;\n  t['peharmenian'] = 0x057A;\n  t['pehebrew'] = 0x05E4;\n  t['pehfinalarabic'] = 0xFB57;\n  t['pehinitialarabic'] = 0xFB58;\n  t['pehiragana'] = 0x307A;\n  t['pehmedialarabic'] = 0xFB59;\n  t['pekatakana'] = 0x30DA;\n  t['pemiddlehookcyrillic'] = 0x04A7;\n  t['perafehebrew'] = 0xFB4E;\n  t['percent'] = 0x0025;\n  t['percentarabic'] = 0x066A;\n  t['percentmonospace'] = 0xFF05;\n  t['percentsmall'] = 0xFE6A;\n  t['period'] = 0x002E;\n  t['periodarmenian'] = 0x0589;\n  t['periodcentered'] = 0x00B7;\n  t['periodhalfwidth'] = 0xFF61;\n  t['periodinferior'] = 0xF6E7;\n  t['periodmonospace'] = 0xFF0E;\n  t['periodsmall'] = 0xFE52;\n  t['periodsuperior'] = 0xF6E8;\n  t['perispomenigreekcmb'] = 0x0342;\n  t['perpendicular'] = 0x22A5;\n  t['perthousand'] = 0x2030;\n  t['peseta'] = 0x20A7;\n  t['pfsquare'] = 0x338A;\n  t['phabengali'] = 0x09AB;\n  t['phadeva'] = 0x092B;\n  t['phagujarati'] = 0x0AAB;\n  t['phagurmukhi'] = 0x0A2B;\n  t['phi'] = 0x03C6;\n  t['phi1'] = 0x03D5;\n  t['phieuphacirclekorean'] = 0x327A;\n  t['phieuphaparenkorean'] = 0x321A;\n  t['phieuphcirclekorean'] = 0x326C;\n  t['phieuphkorean'] = 0x314D;\n  t['phieuphparenkorean'] = 0x320C;\n  t['philatin'] = 0x0278;\n  t['phinthuthai'] = 0x0E3A;\n  t['phisymbolgreek'] = 0x03D5;\n  t['phook'] = 0x01A5;\n  t['phophanthai'] = 0x0E1E;\n  t['phophungthai'] = 0x0E1C;\n  t['phosamphaothai'] = 0x0E20;\n  t['pi'] = 0x03C0;\n  t['pieupacirclekorean'] = 0x3273;\n  t['pieupaparenkorean'] = 0x3213;\n  t['pieupcieuckorean'] = 0x3176;\n  t['pieupcirclekorean'] = 0x3265;\n  t['pieupkiyeokkorean'] = 0x3172;\n  t['pieupkorean'] = 0x3142;\n  t['pieupparenkorean'] = 0x3205;\n  t['pieupsioskiyeokkorean'] = 0x3174;\n  t['pieupsioskorean'] = 0x3144;\n  t['pieupsiostikeutkorean'] = 0x3175;\n  t['pieupthieuthkorean'] = 0x3177;\n  t['pieuptikeutkorean'] = 0x3173;\n  t['pihiragana'] = 0x3074;\n  t['pikatakana'] = 0x30D4;\n  t['pisymbolgreek'] = 0x03D6;\n  t['piwrarmenian'] = 0x0583;\n  t['plus'] = 0x002B;\n  t['plusbelowcmb'] = 0x031F;\n  t['pluscircle'] = 0x2295;\n  t['plusminus'] = 0x00B1;\n  t['plusmod'] = 0x02D6;\n  t['plusmonospace'] = 0xFF0B;\n  t['plussmall'] = 0xFE62;\n  t['plussuperior'] = 0x207A;\n  t['pmonospace'] = 0xFF50;\n  t['pmsquare'] = 0x33D8;\n  t['pohiragana'] = 0x307D;\n  t['pointingindexdownwhite'] = 0x261F;\n  t['pointingindexleftwhite'] = 0x261C;\n  t['pointingindexrightwhite'] = 0x261E;\n  t['pointingindexupwhite'] = 0x261D;\n  t['pokatakana'] = 0x30DD;\n  t['poplathai'] = 0x0E1B;\n  t['postalmark'] = 0x3012;\n  t['postalmarkface'] = 0x3020;\n  t['pparen'] = 0x24AB;\n  t['precedes'] = 0x227A;\n  t['prescription'] = 0x211E;\n  t['primemod'] = 0x02B9;\n  t['primereversed'] = 0x2035;\n  t['product'] = 0x220F;\n  t['projective'] = 0x2305;\n  t['prolongedkana'] = 0x30FC;\n  t['propellor'] = 0x2318;\n  t['propersubset'] = 0x2282;\n  t['propersuperset'] = 0x2283;\n  t['proportion'] = 0x2237;\n  t['proportional'] = 0x221D;\n  t['psi'] = 0x03C8;\n  t['psicyrillic'] = 0x0471;\n  t['psilipneumatacyrilliccmb'] = 0x0486;\n  t['pssquare'] = 0x33B0;\n  t['puhiragana'] = 0x3077;\n  t['pukatakana'] = 0x30D7;\n  t['pvsquare'] = 0x33B4;\n  t['pwsquare'] = 0x33BA;\n  t['q'] = 0x0071;\n  t['qadeva'] = 0x0958;\n  t['qadmahebrew'] = 0x05A8;\n  t['qafarabic'] = 0x0642;\n  t['qaffinalarabic'] = 0xFED6;\n  t['qafinitialarabic'] = 0xFED7;\n  t['qafmedialarabic'] = 0xFED8;\n  t['qamats'] = 0x05B8;\n  t['qamats10'] = 0x05B8;\n  t['qamats1a'] = 0x05B8;\n  t['qamats1c'] = 0x05B8;\n  t['qamats27'] = 0x05B8;\n  t['qamats29'] = 0x05B8;\n  t['qamats33'] = 0x05B8;\n  t['qamatsde'] = 0x05B8;\n  t['qamatshebrew'] = 0x05B8;\n  t['qamatsnarrowhebrew'] = 0x05B8;\n  t['qamatsqatanhebrew'] = 0x05B8;\n  t['qamatsqatannarrowhebrew'] = 0x05B8;\n  t['qamatsqatanquarterhebrew'] = 0x05B8;\n  t['qamatsqatanwidehebrew'] = 0x05B8;\n  t['qamatsquarterhebrew'] = 0x05B8;\n  t['qamatswidehebrew'] = 0x05B8;\n  t['qarneyparahebrew'] = 0x059F;\n  t['qbopomofo'] = 0x3111;\n  t['qcircle'] = 0x24E0;\n  t['qhook'] = 0x02A0;\n  t['qmonospace'] = 0xFF51;\n  t['qof'] = 0x05E7;\n  t['qofdagesh'] = 0xFB47;\n  t['qofdageshhebrew'] = 0xFB47;\n  t['qofhebrew'] = 0x05E7;\n  t['qparen'] = 0x24AC;\n  t['quarternote'] = 0x2669;\n  t['qubuts'] = 0x05BB;\n  t['qubuts18'] = 0x05BB;\n  t['qubuts25'] = 0x05BB;\n  t['qubuts31'] = 0x05BB;\n  t['qubutshebrew'] = 0x05BB;\n  t['qubutsnarrowhebrew'] = 0x05BB;\n  t['qubutsquarterhebrew'] = 0x05BB;\n  t['qubutswidehebrew'] = 0x05BB;\n  t['question'] = 0x003F;\n  t['questionarabic'] = 0x061F;\n  t['questionarmenian'] = 0x055E;\n  t['questiondown'] = 0x00BF;\n  t['questiondownsmall'] = 0xF7BF;\n  t['questiongreek'] = 0x037E;\n  t['questionmonospace'] = 0xFF1F;\n  t['questionsmall'] = 0xF73F;\n  t['quotedbl'] = 0x0022;\n  t['quotedblbase'] = 0x201E;\n  t['quotedblleft'] = 0x201C;\n  t['quotedblmonospace'] = 0xFF02;\n  t['quotedblprime'] = 0x301E;\n  t['quotedblprimereversed'] = 0x301D;\n  t['quotedblright'] = 0x201D;\n  t['quoteleft'] = 0x2018;\n  t['quoteleftreversed'] = 0x201B;\n  t['quotereversed'] = 0x201B;\n  t['quoteright'] = 0x2019;\n  t['quoterightn'] = 0x0149;\n  t['quotesinglbase'] = 0x201A;\n  t['quotesingle'] = 0x0027;\n  t['quotesinglemonospace'] = 0xFF07;\n  t['r'] = 0x0072;\n  t['raarmenian'] = 0x057C;\n  t['rabengali'] = 0x09B0;\n  t['racute'] = 0x0155;\n  t['radeva'] = 0x0930;\n  t['radical'] = 0x221A;\n  t['radicalex'] = 0xF8E5;\n  t['radoverssquare'] = 0x33AE;\n  t['radoverssquaredsquare'] = 0x33AF;\n  t['radsquare'] = 0x33AD;\n  t['rafe'] = 0x05BF;\n  t['rafehebrew'] = 0x05BF;\n  t['ragujarati'] = 0x0AB0;\n  t['ragurmukhi'] = 0x0A30;\n  t['rahiragana'] = 0x3089;\n  t['rakatakana'] = 0x30E9;\n  t['rakatakanahalfwidth'] = 0xFF97;\n  t['ralowerdiagonalbengali'] = 0x09F1;\n  t['ramiddlediagonalbengali'] = 0x09F0;\n  t['ramshorn'] = 0x0264;\n  t['ratio'] = 0x2236;\n  t['rbopomofo'] = 0x3116;\n  t['rcaron'] = 0x0159;\n  t['rcedilla'] = 0x0157;\n  t['rcircle'] = 0x24E1;\n  t['rcommaaccent'] = 0x0157;\n  t['rdblgrave'] = 0x0211;\n  t['rdotaccent'] = 0x1E59;\n  t['rdotbelow'] = 0x1E5B;\n  t['rdotbelowmacron'] = 0x1E5D;\n  t['referencemark'] = 0x203B;\n  t['reflexsubset'] = 0x2286;\n  t['reflexsuperset'] = 0x2287;\n  t['registered'] = 0x00AE;\n  t['registersans'] = 0xF8E8;\n  t['registerserif'] = 0xF6DA;\n  t['reharabic'] = 0x0631;\n  t['reharmenian'] = 0x0580;\n  t['rehfinalarabic'] = 0xFEAE;\n  t['rehiragana'] = 0x308C;\n  t['rekatakana'] = 0x30EC;\n  t['rekatakanahalfwidth'] = 0xFF9A;\n  t['resh'] = 0x05E8;\n  t['reshdageshhebrew'] = 0xFB48;\n  t['reshhebrew'] = 0x05E8;\n  t['reversedtilde'] = 0x223D;\n  t['reviahebrew'] = 0x0597;\n  t['reviamugrashhebrew'] = 0x0597;\n  t['revlogicalnot'] = 0x2310;\n  t['rfishhook'] = 0x027E;\n  t['rfishhookreversed'] = 0x027F;\n  t['rhabengali'] = 0x09DD;\n  t['rhadeva'] = 0x095D;\n  t['rho'] = 0x03C1;\n  t['rhook'] = 0x027D;\n  t['rhookturned'] = 0x027B;\n  t['rhookturnedsuperior'] = 0x02B5;\n  t['rhosymbolgreek'] = 0x03F1;\n  t['rhotichookmod'] = 0x02DE;\n  t['rieulacirclekorean'] = 0x3271;\n  t['rieulaparenkorean'] = 0x3211;\n  t['rieulcirclekorean'] = 0x3263;\n  t['rieulhieuhkorean'] = 0x3140;\n  t['rieulkiyeokkorean'] = 0x313A;\n  t['rieulkiyeoksioskorean'] = 0x3169;\n  t['rieulkorean'] = 0x3139;\n  t['rieulmieumkorean'] = 0x313B;\n  t['rieulpansioskorean'] = 0x316C;\n  t['rieulparenkorean'] = 0x3203;\n  t['rieulphieuphkorean'] = 0x313F;\n  t['rieulpieupkorean'] = 0x313C;\n  t['rieulpieupsioskorean'] = 0x316B;\n  t['rieulsioskorean'] = 0x313D;\n  t['rieulthieuthkorean'] = 0x313E;\n  t['rieultikeutkorean'] = 0x316A;\n  t['rieulyeorinhieuhkorean'] = 0x316D;\n  t['rightangle'] = 0x221F;\n  t['righttackbelowcmb'] = 0x0319;\n  t['righttriangle'] = 0x22BF;\n  t['rihiragana'] = 0x308A;\n  t['rikatakana'] = 0x30EA;\n  t['rikatakanahalfwidth'] = 0xFF98;\n  t['ring'] = 0x02DA;\n  t['ringbelowcmb'] = 0x0325;\n  t['ringcmb'] = 0x030A;\n  t['ringhalfleft'] = 0x02BF;\n  t['ringhalfleftarmenian'] = 0x0559;\n  t['ringhalfleftbelowcmb'] = 0x031C;\n  t['ringhalfleftcentered'] = 0x02D3;\n  t['ringhalfright'] = 0x02BE;\n  t['ringhalfrightbelowcmb'] = 0x0339;\n  t['ringhalfrightcentered'] = 0x02D2;\n  t['rinvertedbreve'] = 0x0213;\n  t['rittorusquare'] = 0x3351;\n  t['rlinebelow'] = 0x1E5F;\n  t['rlongleg'] = 0x027C;\n  t['rlonglegturned'] = 0x027A;\n  t['rmonospace'] = 0xFF52;\n  t['rohiragana'] = 0x308D;\n  t['rokatakana'] = 0x30ED;\n  t['rokatakanahalfwidth'] = 0xFF9B;\n  t['roruathai'] = 0x0E23;\n  t['rparen'] = 0x24AD;\n  t['rrabengali'] = 0x09DC;\n  t['rradeva'] = 0x0931;\n  t['rragurmukhi'] = 0x0A5C;\n  t['rreharabic'] = 0x0691;\n  t['rrehfinalarabic'] = 0xFB8D;\n  t['rrvocalicbengali'] = 0x09E0;\n  t['rrvocalicdeva'] = 0x0960;\n  t['rrvocalicgujarati'] = 0x0AE0;\n  t['rrvocalicvowelsignbengali'] = 0x09C4;\n  t['rrvocalicvowelsigndeva'] = 0x0944;\n  t['rrvocalicvowelsigngujarati'] = 0x0AC4;\n  t['rsuperior'] = 0xF6F1;\n  t['rtblock'] = 0x2590;\n  t['rturned'] = 0x0279;\n  t['rturnedsuperior'] = 0x02B4;\n  t['ruhiragana'] = 0x308B;\n  t['rukatakana'] = 0x30EB;\n  t['rukatakanahalfwidth'] = 0xFF99;\n  t['rupeemarkbengali'] = 0x09F2;\n  t['rupeesignbengali'] = 0x09F3;\n  t['rupiah'] = 0xF6DD;\n  t['ruthai'] = 0x0E24;\n  t['rvocalicbengali'] = 0x098B;\n  t['rvocalicdeva'] = 0x090B;\n  t['rvocalicgujarati'] = 0x0A8B;\n  t['rvocalicvowelsignbengali'] = 0x09C3;\n  t['rvocalicvowelsigndeva'] = 0x0943;\n  t['rvocalicvowelsigngujarati'] = 0x0AC3;\n  t['s'] = 0x0073;\n  t['sabengali'] = 0x09B8;\n  t['sacute'] = 0x015B;\n  t['sacutedotaccent'] = 0x1E65;\n  t['sadarabic'] = 0x0635;\n  t['sadeva'] = 0x0938;\n  t['sadfinalarabic'] = 0xFEBA;\n  t['sadinitialarabic'] = 0xFEBB;\n  t['sadmedialarabic'] = 0xFEBC;\n  t['sagujarati'] = 0x0AB8;\n  t['sagurmukhi'] = 0x0A38;\n  t['sahiragana'] = 0x3055;\n  t['sakatakana'] = 0x30B5;\n  t['sakatakanahalfwidth'] = 0xFF7B;\n  t['sallallahoualayhewasallamarabic'] = 0xFDFA;\n  t['samekh'] = 0x05E1;\n  t['samekhdagesh'] = 0xFB41;\n  t['samekhdageshhebrew'] = 0xFB41;\n  t['samekhhebrew'] = 0x05E1;\n  t['saraaathai'] = 0x0E32;\n  t['saraaethai'] = 0x0E41;\n  t['saraaimaimalaithai'] = 0x0E44;\n  t['saraaimaimuanthai'] = 0x0E43;\n  t['saraamthai'] = 0x0E33;\n  t['saraathai'] = 0x0E30;\n  t['saraethai'] = 0x0E40;\n  t['saraiileftthai'] = 0xF886;\n  t['saraiithai'] = 0x0E35;\n  t['saraileftthai'] = 0xF885;\n  t['saraithai'] = 0x0E34;\n  t['saraothai'] = 0x0E42;\n  t['saraueeleftthai'] = 0xF888;\n  t['saraueethai'] = 0x0E37;\n  t['saraueleftthai'] = 0xF887;\n  t['sarauethai'] = 0x0E36;\n  t['sarauthai'] = 0x0E38;\n  t['sarauuthai'] = 0x0E39;\n  t['sbopomofo'] = 0x3119;\n  t['scaron'] = 0x0161;\n  t['scarondotaccent'] = 0x1E67;\n  t['scedilla'] = 0x015F;\n  t['schwa'] = 0x0259;\n  t['schwacyrillic'] = 0x04D9;\n  t['schwadieresiscyrillic'] = 0x04DB;\n  t['schwahook'] = 0x025A;\n  t['scircle'] = 0x24E2;\n  t['scircumflex'] = 0x015D;\n  t['scommaaccent'] = 0x0219;\n  t['sdotaccent'] = 0x1E61;\n  t['sdotbelow'] = 0x1E63;\n  t['sdotbelowdotaccent'] = 0x1E69;\n  t['seagullbelowcmb'] = 0x033C;\n  t['second'] = 0x2033;\n  t['secondtonechinese'] = 0x02CA;\n  t['section'] = 0x00A7;\n  t['seenarabic'] = 0x0633;\n  t['seenfinalarabic'] = 0xFEB2;\n  t['seeninitialarabic'] = 0xFEB3;\n  t['seenmedialarabic'] = 0xFEB4;\n  t['segol'] = 0x05B6;\n  t['segol13'] = 0x05B6;\n  t['segol1f'] = 0x05B6;\n  t['segol2c'] = 0x05B6;\n  t['segolhebrew'] = 0x05B6;\n  t['segolnarrowhebrew'] = 0x05B6;\n  t['segolquarterhebrew'] = 0x05B6;\n  t['segoltahebrew'] = 0x0592;\n  t['segolwidehebrew'] = 0x05B6;\n  t['seharmenian'] = 0x057D;\n  t['sehiragana'] = 0x305B;\n  t['sekatakana'] = 0x30BB;\n  t['sekatakanahalfwidth'] = 0xFF7E;\n  t['semicolon'] = 0x003B;\n  t['semicolonarabic'] = 0x061B;\n  t['semicolonmonospace'] = 0xFF1B;\n  t['semicolonsmall'] = 0xFE54;\n  t['semivoicedmarkkana'] = 0x309C;\n  t['semivoicedmarkkanahalfwidth'] = 0xFF9F;\n  t['sentisquare'] = 0x3322;\n  t['sentosquare'] = 0x3323;\n  t['seven'] = 0x0037;\n  t['sevenarabic'] = 0x0667;\n  t['sevenbengali'] = 0x09ED;\n  t['sevencircle'] = 0x2466;\n  t['sevencircleinversesansserif'] = 0x2790;\n  t['sevendeva'] = 0x096D;\n  t['seveneighths'] = 0x215E;\n  t['sevengujarati'] = 0x0AED;\n  t['sevengurmukhi'] = 0x0A6D;\n  t['sevenhackarabic'] = 0x0667;\n  t['sevenhangzhou'] = 0x3027;\n  t['sevenideographicparen'] = 0x3226;\n  t['seveninferior'] = 0x2087;\n  t['sevenmonospace'] = 0xFF17;\n  t['sevenoldstyle'] = 0xF737;\n  t['sevenparen'] = 0x247A;\n  t['sevenperiod'] = 0x248E;\n  t['sevenpersian'] = 0x06F7;\n  t['sevenroman'] = 0x2176;\n  t['sevensuperior'] = 0x2077;\n  t['seventeencircle'] = 0x2470;\n  t['seventeenparen'] = 0x2484;\n  t['seventeenperiod'] = 0x2498;\n  t['seventhai'] = 0x0E57;\n  t['sfthyphen'] = 0x00AD;\n  t['shaarmenian'] = 0x0577;\n  t['shabengali'] = 0x09B6;\n  t['shacyrillic'] = 0x0448;\n  t['shaddaarabic'] = 0x0651;\n  t['shaddadammaarabic'] = 0xFC61;\n  t['shaddadammatanarabic'] = 0xFC5E;\n  t['shaddafathaarabic'] = 0xFC60;\n  t['shaddakasraarabic'] = 0xFC62;\n  t['shaddakasratanarabic'] = 0xFC5F;\n  t['shade'] = 0x2592;\n  t['shadedark'] = 0x2593;\n  t['shadelight'] = 0x2591;\n  t['shademedium'] = 0x2592;\n  t['shadeva'] = 0x0936;\n  t['shagujarati'] = 0x0AB6;\n  t['shagurmukhi'] = 0x0A36;\n  t['shalshelethebrew'] = 0x0593;\n  t['shbopomofo'] = 0x3115;\n  t['shchacyrillic'] = 0x0449;\n  t['sheenarabic'] = 0x0634;\n  t['sheenfinalarabic'] = 0xFEB6;\n  t['sheeninitialarabic'] = 0xFEB7;\n  t['sheenmedialarabic'] = 0xFEB8;\n  t['sheicoptic'] = 0x03E3;\n  t['sheqel'] = 0x20AA;\n  t['sheqelhebrew'] = 0x20AA;\n  t['sheva'] = 0x05B0;\n  t['sheva115'] = 0x05B0;\n  t['sheva15'] = 0x05B0;\n  t['sheva22'] = 0x05B0;\n  t['sheva2e'] = 0x05B0;\n  t['shevahebrew'] = 0x05B0;\n  t['shevanarrowhebrew'] = 0x05B0;\n  t['shevaquarterhebrew'] = 0x05B0;\n  t['shevawidehebrew'] = 0x05B0;\n  t['shhacyrillic'] = 0x04BB;\n  t['shimacoptic'] = 0x03ED;\n  t['shin'] = 0x05E9;\n  t['shindagesh'] = 0xFB49;\n  t['shindageshhebrew'] = 0xFB49;\n  t['shindageshshindot'] = 0xFB2C;\n  t['shindageshshindothebrew'] = 0xFB2C;\n  t['shindageshsindot'] = 0xFB2D;\n  t['shindageshsindothebrew'] = 0xFB2D;\n  t['shindothebrew'] = 0x05C1;\n  t['shinhebrew'] = 0x05E9;\n  t['shinshindot'] = 0xFB2A;\n  t['shinshindothebrew'] = 0xFB2A;\n  t['shinsindot'] = 0xFB2B;\n  t['shinsindothebrew'] = 0xFB2B;\n  t['shook'] = 0x0282;\n  t['sigma'] = 0x03C3;\n  t['sigma1'] = 0x03C2;\n  t['sigmafinal'] = 0x03C2;\n  t['sigmalunatesymbolgreek'] = 0x03F2;\n  t['sihiragana'] = 0x3057;\n  t['sikatakana'] = 0x30B7;\n  t['sikatakanahalfwidth'] = 0xFF7C;\n  t['siluqhebrew'] = 0x05BD;\n  t['siluqlefthebrew'] = 0x05BD;\n  t['similar'] = 0x223C;\n  t['sindothebrew'] = 0x05C2;\n  t['siosacirclekorean'] = 0x3274;\n  t['siosaparenkorean'] = 0x3214;\n  t['sioscieuckorean'] = 0x317E;\n  t['sioscirclekorean'] = 0x3266;\n  t['sioskiyeokkorean'] = 0x317A;\n  t['sioskorean'] = 0x3145;\n  t['siosnieunkorean'] = 0x317B;\n  t['siosparenkorean'] = 0x3206;\n  t['siospieupkorean'] = 0x317D;\n  t['siostikeutkorean'] = 0x317C;\n  t['six'] = 0x0036;\n  t['sixarabic'] = 0x0666;\n  t['sixbengali'] = 0x09EC;\n  t['sixcircle'] = 0x2465;\n  t['sixcircleinversesansserif'] = 0x278F;\n  t['sixdeva'] = 0x096C;\n  t['sixgujarati'] = 0x0AEC;\n  t['sixgurmukhi'] = 0x0A6C;\n  t['sixhackarabic'] = 0x0666;\n  t['sixhangzhou'] = 0x3026;\n  t['sixideographicparen'] = 0x3225;\n  t['sixinferior'] = 0x2086;\n  t['sixmonospace'] = 0xFF16;\n  t['sixoldstyle'] = 0xF736;\n  t['sixparen'] = 0x2479;\n  t['sixperiod'] = 0x248D;\n  t['sixpersian'] = 0x06F6;\n  t['sixroman'] = 0x2175;\n  t['sixsuperior'] = 0x2076;\n  t['sixteencircle'] = 0x246F;\n  t['sixteencurrencydenominatorbengali'] = 0x09F9;\n  t['sixteenparen'] = 0x2483;\n  t['sixteenperiod'] = 0x2497;\n  t['sixthai'] = 0x0E56;\n  t['slash'] = 0x002F;\n  t['slashmonospace'] = 0xFF0F;\n  t['slong'] = 0x017F;\n  t['slongdotaccent'] = 0x1E9B;\n  t['smileface'] = 0x263A;\n  t['smonospace'] = 0xFF53;\n  t['sofpasuqhebrew'] = 0x05C3;\n  t['softhyphen'] = 0x00AD;\n  t['softsigncyrillic'] = 0x044C;\n  t['sohiragana'] = 0x305D;\n  t['sokatakana'] = 0x30BD;\n  t['sokatakanahalfwidth'] = 0xFF7F;\n  t['soliduslongoverlaycmb'] = 0x0338;\n  t['solidusshortoverlaycmb'] = 0x0337;\n  t['sorusithai'] = 0x0E29;\n  t['sosalathai'] = 0x0E28;\n  t['sosothai'] = 0x0E0B;\n  t['sosuathai'] = 0x0E2A;\n  t['space'] = 0x0020;\n  t['spacehackarabic'] = 0x0020;\n  t['spade'] = 0x2660;\n  t['spadesuitblack'] = 0x2660;\n  t['spadesuitwhite'] = 0x2664;\n  t['sparen'] = 0x24AE;\n  t['squarebelowcmb'] = 0x033B;\n  t['squarecc'] = 0x33C4;\n  t['squarecm'] = 0x339D;\n  t['squarediagonalcrosshatchfill'] = 0x25A9;\n  t['squarehorizontalfill'] = 0x25A4;\n  t['squarekg'] = 0x338F;\n  t['squarekm'] = 0x339E;\n  t['squarekmcapital'] = 0x33CE;\n  t['squareln'] = 0x33D1;\n  t['squarelog'] = 0x33D2;\n  t['squaremg'] = 0x338E;\n  t['squaremil'] = 0x33D5;\n  t['squaremm'] = 0x339C;\n  t['squaremsquared'] = 0x33A1;\n  t['squareorthogonalcrosshatchfill'] = 0x25A6;\n  t['squareupperlefttolowerrightfill'] = 0x25A7;\n  t['squareupperrighttolowerleftfill'] = 0x25A8;\n  t['squareverticalfill'] = 0x25A5;\n  t['squarewhitewithsmallblack'] = 0x25A3;\n  t['srsquare'] = 0x33DB;\n  t['ssabengali'] = 0x09B7;\n  t['ssadeva'] = 0x0937;\n  t['ssagujarati'] = 0x0AB7;\n  t['ssangcieuckorean'] = 0x3149;\n  t['ssanghieuhkorean'] = 0x3185;\n  t['ssangieungkorean'] = 0x3180;\n  t['ssangkiyeokkorean'] = 0x3132;\n  t['ssangnieunkorean'] = 0x3165;\n  t['ssangpieupkorean'] = 0x3143;\n  t['ssangsioskorean'] = 0x3146;\n  t['ssangtikeutkorean'] = 0x3138;\n  t['ssuperior'] = 0xF6F2;\n  t['sterling'] = 0x00A3;\n  t['sterlingmonospace'] = 0xFFE1;\n  t['strokelongoverlaycmb'] = 0x0336;\n  t['strokeshortoverlaycmb'] = 0x0335;\n  t['subset'] = 0x2282;\n  t['subsetnotequal'] = 0x228A;\n  t['subsetorequal'] = 0x2286;\n  t['succeeds'] = 0x227B;\n  t['suchthat'] = 0x220B;\n  t['suhiragana'] = 0x3059;\n  t['sukatakana'] = 0x30B9;\n  t['sukatakanahalfwidth'] = 0xFF7D;\n  t['sukunarabic'] = 0x0652;\n  t['summation'] = 0x2211;\n  t['sun'] = 0x263C;\n  t['superset'] = 0x2283;\n  t['supersetnotequal'] = 0x228B;\n  t['supersetorequal'] = 0x2287;\n  t['svsquare'] = 0x33DC;\n  t['syouwaerasquare'] = 0x337C;\n  t['t'] = 0x0074;\n  t['tabengali'] = 0x09A4;\n  t['tackdown'] = 0x22A4;\n  t['tackleft'] = 0x22A3;\n  t['tadeva'] = 0x0924;\n  t['tagujarati'] = 0x0AA4;\n  t['tagurmukhi'] = 0x0A24;\n  t['taharabic'] = 0x0637;\n  t['tahfinalarabic'] = 0xFEC2;\n  t['tahinitialarabic'] = 0xFEC3;\n  t['tahiragana'] = 0x305F;\n  t['tahmedialarabic'] = 0xFEC4;\n  t['taisyouerasquare'] = 0x337D;\n  t['takatakana'] = 0x30BF;\n  t['takatakanahalfwidth'] = 0xFF80;\n  t['tatweelarabic'] = 0x0640;\n  t['tau'] = 0x03C4;\n  t['tav'] = 0x05EA;\n  t['tavdages'] = 0xFB4A;\n  t['tavdagesh'] = 0xFB4A;\n  t['tavdageshhebrew'] = 0xFB4A;\n  t['tavhebrew'] = 0x05EA;\n  t['tbar'] = 0x0167;\n  t['tbopomofo'] = 0x310A;\n  t['tcaron'] = 0x0165;\n  t['tccurl'] = 0x02A8;\n  t['tcedilla'] = 0x0163;\n  t['tcheharabic'] = 0x0686;\n  t['tchehfinalarabic'] = 0xFB7B;\n  t['tchehinitialarabic'] = 0xFB7C;\n  t['tchehmedialarabic'] = 0xFB7D;\n  t['tcircle'] = 0x24E3;\n  t['tcircumflexbelow'] = 0x1E71;\n  t['tcommaaccent'] = 0x0163;\n  t['tdieresis'] = 0x1E97;\n  t['tdotaccent'] = 0x1E6B;\n  t['tdotbelow'] = 0x1E6D;\n  t['tecyrillic'] = 0x0442;\n  t['tedescendercyrillic'] = 0x04AD;\n  t['teharabic'] = 0x062A;\n  t['tehfinalarabic'] = 0xFE96;\n  t['tehhahinitialarabic'] = 0xFCA2;\n  t['tehhahisolatedarabic'] = 0xFC0C;\n  t['tehinitialarabic'] = 0xFE97;\n  t['tehiragana'] = 0x3066;\n  t['tehjeeminitialarabic'] = 0xFCA1;\n  t['tehjeemisolatedarabic'] = 0xFC0B;\n  t['tehmarbutaarabic'] = 0x0629;\n  t['tehmarbutafinalarabic'] = 0xFE94;\n  t['tehmedialarabic'] = 0xFE98;\n  t['tehmeeminitialarabic'] = 0xFCA4;\n  t['tehmeemisolatedarabic'] = 0xFC0E;\n  t['tehnoonfinalarabic'] = 0xFC73;\n  t['tekatakana'] = 0x30C6;\n  t['tekatakanahalfwidth'] = 0xFF83;\n  t['telephone'] = 0x2121;\n  t['telephoneblack'] = 0x260E;\n  t['telishagedolahebrew'] = 0x05A0;\n  t['telishaqetanahebrew'] = 0x05A9;\n  t['tencircle'] = 0x2469;\n  t['tenideographicparen'] = 0x3229;\n  t['tenparen'] = 0x247D;\n  t['tenperiod'] = 0x2491;\n  t['tenroman'] = 0x2179;\n  t['tesh'] = 0x02A7;\n  t['tet'] = 0x05D8;\n  t['tetdagesh'] = 0xFB38;\n  t['tetdageshhebrew'] = 0xFB38;\n  t['tethebrew'] = 0x05D8;\n  t['tetsecyrillic'] = 0x04B5;\n  t['tevirhebrew'] = 0x059B;\n  t['tevirlefthebrew'] = 0x059B;\n  t['thabengali'] = 0x09A5;\n  t['thadeva'] = 0x0925;\n  t['thagujarati'] = 0x0AA5;\n  t['thagurmukhi'] = 0x0A25;\n  t['thalarabic'] = 0x0630;\n  t['thalfinalarabic'] = 0xFEAC;\n  t['thanthakhatlowleftthai'] = 0xF898;\n  t['thanthakhatlowrightthai'] = 0xF897;\n  t['thanthakhatthai'] = 0x0E4C;\n  t['thanthakhatupperleftthai'] = 0xF896;\n  t['theharabic'] = 0x062B;\n  t['thehfinalarabic'] = 0xFE9A;\n  t['thehinitialarabic'] = 0xFE9B;\n  t['thehmedialarabic'] = 0xFE9C;\n  t['thereexists'] = 0x2203;\n  t['therefore'] = 0x2234;\n  t['theta'] = 0x03B8;\n  t['theta1'] = 0x03D1;\n  t['thetasymbolgreek'] = 0x03D1;\n  t['thieuthacirclekorean'] = 0x3279;\n  t['thieuthaparenkorean'] = 0x3219;\n  t['thieuthcirclekorean'] = 0x326B;\n  t['thieuthkorean'] = 0x314C;\n  t['thieuthparenkorean'] = 0x320B;\n  t['thirteencircle'] = 0x246C;\n  t['thirteenparen'] = 0x2480;\n  t['thirteenperiod'] = 0x2494;\n  t['thonangmonthothai'] = 0x0E11;\n  t['thook'] = 0x01AD;\n  t['thophuthaothai'] = 0x0E12;\n  t['thorn'] = 0x00FE;\n  t['thothahanthai'] = 0x0E17;\n  t['thothanthai'] = 0x0E10;\n  t['thothongthai'] = 0x0E18;\n  t['thothungthai'] = 0x0E16;\n  t['thousandcyrillic'] = 0x0482;\n  t['thousandsseparatorarabic'] = 0x066C;\n  t['thousandsseparatorpersian'] = 0x066C;\n  t['three'] = 0x0033;\n  t['threearabic'] = 0x0663;\n  t['threebengali'] = 0x09E9;\n  t['threecircle'] = 0x2462;\n  t['threecircleinversesansserif'] = 0x278C;\n  t['threedeva'] = 0x0969;\n  t['threeeighths'] = 0x215C;\n  t['threegujarati'] = 0x0AE9;\n  t['threegurmukhi'] = 0x0A69;\n  t['threehackarabic'] = 0x0663;\n  t['threehangzhou'] = 0x3023;\n  t['threeideographicparen'] = 0x3222;\n  t['threeinferior'] = 0x2083;\n  t['threemonospace'] = 0xFF13;\n  t['threenumeratorbengali'] = 0x09F6;\n  t['threeoldstyle'] = 0xF733;\n  t['threeparen'] = 0x2476;\n  t['threeperiod'] = 0x248A;\n  t['threepersian'] = 0x06F3;\n  t['threequarters'] = 0x00BE;\n  t['threequartersemdash'] = 0xF6DE;\n  t['threeroman'] = 0x2172;\n  t['threesuperior'] = 0x00B3;\n  t['threethai'] = 0x0E53;\n  t['thzsquare'] = 0x3394;\n  t['tihiragana'] = 0x3061;\n  t['tikatakana'] = 0x30C1;\n  t['tikatakanahalfwidth'] = 0xFF81;\n  t['tikeutacirclekorean'] = 0x3270;\n  t['tikeutaparenkorean'] = 0x3210;\n  t['tikeutcirclekorean'] = 0x3262;\n  t['tikeutkorean'] = 0x3137;\n  t['tikeutparenkorean'] = 0x3202;\n  t['tilde'] = 0x02DC;\n  t['tildebelowcmb'] = 0x0330;\n  t['tildecmb'] = 0x0303;\n  t['tildecomb'] = 0x0303;\n  t['tildedoublecmb'] = 0x0360;\n  t['tildeoperator'] = 0x223C;\n  t['tildeoverlaycmb'] = 0x0334;\n  t['tildeverticalcmb'] = 0x033E;\n  t['timescircle'] = 0x2297;\n  t['tipehahebrew'] = 0x0596;\n  t['tipehalefthebrew'] = 0x0596;\n  t['tippigurmukhi'] = 0x0A70;\n  t['titlocyrilliccmb'] = 0x0483;\n  t['tiwnarmenian'] = 0x057F;\n  t['tlinebelow'] = 0x1E6F;\n  t['tmonospace'] = 0xFF54;\n  t['toarmenian'] = 0x0569;\n  t['tohiragana'] = 0x3068;\n  t['tokatakana'] = 0x30C8;\n  t['tokatakanahalfwidth'] = 0xFF84;\n  t['tonebarextrahighmod'] = 0x02E5;\n  t['tonebarextralowmod'] = 0x02E9;\n  t['tonebarhighmod'] = 0x02E6;\n  t['tonebarlowmod'] = 0x02E8;\n  t['tonebarmidmod'] = 0x02E7;\n  t['tonefive'] = 0x01BD;\n  t['tonesix'] = 0x0185;\n  t['tonetwo'] = 0x01A8;\n  t['tonos'] = 0x0384;\n  t['tonsquare'] = 0x3327;\n  t['topatakthai'] = 0x0E0F;\n  t['tortoiseshellbracketleft'] = 0x3014;\n  t['tortoiseshellbracketleftsmall'] = 0xFE5D;\n  t['tortoiseshellbracketleftvertical'] = 0xFE39;\n  t['tortoiseshellbracketright'] = 0x3015;\n  t['tortoiseshellbracketrightsmall'] = 0xFE5E;\n  t['tortoiseshellbracketrightvertical'] = 0xFE3A;\n  t['totaothai'] = 0x0E15;\n  t['tpalatalhook'] = 0x01AB;\n  t['tparen'] = 0x24AF;\n  t['trademark'] = 0x2122;\n  t['trademarksans'] = 0xF8EA;\n  t['trademarkserif'] = 0xF6DB;\n  t['tretroflexhook'] = 0x0288;\n  t['triagdn'] = 0x25BC;\n  t['triaglf'] = 0x25C4;\n  t['triagrt'] = 0x25BA;\n  t['triagup'] = 0x25B2;\n  t['ts'] = 0x02A6;\n  t['tsadi'] = 0x05E6;\n  t['tsadidagesh'] = 0xFB46;\n  t['tsadidageshhebrew'] = 0xFB46;\n  t['tsadihebrew'] = 0x05E6;\n  t['tsecyrillic'] = 0x0446;\n  t['tsere'] = 0x05B5;\n  t['tsere12'] = 0x05B5;\n  t['tsere1e'] = 0x05B5;\n  t['tsere2b'] = 0x05B5;\n  t['tserehebrew'] = 0x05B5;\n  t['tserenarrowhebrew'] = 0x05B5;\n  t['tserequarterhebrew'] = 0x05B5;\n  t['tserewidehebrew'] = 0x05B5;\n  t['tshecyrillic'] = 0x045B;\n  t['tsuperior'] = 0xF6F3;\n  t['ttabengali'] = 0x099F;\n  t['ttadeva'] = 0x091F;\n  t['ttagujarati'] = 0x0A9F;\n  t['ttagurmukhi'] = 0x0A1F;\n  t['tteharabic'] = 0x0679;\n  t['ttehfinalarabic'] = 0xFB67;\n  t['ttehinitialarabic'] = 0xFB68;\n  t['ttehmedialarabic'] = 0xFB69;\n  t['tthabengali'] = 0x09A0;\n  t['tthadeva'] = 0x0920;\n  t['tthagujarati'] = 0x0AA0;\n  t['tthagurmukhi'] = 0x0A20;\n  t['tturned'] = 0x0287;\n  t['tuhiragana'] = 0x3064;\n  t['tukatakana'] = 0x30C4;\n  t['tukatakanahalfwidth'] = 0xFF82;\n  t['tusmallhiragana'] = 0x3063;\n  t['tusmallkatakana'] = 0x30C3;\n  t['tusmallkatakanahalfwidth'] = 0xFF6F;\n  t['twelvecircle'] = 0x246B;\n  t['twelveparen'] = 0x247F;\n  t['twelveperiod'] = 0x2493;\n  t['twelveroman'] = 0x217B;\n  t['twentycircle'] = 0x2473;\n  t['twentyhangzhou'] = 0x5344;\n  t['twentyparen'] = 0x2487;\n  t['twentyperiod'] = 0x249B;\n  t['two'] = 0x0032;\n  t['twoarabic'] = 0x0662;\n  t['twobengali'] = 0x09E8;\n  t['twocircle'] = 0x2461;\n  t['twocircleinversesansserif'] = 0x278B;\n  t['twodeva'] = 0x0968;\n  t['twodotenleader'] = 0x2025;\n  t['twodotleader'] = 0x2025;\n  t['twodotleadervertical'] = 0xFE30;\n  t['twogujarati'] = 0x0AE8;\n  t['twogurmukhi'] = 0x0A68;\n  t['twohackarabic'] = 0x0662;\n  t['twohangzhou'] = 0x3022;\n  t['twoideographicparen'] = 0x3221;\n  t['twoinferior'] = 0x2082;\n  t['twomonospace'] = 0xFF12;\n  t['twonumeratorbengali'] = 0x09F5;\n  t['twooldstyle'] = 0xF732;\n  t['twoparen'] = 0x2475;\n  t['twoperiod'] = 0x2489;\n  t['twopersian'] = 0x06F2;\n  t['tworoman'] = 0x2171;\n  t['twostroke'] = 0x01BB;\n  t['twosuperior'] = 0x00B2;\n  t['twothai'] = 0x0E52;\n  t['twothirds'] = 0x2154;\n  t['u'] = 0x0075;\n  t['uacute'] = 0x00FA;\n  t['ubar'] = 0x0289;\n  t['ubengali'] = 0x0989;\n  t['ubopomofo'] = 0x3128;\n  t['ubreve'] = 0x016D;\n  t['ucaron'] = 0x01D4;\n  t['ucircle'] = 0x24E4;\n  t['ucircumflex'] = 0x00FB;\n  t['ucircumflexbelow'] = 0x1E77;\n  t['ucyrillic'] = 0x0443;\n  t['udattadeva'] = 0x0951;\n  t['udblacute'] = 0x0171;\n  t['udblgrave'] = 0x0215;\n  t['udeva'] = 0x0909;\n  t['udieresis'] = 0x00FC;\n  t['udieresisacute'] = 0x01D8;\n  t['udieresisbelow'] = 0x1E73;\n  t['udieresiscaron'] = 0x01DA;\n  t['udieresiscyrillic'] = 0x04F1;\n  t['udieresisgrave'] = 0x01DC;\n  t['udieresismacron'] = 0x01D6;\n  t['udotbelow'] = 0x1EE5;\n  t['ugrave'] = 0x00F9;\n  t['ugujarati'] = 0x0A89;\n  t['ugurmukhi'] = 0x0A09;\n  t['uhiragana'] = 0x3046;\n  t['uhookabove'] = 0x1EE7;\n  t['uhorn'] = 0x01B0;\n  t['uhornacute'] = 0x1EE9;\n  t['uhorndotbelow'] = 0x1EF1;\n  t['uhorngrave'] = 0x1EEB;\n  t['uhornhookabove'] = 0x1EED;\n  t['uhorntilde'] = 0x1EEF;\n  t['uhungarumlaut'] = 0x0171;\n  t['uhungarumlautcyrillic'] = 0x04F3;\n  t['uinvertedbreve'] = 0x0217;\n  t['ukatakana'] = 0x30A6;\n  t['ukatakanahalfwidth'] = 0xFF73;\n  t['ukcyrillic'] = 0x0479;\n  t['ukorean'] = 0x315C;\n  t['umacron'] = 0x016B;\n  t['umacroncyrillic'] = 0x04EF;\n  t['umacrondieresis'] = 0x1E7B;\n  t['umatragurmukhi'] = 0x0A41;\n  t['umonospace'] = 0xFF55;\n  t['underscore'] = 0x005F;\n  t['underscoredbl'] = 0x2017;\n  t['underscoremonospace'] = 0xFF3F;\n  t['underscorevertical'] = 0xFE33;\n  t['underscorewavy'] = 0xFE4F;\n  t['union'] = 0x222A;\n  t['universal'] = 0x2200;\n  t['uogonek'] = 0x0173;\n  t['uparen'] = 0x24B0;\n  t['upblock'] = 0x2580;\n  t['upperdothebrew'] = 0x05C4;\n  t['upsilon'] = 0x03C5;\n  t['upsilondieresis'] = 0x03CB;\n  t['upsilondieresistonos'] = 0x03B0;\n  t['upsilonlatin'] = 0x028A;\n  t['upsilontonos'] = 0x03CD;\n  t['uptackbelowcmb'] = 0x031D;\n  t['uptackmod'] = 0x02D4;\n  t['uragurmukhi'] = 0x0A73;\n  t['uring'] = 0x016F;\n  t['ushortcyrillic'] = 0x045E;\n  t['usmallhiragana'] = 0x3045;\n  t['usmallkatakana'] = 0x30A5;\n  t['usmallkatakanahalfwidth'] = 0xFF69;\n  t['ustraightcyrillic'] = 0x04AF;\n  t['ustraightstrokecyrillic'] = 0x04B1;\n  t['utilde'] = 0x0169;\n  t['utildeacute'] = 0x1E79;\n  t['utildebelow'] = 0x1E75;\n  t['uubengali'] = 0x098A;\n  t['uudeva'] = 0x090A;\n  t['uugujarati'] = 0x0A8A;\n  t['uugurmukhi'] = 0x0A0A;\n  t['uumatragurmukhi'] = 0x0A42;\n  t['uuvowelsignbengali'] = 0x09C2;\n  t['uuvowelsigndeva'] = 0x0942;\n  t['uuvowelsigngujarati'] = 0x0AC2;\n  t['uvowelsignbengali'] = 0x09C1;\n  t['uvowelsigndeva'] = 0x0941;\n  t['uvowelsigngujarati'] = 0x0AC1;\n  t['v'] = 0x0076;\n  t['vadeva'] = 0x0935;\n  t['vagujarati'] = 0x0AB5;\n  t['vagurmukhi'] = 0x0A35;\n  t['vakatakana'] = 0x30F7;\n  t['vav'] = 0x05D5;\n  t['vavdagesh'] = 0xFB35;\n  t['vavdagesh65'] = 0xFB35;\n  t['vavdageshhebrew'] = 0xFB35;\n  t['vavhebrew'] = 0x05D5;\n  t['vavholam'] = 0xFB4B;\n  t['vavholamhebrew'] = 0xFB4B;\n  t['vavvavhebrew'] = 0x05F0;\n  t['vavyodhebrew'] = 0x05F1;\n  t['vcircle'] = 0x24E5;\n  t['vdotbelow'] = 0x1E7F;\n  t['vecyrillic'] = 0x0432;\n  t['veharabic'] = 0x06A4;\n  t['vehfinalarabic'] = 0xFB6B;\n  t['vehinitialarabic'] = 0xFB6C;\n  t['vehmedialarabic'] = 0xFB6D;\n  t['vekatakana'] = 0x30F9;\n  t['venus'] = 0x2640;\n  t['verticalbar'] = 0x007C;\n  t['verticallineabovecmb'] = 0x030D;\n  t['verticallinebelowcmb'] = 0x0329;\n  t['verticallinelowmod'] = 0x02CC;\n  t['verticallinemod'] = 0x02C8;\n  t['vewarmenian'] = 0x057E;\n  t['vhook'] = 0x028B;\n  t['vikatakana'] = 0x30F8;\n  t['viramabengali'] = 0x09CD;\n  t['viramadeva'] = 0x094D;\n  t['viramagujarati'] = 0x0ACD;\n  t['visargabengali'] = 0x0983;\n  t['visargadeva'] = 0x0903;\n  t['visargagujarati'] = 0x0A83;\n  t['vmonospace'] = 0xFF56;\n  t['voarmenian'] = 0x0578;\n  t['voicediterationhiragana'] = 0x309E;\n  t['voicediterationkatakana'] = 0x30FE;\n  t['voicedmarkkana'] = 0x309B;\n  t['voicedmarkkanahalfwidth'] = 0xFF9E;\n  t['vokatakana'] = 0x30FA;\n  t['vparen'] = 0x24B1;\n  t['vtilde'] = 0x1E7D;\n  t['vturned'] = 0x028C;\n  t['vuhiragana'] = 0x3094;\n  t['vukatakana'] = 0x30F4;\n  t['w'] = 0x0077;\n  t['wacute'] = 0x1E83;\n  t['waekorean'] = 0x3159;\n  t['wahiragana'] = 0x308F;\n  t['wakatakana'] = 0x30EF;\n  t['wakatakanahalfwidth'] = 0xFF9C;\n  t['wakorean'] = 0x3158;\n  t['wasmallhiragana'] = 0x308E;\n  t['wasmallkatakana'] = 0x30EE;\n  t['wattosquare'] = 0x3357;\n  t['wavedash'] = 0x301C;\n  t['wavyunderscorevertical'] = 0xFE34;\n  t['wawarabic'] = 0x0648;\n  t['wawfinalarabic'] = 0xFEEE;\n  t['wawhamzaabovearabic'] = 0x0624;\n  t['wawhamzaabovefinalarabic'] = 0xFE86;\n  t['wbsquare'] = 0x33DD;\n  t['wcircle'] = 0x24E6;\n  t['wcircumflex'] = 0x0175;\n  t['wdieresis'] = 0x1E85;\n  t['wdotaccent'] = 0x1E87;\n  t['wdotbelow'] = 0x1E89;\n  t['wehiragana'] = 0x3091;\n  t['weierstrass'] = 0x2118;\n  t['wekatakana'] = 0x30F1;\n  t['wekorean'] = 0x315E;\n  t['weokorean'] = 0x315D;\n  t['wgrave'] = 0x1E81;\n  t['whitebullet'] = 0x25E6;\n  t['whitecircle'] = 0x25CB;\n  t['whitecircleinverse'] = 0x25D9;\n  t['whitecornerbracketleft'] = 0x300E;\n  t['whitecornerbracketleftvertical'] = 0xFE43;\n  t['whitecornerbracketright'] = 0x300F;\n  t['whitecornerbracketrightvertical'] = 0xFE44;\n  t['whitediamond'] = 0x25C7;\n  t['whitediamondcontainingblacksmalldiamond'] = 0x25C8;\n  t['whitedownpointingsmalltriangle'] = 0x25BF;\n  t['whitedownpointingtriangle'] = 0x25BD;\n  t['whiteleftpointingsmalltriangle'] = 0x25C3;\n  t['whiteleftpointingtriangle'] = 0x25C1;\n  t['whitelenticularbracketleft'] = 0x3016;\n  t['whitelenticularbracketright'] = 0x3017;\n  t['whiterightpointingsmalltriangle'] = 0x25B9;\n  t['whiterightpointingtriangle'] = 0x25B7;\n  t['whitesmallsquare'] = 0x25AB;\n  t['whitesmilingface'] = 0x263A;\n  t['whitesquare'] = 0x25A1;\n  t['whitestar'] = 0x2606;\n  t['whitetelephone'] = 0x260F;\n  t['whitetortoiseshellbracketleft'] = 0x3018;\n  t['whitetortoiseshellbracketright'] = 0x3019;\n  t['whiteuppointingsmalltriangle'] = 0x25B5;\n  t['whiteuppointingtriangle'] = 0x25B3;\n  t['wihiragana'] = 0x3090;\n  t['wikatakana'] = 0x30F0;\n  t['wikorean'] = 0x315F;\n  t['wmonospace'] = 0xFF57;\n  t['wohiragana'] = 0x3092;\n  t['wokatakana'] = 0x30F2;\n  t['wokatakanahalfwidth'] = 0xFF66;\n  t['won'] = 0x20A9;\n  t['wonmonospace'] = 0xFFE6;\n  t['wowaenthai'] = 0x0E27;\n  t['wparen'] = 0x24B2;\n  t['wring'] = 0x1E98;\n  t['wsuperior'] = 0x02B7;\n  t['wturned'] = 0x028D;\n  t['wynn'] = 0x01BF;\n  t['x'] = 0x0078;\n  t['xabovecmb'] = 0x033D;\n  t['xbopomofo'] = 0x3112;\n  t['xcircle'] = 0x24E7;\n  t['xdieresis'] = 0x1E8D;\n  t['xdotaccent'] = 0x1E8B;\n  t['xeharmenian'] = 0x056D;\n  t['xi'] = 0x03BE;\n  t['xmonospace'] = 0xFF58;\n  t['xparen'] = 0x24B3;\n  t['xsuperior'] = 0x02E3;\n  t['y'] = 0x0079;\n  t['yaadosquare'] = 0x334E;\n  t['yabengali'] = 0x09AF;\n  t['yacute'] = 0x00FD;\n  t['yadeva'] = 0x092F;\n  t['yaekorean'] = 0x3152;\n  t['yagujarati'] = 0x0AAF;\n  t['yagurmukhi'] = 0x0A2F;\n  t['yahiragana'] = 0x3084;\n  t['yakatakana'] = 0x30E4;\n  t['yakatakanahalfwidth'] = 0xFF94;\n  t['yakorean'] = 0x3151;\n  t['yamakkanthai'] = 0x0E4E;\n  t['yasmallhiragana'] = 0x3083;\n  t['yasmallkatakana'] = 0x30E3;\n  t['yasmallkatakanahalfwidth'] = 0xFF6C;\n  t['yatcyrillic'] = 0x0463;\n  t['ycircle'] = 0x24E8;\n  t['ycircumflex'] = 0x0177;\n  t['ydieresis'] = 0x00FF;\n  t['ydotaccent'] = 0x1E8F;\n  t['ydotbelow'] = 0x1EF5;\n  t['yeharabic'] = 0x064A;\n  t['yehbarreearabic'] = 0x06D2;\n  t['yehbarreefinalarabic'] = 0xFBAF;\n  t['yehfinalarabic'] = 0xFEF2;\n  t['yehhamzaabovearabic'] = 0x0626;\n  t['yehhamzaabovefinalarabic'] = 0xFE8A;\n  t['yehhamzaaboveinitialarabic'] = 0xFE8B;\n  t['yehhamzaabovemedialarabic'] = 0xFE8C;\n  t['yehinitialarabic'] = 0xFEF3;\n  t['yehmedialarabic'] = 0xFEF4;\n  t['yehmeeminitialarabic'] = 0xFCDD;\n  t['yehmeemisolatedarabic'] = 0xFC58;\n  t['yehnoonfinalarabic'] = 0xFC94;\n  t['yehthreedotsbelowarabic'] = 0x06D1;\n  t['yekorean'] = 0x3156;\n  t['yen'] = 0x00A5;\n  t['yenmonospace'] = 0xFFE5;\n  t['yeokorean'] = 0x3155;\n  t['yeorinhieuhkorean'] = 0x3186;\n  t['yerahbenyomohebrew'] = 0x05AA;\n  t['yerahbenyomolefthebrew'] = 0x05AA;\n  t['yericyrillic'] = 0x044B;\n  t['yerudieresiscyrillic'] = 0x04F9;\n  t['yesieungkorean'] = 0x3181;\n  t['yesieungpansioskorean'] = 0x3183;\n  t['yesieungsioskorean'] = 0x3182;\n  t['yetivhebrew'] = 0x059A;\n  t['ygrave'] = 0x1EF3;\n  t['yhook'] = 0x01B4;\n  t['yhookabove'] = 0x1EF7;\n  t['yiarmenian'] = 0x0575;\n  t['yicyrillic'] = 0x0457;\n  t['yikorean'] = 0x3162;\n  t['yinyang'] = 0x262F;\n  t['yiwnarmenian'] = 0x0582;\n  t['ymonospace'] = 0xFF59;\n  t['yod'] = 0x05D9;\n  t['yoddagesh'] = 0xFB39;\n  t['yoddageshhebrew'] = 0xFB39;\n  t['yodhebrew'] = 0x05D9;\n  t['yodyodhebrew'] = 0x05F2;\n  t['yodyodpatahhebrew'] = 0xFB1F;\n  t['yohiragana'] = 0x3088;\n  t['yoikorean'] = 0x3189;\n  t['yokatakana'] = 0x30E8;\n  t['yokatakanahalfwidth'] = 0xFF96;\n  t['yokorean'] = 0x315B;\n  t['yosmallhiragana'] = 0x3087;\n  t['yosmallkatakana'] = 0x30E7;\n  t['yosmallkatakanahalfwidth'] = 0xFF6E;\n  t['yotgreek'] = 0x03F3;\n  t['yoyaekorean'] = 0x3188;\n  t['yoyakorean'] = 0x3187;\n  t['yoyakthai'] = 0x0E22;\n  t['yoyingthai'] = 0x0E0D;\n  t['yparen'] = 0x24B4;\n  t['ypogegrammeni'] = 0x037A;\n  t['ypogegrammenigreekcmb'] = 0x0345;\n  t['yr'] = 0x01A6;\n  t['yring'] = 0x1E99;\n  t['ysuperior'] = 0x02B8;\n  t['ytilde'] = 0x1EF9;\n  t['yturned'] = 0x028E;\n  t['yuhiragana'] = 0x3086;\n  t['yuikorean'] = 0x318C;\n  t['yukatakana'] = 0x30E6;\n  t['yukatakanahalfwidth'] = 0xFF95;\n  t['yukorean'] = 0x3160;\n  t['yusbigcyrillic'] = 0x046B;\n  t['yusbigiotifiedcyrillic'] = 0x046D;\n  t['yuslittlecyrillic'] = 0x0467;\n  t['yuslittleiotifiedcyrillic'] = 0x0469;\n  t['yusmallhiragana'] = 0x3085;\n  t['yusmallkatakana'] = 0x30E5;\n  t['yusmallkatakanahalfwidth'] = 0xFF6D;\n  t['yuyekorean'] = 0x318B;\n  t['yuyeokorean'] = 0x318A;\n  t['yyabengali'] = 0x09DF;\n  t['yyadeva'] = 0x095F;\n  t['z'] = 0x007A;\n  t['zaarmenian'] = 0x0566;\n  t['zacute'] = 0x017A;\n  t['zadeva'] = 0x095B;\n  t['zagurmukhi'] = 0x0A5B;\n  t['zaharabic'] = 0x0638;\n  t['zahfinalarabic'] = 0xFEC6;\n  t['zahinitialarabic'] = 0xFEC7;\n  t['zahiragana'] = 0x3056;\n  t['zahmedialarabic'] = 0xFEC8;\n  t['zainarabic'] = 0x0632;\n  t['zainfinalarabic'] = 0xFEB0;\n  t['zakatakana'] = 0x30B6;\n  t['zaqefgadolhebrew'] = 0x0595;\n  t['zaqefqatanhebrew'] = 0x0594;\n  t['zarqahebrew'] = 0x0598;\n  t['zayin'] = 0x05D6;\n  t['zayindagesh'] = 0xFB36;\n  t['zayindageshhebrew'] = 0xFB36;\n  t['zayinhebrew'] = 0x05D6;\n  t['zbopomofo'] = 0x3117;\n  t['zcaron'] = 0x017E;\n  t['zcircle'] = 0x24E9;\n  t['zcircumflex'] = 0x1E91;\n  t['zcurl'] = 0x0291;\n  t['zdot'] = 0x017C;\n  t['zdotaccent'] = 0x017C;\n  t['zdotbelow'] = 0x1E93;\n  t['zecyrillic'] = 0x0437;\n  t['zedescendercyrillic'] = 0x0499;\n  t['zedieresiscyrillic'] = 0x04DF;\n  t['zehiragana'] = 0x305C;\n  t['zekatakana'] = 0x30BC;\n  t['zero'] = 0x0030;\n  t['zeroarabic'] = 0x0660;\n  t['zerobengali'] = 0x09E6;\n  t['zerodeva'] = 0x0966;\n  t['zerogujarati'] = 0x0AE6;\n  t['zerogurmukhi'] = 0x0A66;\n  t['zerohackarabic'] = 0x0660;\n  t['zeroinferior'] = 0x2080;\n  t['zeromonospace'] = 0xFF10;\n  t['zerooldstyle'] = 0xF730;\n  t['zeropersian'] = 0x06F0;\n  t['zerosuperior'] = 0x2070;\n  t['zerothai'] = 0x0E50;\n  t['zerowidthjoiner'] = 0xFEFF;\n  t['zerowidthnonjoiner'] = 0x200C;\n  t['zerowidthspace'] = 0x200B;\n  t['zeta'] = 0x03B6;\n  t['zhbopomofo'] = 0x3113;\n  t['zhearmenian'] = 0x056A;\n  t['zhebrevecyrillic'] = 0x04C2;\n  t['zhecyrillic'] = 0x0436;\n  t['zhedescendercyrillic'] = 0x0497;\n  t['zhedieresiscyrillic'] = 0x04DD;\n  t['zihiragana'] = 0x3058;\n  t['zikatakana'] = 0x30B8;\n  t['zinorhebrew'] = 0x05AE;\n  t['zlinebelow'] = 0x1E95;\n  t['zmonospace'] = 0xFF5A;\n  t['zohiragana'] = 0x305E;\n  t['zokatakana'] = 0x30BE;\n  t['zparen'] = 0x24B5;\n  t['zretroflexhook'] = 0x0290;\n  t['zstroke'] = 0x01B6;\n  t['zuhiragana'] = 0x305A;\n  t['zukatakana'] = 0x30BA;\n  t['.notdef'] = 0x0000;\n\n  // TeX-specific glyph names.\n  t['angbracketleftbig'] = 0x2329;\n  t['angbracketleftBig'] = 0x2329;\n  t['angbracketleftbigg'] = 0x2329;\n  t['angbracketleftBigg'] = 0x2329;\n  t['angbracketrightBig'] = 0x232A;\n  t['angbracketrightbig'] = 0x232A;\n  t['angbracketrightBigg'] = 0x232A;\n  t['angbracketrightbigg'] = 0x232A;\n  t['arrowhookleft'] = 0x21AA;\n  t['arrowhookright'] = 0x21A9;\n  t['arrowlefttophalf'] = 0x21BC;\n  t['arrowleftbothalf'] = 0x21BD;\n  t['arrownortheast'] = 0x2197;\n  t['arrownorthwest'] = 0x2196;\n  t['arrowrighttophalf'] = 0x21C0;\n  t['arrowrightbothalf'] = 0x21C1;\n  t['arrowsoutheast'] = 0x2198;\n  t['arrowsouthwest'] = 0x2199;\n  t['backslashbig'] = 0x2216;\n  t['backslashBig'] = 0x2216;\n  t['backslashBigg'] = 0x2216;\n  t['backslashbigg'] = 0x2216;\n  t['bardbl'] = 0x2016;\n  t['bracehtipdownleft'] = 0xFE37;\n  t['bracehtipdownright'] = 0xFE37;\n  t['bracehtipupleft'] = 0xFE38;\n  t['bracehtipupright'] = 0xFE38;\n  t['braceleftBig'] = 0x007B;\n  t['braceleftbig'] = 0x007B;\n  t['braceleftbigg'] = 0x007B;\n  t['braceleftBigg'] = 0x007B;\n  t['bracerightBig'] = 0x007D;\n  t['bracerightbig'] = 0x007D;\n  t['bracerightbigg'] = 0x007D;\n  t['bracerightBigg'] = 0x007D;\n  t['bracketleftbig'] = 0x005B;\n  t['bracketleftBig'] = 0x005B;\n  t['bracketleftbigg'] = 0x005B;\n  t['bracketleftBigg'] = 0x005B;\n  t['bracketrightBig'] = 0x005D;\n  t['bracketrightbig'] = 0x005D;\n  t['bracketrightbigg'] = 0x005D;\n  t['bracketrightBigg'] = 0x005D;\n  t['ceilingleftbig'] = 0x2308;\n  t['ceilingleftBig'] = 0x2308;\n  t['ceilingleftBigg'] = 0x2308;\n  t['ceilingleftbigg'] = 0x2308;\n  t['ceilingrightbig'] = 0x2309;\n  t['ceilingrightBig'] = 0x2309;\n  t['ceilingrightbigg'] = 0x2309;\n  t['ceilingrightBigg'] = 0x2309;\n  t['circledotdisplay'] = 0x2299;\n  t['circledottext'] = 0x2299;\n  t['circlemultiplydisplay'] = 0x2297;\n  t['circlemultiplytext'] = 0x2297;\n  t['circleplusdisplay'] = 0x2295;\n  t['circleplustext'] = 0x2295;\n  t['contintegraldisplay'] = 0x222E;\n  t['contintegraltext'] = 0x222E;\n  t['coproductdisplay'] = 0x2210;\n  t['coproducttext'] = 0x2210;\n  t['floorleftBig'] = 0x230A;\n  t['floorleftbig'] = 0x230A;\n  t['floorleftbigg'] = 0x230A;\n  t['floorleftBigg'] = 0x230A;\n  t['floorrightbig'] = 0x230B;\n  t['floorrightBig'] = 0x230B;\n  t['floorrightBigg'] = 0x230B;\n  t['floorrightbigg'] = 0x230B;\n  t['hatwide'] = 0x0302;\n  t['hatwider'] = 0x0302;\n  t['hatwidest'] = 0x0302;\n  t['intercal'] = 0x1D40;\n  t['integraldisplay'] = 0x222B;\n  t['integraltext'] = 0x222B;\n  t['intersectiondisplay'] = 0x22C2;\n  t['intersectiontext'] = 0x22C2;\n  t['logicalanddisplay'] = 0x2227;\n  t['logicalandtext'] = 0x2227;\n  t['logicalordisplay'] = 0x2228;\n  t['logicalortext'] = 0x2228;\n  t['parenleftBig'] = 0x0028;\n  t['parenleftbig'] = 0x0028;\n  t['parenleftBigg'] = 0x0028;\n  t['parenleftbigg'] = 0x0028;\n  t['parenrightBig'] = 0x0029;\n  t['parenrightbig'] = 0x0029;\n  t['parenrightBigg'] = 0x0029;\n  t['parenrightbigg'] = 0x0029;\n  t['prime'] = 0x2032;\n  t['productdisplay'] = 0x220F;\n  t['producttext'] = 0x220F;\n  t['radicalbig'] = 0x221A;\n  t['radicalBig'] = 0x221A;\n  t['radicalBigg'] = 0x221A;\n  t['radicalbigg'] = 0x221A;\n  t['radicalbt'] = 0x221A;\n  t['radicaltp'] = 0x221A;\n  t['radicalvertex'] = 0x221A;\n  t['slashbig'] = 0x002F;\n  t['slashBig'] = 0x002F;\n  t['slashBigg'] = 0x002F;\n  t['slashbigg'] = 0x002F;\n  t['summationdisplay'] = 0x2211;\n  t['summationtext'] = 0x2211;\n  t['tildewide'] = 0x02DC;\n  t['tildewider'] = 0x02DC;\n  t['tildewidest'] = 0x02DC;\n  t['uniondisplay'] = 0x22C3;\n  t['unionmultidisplay'] = 0x228E;\n  t['unionmultitext'] = 0x228E;\n  t['unionsqdisplay'] = 0x2294;\n  t['unionsqtext'] = 0x2294;\n  t['uniontext'] = 0x22C3;\n  t['vextenddouble'] = 0x2225;\n  t['vextendsingle'] = 0x2223;\n});\n\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n  t['space'] = 0x0020;\n  t['a1'] = 0x2701;\n  t['a2'] = 0x2702;\n  t['a202'] = 0x2703;\n  t['a3'] = 0x2704;\n  t['a4'] = 0x260E;\n  t['a5'] = 0x2706;\n  t['a119'] = 0x2707;\n  t['a118'] = 0x2708;\n  t['a117'] = 0x2709;\n  t['a11'] = 0x261B;\n  t['a12'] = 0x261E;\n  t['a13'] = 0x270C;\n  t['a14'] = 0x270D;\n  t['a15'] = 0x270E;\n  t['a16'] = 0x270F;\n  t['a105'] = 0x2710;\n  t['a17'] = 0x2711;\n  t['a18'] = 0x2712;\n  t['a19'] = 0x2713;\n  t['a20'] = 0x2714;\n  t['a21'] = 0x2715;\n  t['a22'] = 0x2716;\n  t['a23'] = 0x2717;\n  t['a24'] = 0x2718;\n  t['a25'] = 0x2719;\n  t['a26'] = 0x271A;\n  t['a27'] = 0x271B;\n  t['a28'] = 0x271C;\n  t['a6'] = 0x271D;\n  t['a7'] = 0x271E;\n  t['a8'] = 0x271F;\n  t['a9'] = 0x2720;\n  t['a10'] = 0x2721;\n  t['a29'] = 0x2722;\n  t['a30'] = 0x2723;\n  t['a31'] = 0x2724;\n  t['a32'] = 0x2725;\n  t['a33'] = 0x2726;\n  t['a34'] = 0x2727;\n  t['a35'] = 0x2605;\n  t['a36'] = 0x2729;\n  t['a37'] = 0x272A;\n  t['a38'] = 0x272B;\n  t['a39'] = 0x272C;\n  t['a40'] = 0x272D;\n  t['a41'] = 0x272E;\n  t['a42'] = 0x272F;\n  t['a43'] = 0x2730;\n  t['a44'] = 0x2731;\n  t['a45'] = 0x2732;\n  t['a46'] = 0x2733;\n  t['a47'] = 0x2734;\n  t['a48'] = 0x2735;\n  t['a49'] = 0x2736;\n  t['a50'] = 0x2737;\n  t['a51'] = 0x2738;\n  t['a52'] = 0x2739;\n  t['a53'] = 0x273A;\n  t['a54'] = 0x273B;\n  t['a55'] = 0x273C;\n  t['a56'] = 0x273D;\n  t['a57'] = 0x273E;\n  t['a58'] = 0x273F;\n  t['a59'] = 0x2740;\n  t['a60'] = 0x2741;\n  t['a61'] = 0x2742;\n  t['a62'] = 0x2743;\n  t['a63'] = 0x2744;\n  t['a64'] = 0x2745;\n  t['a65'] = 0x2746;\n  t['a66'] = 0x2747;\n  t['a67'] = 0x2748;\n  t['a68'] = 0x2749;\n  t['a69'] = 0x274A;\n  t['a70'] = 0x274B;\n  t['a71'] = 0x25CF;\n  t['a72'] = 0x274D;\n  t['a73'] = 0x25A0;\n  t['a74'] = 0x274F;\n  t['a203'] = 0x2750;\n  t['a75'] = 0x2751;\n  t['a204'] = 0x2752;\n  t['a76'] = 0x25B2;\n  t['a77'] = 0x25BC;\n  t['a78'] = 0x25C6;\n  t['a79'] = 0x2756;\n  t['a81'] = 0x25D7;\n  t['a82'] = 0x2758;\n  t['a83'] = 0x2759;\n  t['a84'] = 0x275A;\n  t['a97'] = 0x275B;\n  t['a98'] = 0x275C;\n  t['a99'] = 0x275D;\n  t['a100'] = 0x275E;\n  t['a101'] = 0x2761;\n  t['a102'] = 0x2762;\n  t['a103'] = 0x2763;\n  t['a104'] = 0x2764;\n  t['a106'] = 0x2765;\n  t['a107'] = 0x2766;\n  t['a108'] = 0x2767;\n  t['a112'] = 0x2663;\n  t['a111'] = 0x2666;\n  t['a110'] = 0x2665;\n  t['a109'] = 0x2660;\n  t['a120'] = 0x2460;\n  t['a121'] = 0x2461;\n  t['a122'] = 0x2462;\n  t['a123'] = 0x2463;\n  t['a124'] = 0x2464;\n  t['a125'] = 0x2465;\n  t['a126'] = 0x2466;\n  t['a127'] = 0x2467;\n  t['a128'] = 0x2468;\n  t['a129'] = 0x2469;\n  t['a130'] = 0x2776;\n  t['a131'] = 0x2777;\n  t['a132'] = 0x2778;\n  t['a133'] = 0x2779;\n  t['a134'] = 0x277A;\n  t['a135'] = 0x277B;\n  t['a136'] = 0x277C;\n  t['a137'] = 0x277D;\n  t['a138'] = 0x277E;\n  t['a139'] = 0x277F;\n  t['a140'] = 0x2780;\n  t['a141'] = 0x2781;\n  t['a142'] = 0x2782;\n  t['a143'] = 0x2783;\n  t['a144'] = 0x2784;\n  t['a145'] = 0x2785;\n  t['a146'] = 0x2786;\n  t['a147'] = 0x2787;\n  t['a148'] = 0x2788;\n  t['a149'] = 0x2789;\n  t['a150'] = 0x278A;\n  t['a151'] = 0x278B;\n  t['a152'] = 0x278C;\n  t['a153'] = 0x278D;\n  t['a154'] = 0x278E;\n  t['a155'] = 0x278F;\n  t['a156'] = 0x2790;\n  t['a157'] = 0x2791;\n  t['a158'] = 0x2792;\n  t['a159'] = 0x2793;\n  t['a160'] = 0x2794;\n  t['a161'] = 0x2192;\n  t['a163'] = 0x2194;\n  t['a164'] = 0x2195;\n  t['a196'] = 0x2798;\n  t['a165'] = 0x2799;\n  t['a192'] = 0x279A;\n  t['a166'] = 0x279B;\n  t['a167'] = 0x279C;\n  t['a168'] = 0x279D;\n  t['a169'] = 0x279E;\n  t['a170'] = 0x279F;\n  t['a171'] = 0x27A0;\n  t['a172'] = 0x27A1;\n  t['a173'] = 0x27A2;\n  t['a162'] = 0x27A3;\n  t['a174'] = 0x27A4;\n  t['a175'] = 0x27A5;\n  t['a176'] = 0x27A6;\n  t['a177'] = 0x27A7;\n  t['a178'] = 0x27A8;\n  t['a179'] = 0x27A9;\n  t['a193'] = 0x27AA;\n  t['a180'] = 0x27AB;\n  t['a199'] = 0x27AC;\n  t['a181'] = 0x27AD;\n  t['a200'] = 0x27AE;\n  t['a182'] = 0x27AF;\n  t['a201'] = 0x27B1;\n  t['a183'] = 0x27B2;\n  t['a184'] = 0x27B3;\n  t['a197'] = 0x27B4;\n  t['a185'] = 0x27B5;\n  t['a194'] = 0x27B6;\n  t['a198'] = 0x27B7;\n  t['a186'] = 0x27B8;\n  t['a195'] = 0x27B9;\n  t['a187'] = 0x27BA;\n  t['a188'] = 0x27BB;\n  t['a189'] = 0x27BC;\n  t['a190'] = 0x27BD;\n  t['a191'] = 0x27BE;\n  t['a89'] = 0x2768; // 0xF8D7\n  t['a90'] = 0x2769; // 0xF8D8\n  t['a93'] = 0x276A; // 0xF8D9\n  t['a94'] = 0x276B; // 0xF8DA\n  t['a91'] = 0x276C; // 0xF8DB\n  t['a92'] = 0x276D; // 0xF8DC\n  t['a205'] = 0x276E; // 0xF8DD\n  t['a85'] = 0x276F; // 0xF8DE\n  t['a206'] = 0x2770; // 0xF8DF\n  t['a86'] = 0x2771; // 0xF8E0\n  t['a87'] = 0x2772; // 0xF8E1\n  t['a88'] = 0x2773; // 0xF8E2\n  t['a95'] = 0x2774; // 0xF8E3\n  t['a96'] = 0x2775; // 0xF8E4\n  t['.notdef'] = 0x0000;\n});\n\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from '../shared/util';\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nvar getStdFontMap = getLookupTableFactory(function (t) {\n  t['ArialNarrow'] = 'Helvetica';\n  t['ArialNarrow-Bold'] = 'Helvetica-Bold';\n  t['ArialNarrow-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['ArialNarrow-Italic'] = 'Helvetica-Oblique';\n  t['ArialBlack'] = 'Helvetica';\n  t['ArialBlack-Bold'] = 'Helvetica-Bold';\n  t['ArialBlack-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['ArialBlack-Italic'] = 'Helvetica-Oblique';\n  t['Arial-Black'] = 'Helvetica';\n  t['Arial-Black-Bold'] = 'Helvetica-Bold';\n  t['Arial-Black-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['Arial-Black-Italic'] = 'Helvetica-Oblique';\n  t['Arial'] = 'Helvetica';\n  t['Arial-Bold'] = 'Helvetica-Bold';\n  t['Arial-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['Arial-Italic'] = 'Helvetica-Oblique';\n  t['Arial-BoldItalicMT'] = 'Helvetica-BoldOblique';\n  t['Arial-BoldMT'] = 'Helvetica-Bold';\n  t['Arial-ItalicMT'] = 'Helvetica-Oblique';\n  t['ArialMT'] = 'Helvetica';\n  t['Courier-Bold'] = 'Courier-Bold';\n  t['Courier-BoldItalic'] = 'Courier-BoldOblique';\n  t['Courier-Italic'] = 'Courier-Oblique';\n  t['CourierNew'] = 'Courier';\n  t['CourierNew-Bold'] = 'Courier-Bold';\n  t['CourierNew-BoldItalic'] = 'Courier-BoldOblique';\n  t['CourierNew-Italic'] = 'Courier-Oblique';\n  t['CourierNewPS-BoldItalicMT'] = 'Courier-BoldOblique';\n  t['CourierNewPS-BoldMT'] = 'Courier-Bold';\n  t['CourierNewPS-ItalicMT'] = 'Courier-Oblique';\n  t['CourierNewPSMT'] = 'Courier';\n  t['Helvetica'] = 'Helvetica';\n  t['Helvetica-Bold'] = 'Helvetica-Bold';\n  t['Helvetica-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['Helvetica-BoldOblique'] = 'Helvetica-BoldOblique';\n  t['Helvetica-Italic'] = 'Helvetica-Oblique';\n  t['Helvetica-Oblique'] = 'Helvetica-Oblique';\n  t['SegoeUISymbol'] = 'Helvetica';\n  t['Symbol-Bold'] = 'Symbol';\n  t['Symbol-BoldItalic'] = 'Symbol';\n  t['Symbol-Italic'] = 'Symbol';\n  t['TimesNewRoman'] = 'Times-Roman';\n  t['TimesNewRoman-Bold'] = 'Times-Bold';\n  t['TimesNewRoman-BoldItalic'] = 'Times-BoldItalic';\n  t['TimesNewRoman-Italic'] = 'Times-Italic';\n  t['TimesNewRomanPS'] = 'Times-Roman';\n  t['TimesNewRomanPS-Bold'] = 'Times-Bold';\n  t['TimesNewRomanPS-BoldItalic'] = 'Times-BoldItalic';\n  t['TimesNewRomanPS-BoldItalicMT'] = 'Times-BoldItalic';\n  t['TimesNewRomanPS-BoldMT'] = 'Times-Bold';\n  t['TimesNewRomanPS-Italic'] = 'Times-Italic';\n  t['TimesNewRomanPS-ItalicMT'] = 'Times-Italic';\n  t['TimesNewRomanPSMT'] = 'Times-Roman';\n  t['TimesNewRomanPSMT-Bold'] = 'Times-Bold';\n  t['TimesNewRomanPSMT-BoldItalic'] = 'Times-BoldItalic';\n  t['TimesNewRomanPSMT-Italic'] = 'Times-Italic';\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nvar getNonStdFontMap = getLookupTableFactory(function (t) {\n  t['Calibri'] = 'Helvetica';\n  t['Calibri-Bold'] = 'Helvetica-Bold';\n  t['Calibri-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['Calibri-Italic'] = 'Helvetica-Oblique';\n  t['CenturyGothic'] = 'Helvetica';\n  t['CenturyGothic-Bold'] = 'Helvetica-Bold';\n  t['CenturyGothic-BoldItalic'] = 'Helvetica-BoldOblique';\n  t['CenturyGothic-Italic'] = 'Helvetica-Oblique';\n  t['ComicSansMS'] = 'Comic Sans MS';\n  t['ComicSansMS-Bold'] = 'Comic Sans MS-Bold';\n  t['ComicSansMS-BoldItalic'] = 'Comic Sans MS-BoldItalic';\n  t['ComicSansMS-Italic'] = 'Comic Sans MS-Italic';\n  t['LucidaConsole'] = 'Courier';\n  t['LucidaConsole-Bold'] = 'Courier-Bold';\n  t['LucidaConsole-BoldItalic'] = 'Courier-BoldOblique';\n  t['LucidaConsole-Italic'] = 'Courier-Oblique';\n  t['LucidaSans-Demi'] = 'Helvetica-Bold';\n  t['MS-Gothic'] = 'MS Gothic';\n  t['MS-Gothic-Bold'] = 'MS Gothic-Bold';\n  t['MS-Gothic-BoldItalic'] = 'MS Gothic-BoldItalic';\n  t['MS-Gothic-Italic'] = 'MS Gothic-Italic';\n  t['MS-Mincho'] = 'MS Mincho';\n  t['MS-Mincho-Bold'] = 'MS Mincho-Bold';\n  t['MS-Mincho-BoldItalic'] = 'MS Mincho-BoldItalic';\n  t['MS-Mincho-Italic'] = 'MS Mincho-Italic';\n  t['MS-PGothic'] = 'MS PGothic';\n  t['MS-PGothic-Bold'] = 'MS PGothic-Bold';\n  t['MS-PGothic-BoldItalic'] = 'MS PGothic-BoldItalic';\n  t['MS-PGothic-Italic'] = 'MS PGothic-Italic';\n  t['MS-PMincho'] = 'MS PMincho';\n  t['MS-PMincho-Bold'] = 'MS PMincho-Bold';\n  t['MS-PMincho-BoldItalic'] = 'MS PMincho-BoldItalic';\n  t['MS-PMincho-Italic'] = 'MS PMincho-Italic';\n  t['NuptialScript'] = 'Times-Italic';\n  t['Wingdings'] = 'ZapfDingbats';\n});\n\nvar getSerifFonts = getLookupTableFactory(function (t) {\n  t['Adobe Jenson'] = true;\n  t['Adobe Text'] = true;\n  t['Albertus'] = true;\n  t['Aldus'] = true;\n  t['Alexandria'] = true;\n  t['Algerian'] = true;\n  t['American Typewriter'] = true;\n  t['Antiqua'] = true;\n  t['Apex'] = true;\n  t['Arno'] = true;\n  t['Aster'] = true;\n  t['Aurora'] = true;\n  t['Baskerville'] = true;\n  t['Bell'] = true;\n  t['Bembo'] = true;\n  t['Bembo Schoolbook'] = true;\n  t['Benguiat'] = true;\n  t['Berkeley Old Style'] = true;\n  t['Bernhard Modern'] = true;\n  t['Berthold City'] = true;\n  t['Bodoni'] = true;\n  t['Bauer Bodoni'] = true;\n  t['Book Antiqua'] = true;\n  t['Bookman'] = true;\n  t['Bordeaux Roman'] = true;\n  t['Californian FB'] = true;\n  t['Calisto'] = true;\n  t['Calvert'] = true;\n  t['Capitals'] = true;\n  t['Cambria'] = true;\n  t['Cartier'] = true;\n  t['Caslon'] = true;\n  t['Catull'] = true;\n  t['Centaur'] = true;\n  t['Century Old Style'] = true;\n  t['Century Schoolbook'] = true;\n  t['Chaparral'] = true;\n  t['Charis SIL'] = true;\n  t['Cheltenham'] = true;\n  t['Cholla Slab'] = true;\n  t['Clarendon'] = true;\n  t['Clearface'] = true;\n  t['Cochin'] = true;\n  t['Colonna'] = true;\n  t['Computer Modern'] = true;\n  t['Concrete Roman'] = true;\n  t['Constantia'] = true;\n  t['Cooper Black'] = true;\n  t['Corona'] = true;\n  t['Ecotype'] = true;\n  t['Egyptienne'] = true;\n  t['Elephant'] = true;\n  t['Excelsior'] = true;\n  t['Fairfield'] = true;\n  t['FF Scala'] = true;\n  t['Folkard'] = true;\n  t['Footlight'] = true;\n  t['FreeSerif'] = true;\n  t['Friz Quadrata'] = true;\n  t['Garamond'] = true;\n  t['Gentium'] = true;\n  t['Georgia'] = true;\n  t['Gloucester'] = true;\n  t['Goudy Old Style'] = true;\n  t['Goudy Schoolbook'] = true;\n  t['Goudy Pro Font'] = true;\n  t['Granjon'] = true;\n  t['Guardian Egyptian'] = true;\n  t['Heather'] = true;\n  t['Hercules'] = true;\n  t['High Tower Text'] = true;\n  t['Hiroshige'] = true;\n  t['Hoefler Text'] = true;\n  t['Humana Serif'] = true;\n  t['Imprint'] = true;\n  t['Ionic No. 5'] = true;\n  t['Janson'] = true;\n  t['Joanna'] = true;\n  t['Korinna'] = true;\n  t['Lexicon'] = true;\n  t['Liberation Serif'] = true;\n  t['Linux Libertine'] = true;\n  t['Literaturnaya'] = true;\n  t['Lucida'] = true;\n  t['Lucida Bright'] = true;\n  t['Melior'] = true;\n  t['Memphis'] = true;\n  t['Miller'] = true;\n  t['Minion'] = true;\n  t['Modern'] = true;\n  t['Mona Lisa'] = true;\n  t['Mrs Eaves'] = true;\n  t['MS Serif'] = true;\n  t['Museo Slab'] = true;\n  t['New York'] = true;\n  t['Nimbus Roman'] = true;\n  t['NPS Rawlinson Roadway'] = true;\n  t['NuptialScript'] = true;\n  t['Palatino'] = true;\n  t['Perpetua'] = true;\n  t['Plantin'] = true;\n  t['Plantin Schoolbook'] = true;\n  t['Playbill'] = true;\n  t['Poor Richard'] = true;\n  t['Rawlinson Roadway'] = true;\n  t['Renault'] = true;\n  t['Requiem'] = true;\n  t['Rockwell'] = true;\n  t['Roman'] = true;\n  t['Rotis Serif'] = true;\n  t['Sabon'] = true;\n  t['Scala'] = true;\n  t['Seagull'] = true;\n  t['Sistina'] = true;\n  t['Souvenir'] = true;\n  t['STIX'] = true;\n  t['Stone Informal'] = true;\n  t['Stone Serif'] = true;\n  t['Sylfaen'] = true;\n  t['Times'] = true;\n  t['Trajan'] = true;\n  t['Trinité'] = true;\n  t['Trump Mediaeval'] = true;\n  t['Utopia'] = true;\n  t['Vale Type'] = true;\n  t['Bitstream Vera'] = true;\n  t['Vera Serif'] = true;\n  t['Versailles'] = true;\n  t['Wanted'] = true;\n  t['Weiss'] = true;\n  t['Wide Latin'] = true;\n  t['Windsor'] = true;\n  t['XITS'] = true;\n});\n\nvar getSymbolsFonts = getLookupTableFactory(function (t) {\n  t['Dingbats'] = true;\n  t['Symbol'] = true;\n  t['ZapfDingbats'] = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nvar getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n  t[2] = 10; t[3] = 32; t[4] = 33; t[5] = 34; t[6] = 35; t[7] = 36; t[8] = 37;\n  t[9] = 38; t[10] = 39; t[11] = 40; t[12] = 41; t[13] = 42; t[14] = 43;\n  t[15] = 44; t[16] = 45; t[17] = 46; t[18] = 47; t[19] = 48; t[20] = 49;\n  t[21] = 50; t[22] = 51; t[23] = 52; t[24] = 53; t[25] = 54; t[26] = 55;\n  t[27] = 56; t[28] = 57; t[29] = 58; t[30] = 894; t[31] = 60; t[32] = 61;\n  t[33] = 62; t[34] = 63; t[35] = 64; t[36] = 65; t[37] = 66; t[38] = 67;\n  t[39] = 68; t[40] = 69; t[41] = 70; t[42] = 71; t[43] = 72; t[44] = 73;\n  t[45] = 74; t[46] = 75; t[47] = 76; t[48] = 77; t[49] = 78; t[50] = 79;\n  t[51] = 80; t[52] = 81; t[53] = 82; t[54] = 83; t[55] = 84; t[56] = 85;\n  t[57] = 86; t[58] = 87; t[59] = 88; t[60] = 89; t[61] = 90; t[62] = 91;\n  t[63] = 92; t[64] = 93; t[65] = 94; t[66] = 95; t[67] = 96; t[68] = 97;\n  t[69] = 98; t[70] = 99; t[71] = 100; t[72] = 101; t[73] = 102; t[74] = 103;\n  t[75] = 104; t[76] = 105; t[77] = 106; t[78] = 107; t[79] = 108;\n  t[80] = 109; t[81] = 110; t[82] = 111; t[83] = 112; t[84] = 113;\n  t[85] = 114; t[86] = 115; t[87] = 116; t[88] = 117; t[89] = 118;\n  t[90] = 119; t[91] = 120; t[92] = 121; t[93] = 122; t[94] = 123;\n  t[95] = 124; t[96] = 125; t[97] = 126; t[98] = 196; t[99] = 197;\n  t[100] = 199; t[101] = 201; t[102] = 209; t[103] = 214; t[104] = 220;\n  t[105] = 225; t[106] = 224; t[107] = 226; t[108] = 228; t[109] = 227;\n  t[110] = 229; t[111] = 231; t[112] = 233; t[113] = 232; t[114] = 234;\n  t[115] = 235; t[116] = 237; t[117] = 236; t[118] = 238; t[119] = 239;\n  t[120] = 241; t[121] = 243; t[122] = 242; t[123] = 244; t[124] = 246;\n  t[125] = 245; t[126] = 250; t[127] = 249; t[128] = 251; t[129] = 252;\n  t[130] = 8224; t[131] = 176; t[132] = 162; t[133] = 163; t[134] = 167;\n  t[135] = 8226; t[136] = 182; t[137] = 223; t[138] = 174; t[139] = 169;\n  t[140] = 8482; t[141] = 180; t[142] = 168; t[143] = 8800; t[144] = 198;\n  t[145] = 216; t[146] = 8734; t[147] = 177; t[148] = 8804; t[149] = 8805;\n  t[150] = 165; t[151] = 181; t[152] = 8706; t[153] = 8721; t[154] = 8719;\n  t[156] = 8747; t[157] = 170; t[158] = 186; t[159] = 8486; t[160] = 230;\n  t[161] = 248; t[162] = 191; t[163] = 161; t[164] = 172; t[165] = 8730;\n  t[166] = 402; t[167] = 8776; t[168] = 8710; t[169] = 171; t[170] = 187;\n  t[171] = 8230; t[210] = 218; t[223] = 711; t[224] = 321; t[225] = 322;\n  t[227] = 353; t[229] = 382; t[234] = 253; t[252] = 263; t[253] = 268;\n  t[254] = 269; t[258] = 258; t[260] = 260; t[261] = 261; t[265] = 280;\n  t[266] = 281; t[268] = 283; t[269] = 313; t[275] = 323; t[276] = 324;\n  t[278] = 328; t[284] = 345; t[285] = 346; t[286] = 347; t[292] = 367;\n  t[295] = 377; t[296] = 378; t[298] = 380; t[305] = 963; t[306] = 964;\n  t[307] = 966; t[308] = 8215; t[309] = 8252; t[310] = 8319; t[311] = 8359;\n  t[312] = 8592; t[313] = 8593; t[337] = 9552; t[493] = 1039;\n  t[494] = 1040; t[705] = 1524; t[706] = 8362; t[710] = 64288; t[711] = 64298;\n  t[759] = 1617; t[761] = 1776; t[763] = 1778; t[775] = 1652; t[777] = 1764;\n  t[778] = 1780; t[779] = 1781; t[780] = 1782; t[782] = 771; t[783] = 64726;\n  t[786] = 8363; t[788] = 8532; t[790] = 768; t[791] = 769; t[792] = 768;\n  t[795] = 803; t[797] = 64336; t[798] = 64337; t[799] = 64342;\n  t[800] = 64343; t[801] = 64344; t[802] = 64345; t[803] = 64362;\n  t[804] = 64363; t[805] = 64364; t[2424] = 7821; t[2425] = 7822;\n  t[2426] = 7823; t[2427] = 7824; t[2428] = 7825; t[2429] = 7826;\n  t[2430] = 7827; t[2433] = 7682; t[2678] = 8045; t[2679] = 8046;\n  t[2830] = 1552; t[2838] = 686; t[2840] = 751; t[2842] = 753; t[2843] = 754;\n  t[2844] = 755; t[2846] = 757; t[2856] = 767; t[2857] = 848; t[2858] = 849;\n  t[2862] = 853; t[2863] = 854; t[2864] = 855; t[2865] = 861; t[2866] = 862;\n  t[2906] = 7460; t[2908] = 7462; t[2909] = 7463; t[2910] = 7464;\n  t[2912] = 7466; t[2913] = 7467; t[2914] = 7468; t[2916] = 7470;\n  t[2917] = 7471; t[2918] = 7472; t[2920] = 7474; t[2921] = 7475;\n  t[2922] = 7476; t[2924] = 7478; t[2925] = 7479; t[2926] = 7480;\n  t[2928] = 7482; t[2929] = 7483; t[2930] = 7484; t[2932] = 7486;\n  t[2933] = 7487; t[2934] = 7488; t[2936] = 7490; t[2937] = 7491;\n  t[2938] = 7492; t[2940] = 7494; t[2941] = 7495; t[2942] = 7496;\n  t[2944] = 7498; t[2946] = 7500; t[2948] = 7502; t[2950] = 7504;\n  t[2951] = 7505; t[2952] = 7506; t[2954] = 7508; t[2955] = 7509;\n  t[2956] = 7510; t[2958] = 7512; t[2959] = 7513; t[2960] = 7514;\n  t[2962] = 7516; t[2963] = 7517; t[2964] = 7518; t[2966] = 7520;\n  t[2967] = 7521; t[2968] = 7522; t[2970] = 7524; t[2971] = 7525;\n  t[2972] = 7526; t[2974] = 7528; t[2975] = 7529; t[2976] = 7530;\n  t[2978] = 1537; t[2979] = 1538; t[2980] = 1539; t[2982] = 1549;\n  t[2983] = 1551; t[2984] = 1552; t[2986] = 1554; t[2987] = 1555;\n  t[2988] = 1556; t[2990] = 1623; t[2991] = 1624; t[2995] = 1775;\n  t[2999] = 1791; t[3002] = 64290; t[3003] = 64291; t[3004] = 64292;\n  t[3006] = 64294; t[3007] = 64295; t[3008] = 64296; t[3011] = 1900;\n  t[3014] = 8223; t[3015] = 8244; t[3017] = 7532; t[3018] = 7533;\n  t[3019] = 7534; t[3075] = 7590; t[3076] = 7591; t[3079] = 7594;\n  t[3080] = 7595; t[3083] = 7598; t[3084] = 7599; t[3087] = 7602;\n  t[3088] = 7603; t[3091] = 7606; t[3092] = 7607; t[3095] = 7610;\n  t[3096] = 7611; t[3099] = 7614; t[3100] = 7615; t[3103] = 7618;\n  t[3104] = 7619; t[3107] = 8337; t[3108] = 8338; t[3116] = 1884;\n  t[3119] = 1885; t[3120] = 1885; t[3123] = 1886; t[3124] = 1886;\n  t[3127] = 1887; t[3128] = 1887; t[3131] = 1888; t[3132] = 1888;\n  t[3135] = 1889; t[3136] = 1889; t[3139] = 1890; t[3140] = 1890;\n  t[3143] = 1891; t[3144] = 1891; t[3147] = 1892; t[3148] = 1892;\n  t[3153] = 580; t[3154] = 581; t[3157] = 584; t[3158] = 585; t[3161] = 588;\n  t[3162] = 589; t[3165] = 891; t[3166] = 892; t[3169] = 1274; t[3170] = 1275;\n  t[3173] = 1278; t[3174] = 1279; t[3181] = 7622; t[3182] = 7623;\n  t[3282] = 11799; t[3316] = 578; t[3379] = 42785; t[3393] = 1159;\n  t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nvar getSupplementalGlyphMapForArialBlack =\n    getLookupTableFactory(function (t) {\n  t[227] = 322; t[264] = 261; t[291] = 346;\n});\n\n// The glyph map for Calibri (a Windows font) differs from the glyph map used\n// in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\n// adjust the glyph map for non-embedded Calibri fonts.\nlet getSupplementalGlyphMapForCalibri = getLookupTableFactory(function(t) {\n  t[1] = 32; t[4] = 65; t[17] = 66; t[18] = 67; t[24] = 68; t[28] = 69;\n  t[38] = 70; t[39] = 71; t[44] = 72; t[47] = 73; t[58] = 74; t[60] = 75;\n  t[62] = 76; t[68] = 77; t[69] = 78; t[75] = 79; t[87] = 80; t[89] = 81;\n  t[90] = 82; t[94] = 83; t[100] = 84; t[104] = 85; t[115] = 86; t[116] = 87;\n  t[121] = 88; t[122] = 89; t[127] = 90; t[258] = 97; t[268] = 261; t[271] = 98;\n  t[272] = 99; t[273] = 263; t[282] = 100; t[286] = 101; t[295] = 281;\n  t[296] = 102; t[336] = 103; t[346] = 104; t[349] = 105; t[361] = 106;\n  t[364] = 107; t[367] = 108; t[371] = 322; t[373] = 109; t[374] = 110;\n  t[381] = 111; t[383] = 243; t[393] = 112; t[395] = 113; t[396] = 114;\n  t[400] = 115; t[401] = 347; t[410] = 116; t[437] = 117; t[448] = 118;\n  t[449] = 119; t[454] = 120; t[455] = 121; t[460] = 122; t[463] = 380;\n  t[853] = 44; t[855] = 58; t[856] = 46; t[876] = 47; t[878] = 45; t[882] = 45;\n  t[894] = 40; t[895] = 41; t[896] = 91; t[897] = 93; t[923] = 64; t[1004] = 48;\n  t[1005] = 49; t[1006] = 50; t[1007] = 51; t[1008] = 52; t[1009] = 53;\n  t[1010] = 54; t[1011] = 55; t[1012] = 56; t[1013] = 57; t[1081] = 37;\n  t[1085] = 43; t[1086] = 45;\n});\n\nexport {\n  getStdFontMap,\n  getNonStdFontMap,\n  getSerifFonts,\n  getSymbolsFonts,\n  getGlyphMapForStandardFonts,\n  getSupplementalGlyphMapForArialBlack,\n  getSupplementalGlyphMapForCalibri,\n};\n","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require('../shared/util').getLookupTableFactory;\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nvar getSpecialPUASymbols = getLookupTableFactory(function (t) {\n  t[63721] = 0x00A9; // copyrightsans (0xF8E9) => copyright\n  t[63193] = 0x00A9; // copyrightserif (0xF6D9) => copyright\n  t[63720] = 0x00AE; // registersans (0xF8E8) => registered\n  t[63194] = 0x00AE; // registerserif (0xF6DA) => registered\n  t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n  t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n  t[63729] = 0x23A7; // bracelefttp (0xF8F1)\n  t[63730] = 0x23A8; // braceleftmid (0xF8F2)\n  t[63731] = 0x23A9; // braceleftbt (0xF8F3)\n  t[63740] = 0x23AB; // bracerighttp (0xF8FC)\n  t[63741] = 0x23AC; // bracerightmid (0xF8FD)\n  t[63742] = 0x23AD; // bracerightbt (0xF8FE)\n  t[63726] = 0x23A1; // bracketlefttp (0xF8EE)\n  t[63727] = 0x23A2; // bracketleftex (0xF8EF)\n  t[63728] = 0x23A3; // bracketleftbt (0xF8F0)\n  t[63737] = 0x23A4; // bracketrighttp (0xF8F9)\n  t[63738] = 0x23A5; // bracketrightex (0xF8FA)\n  t[63739] = 0x23A6; // bracketrightbt (0xF8FB)\n  t[63723] = 0x239B; // parenlefttp (0xF8EB)\n  t[63724] = 0x239C; // parenleftex (0xF8EC)\n  t[63725] = 0x239D; // parenleftbt (0xF8ED)\n  t[63734] = 0x239E; // parenrighttp (0xF8F6)\n  t[63735] = 0x239F; // parenrightex (0xF8F7)\n  t[63736] = 0x23A0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n  if (code >= 0xFFF0 && code <= 0xFFFF) { // Specials unicode block.\n    return 0;\n  } else if (code >= 0xF600 && code <= 0xF8FF) {\n    return (getSpecialPUASymbols()[code] || code);\n  } else if (code === 0x00AD) { // softhyphen\n    return 0x002D; // hyphen\n  }\n  return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n  var unicode = glyphsUnicodeMap[name];\n  if (unicode !== undefined) {\n    return unicode;\n  }\n  if (!name) {\n    return -1;\n  }\n  // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n  if (name[0] === 'u') {\n    var nameLen = name.length, hexStr;\n\n    if (nameLen === 7 && name[1] === 'n' && name[2] === 'i') { // 'uniXXXX'\n      hexStr = name.substring(3);\n    } else if (nameLen >= 5 && nameLen <= 7) { // 'uXXXX{XX}'\n      hexStr = name.substring(1);\n    } else {\n      return -1;\n    }\n    // Check for upper-case hexadecimal characters, to avoid false positives.\n    if (hexStr === hexStr.toUpperCase()) {\n      unicode = parseInt(hexStr, 16);\n      if (unicode >= 0) {\n        return unicode;\n      }\n    }\n  }\n  return -1;\n}\n\nvar UnicodeRanges = [\n  { 'begin': 0x0000, 'end': 0x007F, }, // Basic Latin\n  { 'begin': 0x0080, 'end': 0x00FF, }, // Latin-1 Supplement\n  { 'begin': 0x0100, 'end': 0x017F, }, // Latin Extended-A\n  { 'begin': 0x0180, 'end': 0x024F, }, // Latin Extended-B\n  { 'begin': 0x0250, 'end': 0x02AF, }, // IPA Extensions\n  { 'begin': 0x02B0, 'end': 0x02FF, }, // Spacing Modifier Letters\n  { 'begin': 0x0300, 'end': 0x036F, }, // Combining Diacritical Marks\n  { 'begin': 0x0370, 'end': 0x03FF, }, // Greek and Coptic\n  { 'begin': 0x2C80, 'end': 0x2CFF, }, // Coptic\n  { 'begin': 0x0400, 'end': 0x04FF, }, // Cyrillic\n  { 'begin': 0x0530, 'end': 0x058F, }, // Armenian\n  { 'begin': 0x0590, 'end': 0x05FF, }, // Hebrew\n  { 'begin': 0xA500, 'end': 0xA63F, }, // Vai\n  { 'begin': 0x0600, 'end': 0x06FF, }, // Arabic\n  { 'begin': 0x07C0, 'end': 0x07FF, }, // NKo\n  { 'begin': 0x0900, 'end': 0x097F, }, // Devanagari\n  { 'begin': 0x0980, 'end': 0x09FF, }, // Bengali\n  { 'begin': 0x0A00, 'end': 0x0A7F, }, // Gurmukhi\n  { 'begin': 0x0A80, 'end': 0x0AFF, }, // Gujarati\n  { 'begin': 0x0B00, 'end': 0x0B7F, }, // Oriya\n  { 'begin': 0x0B80, 'end': 0x0BFF, }, // Tamil\n  { 'begin': 0x0C00, 'end': 0x0C7F, }, // Telugu\n  { 'begin': 0x0C80, 'end': 0x0CFF, }, // Kannada\n  { 'begin': 0x0D00, 'end': 0x0D7F, }, // Malayalam\n  { 'begin': 0x0E00, 'end': 0x0E7F, }, // Thai\n  { 'begin': 0x0E80, 'end': 0x0EFF, }, // Lao\n  { 'begin': 0x10A0, 'end': 0x10FF, }, // Georgian\n  { 'begin': 0x1B00, 'end': 0x1B7F, }, // Balinese\n  { 'begin': 0x1100, 'end': 0x11FF, }, // Hangul Jamo\n  { 'begin': 0x1E00, 'end': 0x1EFF, }, // Latin Extended Additional\n  { 'begin': 0x1F00, 'end': 0x1FFF, }, // Greek Extended\n  { 'begin': 0x2000, 'end': 0x206F, }, // General Punctuation\n  { 'begin': 0x2070, 'end': 0x209F, }, // Superscripts And Subscripts\n  { 'begin': 0x20A0, 'end': 0x20CF, }, // Currency Symbol\n  { 'begin': 0x20D0, 'end': 0x20FF, }, // Combining Diacritical Marks\n  { 'begin': 0x2100, 'end': 0x214F, }, // Letterlike Symbols\n  { 'begin': 0x2150, 'end': 0x218F, }, // Number Forms\n  { 'begin': 0x2190, 'end': 0x21FF, }, // Arrows\n  { 'begin': 0x2200, 'end': 0x22FF, }, // Mathematical Operators\n  { 'begin': 0x2300, 'end': 0x23FF, }, // Miscellaneous Technical\n  { 'begin': 0x2400, 'end': 0x243F, }, // Control Pictures\n  { 'begin': 0x2440, 'end': 0x245F, }, // Optical Character Recognition\n  { 'begin': 0x2460, 'end': 0x24FF, }, // Enclosed Alphanumerics\n  { 'begin': 0x2500, 'end': 0x257F, }, // Box Drawing\n  { 'begin': 0x2580, 'end': 0x259F, }, // Block Elements\n  { 'begin': 0x25A0, 'end': 0x25FF, }, // Geometric Shapes\n  { 'begin': 0x2600, 'end': 0x26FF, }, // Miscellaneous Symbols\n  { 'begin': 0x2700, 'end': 0x27BF, }, // Dingbats\n  { 'begin': 0x3000, 'end': 0x303F, }, // CJK Symbols And Punctuation\n  { 'begin': 0x3040, 'end': 0x309F, }, // Hiragana\n  { 'begin': 0x30A0, 'end': 0x30FF, }, // Katakana\n  { 'begin': 0x3100, 'end': 0x312F, }, // Bopomofo\n  { 'begin': 0x3130, 'end': 0x318F, }, // Hangul Compatibility Jamo\n  { 'begin': 0xA840, 'end': 0xA87F, }, // Phags-pa\n  { 'begin': 0x3200, 'end': 0x32FF, }, // Enclosed CJK Letters And Months\n  { 'begin': 0x3300, 'end': 0x33FF, }, // CJK Compatibility\n  { 'begin': 0xAC00, 'end': 0xD7AF, }, // Hangul Syllables\n  { 'begin': 0xD800, 'end': 0xDFFF, }, // Non-Plane 0 *\n  { 'begin': 0x10900, 'end': 0x1091F, }, // Phoenicia\n  { 'begin': 0x4E00, 'end': 0x9FFF, }, // CJK Unified Ideographs\n  { 'begin': 0xE000, 'end': 0xF8FF, }, // Private Use Area (plane 0)\n  { 'begin': 0x31C0, 'end': 0x31EF, }, // CJK Strokes\n  { 'begin': 0xFB00, 'end': 0xFB4F, }, // Alphabetic Presentation Forms\n  { 'begin': 0xFB50, 'end': 0xFDFF, }, // Arabic Presentation Forms-A\n  { 'begin': 0xFE20, 'end': 0xFE2F, }, // Combining Half Marks\n  { 'begin': 0xFE10, 'end': 0xFE1F, }, // Vertical Forms\n  { 'begin': 0xFE50, 'end': 0xFE6F, }, // Small Form Variants\n  { 'begin': 0xFE70, 'end': 0xFEFF, }, // Arabic Presentation Forms-B\n  { 'begin': 0xFF00, 'end': 0xFFEF, }, // Halfwidth And Fullwidth Forms\n  { 'begin': 0xFFF0, 'end': 0xFFFF, }, // Specials\n  { 'begin': 0x0F00, 'end': 0x0FFF, }, // Tibetan\n  { 'begin': 0x0700, 'end': 0x074F, }, // Syriac\n  { 'begin': 0x0780, 'end': 0x07BF, }, // Thaana\n  { 'begin': 0x0D80, 'end': 0x0DFF, }, // Sinhala\n  { 'begin': 0x1000, 'end': 0x109F, }, // Myanmar\n  { 'begin': 0x1200, 'end': 0x137F, }, // Ethiopic\n  { 'begin': 0x13A0, 'end': 0x13FF, }, // Cherokee\n  { 'begin': 0x1400, 'end': 0x167F, }, // Unified Canadian Aboriginal Syllabics\n  { 'begin': 0x1680, 'end': 0x169F, }, // Ogham\n  { 'begin': 0x16A0, 'end': 0x16FF, }, // Runic\n  { 'begin': 0x1780, 'end': 0x17FF, }, // Khmer\n  { 'begin': 0x1800, 'end': 0x18AF, }, // Mongolian\n  { 'begin': 0x2800, 'end': 0x28FF, }, // Braille Patterns\n  { 'begin': 0xA000, 'end': 0xA48F, }, // Yi Syllables\n  { 'begin': 0x1700, 'end': 0x171F, }, // Tagalog\n  { 'begin': 0x10300, 'end': 0x1032F, }, // Old Italic\n  { 'begin': 0x10330, 'end': 0x1034F, }, // Gothic\n  { 'begin': 0x10400, 'end': 0x1044F, }, // Deseret\n  { 'begin': 0x1D000, 'end': 0x1D0FF, }, // Byzantine Musical Symbols\n  { 'begin': 0x1D400, 'end': 0x1D7FF, }, // Mathematical Alphanumeric Symbols\n  { 'begin': 0xFF000, 'end': 0xFFFFD, }, // Private Use (plane 15)\n  { 'begin': 0xFE00, 'end': 0xFE0F, }, // Variation Selectors\n  { 'begin': 0xE0000, 'end': 0xE007F, }, // Tags\n  { 'begin': 0x1900, 'end': 0x194F, }, // Limbu\n  { 'begin': 0x1950, 'end': 0x197F, }, // Tai Le\n  { 'begin': 0x1980, 'end': 0x19DF, }, // New Tai Lue\n  { 'begin': 0x1A00, 'end': 0x1A1F, }, // Buginese\n  { 'begin': 0x2C00, 'end': 0x2C5F, }, // Glagolitic\n  { 'begin': 0x2D30, 'end': 0x2D7F, }, // Tifinagh\n  { 'begin': 0x4DC0, 'end': 0x4DFF, }, // Yijing Hexagram Symbols\n  { 'begin': 0xA800, 'end': 0xA82F, }, // Syloti Nagri\n  { 'begin': 0x10000, 'end': 0x1007F, }, // Linear B Syllabary\n  { 'begin': 0x10140, 'end': 0x1018F, }, // Ancient Greek Numbers\n  { 'begin': 0x10380, 'end': 0x1039F, }, // Ugaritic\n  { 'begin': 0x103A0, 'end': 0x103DF, }, // Old Persian\n  { 'begin': 0x10450, 'end': 0x1047F, }, // Shavian\n  { 'begin': 0x10480, 'end': 0x104AF, }, // Osmanya\n  { 'begin': 0x10800, 'end': 0x1083F, }, // Cypriot Syllabary\n  { 'begin': 0x10A00, 'end': 0x10A5F, }, // Kharoshthi\n  { 'begin': 0x1D300, 'end': 0x1D35F, }, // Tai Xuan Jing Symbols\n  { 'begin': 0x12000, 'end': 0x123FF, }, // Cuneiform\n  { 'begin': 0x1D360, 'end': 0x1D37F, }, // Counting Rod Numerals\n  { 'begin': 0x1B80, 'end': 0x1BBF, }, // Sundanese\n  { 'begin': 0x1C00, 'end': 0x1C4F, }, // Lepcha\n  { 'begin': 0x1C50, 'end': 0x1C7F, }, // Ol Chiki\n  { 'begin': 0xA880, 'end': 0xA8DF, }, // Saurashtra\n  { 'begin': 0xA900, 'end': 0xA92F, }, // Kayah Li\n  { 'begin': 0xA930, 'end': 0xA95F, }, // Rejang\n  { 'begin': 0xAA00, 'end': 0xAA5F, }, // Cham\n  { 'begin': 0x10190, 'end': 0x101CF, }, // Ancient Symbols\n  { 'begin': 0x101D0, 'end': 0x101FF, }, // Phaistos Disc\n  { 'begin': 0x102A0, 'end': 0x102DF, }, // Carian\n  { 'begin': 0x1F030, 'end': 0x1F09F, }  // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n  for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n    var range = UnicodeRanges[i];\n    if (value >= range.begin && value < range.end) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction isRTLRangeFor(value) {\n  var range = UnicodeRanges[13];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  range = UnicodeRanges[11];\n  if (value >= range.begin && value < range.end) {\n    return true;\n  }\n  return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with <compat> entries.\nvar getNormalizedUnicodes = getLookupTableFactory(function (t) {\n  t['\\u00A8'] = '\\u0020\\u0308';\n  t['\\u00AF'] = '\\u0020\\u0304';\n  t['\\u00B4'] = '\\u0020\\u0301';\n  t['\\u00B5'] = '\\u03BC';\n  t['\\u00B8'] = '\\u0020\\u0327';\n  t['\\u0132'] = '\\u0049\\u004A';\n  t['\\u0133'] = '\\u0069\\u006A';\n  t['\\u013F'] = '\\u004C\\u00B7';\n  t['\\u0140'] = '\\u006C\\u00B7';\n  t['\\u0149'] = '\\u02BC\\u006E';\n  t['\\u017F'] = '\\u0073';\n  t['\\u01C4'] = '\\u0044\\u017D';\n  t['\\u01C5'] = '\\u0044\\u017E';\n  t['\\u01C6'] = '\\u0064\\u017E';\n  t['\\u01C7'] = '\\u004C\\u004A';\n  t['\\u01C8'] = '\\u004C\\u006A';\n  t['\\u01C9'] = '\\u006C\\u006A';\n  t['\\u01CA'] = '\\u004E\\u004A';\n  t['\\u01CB'] = '\\u004E\\u006A';\n  t['\\u01CC'] = '\\u006E\\u006A';\n  t['\\u01F1'] = '\\u0044\\u005A';\n  t['\\u01F2'] = '\\u0044\\u007A';\n  t['\\u01F3'] = '\\u0064\\u007A';\n  t['\\u02D8'] = '\\u0020\\u0306';\n  t['\\u02D9'] = '\\u0020\\u0307';\n  t['\\u02DA'] = '\\u0020\\u030A';\n  t['\\u02DB'] = '\\u0020\\u0328';\n  t['\\u02DC'] = '\\u0020\\u0303';\n  t['\\u02DD'] = '\\u0020\\u030B';\n  t['\\u037A'] = '\\u0020\\u0345';\n  t['\\u0384'] = '\\u0020\\u0301';\n  t['\\u03D0'] = '\\u03B2';\n  t['\\u03D1'] = '\\u03B8';\n  t['\\u03D2'] = '\\u03A5';\n  t['\\u03D5'] = '\\u03C6';\n  t['\\u03D6'] = '\\u03C0';\n  t['\\u03F0'] = '\\u03BA';\n  t['\\u03F1'] = '\\u03C1';\n  t['\\u03F2'] = '\\u03C2';\n  t['\\u03F4'] = '\\u0398';\n  t['\\u03F5'] = '\\u03B5';\n  t['\\u03F9'] = '\\u03A3';\n  t['\\u0587'] = '\\u0565\\u0582';\n  t['\\u0675'] = '\\u0627\\u0674';\n  t['\\u0676'] = '\\u0648\\u0674';\n  t['\\u0677'] = '\\u06C7\\u0674';\n  t['\\u0678'] = '\\u064A\\u0674';\n  t['\\u0E33'] = '\\u0E4D\\u0E32';\n  t['\\u0EB3'] = '\\u0ECD\\u0EB2';\n  t['\\u0EDC'] = '\\u0EAB\\u0E99';\n  t['\\u0EDD'] = '\\u0EAB\\u0EA1';\n  t['\\u0F77'] = '\\u0FB2\\u0F81';\n  t['\\u0F79'] = '\\u0FB3\\u0F81';\n  t['\\u1E9A'] = '\\u0061\\u02BE';\n  t['\\u1FBD'] = '\\u0020\\u0313';\n  t['\\u1FBF'] = '\\u0020\\u0313';\n  t['\\u1FC0'] = '\\u0020\\u0342';\n  t['\\u1FFE'] = '\\u0020\\u0314';\n  t['\\u2002'] = '\\u0020';\n  t['\\u2003'] = '\\u0020';\n  t['\\u2004'] = '\\u0020';\n  t['\\u2005'] = '\\u0020';\n  t['\\u2006'] = '\\u0020';\n  t['\\u2008'] = '\\u0020';\n  t['\\u2009'] = '\\u0020';\n  t['\\u200A'] = '\\u0020';\n  t['\\u2017'] = '\\u0020\\u0333';\n  t['\\u2024'] = '\\u002E';\n  t['\\u2025'] = '\\u002E\\u002E';\n  t['\\u2026'] = '\\u002E\\u002E\\u002E';\n  t['\\u2033'] = '\\u2032\\u2032';\n  t['\\u2034'] = '\\u2032\\u2032\\u2032';\n  t['\\u2036'] = '\\u2035\\u2035';\n  t['\\u2037'] = '\\u2035\\u2035\\u2035';\n  t['\\u203C'] = '\\u0021\\u0021';\n  t['\\u203E'] = '\\u0020\\u0305';\n  t['\\u2047'] = '\\u003F\\u003F';\n  t['\\u2048'] = '\\u003F\\u0021';\n  t['\\u2049'] = '\\u0021\\u003F';\n  t['\\u2057'] = '\\u2032\\u2032\\u2032\\u2032';\n  t['\\u205F'] = '\\u0020';\n  t['\\u20A8'] = '\\u0052\\u0073';\n  t['\\u2100'] = '\\u0061\\u002F\\u0063';\n  t['\\u2101'] = '\\u0061\\u002F\\u0073';\n  t['\\u2103'] = '\\u00B0\\u0043';\n  t['\\u2105'] = '\\u0063\\u002F\\u006F';\n  t['\\u2106'] = '\\u0063\\u002F\\u0075';\n  t['\\u2107'] = '\\u0190';\n  t['\\u2109'] = '\\u00B0\\u0046';\n  t['\\u2116'] = '\\u004E\\u006F';\n  t['\\u2121'] = '\\u0054\\u0045\\u004C';\n  t['\\u2135'] = '\\u05D0';\n  t['\\u2136'] = '\\u05D1';\n  t['\\u2137'] = '\\u05D2';\n  t['\\u2138'] = '\\u05D3';\n  t['\\u213B'] = '\\u0046\\u0041\\u0058';\n  t['\\u2160'] = '\\u0049';\n  t['\\u2161'] = '\\u0049\\u0049';\n  t['\\u2162'] = '\\u0049\\u0049\\u0049';\n  t['\\u2163'] = '\\u0049\\u0056';\n  t['\\u2164'] = '\\u0056';\n  t['\\u2165'] = '\\u0056\\u0049';\n  t['\\u2166'] = '\\u0056\\u0049\\u0049';\n  t['\\u2167'] = '\\u0056\\u0049\\u0049\\u0049';\n  t['\\u2168'] = '\\u0049\\u0058';\n  t['\\u2169'] = '\\u0058';\n  t['\\u216A'] = '\\u0058\\u0049';\n  t['\\u216B'] = '\\u0058\\u0049\\u0049';\n  t['\\u216C'] = '\\u004C';\n  t['\\u216D'] = '\\u0043';\n  t['\\u216E'] = '\\u0044';\n  t['\\u216F'] = '\\u004D';\n  t['\\u2170'] = '\\u0069';\n  t['\\u2171'] = '\\u0069\\u0069';\n  t['\\u2172'] = '\\u0069\\u0069\\u0069';\n  t['\\u2173'] = '\\u0069\\u0076';\n  t['\\u2174'] = '\\u0076';\n  t['\\u2175'] = '\\u0076\\u0069';\n  t['\\u2176'] = '\\u0076\\u0069\\u0069';\n  t['\\u2177'] = '\\u0076\\u0069\\u0069\\u0069';\n  t['\\u2178'] = '\\u0069\\u0078';\n  t['\\u2179'] = '\\u0078';\n  t['\\u217A'] = '\\u0078\\u0069';\n  t['\\u217B'] = '\\u0078\\u0069\\u0069';\n  t['\\u217C'] = '\\u006C';\n  t['\\u217D'] = '\\u0063';\n  t['\\u217E'] = '\\u0064';\n  t['\\u217F'] = '\\u006D';\n  t['\\u222C'] = '\\u222B\\u222B';\n  t['\\u222D'] = '\\u222B\\u222B\\u222B';\n  t['\\u222F'] = '\\u222E\\u222E';\n  t['\\u2230'] = '\\u222E\\u222E\\u222E';\n  t['\\u2474'] = '\\u0028\\u0031\\u0029';\n  t['\\u2475'] = '\\u0028\\u0032\\u0029';\n  t['\\u2476'] = '\\u0028\\u0033\\u0029';\n  t['\\u2477'] = '\\u0028\\u0034\\u0029';\n  t['\\u2478'] = '\\u0028\\u0035\\u0029';\n  t['\\u2479'] = '\\u0028\\u0036\\u0029';\n  t['\\u247A'] = '\\u0028\\u0037\\u0029';\n  t['\\u247B'] = '\\u0028\\u0038\\u0029';\n  t['\\u247C'] = '\\u0028\\u0039\\u0029';\n  t['\\u247D'] = '\\u0028\\u0031\\u0030\\u0029';\n  t['\\u247E'] = '\\u0028\\u0031\\u0031\\u0029';\n  t['\\u247F'] = '\\u0028\\u0031\\u0032\\u0029';\n  t['\\u2480'] = '\\u0028\\u0031\\u0033\\u0029';\n  t['\\u2481'] = '\\u0028\\u0031\\u0034\\u0029';\n  t['\\u2482'] = '\\u0028\\u0031\\u0035\\u0029';\n  t['\\u2483'] = '\\u0028\\u0031\\u0036\\u0029';\n  t['\\u2484'] = '\\u0028\\u0031\\u0037\\u0029';\n  t['\\u2485'] = '\\u0028\\u0031\\u0038\\u0029';\n  t['\\u2486'] = '\\u0028\\u0031\\u0039\\u0029';\n  t['\\u2487'] = '\\u0028\\u0032\\u0030\\u0029';\n  t['\\u2488'] = '\\u0031\\u002E';\n  t['\\u2489'] = '\\u0032\\u002E';\n  t['\\u248A'] = '\\u0033\\u002E';\n  t['\\u248B'] = '\\u0034\\u002E';\n  t['\\u248C'] = '\\u0035\\u002E';\n  t['\\u248D'] = '\\u0036\\u002E';\n  t['\\u248E'] = '\\u0037\\u002E';\n  t['\\u248F'] = '\\u0038\\u002E';\n  t['\\u2490'] = '\\u0039\\u002E';\n  t['\\u2491'] = '\\u0031\\u0030\\u002E';\n  t['\\u2492'] = '\\u0031\\u0031\\u002E';\n  t['\\u2493'] = '\\u0031\\u0032\\u002E';\n  t['\\u2494'] = '\\u0031\\u0033\\u002E';\n  t['\\u2495'] = '\\u0031\\u0034\\u002E';\n  t['\\u2496'] = '\\u0031\\u0035\\u002E';\n  t['\\u2497'] = '\\u0031\\u0036\\u002E';\n  t['\\u2498'] = '\\u0031\\u0037\\u002E';\n  t['\\u2499'] = '\\u0031\\u0038\\u002E';\n  t['\\u249A'] = '\\u0031\\u0039\\u002E';\n  t['\\u249B'] = '\\u0032\\u0030\\u002E';\n  t['\\u249C'] = '\\u0028\\u0061\\u0029';\n  t['\\u249D'] = '\\u0028\\u0062\\u0029';\n  t['\\u249E'] = '\\u0028\\u0063\\u0029';\n  t['\\u249F'] = '\\u0028\\u0064\\u0029';\n  t['\\u24A0'] = '\\u0028\\u0065\\u0029';\n  t['\\u24A1'] = '\\u0028\\u0066\\u0029';\n  t['\\u24A2'] = '\\u0028\\u0067\\u0029';\n  t['\\u24A3'] = '\\u0028\\u0068\\u0029';\n  t['\\u24A4'] = '\\u0028\\u0069\\u0029';\n  t['\\u24A5'] = '\\u0028\\u006A\\u0029';\n  t['\\u24A6'] = '\\u0028\\u006B\\u0029';\n  t['\\u24A7'] = '\\u0028\\u006C\\u0029';\n  t['\\u24A8'] = '\\u0028\\u006D\\u0029';\n  t['\\u24A9'] = '\\u0028\\u006E\\u0029';\n  t['\\u24AA'] = '\\u0028\\u006F\\u0029';\n  t['\\u24AB'] = '\\u0028\\u0070\\u0029';\n  t['\\u24AC'] = '\\u0028\\u0071\\u0029';\n  t['\\u24AD'] = '\\u0028\\u0072\\u0029';\n  t['\\u24AE'] = '\\u0028\\u0073\\u0029';\n  t['\\u24AF'] = '\\u0028\\u0074\\u0029';\n  t['\\u24B0'] = '\\u0028\\u0075\\u0029';\n  t['\\u24B1'] = '\\u0028\\u0076\\u0029';\n  t['\\u24B2'] = '\\u0028\\u0077\\u0029';\n  t['\\u24B3'] = '\\u0028\\u0078\\u0029';\n  t['\\u24B4'] = '\\u0028\\u0079\\u0029';\n  t['\\u24B5'] = '\\u0028\\u007A\\u0029';\n  t['\\u2A0C'] = '\\u222B\\u222B\\u222B\\u222B';\n  t['\\u2A74'] = '\\u003A\\u003A\\u003D';\n  t['\\u2A75'] = '\\u003D\\u003D';\n  t['\\u2A76'] = '\\u003D\\u003D\\u003D';\n  t['\\u2E9F'] = '\\u6BCD';\n  t['\\u2EF3'] = '\\u9F9F';\n  t['\\u2F00'] = '\\u4E00';\n  t['\\u2F01'] = '\\u4E28';\n  t['\\u2F02'] = '\\u4E36';\n  t['\\u2F03'] = '\\u4E3F';\n  t['\\u2F04'] = '\\u4E59';\n  t['\\u2F05'] = '\\u4E85';\n  t['\\u2F06'] = '\\u4E8C';\n  t['\\u2F07'] = '\\u4EA0';\n  t['\\u2F08'] = '\\u4EBA';\n  t['\\u2F09'] = '\\u513F';\n  t['\\u2F0A'] = '\\u5165';\n  t['\\u2F0B'] = '\\u516B';\n  t['\\u2F0C'] = '\\u5182';\n  t['\\u2F0D'] = '\\u5196';\n  t['\\u2F0E'] = '\\u51AB';\n  t['\\u2F0F'] = '\\u51E0';\n  t['\\u2F10'] = '\\u51F5';\n  t['\\u2F11'] = '\\u5200';\n  t['\\u2F12'] = '\\u529B';\n  t['\\u2F13'] = '\\u52F9';\n  t['\\u2F14'] = '\\u5315';\n  t['\\u2F15'] = '\\u531A';\n  t['\\u2F16'] = '\\u5338';\n  t['\\u2F17'] = '\\u5341';\n  t['\\u2F18'] = '\\u535C';\n  t['\\u2F19'] = '\\u5369';\n  t['\\u2F1A'] = '\\u5382';\n  t['\\u2F1B'] = '\\u53B6';\n  t['\\u2F1C'] = '\\u53C8';\n  t['\\u2F1D'] = '\\u53E3';\n  t['\\u2F1E'] = '\\u56D7';\n  t['\\u2F1F'] = '\\u571F';\n  t['\\u2F20'] = '\\u58EB';\n  t['\\u2F21'] = '\\u5902';\n  t['\\u2F22'] = '\\u590A';\n  t['\\u2F23'] = '\\u5915';\n  t['\\u2F24'] = '\\u5927';\n  t['\\u2F25'] = '\\u5973';\n  t['\\u2F26'] = '\\u5B50';\n  t['\\u2F27'] = '\\u5B80';\n  t['\\u2F28'] = '\\u5BF8';\n  t['\\u2F29'] = '\\u5C0F';\n  t['\\u2F2A'] = '\\u5C22';\n  t['\\u2F2B'] = '\\u5C38';\n  t['\\u2F2C'] = '\\u5C6E';\n  t['\\u2F2D'] = '\\u5C71';\n  t['\\u2F2E'] = '\\u5DDB';\n  t['\\u2F2F'] = '\\u5DE5';\n  t['\\u2F30'] = '\\u5DF1';\n  t['\\u2F31'] = '\\u5DFE';\n  t['\\u2F32'] = '\\u5E72';\n  t['\\u2F33'] = '\\u5E7A';\n  t['\\u2F34'] = '\\u5E7F';\n  t['\\u2F35'] = '\\u5EF4';\n  t['\\u2F36'] = '\\u5EFE';\n  t['\\u2F37'] = '\\u5F0B';\n  t['\\u2F38'] = '\\u5F13';\n  t['\\u2F39'] = '\\u5F50';\n  t['\\u2F3A'] = '\\u5F61';\n  t['\\u2F3B'] = '\\u5F73';\n  t['\\u2F3C'] = '\\u5FC3';\n  t['\\u2F3D'] = '\\u6208';\n  t['\\u2F3E'] = '\\u6236';\n  t['\\u2F3F'] = '\\u624B';\n  t['\\u2F40'] = '\\u652F';\n  t['\\u2F41'] = '\\u6534';\n  t['\\u2F42'] = '\\u6587';\n  t['\\u2F43'] = '\\u6597';\n  t['\\u2F44'] = '\\u65A4';\n  t['\\u2F45'] = '\\u65B9';\n  t['\\u2F46'] = '\\u65E0';\n  t['\\u2F47'] = '\\u65E5';\n  t['\\u2F48'] = '\\u66F0';\n  t['\\u2F49'] = '\\u6708';\n  t['\\u2F4A'] = '\\u6728';\n  t['\\u2F4B'] = '\\u6B20';\n  t['\\u2F4C'] = '\\u6B62';\n  t['\\u2F4D'] = '\\u6B79';\n  t['\\u2F4E'] = '\\u6BB3';\n  t['\\u2F4F'] = '\\u6BCB';\n  t['\\u2F50'] = '\\u6BD4';\n  t['\\u2F51'] = '\\u6BDB';\n  t['\\u2F52'] = '\\u6C0F';\n  t['\\u2F53'] = '\\u6C14';\n  t['\\u2F54'] = '\\u6C34';\n  t['\\u2F55'] = '\\u706B';\n  t['\\u2F56'] = '\\u722A';\n  t['\\u2F57'] = '\\u7236';\n  t['\\u2F58'] = '\\u723B';\n  t['\\u2F59'] = '\\u723F';\n  t['\\u2F5A'] = '\\u7247';\n  t['\\u2F5B'] = '\\u7259';\n  t['\\u2F5C'] = '\\u725B';\n  t['\\u2F5D'] = '\\u72AC';\n  t['\\u2F5E'] = '\\u7384';\n  t['\\u2F5F'] = '\\u7389';\n  t['\\u2F60'] = '\\u74DC';\n  t['\\u2F61'] = '\\u74E6';\n  t['\\u2F62'] = '\\u7518';\n  t['\\u2F63'] = '\\u751F';\n  t['\\u2F64'] = '\\u7528';\n  t['\\u2F65'] = '\\u7530';\n  t['\\u2F66'] = '\\u758B';\n  t['\\u2F67'] = '\\u7592';\n  t['\\u2F68'] = '\\u7676';\n  t['\\u2F69'] = '\\u767D';\n  t['\\u2F6A'] = '\\u76AE';\n  t['\\u2F6B'] = '\\u76BF';\n  t['\\u2F6C'] = '\\u76EE';\n  t['\\u2F6D'] = '\\u77DB';\n  t['\\u2F6E'] = '\\u77E2';\n  t['\\u2F6F'] = '\\u77F3';\n  t['\\u2F70'] = '\\u793A';\n  t['\\u2F71'] = '\\u79B8';\n  t['\\u2F72'] = '\\u79BE';\n  t['\\u2F73'] = '\\u7A74';\n  t['\\u2F74'] = '\\u7ACB';\n  t['\\u2F75'] = '\\u7AF9';\n  t['\\u2F76'] = '\\u7C73';\n  t['\\u2F77'] = '\\u7CF8';\n  t['\\u2F78'] = '\\u7F36';\n  t['\\u2F79'] = '\\u7F51';\n  t['\\u2F7A'] = '\\u7F8A';\n  t['\\u2F7B'] = '\\u7FBD';\n  t['\\u2F7C'] = '\\u8001';\n  t['\\u2F7D'] = '\\u800C';\n  t['\\u2F7E'] = '\\u8012';\n  t['\\u2F7F'] = '\\u8033';\n  t['\\u2F80'] = '\\u807F';\n  t['\\u2F81'] = '\\u8089';\n  t['\\u2F82'] = '\\u81E3';\n  t['\\u2F83'] = '\\u81EA';\n  t['\\u2F84'] = '\\u81F3';\n  t['\\u2F85'] = '\\u81FC';\n  t['\\u2F86'] = '\\u820C';\n  t['\\u2F87'] = '\\u821B';\n  t['\\u2F88'] = '\\u821F';\n  t['\\u2F89'] = '\\u826E';\n  t['\\u2F8A'] = '\\u8272';\n  t['\\u2F8B'] = '\\u8278';\n  t['\\u2F8C'] = '\\u864D';\n  t['\\u2F8D'] = '\\u866B';\n  t['\\u2F8E'] = '\\u8840';\n  t['\\u2F8F'] = '\\u884C';\n  t['\\u2F90'] = '\\u8863';\n  t['\\u2F91'] = '\\u897E';\n  t['\\u2F92'] = '\\u898B';\n  t['\\u2F93'] = '\\u89D2';\n  t['\\u2F94'] = '\\u8A00';\n  t['\\u2F95'] = '\\u8C37';\n  t['\\u2F96'] = '\\u8C46';\n  t['\\u2F97'] = '\\u8C55';\n  t['\\u2F98'] = '\\u8C78';\n  t['\\u2F99'] = '\\u8C9D';\n  t['\\u2F9A'] = '\\u8D64';\n  t['\\u2F9B'] = '\\u8D70';\n  t['\\u2F9C'] = '\\u8DB3';\n  t['\\u2F9D'] = '\\u8EAB';\n  t['\\u2F9E'] = '\\u8ECA';\n  t['\\u2F9F'] = '\\u8F9B';\n  t['\\u2FA0'] = '\\u8FB0';\n  t['\\u2FA1'] = '\\u8FB5';\n  t['\\u2FA2'] = '\\u9091';\n  t['\\u2FA3'] = '\\u9149';\n  t['\\u2FA4'] = '\\u91C6';\n  t['\\u2FA5'] = '\\u91CC';\n  t['\\u2FA6'] = '\\u91D1';\n  t['\\u2FA7'] = '\\u9577';\n  t['\\u2FA8'] = '\\u9580';\n  t['\\u2FA9'] = '\\u961C';\n  t['\\u2FAA'] = '\\u96B6';\n  t['\\u2FAB'] = '\\u96B9';\n  t['\\u2FAC'] = '\\u96E8';\n  t['\\u2FAD'] = '\\u9751';\n  t['\\u2FAE'] = '\\u975E';\n  t['\\u2FAF'] = '\\u9762';\n  t['\\u2FB0'] = '\\u9769';\n  t['\\u2FB1'] = '\\u97CB';\n  t['\\u2FB2'] = '\\u97ED';\n  t['\\u2FB3'] = '\\u97F3';\n  t['\\u2FB4'] = '\\u9801';\n  t['\\u2FB5'] = '\\u98A8';\n  t['\\u2FB6'] = '\\u98DB';\n  t['\\u2FB7'] = '\\u98DF';\n  t['\\u2FB8'] = '\\u9996';\n  t['\\u2FB9'] = '\\u9999';\n  t['\\u2FBA'] = '\\u99AC';\n  t['\\u2FBB'] = '\\u9AA8';\n  t['\\u2FBC'] = '\\u9AD8';\n  t['\\u2FBD'] = '\\u9ADF';\n  t['\\u2FBE'] = '\\u9B25';\n  t['\\u2FBF'] = '\\u9B2F';\n  t['\\u2FC0'] = '\\u9B32';\n  t['\\u2FC1'] = '\\u9B3C';\n  t['\\u2FC2'] = '\\u9B5A';\n  t['\\u2FC3'] = '\\u9CE5';\n  t['\\u2FC4'] = '\\u9E75';\n  t['\\u2FC5'] = '\\u9E7F';\n  t['\\u2FC6'] = '\\u9EA5';\n  t['\\u2FC7'] = '\\u9EBB';\n  t['\\u2FC8'] = '\\u9EC3';\n  t['\\u2FC9'] = '\\u9ECD';\n  t['\\u2FCA'] = '\\u9ED1';\n  t['\\u2FCB'] = '\\u9EF9';\n  t['\\u2FCC'] = '\\u9EFD';\n  t['\\u2FCD'] = '\\u9F0E';\n  t['\\u2FCE'] = '\\u9F13';\n  t['\\u2FCF'] = '\\u9F20';\n  t['\\u2FD0'] = '\\u9F3B';\n  t['\\u2FD1'] = '\\u9F4A';\n  t['\\u2FD2'] = '\\u9F52';\n  t['\\u2FD3'] = '\\u9F8D';\n  t['\\u2FD4'] = '\\u9F9C';\n  t['\\u2FD5'] = '\\u9FA0';\n  t['\\u3036'] = '\\u3012';\n  t['\\u3038'] = '\\u5341';\n  t['\\u3039'] = '\\u5344';\n  t['\\u303A'] = '\\u5345';\n  t['\\u309B'] = '\\u0020\\u3099';\n  t['\\u309C'] = '\\u0020\\u309A';\n  t['\\u3131'] = '\\u1100';\n  t['\\u3132'] = '\\u1101';\n  t['\\u3133'] = '\\u11AA';\n  t['\\u3134'] = '\\u1102';\n  t['\\u3135'] = '\\u11AC';\n  t['\\u3136'] = '\\u11AD';\n  t['\\u3137'] = '\\u1103';\n  t['\\u3138'] = '\\u1104';\n  t['\\u3139'] = '\\u1105';\n  t['\\u313A'] = '\\u11B0';\n  t['\\u313B'] = '\\u11B1';\n  t['\\u313C'] = '\\u11B2';\n  t['\\u313D'] = '\\u11B3';\n  t['\\u313E'] = '\\u11B4';\n  t['\\u313F'] = '\\u11B5';\n  t['\\u3140'] = '\\u111A';\n  t['\\u3141'] = '\\u1106';\n  t['\\u3142'] = '\\u1107';\n  t['\\u3143'] = '\\u1108';\n  t['\\u3144'] = '\\u1121';\n  t['\\u3145'] = '\\u1109';\n  t['\\u3146'] = '\\u110A';\n  t['\\u3147'] = '\\u110B';\n  t['\\u3148'] = '\\u110C';\n  t['\\u3149'] = '\\u110D';\n  t['\\u314A'] = '\\u110E';\n  t['\\u314B'] = '\\u110F';\n  t['\\u314C'] = '\\u1110';\n  t['\\u314D'] = '\\u1111';\n  t['\\u314E'] = '\\u1112';\n  t['\\u314F'] = '\\u1161';\n  t['\\u3150'] = '\\u1162';\n  t['\\u3151'] = '\\u1163';\n  t['\\u3152'] = '\\u1164';\n  t['\\u3153'] = '\\u1165';\n  t['\\u3154'] = '\\u1166';\n  t['\\u3155'] = '\\u1167';\n  t['\\u3156'] = '\\u1168';\n  t['\\u3157'] = '\\u1169';\n  t['\\u3158'] = '\\u116A';\n  t['\\u3159'] = '\\u116B';\n  t['\\u315A'] = '\\u116C';\n  t['\\u315B'] = '\\u116D';\n  t['\\u315C'] = '\\u116E';\n  t['\\u315D'] = '\\u116F';\n  t['\\u315E'] = '\\u1170';\n  t['\\u315F'] = '\\u1171';\n  t['\\u3160'] = '\\u1172';\n  t['\\u3161'] = '\\u1173';\n  t['\\u3162'] = '\\u1174';\n  t['\\u3163'] = '\\u1175';\n  t['\\u3164'] = '\\u1160';\n  t['\\u3165'] = '\\u1114';\n  t['\\u3166'] = '\\u1115';\n  t['\\u3167'] = '\\u11C7';\n  t['\\u3168'] = '\\u11C8';\n  t['\\u3169'] = '\\u11CC';\n  t['\\u316A'] = '\\u11CE';\n  t['\\u316B'] = '\\u11D3';\n  t['\\u316C'] = '\\u11D7';\n  t['\\u316D'] = '\\u11D9';\n  t['\\u316E'] = '\\u111C';\n  t['\\u316F'] = '\\u11DD';\n  t['\\u3170'] = '\\u11DF';\n  t['\\u3171'] = '\\u111D';\n  t['\\u3172'] = '\\u111E';\n  t['\\u3173'] = '\\u1120';\n  t['\\u3174'] = '\\u1122';\n  t['\\u3175'] = '\\u1123';\n  t['\\u3176'] = '\\u1127';\n  t['\\u3177'] = '\\u1129';\n  t['\\u3178'] = '\\u112B';\n  t['\\u3179'] = '\\u112C';\n  t['\\u317A'] = '\\u112D';\n  t['\\u317B'] = '\\u112E';\n  t['\\u317C'] = '\\u112F';\n  t['\\u317D'] = '\\u1132';\n  t['\\u317E'] = '\\u1136';\n  t['\\u317F'] = '\\u1140';\n  t['\\u3180'] = '\\u1147';\n  t['\\u3181'] = '\\u114C';\n  t['\\u3182'] = '\\u11F1';\n  t['\\u3183'] = '\\u11F2';\n  t['\\u3184'] = '\\u1157';\n  t['\\u3185'] = '\\u1158';\n  t['\\u3186'] = '\\u1159';\n  t['\\u3187'] = '\\u1184';\n  t['\\u3188'] = '\\u1185';\n  t['\\u3189'] = '\\u1188';\n  t['\\u318A'] = '\\u1191';\n  t['\\u318B'] = '\\u1192';\n  t['\\u318C'] = '\\u1194';\n  t['\\u318D'] = '\\u119E';\n  t['\\u318E'] = '\\u11A1';\n  t['\\u3200'] = '\\u0028\\u1100\\u0029';\n  t['\\u3201'] = '\\u0028\\u1102\\u0029';\n  t['\\u3202'] = '\\u0028\\u1103\\u0029';\n  t['\\u3203'] = '\\u0028\\u1105\\u0029';\n  t['\\u3204'] = '\\u0028\\u1106\\u0029';\n  t['\\u3205'] = '\\u0028\\u1107\\u0029';\n  t['\\u3206'] = '\\u0028\\u1109\\u0029';\n  t['\\u3207'] = '\\u0028\\u110B\\u0029';\n  t['\\u3208'] = '\\u0028\\u110C\\u0029';\n  t['\\u3209'] = '\\u0028\\u110E\\u0029';\n  t['\\u320A'] = '\\u0028\\u110F\\u0029';\n  t['\\u320B'] = '\\u0028\\u1110\\u0029';\n  t['\\u320C'] = '\\u0028\\u1111\\u0029';\n  t['\\u320D'] = '\\u0028\\u1112\\u0029';\n  t['\\u320E'] = '\\u0028\\u1100\\u1161\\u0029';\n  t['\\u320F'] = '\\u0028\\u1102\\u1161\\u0029';\n  t['\\u3210'] = '\\u0028\\u1103\\u1161\\u0029';\n  t['\\u3211'] = '\\u0028\\u1105\\u1161\\u0029';\n  t['\\u3212'] = '\\u0028\\u1106\\u1161\\u0029';\n  t['\\u3213'] = '\\u0028\\u1107\\u1161\\u0029';\n  t['\\u3214'] = '\\u0028\\u1109\\u1161\\u0029';\n  t['\\u3215'] = '\\u0028\\u110B\\u1161\\u0029';\n  t['\\u3216'] = '\\u0028\\u110C\\u1161\\u0029';\n  t['\\u3217'] = '\\u0028\\u110E\\u1161\\u0029';\n  t['\\u3218'] = '\\u0028\\u110F\\u1161\\u0029';\n  t['\\u3219'] = '\\u0028\\u1110\\u1161\\u0029';\n  t['\\u321A'] = '\\u0028\\u1111\\u1161\\u0029';\n  t['\\u321B'] = '\\u0028\\u1112\\u1161\\u0029';\n  t['\\u321C'] = '\\u0028\\u110C\\u116E\\u0029';\n  t['\\u321D'] = '\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029';\n  t['\\u321E'] = '\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029';\n  t['\\u3220'] = '\\u0028\\u4E00\\u0029';\n  t['\\u3221'] = '\\u0028\\u4E8C\\u0029';\n  t['\\u3222'] = '\\u0028\\u4E09\\u0029';\n  t['\\u3223'] = '\\u0028\\u56DB\\u0029';\n  t['\\u3224'] = '\\u0028\\u4E94\\u0029';\n  t['\\u3225'] = '\\u0028\\u516D\\u0029';\n  t['\\u3226'] = '\\u0028\\u4E03\\u0029';\n  t['\\u3227'] = '\\u0028\\u516B\\u0029';\n  t['\\u3228'] = '\\u0028\\u4E5D\\u0029';\n  t['\\u3229'] = '\\u0028\\u5341\\u0029';\n  t['\\u322A'] = '\\u0028\\u6708\\u0029';\n  t['\\u322B'] = '\\u0028\\u706B\\u0029';\n  t['\\u322C'] = '\\u0028\\u6C34\\u0029';\n  t['\\u322D'] = '\\u0028\\u6728\\u0029';\n  t['\\u322E'] = '\\u0028\\u91D1\\u0029';\n  t['\\u322F'] = '\\u0028\\u571F\\u0029';\n  t['\\u3230'] = '\\u0028\\u65E5\\u0029';\n  t['\\u3231'] = '\\u0028\\u682A\\u0029';\n  t['\\u3232'] = '\\u0028\\u6709\\u0029';\n  t['\\u3233'] = '\\u0028\\u793E\\u0029';\n  t['\\u3234'] = '\\u0028\\u540D\\u0029';\n  t['\\u3235'] = '\\u0028\\u7279\\u0029';\n  t['\\u3236'] = '\\u0028\\u8CA1\\u0029';\n  t['\\u3237'] = '\\u0028\\u795D\\u0029';\n  t['\\u3238'] = '\\u0028\\u52B4\\u0029';\n  t['\\u3239'] = '\\u0028\\u4EE3\\u0029';\n  t['\\u323A'] = '\\u0028\\u547C\\u0029';\n  t['\\u323B'] = '\\u0028\\u5B66\\u0029';\n  t['\\u323C'] = '\\u0028\\u76E3\\u0029';\n  t['\\u323D'] = '\\u0028\\u4F01\\u0029';\n  t['\\u323E'] = '\\u0028\\u8CC7\\u0029';\n  t['\\u323F'] = '\\u0028\\u5354\\u0029';\n  t['\\u3240'] = '\\u0028\\u796D\\u0029';\n  t['\\u3241'] = '\\u0028\\u4F11\\u0029';\n  t['\\u3242'] = '\\u0028\\u81EA\\u0029';\n  t['\\u3243'] = '\\u0028\\u81F3\\u0029';\n  t['\\u32C0'] = '\\u0031\\u6708';\n  t['\\u32C1'] = '\\u0032\\u6708';\n  t['\\u32C2'] = '\\u0033\\u6708';\n  t['\\u32C3'] = '\\u0034\\u6708';\n  t['\\u32C4'] = '\\u0035\\u6708';\n  t['\\u32C5'] = '\\u0036\\u6708';\n  t['\\u32C6'] = '\\u0037\\u6708';\n  t['\\u32C7'] = '\\u0038\\u6708';\n  t['\\u32C8'] = '\\u0039\\u6708';\n  t['\\u32C9'] = '\\u0031\\u0030\\u6708';\n  t['\\u32CA'] = '\\u0031\\u0031\\u6708';\n  t['\\u32CB'] = '\\u0031\\u0032\\u6708';\n  t['\\u3358'] = '\\u0030\\u70B9';\n  t['\\u3359'] = '\\u0031\\u70B9';\n  t['\\u335A'] = '\\u0032\\u70B9';\n  t['\\u335B'] = '\\u0033\\u70B9';\n  t['\\u335C'] = '\\u0034\\u70B9';\n  t['\\u335D'] = '\\u0035\\u70B9';\n  t['\\u335E'] = '\\u0036\\u70B9';\n  t['\\u335F'] = '\\u0037\\u70B9';\n  t['\\u3360'] = '\\u0038\\u70B9';\n  t['\\u3361'] = '\\u0039\\u70B9';\n  t['\\u3362'] = '\\u0031\\u0030\\u70B9';\n  t['\\u3363'] = '\\u0031\\u0031\\u70B9';\n  t['\\u3364'] = '\\u0031\\u0032\\u70B9';\n  t['\\u3365'] = '\\u0031\\u0033\\u70B9';\n  t['\\u3366'] = '\\u0031\\u0034\\u70B9';\n  t['\\u3367'] = '\\u0031\\u0035\\u70B9';\n  t['\\u3368'] = '\\u0031\\u0036\\u70B9';\n  t['\\u3369'] = '\\u0031\\u0037\\u70B9';\n  t['\\u336A'] = '\\u0031\\u0038\\u70B9';\n  t['\\u336B'] = '\\u0031\\u0039\\u70B9';\n  t['\\u336C'] = '\\u0032\\u0030\\u70B9';\n  t['\\u336D'] = '\\u0032\\u0031\\u70B9';\n  t['\\u336E'] = '\\u0032\\u0032\\u70B9';\n  t['\\u336F'] = '\\u0032\\u0033\\u70B9';\n  t['\\u3370'] = '\\u0032\\u0034\\u70B9';\n  t['\\u33E0'] = '\\u0031\\u65E5';\n  t['\\u33E1'] = '\\u0032\\u65E5';\n  t['\\u33E2'] = '\\u0033\\u65E5';\n  t['\\u33E3'] = '\\u0034\\u65E5';\n  t['\\u33E4'] = '\\u0035\\u65E5';\n  t['\\u33E5'] = '\\u0036\\u65E5';\n  t['\\u33E6'] = '\\u0037\\u65E5';\n  t['\\u33E7'] = '\\u0038\\u65E5';\n  t['\\u33E8'] = '\\u0039\\u65E5';\n  t['\\u33E9'] = '\\u0031\\u0030\\u65E5';\n  t['\\u33EA'] = '\\u0031\\u0031\\u65E5';\n  t['\\u33EB'] = '\\u0031\\u0032\\u65E5';\n  t['\\u33EC'] = '\\u0031\\u0033\\u65E5';\n  t['\\u33ED'] = '\\u0031\\u0034\\u65E5';\n  t['\\u33EE'] = '\\u0031\\u0035\\u65E5';\n  t['\\u33EF'] = '\\u0031\\u0036\\u65E5';\n  t['\\u33F0'] = '\\u0031\\u0037\\u65E5';\n  t['\\u33F1'] = '\\u0031\\u0038\\u65E5';\n  t['\\u33F2'] = '\\u0031\\u0039\\u65E5';\n  t['\\u33F3'] = '\\u0032\\u0030\\u65E5';\n  t['\\u33F4'] = '\\u0032\\u0031\\u65E5';\n  t['\\u33F5'] = '\\u0032\\u0032\\u65E5';\n  t['\\u33F6'] = '\\u0032\\u0033\\u65E5';\n  t['\\u33F7'] = '\\u0032\\u0034\\u65E5';\n  t['\\u33F8'] = '\\u0032\\u0035\\u65E5';\n  t['\\u33F9'] = '\\u0032\\u0036\\u65E5';\n  t['\\u33FA'] = '\\u0032\\u0037\\u65E5';\n  t['\\u33FB'] = '\\u0032\\u0038\\u65E5';\n  t['\\u33FC'] = '\\u0032\\u0039\\u65E5';\n  t['\\u33FD'] = '\\u0033\\u0030\\u65E5';\n  t['\\u33FE'] = '\\u0033\\u0031\\u65E5';\n  t['\\uFB00'] = '\\u0066\\u0066';\n  t['\\uFB01'] = '\\u0066\\u0069';\n  t['\\uFB02'] = '\\u0066\\u006C';\n  t['\\uFB03'] = '\\u0066\\u0066\\u0069';\n  t['\\uFB04'] = '\\u0066\\u0066\\u006C';\n  t['\\uFB05'] = '\\u017F\\u0074';\n  t['\\uFB06'] = '\\u0073\\u0074';\n  t['\\uFB13'] = '\\u0574\\u0576';\n  t['\\uFB14'] = '\\u0574\\u0565';\n  t['\\uFB15'] = '\\u0574\\u056B';\n  t['\\uFB16'] = '\\u057E\\u0576';\n  t['\\uFB17'] = '\\u0574\\u056D';\n  t['\\uFB4F'] = '\\u05D0\\u05DC';\n  t['\\uFB50'] = '\\u0671';\n  t['\\uFB51'] = '\\u0671';\n  t['\\uFB52'] = '\\u067B';\n  t['\\uFB53'] = '\\u067B';\n  t['\\uFB54'] = '\\u067B';\n  t['\\uFB55'] = '\\u067B';\n  t['\\uFB56'] = '\\u067E';\n  t['\\uFB57'] = '\\u067E';\n  t['\\uFB58'] = '\\u067E';\n  t['\\uFB59'] = '\\u067E';\n  t['\\uFB5A'] = '\\u0680';\n  t['\\uFB5B'] = '\\u0680';\n  t['\\uFB5C'] = '\\u0680';\n  t['\\uFB5D'] = '\\u0680';\n  t['\\uFB5E'] = '\\u067A';\n  t['\\uFB5F'] = '\\u067A';\n  t['\\uFB60'] = '\\u067A';\n  t['\\uFB61'] = '\\u067A';\n  t['\\uFB62'] = '\\u067F';\n  t['\\uFB63'] = '\\u067F';\n  t['\\uFB64'] = '\\u067F';\n  t['\\uFB65'] = '\\u067F';\n  t['\\uFB66'] = '\\u0679';\n  t['\\uFB67'] = '\\u0679';\n  t['\\uFB68'] = '\\u0679';\n  t['\\uFB69'] = '\\u0679';\n  t['\\uFB6A'] = '\\u06A4';\n  t['\\uFB6B'] = '\\u06A4';\n  t['\\uFB6C'] = '\\u06A4';\n  t['\\uFB6D'] = '\\u06A4';\n  t['\\uFB6E'] = '\\u06A6';\n  t['\\uFB6F'] = '\\u06A6';\n  t['\\uFB70'] = '\\u06A6';\n  t['\\uFB71'] = '\\u06A6';\n  t['\\uFB72'] = '\\u0684';\n  t['\\uFB73'] = '\\u0684';\n  t['\\uFB74'] = '\\u0684';\n  t['\\uFB75'] = '\\u0684';\n  t['\\uFB76'] = '\\u0683';\n  t['\\uFB77'] = '\\u0683';\n  t['\\uFB78'] = '\\u0683';\n  t['\\uFB79'] = '\\u0683';\n  t['\\uFB7A'] = '\\u0686';\n  t['\\uFB7B'] = '\\u0686';\n  t['\\uFB7C'] = '\\u0686';\n  t['\\uFB7D'] = '\\u0686';\n  t['\\uFB7E'] = '\\u0687';\n  t['\\uFB7F'] = '\\u0687';\n  t['\\uFB80'] = '\\u0687';\n  t['\\uFB81'] = '\\u0687';\n  t['\\uFB82'] = '\\u068D';\n  t['\\uFB83'] = '\\u068D';\n  t['\\uFB84'] = '\\u068C';\n  t['\\uFB85'] = '\\u068C';\n  t['\\uFB86'] = '\\u068E';\n  t['\\uFB87'] = '\\u068E';\n  t['\\uFB88'] = '\\u0688';\n  t['\\uFB89'] = '\\u0688';\n  t['\\uFB8A'] = '\\u0698';\n  t['\\uFB8B'] = '\\u0698';\n  t['\\uFB8C'] = '\\u0691';\n  t['\\uFB8D'] = '\\u0691';\n  t['\\uFB8E'] = '\\u06A9';\n  t['\\uFB8F'] = '\\u06A9';\n  t['\\uFB90'] = '\\u06A9';\n  t['\\uFB91'] = '\\u06A9';\n  t['\\uFB92'] = '\\u06AF';\n  t['\\uFB93'] = '\\u06AF';\n  t['\\uFB94'] = '\\u06AF';\n  t['\\uFB95'] = '\\u06AF';\n  t['\\uFB96'] = '\\u06B3';\n  t['\\uFB97'] = '\\u06B3';\n  t['\\uFB98'] = '\\u06B3';\n  t['\\uFB99'] = '\\u06B3';\n  t['\\uFB9A'] = '\\u06B1';\n  t['\\uFB9B'] = '\\u06B1';\n  t['\\uFB9C'] = '\\u06B1';\n  t['\\uFB9D'] = '\\u06B1';\n  t['\\uFB9E'] = '\\u06BA';\n  t['\\uFB9F'] = '\\u06BA';\n  t['\\uFBA0'] = '\\u06BB';\n  t['\\uFBA1'] = '\\u06BB';\n  t['\\uFBA2'] = '\\u06BB';\n  t['\\uFBA3'] = '\\u06BB';\n  t['\\uFBA4'] = '\\u06C0';\n  t['\\uFBA5'] = '\\u06C0';\n  t['\\uFBA6'] = '\\u06C1';\n  t['\\uFBA7'] = '\\u06C1';\n  t['\\uFBA8'] = '\\u06C1';\n  t['\\uFBA9'] = '\\u06C1';\n  t['\\uFBAA'] = '\\u06BE';\n  t['\\uFBAB'] = '\\u06BE';\n  t['\\uFBAC'] = '\\u06BE';\n  t['\\uFBAD'] = '\\u06BE';\n  t['\\uFBAE'] = '\\u06D2';\n  t['\\uFBAF'] = '\\u06D2';\n  t['\\uFBB0'] = '\\u06D3';\n  t['\\uFBB1'] = '\\u06D3';\n  t['\\uFBD3'] = '\\u06AD';\n  t['\\uFBD4'] = '\\u06AD';\n  t['\\uFBD5'] = '\\u06AD';\n  t['\\uFBD6'] = '\\u06AD';\n  t['\\uFBD7'] = '\\u06C7';\n  t['\\uFBD8'] = '\\u06C7';\n  t['\\uFBD9'] = '\\u06C6';\n  t['\\uFBDA'] = '\\u06C6';\n  t['\\uFBDB'] = '\\u06C8';\n  t['\\uFBDC'] = '\\u06C8';\n  t['\\uFBDD'] = '\\u0677';\n  t['\\uFBDE'] = '\\u06CB';\n  t['\\uFBDF'] = '\\u06CB';\n  t['\\uFBE0'] = '\\u06C5';\n  t['\\uFBE1'] = '\\u06C5';\n  t['\\uFBE2'] = '\\u06C9';\n  t['\\uFBE3'] = '\\u06C9';\n  t['\\uFBE4'] = '\\u06D0';\n  t['\\uFBE5'] = '\\u06D0';\n  t['\\uFBE6'] = '\\u06D0';\n  t['\\uFBE7'] = '\\u06D0';\n  t['\\uFBE8'] = '\\u0649';\n  t['\\uFBE9'] = '\\u0649';\n  t['\\uFBEA'] = '\\u0626\\u0627';\n  t['\\uFBEB'] = '\\u0626\\u0627';\n  t['\\uFBEC'] = '\\u0626\\u06D5';\n  t['\\uFBED'] = '\\u0626\\u06D5';\n  t['\\uFBEE'] = '\\u0626\\u0648';\n  t['\\uFBEF'] = '\\u0626\\u0648';\n  t['\\uFBF0'] = '\\u0626\\u06C7';\n  t['\\uFBF1'] = '\\u0626\\u06C7';\n  t['\\uFBF2'] = '\\u0626\\u06C6';\n  t['\\uFBF3'] = '\\u0626\\u06C6';\n  t['\\uFBF4'] = '\\u0626\\u06C8';\n  t['\\uFBF5'] = '\\u0626\\u06C8';\n  t['\\uFBF6'] = '\\u0626\\u06D0';\n  t['\\uFBF7'] = '\\u0626\\u06D0';\n  t['\\uFBF8'] = '\\u0626\\u06D0';\n  t['\\uFBF9'] = '\\u0626\\u0649';\n  t['\\uFBFA'] = '\\u0626\\u0649';\n  t['\\uFBFB'] = '\\u0626\\u0649';\n  t['\\uFBFC'] = '\\u06CC';\n  t['\\uFBFD'] = '\\u06CC';\n  t['\\uFBFE'] = '\\u06CC';\n  t['\\uFBFF'] = '\\u06CC';\n  t['\\uFC00'] = '\\u0626\\u062C';\n  t['\\uFC01'] = '\\u0626\\u062D';\n  t['\\uFC02'] = '\\u0626\\u0645';\n  t['\\uFC03'] = '\\u0626\\u0649';\n  t['\\uFC04'] = '\\u0626\\u064A';\n  t['\\uFC05'] = '\\u0628\\u062C';\n  t['\\uFC06'] = '\\u0628\\u062D';\n  t['\\uFC07'] = '\\u0628\\u062E';\n  t['\\uFC08'] = '\\u0628\\u0645';\n  t['\\uFC09'] = '\\u0628\\u0649';\n  t['\\uFC0A'] = '\\u0628\\u064A';\n  t['\\uFC0B'] = '\\u062A\\u062C';\n  t['\\uFC0C'] = '\\u062A\\u062D';\n  t['\\uFC0D'] = '\\u062A\\u062E';\n  t['\\uFC0E'] = '\\u062A\\u0645';\n  t['\\uFC0F'] = '\\u062A\\u0649';\n  t['\\uFC10'] = '\\u062A\\u064A';\n  t['\\uFC11'] = '\\u062B\\u062C';\n  t['\\uFC12'] = '\\u062B\\u0645';\n  t['\\uFC13'] = '\\u062B\\u0649';\n  t['\\uFC14'] = '\\u062B\\u064A';\n  t['\\uFC15'] = '\\u062C\\u062D';\n  t['\\uFC16'] = '\\u062C\\u0645';\n  t['\\uFC17'] = '\\u062D\\u062C';\n  t['\\uFC18'] = '\\u062D\\u0645';\n  t['\\uFC19'] = '\\u062E\\u062C';\n  t['\\uFC1A'] = '\\u062E\\u062D';\n  t['\\uFC1B'] = '\\u062E\\u0645';\n  t['\\uFC1C'] = '\\u0633\\u062C';\n  t['\\uFC1D'] = '\\u0633\\u062D';\n  t['\\uFC1E'] = '\\u0633\\u062E';\n  t['\\uFC1F'] = '\\u0633\\u0645';\n  t['\\uFC20'] = '\\u0635\\u062D';\n  t['\\uFC21'] = '\\u0635\\u0645';\n  t['\\uFC22'] = '\\u0636\\u062C';\n  t['\\uFC23'] = '\\u0636\\u062D';\n  t['\\uFC24'] = '\\u0636\\u062E';\n  t['\\uFC25'] = '\\u0636\\u0645';\n  t['\\uFC26'] = '\\u0637\\u062D';\n  t['\\uFC27'] = '\\u0637\\u0645';\n  t['\\uFC28'] = '\\u0638\\u0645';\n  t['\\uFC29'] = '\\u0639\\u062C';\n  t['\\uFC2A'] = '\\u0639\\u0645';\n  t['\\uFC2B'] = '\\u063A\\u062C';\n  t['\\uFC2C'] = '\\u063A\\u0645';\n  t['\\uFC2D'] = '\\u0641\\u062C';\n  t['\\uFC2E'] = '\\u0641\\u062D';\n  t['\\uFC2F'] = '\\u0641\\u062E';\n  t['\\uFC30'] = '\\u0641\\u0645';\n  t['\\uFC31'] = '\\u0641\\u0649';\n  t['\\uFC32'] = '\\u0641\\u064A';\n  t['\\uFC33'] = '\\u0642\\u062D';\n  t['\\uFC34'] = '\\u0642\\u0645';\n  t['\\uFC35'] = '\\u0642\\u0649';\n  t['\\uFC36'] = '\\u0642\\u064A';\n  t['\\uFC37'] = '\\u0643\\u0627';\n  t['\\uFC38'] = '\\u0643\\u062C';\n  t['\\uFC39'] = '\\u0643\\u062D';\n  t['\\uFC3A'] = '\\u0643\\u062E';\n  t['\\uFC3B'] = '\\u0643\\u0644';\n  t['\\uFC3C'] = '\\u0643\\u0645';\n  t['\\uFC3D'] = '\\u0643\\u0649';\n  t['\\uFC3E'] = '\\u0643\\u064A';\n  t['\\uFC3F'] = '\\u0644\\u062C';\n  t['\\uFC40'] = '\\u0644\\u062D';\n  t['\\uFC41'] = '\\u0644\\u062E';\n  t['\\uFC42'] = '\\u0644\\u0645';\n  t['\\uFC43'] = '\\u0644\\u0649';\n  t['\\uFC44'] = '\\u0644\\u064A';\n  t['\\uFC45'] = '\\u0645\\u062C';\n  t['\\uFC46'] = '\\u0645\\u062D';\n  t['\\uFC47'] = '\\u0645\\u062E';\n  t['\\uFC48'] = '\\u0645\\u0645';\n  t['\\uFC49'] = '\\u0645\\u0649';\n  t['\\uFC4A'] = '\\u0645\\u064A';\n  t['\\uFC4B'] = '\\u0646\\u062C';\n  t['\\uFC4C'] = '\\u0646\\u062D';\n  t['\\uFC4D'] = '\\u0646\\u062E';\n  t['\\uFC4E'] = '\\u0646\\u0645';\n  t['\\uFC4F'] = '\\u0646\\u0649';\n  t['\\uFC50'] = '\\u0646\\u064A';\n  t['\\uFC51'] = '\\u0647\\u062C';\n  t['\\uFC52'] = '\\u0647\\u0645';\n  t['\\uFC53'] = '\\u0647\\u0649';\n  t['\\uFC54'] = '\\u0647\\u064A';\n  t['\\uFC55'] = '\\u064A\\u062C';\n  t['\\uFC56'] = '\\u064A\\u062D';\n  t['\\uFC57'] = '\\u064A\\u062E';\n  t['\\uFC58'] = '\\u064A\\u0645';\n  t['\\uFC59'] = '\\u064A\\u0649';\n  t['\\uFC5A'] = '\\u064A\\u064A';\n  t['\\uFC5B'] = '\\u0630\\u0670';\n  t['\\uFC5C'] = '\\u0631\\u0670';\n  t['\\uFC5D'] = '\\u0649\\u0670';\n  t['\\uFC5E'] = '\\u0020\\u064C\\u0651';\n  t['\\uFC5F'] = '\\u0020\\u064D\\u0651';\n  t['\\uFC60'] = '\\u0020\\u064E\\u0651';\n  t['\\uFC61'] = '\\u0020\\u064F\\u0651';\n  t['\\uFC62'] = '\\u0020\\u0650\\u0651';\n  t['\\uFC63'] = '\\u0020\\u0651\\u0670';\n  t['\\uFC64'] = '\\u0626\\u0631';\n  t['\\uFC65'] = '\\u0626\\u0632';\n  t['\\uFC66'] = '\\u0626\\u0645';\n  t['\\uFC67'] = '\\u0626\\u0646';\n  t['\\uFC68'] = '\\u0626\\u0649';\n  t['\\uFC69'] = '\\u0626\\u064A';\n  t['\\uFC6A'] = '\\u0628\\u0631';\n  t['\\uFC6B'] = '\\u0628\\u0632';\n  t['\\uFC6C'] = '\\u0628\\u0645';\n  t['\\uFC6D'] = '\\u0628\\u0646';\n  t['\\uFC6E'] = '\\u0628\\u0649';\n  t['\\uFC6F'] = '\\u0628\\u064A';\n  t['\\uFC70'] = '\\u062A\\u0631';\n  t['\\uFC71'] = '\\u062A\\u0632';\n  t['\\uFC72'] = '\\u062A\\u0645';\n  t['\\uFC73'] = '\\u062A\\u0646';\n  t['\\uFC74'] = '\\u062A\\u0649';\n  t['\\uFC75'] = '\\u062A\\u064A';\n  t['\\uFC76'] = '\\u062B\\u0631';\n  t['\\uFC77'] = '\\u062B\\u0632';\n  t['\\uFC78'] = '\\u062B\\u0645';\n  t['\\uFC79'] = '\\u062B\\u0646';\n  t['\\uFC7A'] = '\\u062B\\u0649';\n  t['\\uFC7B'] = '\\u062B\\u064A';\n  t['\\uFC7C'] = '\\u0641\\u0649';\n  t['\\uFC7D'] = '\\u0641\\u064A';\n  t['\\uFC7E'] = '\\u0642\\u0649';\n  t['\\uFC7F'] = '\\u0642\\u064A';\n  t['\\uFC80'] = '\\u0643\\u0627';\n  t['\\uFC81'] = '\\u0643\\u0644';\n  t['\\uFC82'] = '\\u0643\\u0645';\n  t['\\uFC83'] = '\\u0643\\u0649';\n  t['\\uFC84'] = '\\u0643\\u064A';\n  t['\\uFC85'] = '\\u0644\\u0645';\n  t['\\uFC86'] = '\\u0644\\u0649';\n  t['\\uFC87'] = '\\u0644\\u064A';\n  t['\\uFC88'] = '\\u0645\\u0627';\n  t['\\uFC89'] = '\\u0645\\u0645';\n  t['\\uFC8A'] = '\\u0646\\u0631';\n  t['\\uFC8B'] = '\\u0646\\u0632';\n  t['\\uFC8C'] = '\\u0646\\u0645';\n  t['\\uFC8D'] = '\\u0646\\u0646';\n  t['\\uFC8E'] = '\\u0646\\u0649';\n  t['\\uFC8F'] = '\\u0646\\u064A';\n  t['\\uFC90'] = '\\u0649\\u0670';\n  t['\\uFC91'] = '\\u064A\\u0631';\n  t['\\uFC92'] = '\\u064A\\u0632';\n  t['\\uFC93'] = '\\u064A\\u0645';\n  t['\\uFC94'] = '\\u064A\\u0646';\n  t['\\uFC95'] = '\\u064A\\u0649';\n  t['\\uFC96'] = '\\u064A\\u064A';\n  t['\\uFC97'] = '\\u0626\\u062C';\n  t['\\uFC98'] = '\\u0626\\u062D';\n  t['\\uFC99'] = '\\u0626\\u062E';\n  t['\\uFC9A'] = '\\u0626\\u0645';\n  t['\\uFC9B'] = '\\u0626\\u0647';\n  t['\\uFC9C'] = '\\u0628\\u062C';\n  t['\\uFC9D'] = '\\u0628\\u062D';\n  t['\\uFC9E'] = '\\u0628\\u062E';\n  t['\\uFC9F'] = '\\u0628\\u0645';\n  t['\\uFCA0'] = '\\u0628\\u0647';\n  t['\\uFCA1'] = '\\u062A\\u062C';\n  t['\\uFCA2'] = '\\u062A\\u062D';\n  t['\\uFCA3'] = '\\u062A\\u062E';\n  t['\\uFCA4'] = '\\u062A\\u0645';\n  t['\\uFCA5'] = '\\u062A\\u0647';\n  t['\\uFCA6'] = '\\u062B\\u0645';\n  t['\\uFCA7'] = '\\u062C\\u062D';\n  t['\\uFCA8'] = '\\u062C\\u0645';\n  t['\\uFCA9'] = '\\u062D\\u062C';\n  t['\\uFCAA'] = '\\u062D\\u0645';\n  t['\\uFCAB'] = '\\u062E\\u062C';\n  t['\\uFCAC'] = '\\u062E\\u0645';\n  t['\\uFCAD'] = '\\u0633\\u062C';\n  t['\\uFCAE'] = '\\u0633\\u062D';\n  t['\\uFCAF'] = '\\u0633\\u062E';\n  t['\\uFCB0'] = '\\u0633\\u0645';\n  t['\\uFCB1'] = '\\u0635\\u062D';\n  t['\\uFCB2'] = '\\u0635\\u062E';\n  t['\\uFCB3'] = '\\u0635\\u0645';\n  t['\\uFCB4'] = '\\u0636\\u062C';\n  t['\\uFCB5'] = '\\u0636\\u062D';\n  t['\\uFCB6'] = '\\u0636\\u062E';\n  t['\\uFCB7'] = '\\u0636\\u0645';\n  t['\\uFCB8'] = '\\u0637\\u062D';\n  t['\\uFCB9'] = '\\u0638\\u0645';\n  t['\\uFCBA'] = '\\u0639\\u062C';\n  t['\\uFCBB'] = '\\u0639\\u0645';\n  t['\\uFCBC'] = '\\u063A\\u062C';\n  t['\\uFCBD'] = '\\u063A\\u0645';\n  t['\\uFCBE'] = '\\u0641\\u062C';\n  t['\\uFCBF'] = '\\u0641\\u062D';\n  t['\\uFCC0'] = '\\u0641\\u062E';\n  t['\\uFCC1'] = '\\u0641\\u0645';\n  t['\\uFCC2'] = '\\u0642\\u062D';\n  t['\\uFCC3'] = '\\u0642\\u0645';\n  t['\\uFCC4'] = '\\u0643\\u062C';\n  t['\\uFCC5'] = '\\u0643\\u062D';\n  t['\\uFCC6'] = '\\u0643\\u062E';\n  t['\\uFCC7'] = '\\u0643\\u0644';\n  t['\\uFCC8'] = '\\u0643\\u0645';\n  t['\\uFCC9'] = '\\u0644\\u062C';\n  t['\\uFCCA'] = '\\u0644\\u062D';\n  t['\\uFCCB'] = '\\u0644\\u062E';\n  t['\\uFCCC'] = '\\u0644\\u0645';\n  t['\\uFCCD'] = '\\u0644\\u0647';\n  t['\\uFCCE'] = '\\u0645\\u062C';\n  t['\\uFCCF'] = '\\u0645\\u062D';\n  t['\\uFCD0'] = '\\u0645\\u062E';\n  t['\\uFCD1'] = '\\u0645\\u0645';\n  t['\\uFCD2'] = '\\u0646\\u062C';\n  t['\\uFCD3'] = '\\u0646\\u062D';\n  t['\\uFCD4'] = '\\u0646\\u062E';\n  t['\\uFCD5'] = '\\u0646\\u0645';\n  t['\\uFCD6'] = '\\u0646\\u0647';\n  t['\\uFCD7'] = '\\u0647\\u062C';\n  t['\\uFCD8'] = '\\u0647\\u0645';\n  t['\\uFCD9'] = '\\u0647\\u0670';\n  t['\\uFCDA'] = '\\u064A\\u062C';\n  t['\\uFCDB'] = '\\u064A\\u062D';\n  t['\\uFCDC'] = '\\u064A\\u062E';\n  t['\\uFCDD'] = '\\u064A\\u0645';\n  t['\\uFCDE'] = '\\u064A\\u0647';\n  t['\\uFCDF'] = '\\u0626\\u0645';\n  t['\\uFCE0'] = '\\u0626\\u0647';\n  t['\\uFCE1'] = '\\u0628\\u0645';\n  t['\\uFCE2'] = '\\u0628\\u0647';\n  t['\\uFCE3'] = '\\u062A\\u0645';\n  t['\\uFCE4'] = '\\u062A\\u0647';\n  t['\\uFCE5'] = '\\u062B\\u0645';\n  t['\\uFCE6'] = '\\u062B\\u0647';\n  t['\\uFCE7'] = '\\u0633\\u0645';\n  t['\\uFCE8'] = '\\u0633\\u0647';\n  t['\\uFCE9'] = '\\u0634\\u0645';\n  t['\\uFCEA'] = '\\u0634\\u0647';\n  t['\\uFCEB'] = '\\u0643\\u0644';\n  t['\\uFCEC'] = '\\u0643\\u0645';\n  t['\\uFCED'] = '\\u0644\\u0645';\n  t['\\uFCEE'] = '\\u0646\\u0645';\n  t['\\uFCEF'] = '\\u0646\\u0647';\n  t['\\uFCF0'] = '\\u064A\\u0645';\n  t['\\uFCF1'] = '\\u064A\\u0647';\n  t['\\uFCF2'] = '\\u0640\\u064E\\u0651';\n  t['\\uFCF3'] = '\\u0640\\u064F\\u0651';\n  t['\\uFCF4'] = '\\u0640\\u0650\\u0651';\n  t['\\uFCF5'] = '\\u0637\\u0649';\n  t['\\uFCF6'] = '\\u0637\\u064A';\n  t['\\uFCF7'] = '\\u0639\\u0649';\n  t['\\uFCF8'] = '\\u0639\\u064A';\n  t['\\uFCF9'] = '\\u063A\\u0649';\n  t['\\uFCFA'] = '\\u063A\\u064A';\n  t['\\uFCFB'] = '\\u0633\\u0649';\n  t['\\uFCFC'] = '\\u0633\\u064A';\n  t['\\uFCFD'] = '\\u0634\\u0649';\n  t['\\uFCFE'] = '\\u0634\\u064A';\n  t['\\uFCFF'] = '\\u062D\\u0649';\n  t['\\uFD00'] = '\\u062D\\u064A';\n  t['\\uFD01'] = '\\u062C\\u0649';\n  t['\\uFD02'] = '\\u062C\\u064A';\n  t['\\uFD03'] = '\\u062E\\u0649';\n  t['\\uFD04'] = '\\u062E\\u064A';\n  t['\\uFD05'] = '\\u0635\\u0649';\n  t['\\uFD06'] = '\\u0635\\u064A';\n  t['\\uFD07'] = '\\u0636\\u0649';\n  t['\\uFD08'] = '\\u0636\\u064A';\n  t['\\uFD09'] = '\\u0634\\u062C';\n  t['\\uFD0A'] = '\\u0634\\u062D';\n  t['\\uFD0B'] = '\\u0634\\u062E';\n  t['\\uFD0C'] = '\\u0634\\u0645';\n  t['\\uFD0D'] = '\\u0634\\u0631';\n  t['\\uFD0E'] = '\\u0633\\u0631';\n  t['\\uFD0F'] = '\\u0635\\u0631';\n  t['\\uFD10'] = '\\u0636\\u0631';\n  t['\\uFD11'] = '\\u0637\\u0649';\n  t['\\uFD12'] = '\\u0637\\u064A';\n  t['\\uFD13'] = '\\u0639\\u0649';\n  t['\\uFD14'] = '\\u0639\\u064A';\n  t['\\uFD15'] = '\\u063A\\u0649';\n  t['\\uFD16'] = '\\u063A\\u064A';\n  t['\\uFD17'] = '\\u0633\\u0649';\n  t['\\uFD18'] = '\\u0633\\u064A';\n  t['\\uFD19'] = '\\u0634\\u0649';\n  t['\\uFD1A'] = '\\u0634\\u064A';\n  t['\\uFD1B'] = '\\u062D\\u0649';\n  t['\\uFD1C'] = '\\u062D\\u064A';\n  t['\\uFD1D'] = '\\u062C\\u0649';\n  t['\\uFD1E'] = '\\u062C\\u064A';\n  t['\\uFD1F'] = '\\u062E\\u0649';\n  t['\\uFD20'] = '\\u062E\\u064A';\n  t['\\uFD21'] = '\\u0635\\u0649';\n  t['\\uFD22'] = '\\u0635\\u064A';\n  t['\\uFD23'] = '\\u0636\\u0649';\n  t['\\uFD24'] = '\\u0636\\u064A';\n  t['\\uFD25'] = '\\u0634\\u062C';\n  t['\\uFD26'] = '\\u0634\\u062D';\n  t['\\uFD27'] = '\\u0634\\u062E';\n  t['\\uFD28'] = '\\u0634\\u0645';\n  t['\\uFD29'] = '\\u0634\\u0631';\n  t['\\uFD2A'] = '\\u0633\\u0631';\n  t['\\uFD2B'] = '\\u0635\\u0631';\n  t['\\uFD2C'] = '\\u0636\\u0631';\n  t['\\uFD2D'] = '\\u0634\\u062C';\n  t['\\uFD2E'] = '\\u0634\\u062D';\n  t['\\uFD2F'] = '\\u0634\\u062E';\n  t['\\uFD30'] = '\\u0634\\u0645';\n  t['\\uFD31'] = '\\u0633\\u0647';\n  t['\\uFD32'] = '\\u0634\\u0647';\n  t['\\uFD33'] = '\\u0637\\u0645';\n  t['\\uFD34'] = '\\u0633\\u062C';\n  t['\\uFD35'] = '\\u0633\\u062D';\n  t['\\uFD36'] = '\\u0633\\u062E';\n  t['\\uFD37'] = '\\u0634\\u062C';\n  t['\\uFD38'] = '\\u0634\\u062D';\n  t['\\uFD39'] = '\\u0634\\u062E';\n  t['\\uFD3A'] = '\\u0637\\u0645';\n  t['\\uFD3B'] = '\\u0638\\u0645';\n  t['\\uFD3C'] = '\\u0627\\u064B';\n  t['\\uFD3D'] = '\\u0627\\u064B';\n  t['\\uFD50'] = '\\u062A\\u062C\\u0645';\n  t['\\uFD51'] = '\\u062A\\u062D\\u062C';\n  t['\\uFD52'] = '\\u062A\\u062D\\u062C';\n  t['\\uFD53'] = '\\u062A\\u062D\\u0645';\n  t['\\uFD54'] = '\\u062A\\u062E\\u0645';\n  t['\\uFD55'] = '\\u062A\\u0645\\u062C';\n  t['\\uFD56'] = '\\u062A\\u0645\\u062D';\n  t['\\uFD57'] = '\\u062A\\u0645\\u062E';\n  t['\\uFD58'] = '\\u062C\\u0645\\u062D';\n  t['\\uFD59'] = '\\u062C\\u0645\\u062D';\n  t['\\uFD5A'] = '\\u062D\\u0645\\u064A';\n  t['\\uFD5B'] = '\\u062D\\u0645\\u0649';\n  t['\\uFD5C'] = '\\u0633\\u062D\\u062C';\n  t['\\uFD5D'] = '\\u0633\\u062C\\u062D';\n  t['\\uFD5E'] = '\\u0633\\u062C\\u0649';\n  t['\\uFD5F'] = '\\u0633\\u0645\\u062D';\n  t['\\uFD60'] = '\\u0633\\u0645\\u062D';\n  t['\\uFD61'] = '\\u0633\\u0645\\u062C';\n  t['\\uFD62'] = '\\u0633\\u0645\\u0645';\n  t['\\uFD63'] = '\\u0633\\u0645\\u0645';\n  t['\\uFD64'] = '\\u0635\\u062D\\u062D';\n  t['\\uFD65'] = '\\u0635\\u062D\\u062D';\n  t['\\uFD66'] = '\\u0635\\u0645\\u0645';\n  t['\\uFD67'] = '\\u0634\\u062D\\u0645';\n  t['\\uFD68'] = '\\u0634\\u062D\\u0645';\n  t['\\uFD69'] = '\\u0634\\u062C\\u064A';\n  t['\\uFD6A'] = '\\u0634\\u0645\\u062E';\n  t['\\uFD6B'] = '\\u0634\\u0645\\u062E';\n  t['\\uFD6C'] = '\\u0634\\u0645\\u0645';\n  t['\\uFD6D'] = '\\u0634\\u0645\\u0645';\n  t['\\uFD6E'] = '\\u0636\\u062D\\u0649';\n  t['\\uFD6F'] = '\\u0636\\u062E\\u0645';\n  t['\\uFD70'] = '\\u0636\\u062E\\u0645';\n  t['\\uFD71'] = '\\u0637\\u0645\\u062D';\n  t['\\uFD72'] = '\\u0637\\u0645\\u062D';\n  t['\\uFD73'] = '\\u0637\\u0645\\u0645';\n  t['\\uFD74'] = '\\u0637\\u0645\\u064A';\n  t['\\uFD75'] = '\\u0639\\u062C\\u0645';\n  t['\\uFD76'] = '\\u0639\\u0645\\u0645';\n  t['\\uFD77'] = '\\u0639\\u0645\\u0645';\n  t['\\uFD78'] = '\\u0639\\u0645\\u0649';\n  t['\\uFD79'] = '\\u063A\\u0645\\u0645';\n  t['\\uFD7A'] = '\\u063A\\u0645\\u064A';\n  t['\\uFD7B'] = '\\u063A\\u0645\\u0649';\n  t['\\uFD7C'] = '\\u0641\\u062E\\u0645';\n  t['\\uFD7D'] = '\\u0641\\u062E\\u0645';\n  t['\\uFD7E'] = '\\u0642\\u0645\\u062D';\n  t['\\uFD7F'] = '\\u0642\\u0645\\u0645';\n  t['\\uFD80'] = '\\u0644\\u062D\\u0645';\n  t['\\uFD81'] = '\\u0644\\u062D\\u064A';\n  t['\\uFD82'] = '\\u0644\\u062D\\u0649';\n  t['\\uFD83'] = '\\u0644\\u062C\\u062C';\n  t['\\uFD84'] = '\\u0644\\u062C\\u062C';\n  t['\\uFD85'] = '\\u0644\\u062E\\u0645';\n  t['\\uFD86'] = '\\u0644\\u062E\\u0645';\n  t['\\uFD87'] = '\\u0644\\u0645\\u062D';\n  t['\\uFD88'] = '\\u0644\\u0645\\u062D';\n  t['\\uFD89'] = '\\u0645\\u062D\\u062C';\n  t['\\uFD8A'] = '\\u0645\\u062D\\u0645';\n  t['\\uFD8B'] = '\\u0645\\u062D\\u064A';\n  t['\\uFD8C'] = '\\u0645\\u062C\\u062D';\n  t['\\uFD8D'] = '\\u0645\\u062C\\u0645';\n  t['\\uFD8E'] = '\\u0645\\u062E\\u062C';\n  t['\\uFD8F'] = '\\u0645\\u062E\\u0645';\n  t['\\uFD92'] = '\\u0645\\u062C\\u062E';\n  t['\\uFD93'] = '\\u0647\\u0645\\u062C';\n  t['\\uFD94'] = '\\u0647\\u0645\\u0645';\n  t['\\uFD95'] = '\\u0646\\u062D\\u0645';\n  t['\\uFD96'] = '\\u0646\\u062D\\u0649';\n  t['\\uFD97'] = '\\u0646\\u062C\\u0645';\n  t['\\uFD98'] = '\\u0646\\u062C\\u0645';\n  t['\\uFD99'] = '\\u0646\\u062C\\u0649';\n  t['\\uFD9A'] = '\\u0646\\u0645\\u064A';\n  t['\\uFD9B'] = '\\u0646\\u0645\\u0649';\n  t['\\uFD9C'] = '\\u064A\\u0645\\u0645';\n  t['\\uFD9D'] = '\\u064A\\u0645\\u0645';\n  t['\\uFD9E'] = '\\u0628\\u062E\\u064A';\n  t['\\uFD9F'] = '\\u062A\\u062C\\u064A';\n  t['\\uFDA0'] = '\\u062A\\u062C\\u0649';\n  t['\\uFDA1'] = '\\u062A\\u062E\\u064A';\n  t['\\uFDA2'] = '\\u062A\\u062E\\u0649';\n  t['\\uFDA3'] = '\\u062A\\u0645\\u064A';\n  t['\\uFDA4'] = '\\u062A\\u0645\\u0649';\n  t['\\uFDA5'] = '\\u062C\\u0645\\u064A';\n  t['\\uFDA6'] = '\\u062C\\u062D\\u0649';\n  t['\\uFDA7'] = '\\u062C\\u0645\\u0649';\n  t['\\uFDA8'] = '\\u0633\\u062E\\u0649';\n  t['\\uFDA9'] = '\\u0635\\u062D\\u064A';\n  t['\\uFDAA'] = '\\u0634\\u062D\\u064A';\n  t['\\uFDAB'] = '\\u0636\\u062D\\u064A';\n  t['\\uFDAC'] = '\\u0644\\u062C\\u064A';\n  t['\\uFDAD'] = '\\u0644\\u0645\\u064A';\n  t['\\uFDAE'] = '\\u064A\\u062D\\u064A';\n  t['\\uFDAF'] = '\\u064A\\u062C\\u064A';\n  t['\\uFDB0'] = '\\u064A\\u0645\\u064A';\n  t['\\uFDB1'] = '\\u0645\\u0645\\u064A';\n  t['\\uFDB2'] = '\\u0642\\u0645\\u064A';\n  t['\\uFDB3'] = '\\u0646\\u062D\\u064A';\n  t['\\uFDB4'] = '\\u0642\\u0645\\u062D';\n  t['\\uFDB5'] = '\\u0644\\u062D\\u0645';\n  t['\\uFDB6'] = '\\u0639\\u0645\\u064A';\n  t['\\uFDB7'] = '\\u0643\\u0645\\u064A';\n  t['\\uFDB8'] = '\\u0646\\u062C\\u062D';\n  t['\\uFDB9'] = '\\u0645\\u062E\\u064A';\n  t['\\uFDBA'] = '\\u0644\\u062C\\u0645';\n  t['\\uFDBB'] = '\\u0643\\u0645\\u0645';\n  t['\\uFDBC'] = '\\u0644\\u062C\\u0645';\n  t['\\uFDBD'] = '\\u0646\\u062C\\u062D';\n  t['\\uFDBE'] = '\\u062C\\u062D\\u064A';\n  t['\\uFDBF'] = '\\u062D\\u062C\\u064A';\n  t['\\uFDC0'] = '\\u0645\\u062C\\u064A';\n  t['\\uFDC1'] = '\\u0641\\u0645\\u064A';\n  t['\\uFDC2'] = '\\u0628\\u062D\\u064A';\n  t['\\uFDC3'] = '\\u0643\\u0645\\u0645';\n  t['\\uFDC4'] = '\\u0639\\u062C\\u0645';\n  t['\\uFDC5'] = '\\u0635\\u0645\\u0645';\n  t['\\uFDC6'] = '\\u0633\\u062E\\u064A';\n  t['\\uFDC7'] = '\\u0646\\u062C\\u064A';\n  t['\\uFE49'] = '\\u203E';\n  t['\\uFE4A'] = '\\u203E';\n  t['\\uFE4B'] = '\\u203E';\n  t['\\uFE4C'] = '\\u203E';\n  t['\\uFE4D'] = '\\u005F';\n  t['\\uFE4E'] = '\\u005F';\n  t['\\uFE4F'] = '\\u005F';\n  t['\\uFE80'] = '\\u0621';\n  t['\\uFE81'] = '\\u0622';\n  t['\\uFE82'] = '\\u0622';\n  t['\\uFE83'] = '\\u0623';\n  t['\\uFE84'] = '\\u0623';\n  t['\\uFE85'] = '\\u0624';\n  t['\\uFE86'] = '\\u0624';\n  t['\\uFE87'] = '\\u0625';\n  t['\\uFE88'] = '\\u0625';\n  t['\\uFE89'] = '\\u0626';\n  t['\\uFE8A'] = '\\u0626';\n  t['\\uFE8B'] = '\\u0626';\n  t['\\uFE8C'] = '\\u0626';\n  t['\\uFE8D'] = '\\u0627';\n  t['\\uFE8E'] = '\\u0627';\n  t['\\uFE8F'] = '\\u0628';\n  t['\\uFE90'] = '\\u0628';\n  t['\\uFE91'] = '\\u0628';\n  t['\\uFE92'] = '\\u0628';\n  t['\\uFE93'] = '\\u0629';\n  t['\\uFE94'] = '\\u0629';\n  t['\\uFE95'] = '\\u062A';\n  t['\\uFE96'] = '\\u062A';\n  t['\\uFE97'] = '\\u062A';\n  t['\\uFE98'] = '\\u062A';\n  t['\\uFE99'] = '\\u062B';\n  t['\\uFE9A'] = '\\u062B';\n  t['\\uFE9B'] = '\\u062B';\n  t['\\uFE9C'] = '\\u062B';\n  t['\\uFE9D'] = '\\u062C';\n  t['\\uFE9E'] = '\\u062C';\n  t['\\uFE9F'] = '\\u062C';\n  t['\\uFEA0'] = '\\u062C';\n  t['\\uFEA1'] = '\\u062D';\n  t['\\uFEA2'] = '\\u062D';\n  t['\\uFEA3'] = '\\u062D';\n  t['\\uFEA4'] = '\\u062D';\n  t['\\uFEA5'] = '\\u062E';\n  t['\\uFEA6'] = '\\u062E';\n  t['\\uFEA7'] = '\\u062E';\n  t['\\uFEA8'] = '\\u062E';\n  t['\\uFEA9'] = '\\u062F';\n  t['\\uFEAA'] = '\\u062F';\n  t['\\uFEAB'] = '\\u0630';\n  t['\\uFEAC'] = '\\u0630';\n  t['\\uFEAD'] = '\\u0631';\n  t['\\uFEAE'] = '\\u0631';\n  t['\\uFEAF'] = '\\u0632';\n  t['\\uFEB0'] = '\\u0632';\n  t['\\uFEB1'] = '\\u0633';\n  t['\\uFEB2'] = '\\u0633';\n  t['\\uFEB3'] = '\\u0633';\n  t['\\uFEB4'] = '\\u0633';\n  t['\\uFEB5'] = '\\u0634';\n  t['\\uFEB6'] = '\\u0634';\n  t['\\uFEB7'] = '\\u0634';\n  t['\\uFEB8'] = '\\u0634';\n  t['\\uFEB9'] = '\\u0635';\n  t['\\uFEBA'] = '\\u0635';\n  t['\\uFEBB'] = '\\u0635';\n  t['\\uFEBC'] = '\\u0635';\n  t['\\uFEBD'] = '\\u0636';\n  t['\\uFEBE'] = '\\u0636';\n  t['\\uFEBF'] = '\\u0636';\n  t['\\uFEC0'] = '\\u0636';\n  t['\\uFEC1'] = '\\u0637';\n  t['\\uFEC2'] = '\\u0637';\n  t['\\uFEC3'] = '\\u0637';\n  t['\\uFEC4'] = '\\u0637';\n  t['\\uFEC5'] = '\\u0638';\n  t['\\uFEC6'] = '\\u0638';\n  t['\\uFEC7'] = '\\u0638';\n  t['\\uFEC8'] = '\\u0638';\n  t['\\uFEC9'] = '\\u0639';\n  t['\\uFECA'] = '\\u0639';\n  t['\\uFECB'] = '\\u0639';\n  t['\\uFECC'] = '\\u0639';\n  t['\\uFECD'] = '\\u063A';\n  t['\\uFECE'] = '\\u063A';\n  t['\\uFECF'] = '\\u063A';\n  t['\\uFED0'] = '\\u063A';\n  t['\\uFED1'] = '\\u0641';\n  t['\\uFED2'] = '\\u0641';\n  t['\\uFED3'] = '\\u0641';\n  t['\\uFED4'] = '\\u0641';\n  t['\\uFED5'] = '\\u0642';\n  t['\\uFED6'] = '\\u0642';\n  t['\\uFED7'] = '\\u0642';\n  t['\\uFED8'] = '\\u0642';\n  t['\\uFED9'] = '\\u0643';\n  t['\\uFEDA'] = '\\u0643';\n  t['\\uFEDB'] = '\\u0643';\n  t['\\uFEDC'] = '\\u0643';\n  t['\\uFEDD'] = '\\u0644';\n  t['\\uFEDE'] = '\\u0644';\n  t['\\uFEDF'] = '\\u0644';\n  t['\\uFEE0'] = '\\u0644';\n  t['\\uFEE1'] = '\\u0645';\n  t['\\uFEE2'] = '\\u0645';\n  t['\\uFEE3'] = '\\u0645';\n  t['\\uFEE4'] = '\\u0645';\n  t['\\uFEE5'] = '\\u0646';\n  t['\\uFEE6'] = '\\u0646';\n  t['\\uFEE7'] = '\\u0646';\n  t['\\uFEE8'] = '\\u0646';\n  t['\\uFEE9'] = '\\u0647';\n  t['\\uFEEA'] = '\\u0647';\n  t['\\uFEEB'] = '\\u0647';\n  t['\\uFEEC'] = '\\u0647';\n  t['\\uFEED'] = '\\u0648';\n  t['\\uFEEE'] = '\\u0648';\n  t['\\uFEEF'] = '\\u0649';\n  t['\\uFEF0'] = '\\u0649';\n  t['\\uFEF1'] = '\\u064A';\n  t['\\uFEF2'] = '\\u064A';\n  t['\\uFEF3'] = '\\u064A';\n  t['\\uFEF4'] = '\\u064A';\n  t['\\uFEF5'] = '\\u0644\\u0622';\n  t['\\uFEF6'] = '\\u0644\\u0622';\n  t['\\uFEF7'] = '\\u0644\\u0623';\n  t['\\uFEF8'] = '\\u0644\\u0623';\n  t['\\uFEF9'] = '\\u0644\\u0625';\n  t['\\uFEFA'] = '\\u0644\\u0625';\n  t['\\uFEFB'] = '\\u0644\\u0627';\n  t['\\uFEFC'] = '\\u0644\\u0627';\n});\n\nfunction reverseIfRtl(chars) {\n  var charsLength = chars.length;\n  // Reverse an arabic ligature.\n  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n    return chars;\n  }\n  var s = '';\n  for (var ii = charsLength - 1; ii >= 0; ii--) {\n    s += chars[ii];\n  }\n  return s;\n}\n\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  bytesToString, FONT_IDENTITY_MATRIX, FormatError, unreachable, warn\n} from '../shared/util';\nimport { CFFParser } from './cff_parser';\nimport { getGlyphsUnicode } from './glyphlist';\nimport { StandardEncoding } from './encodings';\nimport { Stream } from './stream';\n\nvar FontRendererFactory = (function FontRendererFactoryClosure() {\n  function getLong(data, offset) {\n    return (data[offset] << 24) | (data[offset + 1] << 16) |\n           (data[offset + 2] << 8) | data[offset + 3];\n  }\n\n  function getUshort(data, offset) {\n    return (data[offset] << 8) | data[offset + 1];\n  }\n\n  function parseCmap(data, start, end) {\n    var offset = (getUshort(data, start + 2) === 1 ?\n                  getLong(data, start + 8) : getLong(data, start + 16));\n    var format = getUshort(data, start + offset);\n    var ranges, p, i;\n    if (format === 4) {\n      getUshort(data, start + offset + 2); // length\n      var segCount = getUshort(data, start + offset + 6) >> 1;\n      p = start + offset + 14;\n      ranges = [];\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i] = { end: getUshort(data, p), };\n      }\n      p += 2;\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].start = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        ranges[i].idDelta = getUshort(data, p);\n      }\n      for (i = 0; i < segCount; i++, p += 2) {\n        var idOffset = getUshort(data, p);\n        if (idOffset === 0) {\n          continue;\n        }\n        ranges[i].ids = [];\n        for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n          ranges[i].ids[j] = getUshort(data, p + idOffset);\n          idOffset += 2;\n        }\n      }\n      return ranges;\n    } else if (format === 12) {\n      getLong(data, start + offset + 4); // length\n      var groups = getLong(data, start + offset + 12);\n      p = start + offset + 16;\n      ranges = [];\n      for (i = 0; i < groups; i++) {\n        ranges.push({\n          start: getLong(data, p),\n          end: getLong(data, p + 4),\n          idDelta: getLong(data, p + 8) - getLong(data, p),\n        });\n        p += 12;\n      }\n      return ranges;\n    }\n    throw new FormatError(`unsupported cmap: ${format}`);\n  }\n\n  function parseCff(data, start, end, seacAnalysisEnabled) {\n    var properties = {};\n    var parser = new CFFParser(new Stream(data, start, end - start),\n                               properties, seacAnalysisEnabled);\n    var cff = parser.parse();\n    return {\n      glyphs: cff.charStrings.objects,\n      subrs: (cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex &&\n              cff.topDict.privateDict.subrsIndex.objects),\n      gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n      isCFFCIDFont: cff.isCIDFont,\n      fdSelect: cff.fdSelect,\n      fdArray: cff.fdArray,\n    };\n  }\n\n  function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n    var itemSize, itemDecode;\n    if (isGlyphLocationsLong) {\n      itemSize = 4;\n      itemDecode = function fontItemDecodeLong(data, offset) {\n        return (data[offset] << 24) | (data[offset + 1] << 16) |\n               (data[offset + 2] << 8) | data[offset + 3];\n      };\n    } else {\n      itemSize = 2;\n      itemDecode = function fontItemDecode(data, offset) {\n        return (data[offset] << 9) | (data[offset + 1] << 1);\n      };\n    }\n    var glyphs = [];\n    var startOffset = itemDecode(loca, 0);\n    for (var j = itemSize; j < loca.length; j += itemSize) {\n      var endOffset = itemDecode(loca, j);\n      glyphs.push(glyf.subarray(startOffset, endOffset));\n      startOffset = endOffset;\n    }\n    return glyphs;\n  }\n\n  function lookupCmap(ranges, unicode) {\n    var code = unicode.codePointAt(0), gid = 0;\n    var l = 0, r = ranges.length - 1;\n    while (l < r) {\n      var c = (l + r + 1) >> 1;\n      if (code < ranges[c].start) {\n        r = c - 1;\n      } else {\n        l = c;\n      }\n    }\n    if (ranges[l].start <= code && code <= ranges[l].end) {\n      gid = (ranges[l].idDelta + (ranges[l].ids ?\n             ranges[l].ids[code - ranges[l].start] : code)) & 0xFFFF;\n    }\n    return {\n      charCode: code,\n      glyphId: gid,\n    };\n  }\n\n  function compileGlyf(code, cmds, font) {\n    function moveTo(x, y) {\n      cmds.push({ cmd: 'moveTo', args: [x, y], });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: 'lineTo', args: [x, y], });\n    }\n    function quadraticCurveTo(xa, ya, x, y) {\n      cmds.push({ cmd: 'quadraticCurveTo', args: [xa, ya, x, y], });\n    }\n\n    var i = 0;\n    var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n    var flags;\n    var x = 0, y = 0;\n    i += 10;\n    if (numberOfContours < 0) {\n      // composite glyph\n      do {\n        flags = (code[i] << 8) | code[i + 1];\n        var glyphIndex = (code[i + 2] << 8) | code[i + 3];\n        i += 4;\n        var arg1, arg2;\n        if ((flags & 0x01)) {\n          arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n          arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;\n          i += 4;\n        } else {\n          arg1 = code[i++]; arg2 = code[i++];\n        }\n        if ((flags & 0x02)) {\n           x = arg1;\n           y = arg2;\n        } else {\n           x = 0; y = 0; // TODO \"they are points\" ?\n        }\n        var scaleX = 1, scaleY = 1, scale01 = 0, scale10 = 0;\n        if ((flags & 0x08)) {\n          scaleX =\n          scaleY = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          i += 2;\n        } else if ((flags & 0x40)) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          i += 4;\n        } else if ((flags & 0x80)) {\n          scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n          scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n          scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;\n          scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;\n          i += 8;\n        }\n        var subglyph = font.glyphs[glyphIndex];\n        if (subglyph) {\n          cmds.push({ cmd: 'save', });\n          cmds.push({ cmd: 'transform',\n                     args: [scaleX, scale01, scale10, scaleY, x, y], });\n          compileGlyf(subglyph, cmds, font);\n          cmds.push({ cmd: 'restore', });\n        }\n      } while ((flags & 0x20));\n    } else {\n      // simple glyph\n      var endPtsOfContours = [];\n      var j, jj;\n      for (j = 0; j < numberOfContours; j++) {\n        endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n        i += 2;\n      }\n      var instructionLength = (code[i] << 8) | code[i + 1];\n      i += 2 + instructionLength; // skipping the instructions\n      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n      var points = [];\n      while (points.length < numberOfPoints) {\n        flags = code[i++];\n        var repeat = 1;\n        if ((flags & 0x08)) {\n          repeat += code[i++];\n        }\n        while (repeat-- > 0) {\n          points.push({ flags, });\n        }\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x12) {\n          case 0x00:\n            x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x02:\n            x -= code[i++];\n            break;\n          case 0x12:\n            x += code[i++];\n            break;\n        }\n        points[j].x = x;\n      }\n      for (j = 0; j < numberOfPoints; j++) {\n        switch (points[j].flags & 0x24) {\n          case 0x00:\n            y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n            i += 2;\n            break;\n          case 0x04:\n            y -= code[i++];\n            break;\n          case 0x24:\n            y += code[i++];\n            break;\n        }\n        points[j].y = y;\n      }\n\n      var startPoint = 0;\n      for (i = 0; i < numberOfContours; i++) {\n        var endPoint = endPtsOfContours[i];\n        // contours might have implicit points, which is located in the middle\n        // between two neighboring off-curve points\n        var contour = points.slice(startPoint, endPoint + 1);\n        if ((contour[0].flags & 1)) {\n          contour.push(contour[0]); // using start point at the contour end\n        } else if ((contour[contour.length - 1].flags & 1)) {\n          // first is off-curve point, trying to use one from the end\n          contour.unshift(contour[contour.length - 1]);\n        } else {\n          // start and end are off-curve points, creating implicit one\n          var p = {\n            flags: 1,\n            x: (contour[0].x + contour[contour.length - 1].x) / 2,\n            y: (contour[0].y + contour[contour.length - 1].y) / 2,\n          };\n          contour.unshift(p);\n          contour.push(p);\n        }\n        moveTo(contour[0].x, contour[0].y);\n        for (j = 1, jj = contour.length; j < jj; j++) {\n          if ((contour[j].flags & 1)) {\n            lineTo(contour[j].x, contour[j].y);\n          } else if ((contour[j + 1].flags & 1)) {\n            quadraticCurveTo(contour[j].x, contour[j].y,\n                             contour[j + 1].x, contour[j + 1].y);\n            j++;\n          } else {\n            quadraticCurveTo(contour[j].x, contour[j].y,\n              (contour[j].x + contour[j + 1].x) / 2,\n              (contour[j].y + contour[j + 1].y) / 2);\n          }\n        }\n        startPoint = endPoint + 1;\n      }\n    }\n  }\n\n  function compileCharString(code, cmds, font, glyphId) {\n    var stack = [];\n    var x = 0, y = 0;\n    var stems = 0;\n\n    function moveTo(x, y) {\n      cmds.push({ cmd: 'moveTo', args: [x, y], });\n    }\n    function lineTo(x, y) {\n      cmds.push({ cmd: 'lineTo', args: [x, y], });\n    }\n    function bezierCurveTo(x1, y1, x2, y2, x, y) {\n      cmds.push({ cmd: 'bezierCurveTo', args: [x1, y1, x2, y2, x, y], });\n    }\n\n    function parse(code) {\n      var i = 0;\n      while (i < code.length) {\n        var stackClean = false;\n        var v = code[i++];\n        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n        switch (v) {\n          case 1: // hstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 3: // vstem\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 4: // vmoveto\n            y += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 5: // rlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 6: // hlineto\n            while (stack.length > 0) {\n              x += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 7: // vlineto\n            while (stack.length > 0) {\n              y += stack.shift();\n              lineTo(x, y);\n              if (stack.length === 0) {\n                break;\n              }\n              x += stack.shift();\n              lineTo(x, y);\n            }\n            break;\n          case 8: // rrcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift(); ya = y + stack.shift();\n              xb = xa + stack.shift(); yb = ya + stack.shift();\n              x = xb + stack.shift(); y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 10: // callsubr\n            n = stack.pop();\n            subrCode = null;\n            if (font.isCFFCIDFont) {\n              let fdIndex = font.fdSelect.getFDIndex(glyphId);\n              if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n                let fontDict = font.fdArray[fdIndex], subrs;\n                if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                  subrs = fontDict.privateDict.subrsIndex.objects;\n                }\n                if (subrs) {\n                  let numSubrs = subrs.length;\n                  // Add subroutine bias.\n                  n += numSubrs < 1240 ? 107 :\n                       (numSubrs < 33900 ? 1131 : 32768);\n                  subrCode = subrs[n];\n                }\n              } else {\n                warn('Invalid fd index for glyph index.');\n              }\n            } else {\n              subrCode = font.subrs[n + font.subrsBias];\n            }\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 11: // return\n            return;\n          case 12:\n            v = code[i++];\n            switch (v) {\n              case 34: // flex\n                xa = x + stack.shift();\n                xb = xa + stack.shift(); y1 = y + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y, xb, y1, x, y1);\n                xa = x + stack.shift();\n                xb = xa + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y, x, y);\n                break;\n              case 35: // flex\n                xa = x + stack.shift(); ya = y + stack.shift();\n                xb = xa + stack.shift(); yb = ya + stack.shift();\n                x = xb + stack.shift(); y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift(); ya = y + stack.shift();\n                xb = xa + stack.shift(); yb = ya + stack.shift();\n                x = xb + stack.shift(); y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                stack.pop(); // fd\n                break;\n              case 36: // hflex1\n                xa = x + stack.shift(); y1 = y + stack.shift();\n                xb = xa + stack.shift(); y2 = y1 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y1, xb, y2, x, y2);\n                xa = x + stack.shift();\n                xb = xa + stack.shift(); y3 = y2 + stack.shift();\n                x = xb + stack.shift();\n                bezierCurveTo(xa, y2, xb, y3, x, y);\n                break;\n              case 37: // flex1\n                var x0 = x, y0 = y;\n                xa = x + stack.shift(); ya = y + stack.shift();\n                xb = xa + stack.shift(); yb = ya + stack.shift();\n                x = xb + stack.shift(); y = yb + stack.shift();\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                xa = x + stack.shift(); ya = y + stack.shift();\n                xb = xa + stack.shift(); yb = ya + stack.shift();\n                x = xb; y = yb;\n                if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                  x += stack.shift();\n                } else {\n                  y += stack.shift();\n                }\n                bezierCurveTo(xa, ya, xb, yb, x, y);\n                break;\n              default:\n                throw new FormatError(`unknown operator: 12 ${v}`);\n            }\n            break;\n          case 14: // endchar\n            if (stack.length >= 4) {\n              var achar = stack.pop();\n              var bchar = stack.pop();\n              y = stack.pop();\n              x = stack.pop();\n              cmds.push({ cmd: 'save', });\n              cmds.push({ cmd: 'translate', args: [x, y], });\n              var cmap = lookupCmap(font.cmap, String.fromCharCode(\n                font.glyphNameMap[StandardEncoding[achar]]));\n              compileCharString(font.glyphs[cmap.glyphId], cmds, font,\n                                cmap.glyphId);\n              cmds.push({ cmd: 'restore', });\n\n              cmap = lookupCmap(font.cmap, String.fromCharCode(\n                font.glyphNameMap[StandardEncoding[bchar]]));\n              compileCharString(font.glyphs[cmap.glyphId], cmds, font,\n                                cmap.glyphId);\n            }\n            return;\n          case 18: // hstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 19: // hintmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 20: // cntrmask\n            stems += stack.length >> 1;\n            i += (stems + 7) >> 3;\n            stackClean = true;\n            break;\n          case 21: // rmoveto\n            y += stack.pop();\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 22: // hmoveto\n            x += stack.pop();\n            moveTo(x, y);\n            stackClean = true;\n            break;\n          case 23: // vstemhm\n            stems += stack.length >> 1;\n            stackClean = true;\n            break;\n          case 24: // rcurveline\n            while (stack.length > 2) {\n              xa = x + stack.shift(); ya = y + stack.shift();\n              xb = xa + stack.shift(); yb = ya + stack.shift();\n              x = xb + stack.shift(); y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n            break;\n          case 25: // rlinecurve\n            while (stack.length > 6) {\n              x += stack.shift();\n              y += stack.shift();\n              lineTo(x, y);\n            }\n            xa = x + stack.shift(); ya = y + stack.shift();\n            xb = xa + stack.shift(); yb = ya + stack.shift();\n            x = xb + stack.shift(); y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n            break;\n          case 26: // vvcurveto\n            if (stack.length % 2) {\n              x += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x; ya = y + stack.shift();\n              xb = xa + stack.shift(); yb = ya + stack.shift();\n              x = xb; y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 27: // hhcurveto\n            if (stack.length % 2) {\n              y += stack.shift();\n            }\n            while (stack.length > 0) {\n              xa = x + stack.shift(); ya = y;\n              xb = xa + stack.shift(); yb = ya + stack.shift();\n              x = xb + stack.shift(); y = yb;\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 28:\n            stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n            i += 2;\n            break;\n          case 29: // callgsubr\n            n = stack.pop() + font.gsubrsBias;\n            subrCode = font.gsubrs[n];\n            if (subrCode) {\n              parse(subrCode);\n            }\n            break;\n          case 30: // vhcurveto\n            while (stack.length > 0) {\n              xa = x; ya = y + stack.shift();\n              xb = xa + stack.shift(); yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x + stack.shift(); ya = y;\n              xb = xa + stack.shift(); yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          case 31: // hvcurveto\n            while (stack.length > 0) {\n              xa = x + stack.shift(); ya = y;\n              xb = xa + stack.shift(); yb = ya + stack.shift();\n              y = yb + stack.shift();\n              x = xb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              if (stack.length === 0) {\n                break;\n              }\n\n              xa = x; ya = y + stack.shift();\n              xb = xa + stack.shift(); yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + (stack.length === 1 ? stack.shift() : 0);\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n            }\n            break;\n          default:\n            if (v < 32) {\n              throw new FormatError(`unknown operator: ${v}`);\n            }\n            if (v < 247) {\n              stack.push(v - 139);\n            } else if (v < 251) {\n              stack.push((v - 247) * 256 + code[i++] + 108);\n            } else if (v < 255) {\n              stack.push(-(v - 251) * 256 - code[i++] - 108);\n            } else {\n              stack.push(((code[i] << 24) | (code[i + 1] << 16) |\n                         (code[i + 2] << 8) | code[i + 3]) / 65536);\n              i += 4;\n            }\n            break;\n        }\n        if (stackClean) {\n          stack.length = 0;\n        }\n      }\n    }\n    parse(code);\n  }\n\n  const NOOP = [];\n\n  class CompiledFont {\n    constructor(fontMatrix) {\n      if (this.constructor === CompiledFont) {\n        unreachable('Cannot initialize CompiledFont.');\n      }\n      this.fontMatrix = fontMatrix;\n\n      this.compiledGlyphs = Object.create(null);\n      this.compiledCharCodeToGlyphId = Object.create(null);\n    }\n\n    getPathJs(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      let fn = this.compiledGlyphs[cmap.glyphId];\n      if (!fn) {\n        fn = this.compileGlyph(this.glyphs[cmap.glyphId], cmap.glyphId);\n        this.compiledGlyphs[cmap.glyphId] = fn;\n      }\n      if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n        this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n      }\n      return fn;\n    }\n\n    compileGlyph(code, glyphId) {\n      if (!code || code.length === 0 || code[0] === 14) {\n        return NOOP;\n      }\n\n      let fontMatrix = this.fontMatrix;\n      if (this.isCFFCIDFont) {\n        // Top DICT's FontMatrix can be ignored because CFFCompiler always\n        // removes it and copies to FDArray DICTs.\n        let fdIndex = this.fdSelect.getFDIndex(glyphId);\n        if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n          let fontDict = this.fdArray[fdIndex];\n          fontMatrix = fontDict.getByName('FontMatrix') || FONT_IDENTITY_MATRIX;\n        } else {\n          warn('Invalid fd index for glyph index.');\n        }\n      }\n\n      const cmds = [];\n      cmds.push({ cmd: 'save', });\n      cmds.push({ cmd: 'transform', args: fontMatrix.slice(), });\n      cmds.push({ cmd: 'scale', args: ['size', '-size'], });\n\n      this.compileGlyphImpl(code, cmds, glyphId);\n\n      cmds.push({ cmd: 'restore', });\n\n      return cmds;\n    }\n\n    compileGlyphImpl() {\n      unreachable('Children classes should implement this.');\n    }\n\n    hasBuiltPath(unicode) {\n      const cmap = lookupCmap(this.cmap, unicode);\n      return (this.compiledGlyphs[cmap.glyphId] !== undefined &&\n              this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined);\n    }\n  }\n\n  class TrueTypeCompiled extends CompiledFont {\n    constructor(glyphs, cmap, fontMatrix) {\n      super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n\n      this.glyphs = glyphs;\n      this.cmap = cmap;\n    }\n\n    compileGlyphImpl(code, cmds) {\n      compileGlyf(code, cmds, this);\n    }\n  }\n\n  class Type2Compiled extends CompiledFont {\n    constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n      super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n\n      this.glyphs = cffInfo.glyphs;\n      this.gsubrs = cffInfo.gsubrs || [];\n      this.subrs = cffInfo.subrs || [];\n      this.cmap = cmap;\n      this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n      this.gsubrsBias = (this.gsubrs.length < 1240 ?\n                         107 : (this.gsubrs.length < 33900 ? 1131 : 32768));\n      this.subrsBias = (this.subrs.length < 1240 ?\n                        107 : (this.subrs.length < 33900 ? 1131 : 32768));\n\n      this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n      this.fdSelect = cffInfo.fdSelect;\n      this.fdArray = cffInfo.fdArray;\n    }\n\n    compileGlyphImpl(code, cmds, glyphId) {\n      compileCharString(code, cmds, this, glyphId);\n    }\n  }\n\n  return {\n    create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n      var data = new Uint8Array(font.data);\n      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n      var numTables = getUshort(data, 4);\n      for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n        var tag = bytesToString(data.subarray(p, p + 4));\n        var offset = getLong(data, p + 8);\n        var length = getLong(data, p + 12);\n        switch (tag) {\n          case 'cmap':\n            cmap = parseCmap(data, offset, offset + length);\n            break;\n          case 'glyf':\n            glyf = data.subarray(offset, offset + length);\n            break;\n          case 'loca':\n            loca = data.subarray(offset, offset + length);\n            break;\n          case 'head':\n            unitsPerEm = getUshort(data, offset + 18);\n            indexToLocFormat = getUshort(data, offset + 50);\n            break;\n          case 'CFF ':\n            cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n            break;\n        }\n      }\n\n      if (glyf) {\n        var fontMatrix = (!unitsPerEm ? font.fontMatrix :\n                          [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]);\n        return new TrueTypeCompiled(\n          parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n      }\n      return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n    },\n  };\n})();\n\nexport {\n  FontRendererFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isSpace, warn } from '../shared/util';\nimport { getEncoding } from './encodings';\nimport { Stream } from './stream';\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nvar HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n *  A CharString byte containing the values from 32 through 255 inclusive\n *  indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n *  CharStrings commands are encoded in 1 or 2 bytes.\n *\n *  Single byte commands are encoded in 1 byte that contains a value between\n *  0 and 31 inclusive.\n *  If a command byte contains the value 12, then the value in the next byte\n *  indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nvar Type1CharString = (function Type1CharStringClosure() {\n  var COMMAND_MAP = {\n    'hstem': [1],\n    'vstem': [3],\n    'vmoveto': [4],\n    'rlineto': [5],\n    'hlineto': [6],\n    'vlineto': [7],\n    'rrcurveto': [8],\n    'callsubr': [10],\n    'flex': [12, 35],\n    'drop': [12, 18],\n    'endchar': [14],\n    'rmoveto': [21],\n    'hmoveto': [22],\n    'vhcurveto': [30],\n    'hvcurveto': [31],\n  };\n\n  function Type1CharString() {\n    this.width = 0;\n    this.lsb = 0;\n    this.flexing = false;\n    this.output = [];\n    this.stack = [];\n  }\n\n  Type1CharString.prototype = {\n    convert: function Type1CharString_convert(encoded, subrs,\n                                              seacAnalysisEnabled) {\n      var count = encoded.length;\n      var error = false;\n      var wx, sbx, subrNumber;\n      for (var i = 0; i < count; i++) {\n        var value = encoded[i];\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n          switch (value) {\n            case 1: // hstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case 3: // vstem\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case 4: // vmoveto\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n                // Add the dx for flex and but also swap the values so they are\n                // the right order.\n                var dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n            case 5: // rlineto\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n            case 6: // hlineto\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n            case 7: // vlineto\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n            case 8: // rrcurveto\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n            case 9: // closepath\n              // closepath is a Type1 command that does not take argument and is\n              // useless in Type2 and it can simply be ignored.\n              this.stack = [];\n              break;\n            case 10: // callsubr\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n              error = this.convert(subrs[subrNumber], subrs,\n                                   seacAnalysisEnabled);\n              break;\n            case 11: // return\n              return error;\n            case 13: // hsbw\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use hmoveto with lsb.\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n            case 14: // endchar\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n            case 21: // rmoveto\n              if (this.flexing) {\n                break;\n              }\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n            case 22: // hmoveto\n              if (this.flexing) {\n                // Add the dy for flex.\n                this.stack.push(0);\n                break;\n              }\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n            case 30: // vhcurveto\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n            case 31: // hvcurveto\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n            case (12 << 8) + 0: // dotsection\n              // dotsection is a Type1 command to specify some hinting feature\n              // for dots that do not take a parameter and it can safely be\n              // ignored for Type2.\n              this.stack = [];\n              break;\n            case (12 << 8) + 1: // vstem3\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n              // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n              // multiple parameters, so instead of returning [vh]stem3 take a\n              // shortcut and return [vhstem] instead.\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n            case (12 << 8) + 2: // hstem3\n              if (!HINTING_ENABLED) {\n                 this.stack = [];\n                break;\n              }\n              // See vstem3.\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n            case (12 << 8) + 6: // seac\n              // seac is like type 2's special endchar but it doesn't use the\n              // first argument asb, so remove it.\n              if (seacAnalysisEnabled) {\n                this.seac = this.stack.splice(-4, 4);\n                error = this.executeCommand(0, COMMAND_MAP.endchar);\n              } else {\n                error = this.executeCommand(4, COMMAND_MAP.endchar);\n              }\n              break;\n            case (12 << 8) + 7: // sbw\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n              // To convert to type2 we have to move the width value to the\n              // first part of the charstring and then use rmoveto with\n              // (dx, dy). The height argument will not be used for vmtx and\n              // vhea tables reconstruction -- ignoring it.\n              this.stack.pop(); // wy\n              wx = this.stack.pop();\n              var sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n            case (12 << 8) + 12: // div\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              var num2 = this.stack.pop();\n              var num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n            case (12 << 8) + 16: // callothersubr\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n              subrNumber = this.stack.pop();\n              var numArgs = this.stack.pop();\n              if (subrNumber === 0 && numArgs === 3) {\n                var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(\n                  flexArgs[2] + flexArgs[0], // bcp1x + rpx\n                  flexArgs[3] + flexArgs[1], // bcp1y + rpy\n                  flexArgs[4], // bcp2x\n                  flexArgs[5], // bcp2y\n                  flexArgs[6], // p2x\n                  flexArgs[7], // p2y\n                  flexArgs[8], // bcp3x\n                  flexArgs[9], // bcp3y\n                  flexArgs[10], // bcp4x\n                  flexArgs[11], // bcp4y\n                  flexArgs[12], // p3x\n                  flexArgs[13], // p3y\n                  flexArgs[14] // flexDepth\n                  // 15 = finalx unused by flex\n                  // 16 = finaly unused by flex\n                );\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n              break;\n            case (12 << 8) + 17: // pop\n              // Ignore this since it is only used with othersubr.\n              break;\n            case (12 << 8) + 33: // setcurrentpoint\n              // Ignore for now.\n              this.stack = [];\n              break;\n            default:\n              warn('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n          if (error) {\n            break;\n          }\n          continue;\n        } else if (value <= 246) {\n          value = value - 139;\n        } else if (value <= 250) {\n          value = ((value - 247) * 256) + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 |\n                  (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n        }\n        this.stack.push(value);\n      }\n      return error;\n    },\n\n    executeCommand(howManyArgs, command, keepStack) {\n      var stackLength = this.stack.length;\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n      var start = stackLength - howManyArgs;\n      for (var i = start; i < stackLength; i++) {\n        var value = this.stack[i];\n        if (Number.isInteger(value)) {\n          this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n        } else { // fixed point\n          value = (65536 * value) | 0;\n          this.output.push(255,\n                           (value >> 24) & 0xFF,\n                           (value >> 16) & 0xFF,\n                           (value >> 8) & 0xFF,\n                           value & 0xFF);\n        }\n      }\n      this.output.push.apply(this.output, command);\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n      return false;\n    },\n  };\n\n  return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nvar Type1Parser = (function Type1ParserClosure() {\n  /*\n   * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n   * of Plaintext Bytes. The function took a key as a parameter which can be\n   * for decrypting the eexec block of for decoding charStrings.\n   */\n  var EEXEC_ENCRYPT_KEY = 55665;\n  var CHAR_STRS_ENCRYPT_KEY = 4330;\n\n  function isHexDigit(code) {\n    return code >= 48 && code <= 57 || // '0'-'9'\n           code >= 65 && code <= 70 || // 'A'-'F'\n           code >= 97 && code <= 102;  // 'a'-'f'\n  }\n\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n    var r = key | 0, c1 = 52845, c2 = 22719, i, j;\n    for (i = 0; i < discardNumber; i++) {\n      r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    var count = data.length - discardNumber;\n    var decrypted = new Uint8Array(count);\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      var value = data[i];\n      decrypted[j] = value ^ (r >> 8);\n      r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n    }\n    return decrypted;\n  }\n\n  function decryptAscii(data, key, discardNumber) {\n    var r = key | 0, c1 = 52845, c2 = 22719;\n    var count = data.length, maybeLength = count >>> 1;\n    var decrypted = new Uint8Array(maybeLength);\n    var i, j;\n    for (i = 0, j = 0; i < count; i++) {\n      var digit1 = data[i];\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n      i++;\n      var digit2;\n      while (i < count && !isHexDigit(digit2 = data[i])) {\n        i++;\n      }\n      if (i < count) {\n        var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ (r >> 8);\n        r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n      }\n    }\n    return Array.prototype.slice.call(decrypted, discardNumber, j);\n  }\n\n  function isSpecial(c) {\n    return c === 0x2F || // '/'\n           c === 0x5B || c === 0x5D || // '[', ']'\n           c === 0x7B || c === 0x7D || // '{', '}'\n           c === 0x28 || c === 0x29; // '(', ')'\n  }\n\n  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n    if (encrypted) {\n      var data = stream.getBytes();\n      var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) &&\n                       isHexDigit(data[2]) && isHexDigit(data[3]));\n      stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) :\n                          decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n    }\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n    this.stream = stream;\n    this.nextChar();\n  }\n\n  Type1Parser.prototype = {\n    readNumberArray: function Type1Parser_readNumberArray() {\n      this.getToken(); // read '[' or '{' (arrays can start with either)\n      var array = [];\n      while (true) {\n        var token = this.getToken();\n        if (token === null || token === ']' || token === '}') {\n          break;\n        }\n        array.push(parseFloat(token || 0));\n      }\n      return array;\n    },\n\n    readNumber: function Type1Parser_readNumber() {\n      var token = this.getToken();\n      return parseFloat(token || 0);\n    },\n\n    readInt: function Type1Parser_readInt() {\n      // Use '| 0' to prevent setting a double into length such as the double\n      // does not flow into the loop variable.\n      var token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    },\n\n    readBoolean: function Type1Parser_readBoolean() {\n      var token = this.getToken();\n\n      // Use 1 and 0 since that's what type2 charstrings use.\n      return token === 'true' ? 1 : 0;\n    },\n\n    nextChar: function Type1_nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    },\n\n    getToken: function Type1Parser_getToken() {\n      // Eat whitespace and comments.\n      var comment = false;\n      var ch = this.currentChar;\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n\n        if (comment) {\n          if (ch === 0x0A || ch === 0x0D) {\n            comment = false;\n          }\n        } else if (ch === 0x25) { // '%'\n          comment = true;\n        } else if (!isSpace(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n      var token = '';\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !isSpace(ch) && !isSpecial(ch));\n      return token;\n    },\n\n    readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        // This isn't in the spec, but Adobe's tx program handles -1\n        // as plain text.\n        return bytes;\n      }\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    },\n\n    /*\n     * Returns an object containing a Subrs array and a CharStrings\n     * array extracted from and eexec encrypted block of data\n     */\n    extractFontProgram: function Type1Parser_extractFontProgram() {\n      var stream = this.stream;\n\n      var subrs = [], charstrings = [];\n      var privateData = Object.create(null);\n      privateData['lenIV'] = 4;\n      var program = {\n        subrs: [],\n        charstrings: [],\n        properties: {\n          'privateData': privateData,\n        },\n      };\n      var token, length, data, lenIV, encoded;\n      while ((token = this.getToken()) !== null) {\n        if (token !== '/') {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case 'CharStrings':\n            // The number immediately following CharStrings must be greater or\n            // equal to the number of CharStrings.\n            this.getToken();\n            this.getToken(); // read in 'dict'\n            this.getToken(); // read in 'dup'\n            this.getToken(); // read in 'begin'\n            while (true) {\n              token = this.getToken();\n              if (token === null || token === 'end') {\n                break;\n              }\n\n              if (token !== '/') {\n                continue;\n              }\n              var glyph = this.getToken();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = (length > 0 ? stream.getBytes(length) : new Uint8Array(0));\n              lenIV = program.properties.privateData['lenIV'];\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'ND' or '|-'\n              if (token === 'noaccess') {\n                this.getToken(); // read in 'def'\n              }\n              charstrings.push({\n                glyph,\n                encoded,\n              });\n            }\n            break;\n          case 'Subrs':\n            this.readInt(); // num\n            this.getToken(); // read in 'array'\n            while (this.getToken() === 'dup') {\n              var index = this.readInt();\n              length = this.readInt();\n              this.getToken(); // read in 'RD' or '-|'\n              data = (length > 0 ? stream.getBytes(length) : new Uint8Array(0));\n              lenIV = program.properties.privateData['lenIV'];\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken(); // read in 'NP' or '|'\n              if (token === 'noaccess') {\n                this.getToken(); // read in 'put'\n              }\n              subrs[index] = encoded;\n            }\n            break;\n          case 'BlueValues':\n          case 'OtherBlues':\n          case 'FamilyBlues':\n          case 'FamilyOtherBlues':\n            var blueArray = this.readNumberArray();\n            // *Blue* values may contain invalid data: disables reading of\n            // those values when hinting is disabled.\n            if (blueArray.length > 0 && (blueArray.length % 2) === 0 &&\n                HINTING_ENABLED) {\n              program.properties.privateData[token] = blueArray;\n            }\n            break;\n          case 'StemSnapH':\n          case 'StemSnapV':\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n          case 'StdHW':\n          case 'StdVW':\n            program.properties.privateData[token] =\n              this.readNumberArray()[0];\n            break;\n          case 'BlueShift':\n          case 'lenIV':\n          case 'BlueFuzz':\n          case 'BlueScale':\n          case 'LanguageGroup':\n          case 'ExpansionFactor':\n            program.properties.privateData[token] = this.readNumber();\n            break;\n          case 'ForceBold':\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n\n      for (var i = 0; i < charstrings.length; i++) {\n        glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        var charString = new Type1CharString();\n        var error = charString.convert(encoded, subrs,\n                                       this.seacAnalysisEnabled);\n        var output = charString.output;\n        if (error) {\n          // It seems when FreeType encounters an error while evaluating a glyph\n          // that it completely ignores the glyph so we'll mimic that behaviour\n          // here and put an endchar to make the validator happy.\n          output = [14];\n        }\n        program.charstrings.push({\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac,\n        });\n      }\n\n      return program;\n    },\n\n    extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n      var token;\n      while ((token = this.getToken()) !== null) {\n        if (token !== '/') {\n          continue;\n        }\n        token = this.getToken();\n        switch (token) {\n          case 'FontMatrix':\n            var matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n          case 'Encoding':\n            var encodingArg = this.getToken();\n            var encoding;\n            if (!/^\\d+$/.test(encodingArg)) {\n              // encoding name is specified\n              encoding = getEncoding(encodingArg);\n            } else {\n              encoding = [];\n              var size = parseInt(encodingArg, 10) | 0;\n              this.getToken(); // read in 'array'\n\n              for (var j = 0; j < size; j++) {\n                token = this.getToken();\n                // skipping till first dup or def (e.g. ignoring for statement)\n                while (token !== 'dup' && token !== 'def') {\n                  token = this.getToken();\n                  if (token === null) {\n                    return; // invalid header\n                  }\n                }\n                if (token === 'def') {\n                  break; // read all array data\n                }\n                var index = this.readInt();\n                this.getToken(); // read in '/'\n                var glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken(); // read the in 'put'\n              }\n            }\n            properties.builtInEncoding = encoding;\n            break;\n          case 'FontBBox':\n            var fontBBox = this.readNumberArray();\n            // adjusting ascent/descent\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    },\n  };\n\n  return Type1Parser;\n})();\n\nexport {\n  Type1Parser,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-spaces */\n\nimport {\n  assert, FormatError, info, MissingDataException, unreachable,\n  UNSUPPORTED_FEATURES, Util, warn\n} from '../shared/util';\nimport { ColorSpace } from './colorspace';\nimport { isStream } from './primitives';\n\nvar ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7,\n};\n\nvar Pattern = (function PatternClosure() {\n  // Constructor should define this.getPattern\n  function Pattern() {\n    unreachable('should not call Pattern constructor');\n  }\n\n  Pattern.prototype = {\n    // Input: current Canvas context\n    // Output: the appropriate fillStyle or strokeStyle\n    getPattern: function Pattern_getPattern(ctx) {\n      unreachable(`Should not call Pattern.getStyle: ${ctx}`);\n    },\n  };\n\n  Pattern.parseShading = function(shading, matrix, xref, res, handler,\n                                  pdfFunctionFactory) {\n    var dict = isStream(shading) ? shading.dict : shading;\n    var type = dict.get('ShadingType');\n\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          // Both radial and axial shadings are handled by RadialAxial shading.\n          return new Shadings.RadialAxial(dict, matrix, xref, res,\n                                          pdfFunctionFactory);\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new Shadings.Mesh(shading, matrix, xref, res,\n                                   pdfFunctionFactory);\n        default:\n          throw new FormatError('Unsupported ShadingType: ' + type);\n      }\n    } catch (ex) {\n      if (ex instanceof MissingDataException) {\n        throw ex;\n      }\n      handler.send('UnsupportedFeature',\n                   { featureId: UNSUPPORTED_FEATURES.shadingPattern, });\n      warn(ex);\n      return new Shadings.Dummy();\n    }\n  };\n  return Pattern;\n})();\n\nvar Shadings = {};\n\n// A small number to offset the first/last color stops so we can insert ones to\n// support extend. Number.MIN_VALUE is too small and breaks the extend.\nShadings.SMALL_NUMBER = 1e-6;\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes\nShadings.RadialAxial = (function RadialAxialClosure() {\n  function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) {\n    this.matrix = matrix;\n    this.coordsArr = dict.getArray('Coords');\n    this.shadingType = dict.get('ShadingType');\n    this.type = 'Pattern';\n    var cs = dict.get('ColorSpace', 'CS');\n    cs = ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n    this.cs = cs;\n\n    var t0 = 0.0, t1 = 1.0;\n    if (dict.has('Domain')) {\n      var domainArr = dict.getArray('Domain');\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n\n    var extendStart = false, extendEnd = false;\n    if (dict.has('Extend')) {\n      var extendArr = dict.getArray('Extend');\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n\n    if (this.shadingType === ShadingType.RADIAL &&\n       (!extendStart || !extendEnd)) {\n      // Radial gradient only currently works if either circle is fully within\n      // the other circle.\n      var x1 = this.coordsArr[0];\n      var y1 = this.coordsArr[1];\n      var r1 = this.coordsArr[2];\n      var x2 = this.coordsArr[3];\n      var y2 = this.coordsArr[4];\n      var r2 = this.coordsArr[5];\n      var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n      if (r1 <= r2 + distance &&\n          r2 <= r1 + distance) {\n        warn('Unsupported radial gradient.');\n      }\n    }\n\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n\n    var fnObj = dict.get('Function');\n    var fn = pdfFunctionFactory.createFromArray(fnObj);\n\n    // 10 samples seems good enough for now, but probably won't work\n    // if there are sharp color changes. Ideally, we would implement\n    // the spec faithfully and add lossless optimizations.\n    var diff = t1 - t0;\n    var step = diff / 10;\n\n    var colorStops = this.colorStops = [];\n\n    // Protect against bad domains so we don't end up in an infinite loop below.\n    if (t0 >= t1 || step <= 0) {\n      // Acrobat doesn't seem to handle these cases so we'll ignore for\n      // now.\n      info('Bad shading domain.');\n      return;\n    }\n\n    var color = new Float32Array(cs.numComps), ratio = new Float32Array(1);\n    var rgbColor;\n    for (var i = t0; i <= t1; i += step) {\n      ratio[0] = i;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n      var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n      colorStops.push([(i - t0) / diff, cssColor]);\n    }\n\n    var background = 'transparent';\n    if (dict.has('Background')) {\n      rgbColor = cs.getRgb(dict.get('Background'), 0);\n      background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n\n    if (!extendStart) {\n      // Insert a color stop at the front and offset the first real color stop\n      // so it doesn't conflict with the one we insert.\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += Shadings.SMALL_NUMBER;\n    }\n    if (!extendEnd) {\n      // Same idea as above in extendStart but for the end.\n      colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n\n    this.colorStops = colorStops;\n  }\n\n  RadialAxial.prototype = {\n    getIR: function RadialAxial_getIR() {\n      var coordsArr = this.coordsArr;\n      var shadingType = this.shadingType;\n      var type, p0, p1, r0, r1;\n      if (shadingType === ShadingType.AXIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[2], coordsArr[3]];\n        r0 = null;\n        r1 = null;\n        type = 'axial';\n      } else if (shadingType === ShadingType.RADIAL) {\n        p0 = [coordsArr[0], coordsArr[1]];\n        p1 = [coordsArr[3], coordsArr[4]];\n        r0 = coordsArr[2];\n        r1 = coordsArr[5];\n        type = 'radial';\n      } else {\n        unreachable(`getPattern type unknown: ${shadingType}`);\n      }\n\n      var matrix = this.matrix;\n      if (matrix) {\n        p0 = Util.applyTransform(p0, matrix);\n        p1 = Util.applyTransform(p1, matrix);\n        if (shadingType === ShadingType.RADIAL) {\n          var scale = Util.singularValueDecompose2dScale(matrix);\n          r0 *= scale[0];\n          r1 *= scale[1];\n        }\n      }\n\n      return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];\n    },\n  };\n\n  return RadialAxial;\n})();\n\n// All mesh shading. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nShadings.Mesh = (function MeshClosure() {\n  function MeshStreamReader(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n\n    var numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    var csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) :\n                                           this.tmpCompsBuf;\n  }\n  MeshStreamReader.prototype = {\n    get hasData() {\n      if (this.stream.end) {\n        return this.stream.pos < this.stream.end;\n      }\n      if (this.bufferLength > 0) {\n        return true;\n      }\n      var nextByte = this.stream.getByte();\n      if (nextByte < 0) {\n        return false;\n      }\n      this.buffer = nextByte;\n      this.bufferLength = 8;\n      return true;\n    },\n    readBits: function MeshStreamReader_readBits(n) {\n      var buffer = this.buffer;\n      var bufferLength = this.bufferLength;\n      if (n === 32) {\n        if (bufferLength === 0) {\n          return ((this.stream.getByte() << 24) |\n            (this.stream.getByte() << 16) | (this.stream.getByte() << 8) |\n            this.stream.getByte()) >>> 0;\n        }\n        buffer = (buffer << 24) | (this.stream.getByte() << 16) |\n          (this.stream.getByte() << 8) | this.stream.getByte();\n        var nextByte = this.stream.getByte();\n        this.buffer = nextByte & ((1 << bufferLength) - 1);\n        return ((buffer << (8 - bufferLength)) |\n          ((nextByte & 0xFF) >> bufferLength)) >>> 0;\n      }\n      if (n === 8 && bufferLength === 0) {\n        return this.stream.getByte();\n      }\n      while (bufferLength < n) {\n        buffer = (buffer << 8) | this.stream.getByte();\n        bufferLength += 8;\n      }\n      bufferLength -= n;\n      this.bufferLength = bufferLength;\n      this.buffer = buffer & ((1 << bufferLength) - 1);\n      return buffer >> bufferLength;\n    },\n    align: function MeshStreamReader_align() {\n      this.buffer = 0;\n      this.bufferLength = 0;\n    },\n    readFlag: function MeshStreamReader_readFlag() {\n      return this.readBits(this.context.bitsPerFlag);\n    },\n    readCoordinate: function MeshStreamReader_readCoordinate() {\n      var bitsPerCoordinate = this.context.bitsPerCoordinate;\n      var xi = this.readBits(bitsPerCoordinate);\n      var yi = this.readBits(bitsPerCoordinate);\n      var decode = this.context.decode;\n      var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) :\n        2.3283064365386963e-10; // 2 ^ -32\n      return [\n        xi * scale * (decode[1] - decode[0]) + decode[0],\n        yi * scale * (decode[3] - decode[2]) + decode[2]\n      ];\n    },\n    readComponents: function MeshStreamReader_readComponents() {\n      var numComps = this.context.numComps;\n      var bitsPerComponent = this.context.bitsPerComponent;\n      var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) :\n        2.3283064365386963e-10; // 2 ^ -32\n      var decode = this.context.decode;\n      var components = this.tmpCompsBuf;\n      for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n        var ci = this.readBits(bitsPerComponent);\n        components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n      }\n      var color = this.tmpCsCompsBuf;\n      if (this.context.colorFn) {\n        this.context.colorFn(components, 0, color, 0);\n      }\n      return this.context.colorSpace.getRgb(color, 0);\n    },\n  };\n\n  function decodeType4Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var operators = [];\n    var ps = []; // not maintaining cs since that will match ps\n    var verticesLeft = 0; // assuming we have all data to start a new triangle\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      if (verticesLeft === 0) { // ignoring flags if we started a triangle\n        if (!(0 <= f && f <= 2)) {\n          throw new FormatError('Unknown type4 flag');\n        }\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n        operators.push(f);\n      }\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n\n      reader.align();\n    }\n    mesh.figures.push({\n      type: 'triangles',\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n    });\n  }\n\n  function decodeType5Shading(mesh, reader, verticesPerRow) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = []; // not maintaining cs since that will match ps\n    while (reader.hasData) {\n      var coord = reader.readCoordinate();\n      var color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n    mesh.figures.push({\n      type: 'lattice',\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow,\n    });\n  }\n\n  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n\n  var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds\n\n  var getB = (function getBClosure() {\n    function buildB(count) {\n      var lut = [];\n      for (var i = 0; i <= count; i++) {\n        var t = i / count, t_ = 1 - t;\n        lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_,\n          3 * t * t * t_, t * t * t]));\n      }\n      return lut;\n    }\n    var cache = [];\n    return function getB(count) {\n      if (!cache[count]) {\n        cache[count] = buildB(count);\n      }\n      return cache[count];\n    };\n  })();\n\n  function buildFigureFromPatch(mesh, index) {\n    var figure = mesh.figures[index];\n    assert(figure.type === 'patch', 'Unexpected patch mesh figure');\n\n    var coords = mesh.coords, colors = mesh.colors;\n    var pi = figure.coords;\n    var ci = figure.colors;\n\n    var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0],\n                              coords[pi[12]][0], coords[pi[15]][0]);\n    var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1],\n                              coords[pi[12]][1], coords[pi[15]][1]);\n    var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0],\n                              coords[pi[12]][0], coords[pi[15]][0]);\n    var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1],\n                              coords[pi[12]][1], coords[pi[15]][1]);\n    var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY /\n                             (mesh.bounds[2] - mesh.bounds[0]));\n    splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n               Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n    var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY /\n                             (mesh.bounds[3] - mesh.bounds[1]));\n    splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n               Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\n\n    var verticesPerRow = splitXBy + 1;\n    var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    var k = 0;\n    var cl = new Uint8Array(3), cr = new Uint8Array(3);\n    var c0 = colors[ci[0]], c1 = colors[ci[1]],\n      c2 = colors[ci[2]], c3 = colors[ci[3]];\n    var bRow = getB(splitYBy), bCol = getB(splitXBy);\n    for (var row = 0; row <= splitYBy; row++) {\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n      for (var col = 0; col <= splitXBy; col++, k++) {\n        if ((row === 0 || row === splitYBy) &&\n            (col === 0 || col === splitXBy)) {\n          continue;\n        }\n        var x = 0, y = 0;\n        var q = 0;\n        for (var i = 0; i <= 3; i++) {\n          for (var j = 0; j <= 3; j++, q++) {\n            var m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        var newColor = new Uint8Array(3);\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n        colors.push(newColor);\n      }\n    }\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n    mesh.figures[index] = {\n      type: 'lattice',\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow,\n    };\n  }\n\n  function decodeType6Shading(mesh, reader) {\n    // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError('Unknown type6 flag');\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = (f !== 0 ? 8 : 12); i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 7;\n          ps[ 4] = pi + 1; /* calculated below              */ ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2; /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\n          ps[ 8] = ps[7];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = tmp2;   /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\n          ps[ 8] = ps[1];  /* values for 5, 6, 9, 10 are    */ ps[11] = pi + 3;\n          ps[ 4] = ps[2];  /* calculated below              */ ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      // set p11, p12, p21, p22\n      ps[5] = coords.length;\n      coords.push([\n        (-4 * coords[ps[0]][0] - coords[ps[15]][0] +\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9,\n        (-4 * coords[ps[0]][1] - coords[ps[15]][1] +\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9\n      ]);\n      ps[6] = coords.length;\n      coords.push([\n        (-4 * coords[ps[3]][0] - coords[ps[12]][0] +\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9,\n        (-4 * coords[ps[3]][1] - coords[ps[12]][1] +\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9\n      ]);\n      ps[9] = coords.length;\n      coords.push([\n        (-4 * coords[ps[12]][0] - coords[ps[3]][0] +\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9,\n        (-4 * coords[ps[12]][1] - coords[ps[3]][1] +\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9\n      ]);\n      ps[10] = coords.length;\n      coords.push([\n        (-4 * coords[ps[15]][0] - coords[ps[0]][0] +\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9,\n        (-4 * coords[ps[15]][1] - coords[ps[0]][1] +\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9\n      ]);\n      mesh.figures.push({\n        type: 'patch',\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function decodeType7Shading(mesh, reader) {\n    var coords = mesh.coords;\n    var colors = mesh.colors;\n    var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n    var cs = new Int32Array(4); // c00, c30, c03, c33\n    while (reader.hasData) {\n      var f = reader.readFlag();\n      if (!(0 <= f && f <= 3)) {\n        throw new FormatError('Unknown type7 flag');\n      }\n      var i, ii;\n      var pi = coords.length;\n      for (i = 0, ii = (f !== 0 ? 12 : 16); i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n      var ci = colors.length;\n      for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n      var tmp1, tmp2, tmp3, tmp4;\n      switch (f) {\n        case 0:\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n          cs[2] = ci + 1; cs[3] = ci + 2;\n          cs[0] = ci;     cs[1] = ci + 3;\n          break;\n        case 1:\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[2]; tmp2 = cs[3];\n          cs[2] = tmp2;   cs[3] = ci;\n          cs[0] = tmp1;   cs[1] = ci + 1;\n          break;\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1]; cs[3] = ci;\n          cs[0] = tmp1;  cs[1] = ci + 1;\n          break;\n        case 3:\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\n          cs[2] = cs[0]; cs[3] = ci;\n          cs[0] = cs[1]; cs[1] = ci + 1;\n          break;\n      }\n      mesh.figures.push({\n        type: 'patch',\n        coords: new Int32Array(ps), // making copies of ps and cs\n        colors: new Int32Array(cs),\n      });\n    }\n  }\n\n  function updateBounds(mesh) {\n    var minX = mesh.coords[0][0], minY = mesh.coords[0][1],\n      maxX = minX, maxY = minY;\n    for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n      var x = mesh.coords[i][0], y = mesh.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n    mesh.bounds = [minX, minY, maxX, maxY];\n  }\n\n  function packData(mesh) {\n    var i, ii, j, jj;\n\n    var coords = mesh.coords;\n    var coordsPacked = new Float32Array(coords.length * 2);\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      var xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n    mesh.coords = coordsPacked;\n\n    var colors = mesh.colors;\n    var colorsPacked = new Uint8Array(colors.length * 3);\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      var c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n    mesh.colors = colorsPacked;\n\n    var figures = mesh.figures;\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      var figure = figures[i], ps = figure.coords, cs = figure.colors;\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n\n  function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {\n    if (!isStream(stream)) {\n      throw new FormatError('Mesh data is not a stream');\n    }\n    var dict = stream.dict;\n    this.matrix = matrix;\n    this.shadingType = dict.get('ShadingType');\n    this.type = 'Pattern';\n    this.bbox = dict.getArray('BBox');\n    var cs = dict.get('ColorSpace', 'CS');\n    cs = ColorSpace.parse(cs, xref, res, pdfFunctionFactory);\n    this.cs = cs;\n    this.background = dict.has('Background') ?\n      cs.getRgb(dict.get('Background'), 0) : null;\n\n    var fnObj = dict.get('Function');\n    var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n\n    var decodeContext = {\n      bitsPerCoordinate: dict.get('BitsPerCoordinate'),\n      bitsPerComponent: dict.get('BitsPerComponent'),\n      bitsPerFlag: dict.get('BitsPerFlag'),\n      decode: dict.getArray('Decode'),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps,\n    };\n    var reader = new MeshStreamReader(stream, decodeContext);\n\n    var patchMesh = false;\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        decodeType4Shading(this, reader);\n        break;\n      case ShadingType.LATTICE_FORM_MESH:\n        var verticesPerRow = dict.get('VerticesPerRow') | 0;\n        if (verticesPerRow < 2) {\n          throw new FormatError('Invalid VerticesPerRow');\n        }\n        decodeType5Shading(this, reader, verticesPerRow);\n        break;\n      case ShadingType.COONS_PATCH_MESH:\n        decodeType6Shading(this, reader);\n        patchMesh = true;\n        break;\n      case ShadingType.TENSOR_PATCH_MESH:\n        decodeType7Shading(this, reader);\n        patchMesh = true;\n        break;\n      default:\n        unreachable('Unsupported mesh type.');\n        break;\n    }\n\n    if (patchMesh) {\n      // dirty bounds calculation for determining, how dense shall be triangles\n      updateBounds(this);\n      for (var i = 0, ii = this.figures.length; i < ii; i++) {\n        buildFigureFromPatch(this, i);\n      }\n    }\n    // calculate bounds\n    updateBounds(this);\n\n    packData(this);\n  }\n\n  Mesh.prototype = {\n    getIR: function Mesh_getIR() {\n      return ['Mesh', this.shadingType, this.coords, this.colors, this.figures,\n        this.bounds, this.matrix, this.bbox, this.background];\n    },\n  };\n\n  return Mesh;\n})();\n\nShadings.Dummy = (function DummyClosure() {\n  function Dummy() {\n    this.type = 'Pattern';\n  }\n\n  Dummy.prototype = {\n    getIR: function Dummy_getIR() {\n      return ['Dummy'];\n    },\n  };\n  return Dummy;\n})();\n\nfunction getTilingPatternIR(operatorList, dict, args) {\n  let matrix = dict.getArray('Matrix');\n  let bbox = Util.normalizeRect(dict.getArray('BBox'));\n  let xstep = dict.get('XStep');\n  let ystep = dict.get('YStep');\n  let paintType = dict.get('PaintType');\n  let tilingType = dict.get('TilingType');\n\n  // Ensure that the pattern has a non-zero width and height, to prevent errors\n  // in `pattern_helper.js` (fixes issue8330.pdf).\n  if ((bbox[2] - bbox[0]) === 0 || (bbox[3] - bbox[1]) === 0) {\n    throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n  }\n\n  return [\n    'TilingPattern', args, operatorList, matrix, bbox, xstep, ystep,\n    paintType, tilingType\n  ];\n}\n\nexport {\n  Pattern,\n  getTilingPatternIR,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from '../shared/util';\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar baseTypes = [\n  'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S',\n  'WS', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',\n  'BN', 'BN', 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET',\n  'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'ON', 'ES', 'CS', 'ES', 'CS', 'CS',\n  'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'CS', 'ON',\n  'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n  'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n  'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L',\n  'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n  'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON',\n  'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', 'BN', 'BN', 'BN', 'BN',\n  'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',\n  'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'CS', 'ON', 'ET',\n  'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'BN', 'ON',\n  'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', 'EN', 'L',\n  'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n  'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n  'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n  'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n  'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\nvar arabicTypes = [\n  'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ON', 'ON', 'AL', 'ET', 'ET', 'AL',\n  'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',\n  'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', '', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',\n  'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',\n  'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN',\n  'AN', 'AN', 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n  'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN',\n  'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'NSM', 'NSM',\n  'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'EN', 'EN', 'EN', 'EN',\n  'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL'\n];\n\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n  for (var j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n  return j;\n}\n\nfunction setValues(arr, start, end, value) {\n  for (var j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\n\nfunction reverseValues(arr, start, end) {\n  for (var i = start, j = end - 1; i < j; ++i, --j) {\n    var temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\n\nfunction createBidiText(str, isLTR, vertical) {\n  return {\n    str,\n    dir: (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl')),\n  };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nvar chars = [];\nvar types = [];\n\nfunction bidi(str, startLevel, vertical) {\n  var isLTR = true;\n  var strLength = str.length;\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n\n  // Get types and fill arrays\n  chars.length = strLength;\n  types.length = strLength;\n  var numBidi = 0;\n\n  var i, ii;\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n\n    var charCode = str.charCodeAt(i);\n    var charType = 'L';\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = 'R';\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n      if (!charType) {\n        warn('Bidi: invalid Unicode character ' + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08AC) {\n      charType = 'AL';\n    }\n    if (charType === 'R' || charType === 'AL' || charType === 'AN') {\n      numBidi++;\n    }\n    types[i] = charType;\n  }\n\n  // Detect the bidi method\n  // - If there are no rtl characters then no bidi needed\n  // - If less than 30% chars are rtl then string is primarily ltr\n  // - If more than 30% chars are rtl then string is primarily rtl\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n\n  if (startLevel === -1) {\n    if ((numBidi / strLength) < 0.3) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n\n  var levels = [];\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n\n  /*\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\n   */\n  var e = (isOdd(startLevel) ? 'R' : 'L');\n  var sor = e;\n  var eor = sor;\n\n  /*\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\n   type of the NSM to the type of the previous character. If the NSM is at the\n   start of the level run, it will get the type of sor.\n   */\n  var lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === 'NSM') {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n\n  /*\n   W2. Search backwards from each instance of a European number until the\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\n   the type of the European number to Arabic number.\n   */\n  lastType = sor;\n  var t;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === 'EN') {\n      types[i] = (lastType === 'AL') ? 'AN' : 'EN';\n    } else if (t === 'R' || t === 'L' || t === 'AL') {\n      lastType = t;\n    }\n  }\n\n  /*\n   W3. Change all ALs to R.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === 'AL') {\n      types[i] = 'R';\n    }\n  }\n\n  /*\n   W4. A single European separator between two European numbers changes to a\n   European number. A single common separator between two numbers of the same\n   type changes to that type:\n   */\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {\n      types[i] = 'EN';\n    }\n    if (types[i] === 'CS' &&\n        (types[i - 1] === 'EN' || types[i - 1] === 'AN') &&\n        types[i + 1] === types[i - 1]) {\n      types[i] = types[i - 1];\n    }\n  }\n\n  /*\n   W5. A sequence of European terminators adjacent to European numbers changes\n   to all European numbers:\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === 'EN') {\n      // do before\n      var j;\n      for (j = i - 1; j >= 0; --j) {\n        if (types[j] !== 'ET') {\n          break;\n        }\n        types[j] = 'EN';\n      }\n      // do after\n      for (j = i + 1; j < strLength; ++j) {\n        if (types[j] !== 'ET') {\n          break;\n        }\n        types[j] = 'EN';\n      }\n    }\n  }\n\n  /*\n   W6. Otherwise, separators and terminators change to Other Neutral:\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') {\n      types[i] = 'ON';\n    }\n  }\n\n  /*\n   W7. Search backwards from each instance of a European number until the\n   first strong type (R, L, or sor) is found. If an L is found,  then change\n   the type of the European number to L.\n   */\n  lastType = sor;\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (t === 'EN') {\n      types[i] = ((lastType === 'L') ? 'L' : 'EN');\n    } else if (t === 'R' || t === 'L') {\n      lastType = t;\n    }\n  }\n\n  /*\n   N1. A sequence of neutrals takes the direction of the surrounding strong\n   text if the text on both sides has the same direction. European and Arabic\n   numbers are treated as though they were R. Start-of-level-run (sor) and\n   end-of-level-run (eor) are used at level run boundaries.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === 'ON') {\n      var end = findUnequal(types, i + 1, 'ON');\n      var before = sor;\n      if (i > 0) {\n        before = types[i - 1];\n      }\n\n      var after = eor;\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n      if (before !== 'L') {\n        before = 'R';\n      }\n      if (after !== 'L') {\n        after = 'R';\n      }\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n      i = end - 1; // reset to end (-1 so next iteration is ok)\n    }\n  }\n\n  /*\n   N2. Any remaining neutrals take the embedding direction.\n   */\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === 'ON') {\n      types[i] = e;\n    }\n  }\n\n  /*\n   I1. For all characters with an even (left-to-right) embedding direction,\n   those of type R go up one level and those of type AN or EN go up two\n   levels.\n   I2. For all characters with an odd (right-to-left) embedding direction,\n   those of type L, EN or AN go up one level.\n   */\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n    if (isEven(levels[i])) {\n      if (t === 'R') {\n        levels[i] += 1;\n      } else if (t === 'AN' || t === 'EN') {\n        levels[i] += 2;\n      }\n    } else { // isOdd\n      if (t === 'L' || t === 'AN' || t === 'EN') {\n        levels[i] += 1;\n      }\n    }\n  }\n\n  /*\n   L1. On each line, reset the embedding level of the following characters to\n   the paragraph embedding level:\n\n   segment separators,\n   paragraph separators,\n   any sequence of whitespace characters preceding a segment separator or\n   paragraph separator, and any sequence of white space characters at the end\n   of the line.\n   */\n\n  // don't bother as text is only single line\n\n  /*\n   L2. From the highest level found in the text to the lowest odd level on\n   each line, reverse any contiguous sequence of characters that are at that\n   level or higher.\n   */\n\n  // find highest level & lowest odd level\n  var highestLevel = -1;\n  var lowestOddLevel = 99;\n  var level;\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n\n  // now reverse between those limits\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    // find segments to reverse\n    var start = -1;\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n\n  /*\n   L3. Combining marks applied to a right-to-left base character will at this\n   point precede their base character. If the rendering engine expects them to\n   follow the base characters in the final display process, then the ordering\n   of the marks and the base character must be reversed.\n   */\n\n  // don't bother for now\n\n  /*\n   L4. A character that possesses the mirrored property as specified by\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n   directionality of that character is R.\n   */\n\n  // don't mirror as characters are already mirrored in the pdf\n\n  // Finally, return string\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    var ch = chars[i];\n    if (ch === '<' || ch === '>') {\n      chars[i] = '';\n    }\n  }\n  return createBidiText(chars.join(''), isLTR);\n}\n\nexport {\n  bidi,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from '../shared/util';\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nvar getMetrics = getLookupTableFactory(function (t) {\n  t['Courier'] = 600;\n  t['Courier-Bold'] = 600;\n  t['Courier-BoldOblique'] = 600;\n  t['Courier-Oblique'] = 600;\n  t['Helvetica'] = getLookupTableFactory(function (t) {\n    t['space'] = 278;\n    t['exclam'] = 278;\n    t['quotedbl'] = 355;\n    t['numbersign'] = 556;\n    t['dollar'] = 556;\n    t['percent'] = 889;\n    t['ampersand'] = 667;\n    t['quoteright'] = 222;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 389;\n    t['plus'] = 584;\n    t['comma'] = 278;\n    t['hyphen'] = 333;\n    t['period'] = 278;\n    t['slash'] = 278;\n    t['zero'] = 556;\n    t['one'] = 556;\n    t['two'] = 556;\n    t['three'] = 556;\n    t['four'] = 556;\n    t['five'] = 556;\n    t['six'] = 556;\n    t['seven'] = 556;\n    t['eight'] = 556;\n    t['nine'] = 556;\n    t['colon'] = 278;\n    t['semicolon'] = 278;\n    t['less'] = 584;\n    t['equal'] = 584;\n    t['greater'] = 584;\n    t['question'] = 556;\n    t['at'] = 1015;\n    t['A'] = 667;\n    t['B'] = 667;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 722;\n    t['I'] = 278;\n    t['J'] = 500;\n    t['K'] = 667;\n    t['L'] = 556;\n    t['M'] = 833;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 667;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 667;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 944;\n    t['X'] = 667;\n    t['Y'] = 667;\n    t['Z'] = 611;\n    t['bracketleft'] = 278;\n    t['backslash'] = 278;\n    t['bracketright'] = 278;\n    t['asciicircum'] = 469;\n    t['underscore'] = 556;\n    t['quoteleft'] = 222;\n    t['a'] = 556;\n    t['b'] = 556;\n    t['c'] = 500;\n    t['d'] = 556;\n    t['e'] = 556;\n    t['f'] = 278;\n    t['g'] = 556;\n    t['h'] = 556;\n    t['i'] = 222;\n    t['j'] = 222;\n    t['k'] = 500;\n    t['l'] = 222;\n    t['m'] = 833;\n    t['n'] = 556;\n    t['o'] = 556;\n    t['p'] = 556;\n    t['q'] = 556;\n    t['r'] = 333;\n    t['s'] = 500;\n    t['t'] = 278;\n    t['u'] = 556;\n    t['v'] = 500;\n    t['w'] = 722;\n    t['x'] = 500;\n    t['y'] = 500;\n    t['z'] = 500;\n    t['braceleft'] = 334;\n    t['bar'] = 260;\n    t['braceright'] = 334;\n    t['asciitilde'] = 584;\n    t['exclamdown'] = 333;\n    t['cent'] = 556;\n    t['sterling'] = 556;\n    t['fraction'] = 167;\n    t['yen'] = 556;\n    t['florin'] = 556;\n    t['section'] = 556;\n    t['currency'] = 556;\n    t['quotesingle'] = 191;\n    t['quotedblleft'] = 333;\n    t['guillemotleft'] = 556;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 500;\n    t['fl'] = 500;\n    t['endash'] = 556;\n    t['dagger'] = 556;\n    t['daggerdbl'] = 556;\n    t['periodcentered'] = 278;\n    t['paragraph'] = 537;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 222;\n    t['quotedblbase'] = 333;\n    t['quotedblright'] = 333;\n    t['guillemotright'] = 556;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 611;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 370;\n    t['Lslash'] = 556;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 365;\n    t['ae'] = 889;\n    t['dotlessi'] = 278;\n    t['lslash'] = 222;\n    t['oslash'] = 611;\n    t['oe'] = 944;\n    t['germandbls'] = 611;\n    t['Idieresis'] = 278;\n    t['eacute'] = 556;\n    t['abreve'] = 556;\n    t['uhungarumlaut'] = 556;\n    t['ecaron'] = 556;\n    t['Ydieresis'] = 667;\n    t['divide'] = 584;\n    t['Yacute'] = 667;\n    t['Acircumflex'] = 667;\n    t['aacute'] = 556;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 500;\n    t['scommaaccent'] = 500;\n    t['ecircumflex'] = 556;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 556;\n    t['Uacute'] = 722;\n    t['uogonek'] = 556;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 737;\n    t['Emacron'] = 667;\n    t['ccaron'] = 500;\n    t['aring'] = 556;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 222;\n    t['agrave'] = 556;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 722;\n    t['atilde'] = 556;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 500;\n    t['scedilla'] = 500;\n    t['iacute'] = 278;\n    t['lozenge'] = 471;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 556;\n    t['acircumflex'] = 556;\n    t['Amacron'] = 667;\n    t['rcaron'] = 333;\n    t['ccedilla'] = 500;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 667;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 667;\n    t['dcaron'] = 643;\n    t['Umacron'] = 722;\n    t['uring'] = 556;\n    t['threesuperior'] = 333;\n    t['Ograve'] = 778;\n    t['Agrave'] = 667;\n    t['Abreve'] = 667;\n    t['multiply'] = 584;\n    t['uacute'] = 556;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 476;\n    t['ydieresis'] = 500;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 556;\n    t['edieresis'] = 556;\n    t['cacute'] = 500;\n    t['nacute'] = 556;\n    t['umacron'] = 556;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 278;\n    t['plusminus'] = 584;\n    t['brokenbar'] = 260;\n    t['registered'] = 737;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 278;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 333;\n    t['omacron'] = 556;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 222;\n    t['tcaron'] = 317;\n    t['eogonek'] = 556;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 667;\n    t['Adieresis'] = 667;\n    t['egrave'] = 556;\n    t['zacute'] = 500;\n    t['iogonek'] = 222;\n    t['Oacute'] = 778;\n    t['oacute'] = 556;\n    t['amacron'] = 556;\n    t['sacute'] = 500;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 556;\n    t['twosuperior'] = 333;\n    t['Odieresis'] = 778;\n    t['mu'] = 556;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 556;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 556;\n    t['threequarters'] = 834;\n    t['Scedilla'] = 667;\n    t['lcaron'] = 299;\n    t['Kcommaaccent'] = 667;\n    t['Lacute'] = 556;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 556;\n    t['Igrave'] = 278;\n    t['Imacron'] = 278;\n    t['Lcaron'] = 556;\n    t['onehalf'] = 834;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 556;\n    t['ntilde'] = 556;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 556;\n    t['gbreve'] = 556;\n    t['onequarter'] = 834;\n    t['Scaron'] = 667;\n    t['Scommaaccent'] = 667;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 556;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 556;\n    t['radical'] = 453;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 333;\n    t['Ntilde'] = 722;\n    t['otilde'] = 556;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 556;\n    t['Atilde'] = 667;\n    t['Aogonek'] = 667;\n    t['Aring'] = 667;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 500;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 278;\n    t['kcommaaccent'] = 500;\n    t['minus'] = 584;\n    t['Icircumflex'] = 278;\n    t['ncaron'] = 556;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 584;\n    t['odieresis'] = 556;\n    t['udieresis'] = 556;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 556;\n    t['eth'] = 556;\n    t['zcaron'] = 500;\n    t['ncommaaccent'] = 556;\n    t['onesuperior'] = 333;\n    t['imacron'] = 278;\n    t['Euro'] = 556;\n  });\n  t['Helvetica-Bold'] = getLookupTableFactory(function (t) {\n    t['space'] = 278;\n    t['exclam'] = 333;\n    t['quotedbl'] = 474;\n    t['numbersign'] = 556;\n    t['dollar'] = 556;\n    t['percent'] = 889;\n    t['ampersand'] = 722;\n    t['quoteright'] = 278;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 389;\n    t['plus'] = 584;\n    t['comma'] = 278;\n    t['hyphen'] = 333;\n    t['period'] = 278;\n    t['slash'] = 278;\n    t['zero'] = 556;\n    t['one'] = 556;\n    t['two'] = 556;\n    t['three'] = 556;\n    t['four'] = 556;\n    t['five'] = 556;\n    t['six'] = 556;\n    t['seven'] = 556;\n    t['eight'] = 556;\n    t['nine'] = 556;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 584;\n    t['equal'] = 584;\n    t['greater'] = 584;\n    t['question'] = 611;\n    t['at'] = 975;\n    t['A'] = 722;\n    t['B'] = 722;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 722;\n    t['I'] = 278;\n    t['J'] = 556;\n    t['K'] = 722;\n    t['L'] = 611;\n    t['M'] = 833;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 667;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 667;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 944;\n    t['X'] = 667;\n    t['Y'] = 667;\n    t['Z'] = 611;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 584;\n    t['underscore'] = 556;\n    t['quoteleft'] = 278;\n    t['a'] = 556;\n    t['b'] = 611;\n    t['c'] = 556;\n    t['d'] = 611;\n    t['e'] = 556;\n    t['f'] = 333;\n    t['g'] = 611;\n    t['h'] = 611;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 556;\n    t['l'] = 278;\n    t['m'] = 889;\n    t['n'] = 611;\n    t['o'] = 611;\n    t['p'] = 611;\n    t['q'] = 611;\n    t['r'] = 389;\n    t['s'] = 556;\n    t['t'] = 333;\n    t['u'] = 611;\n    t['v'] = 556;\n    t['w'] = 778;\n    t['x'] = 556;\n    t['y'] = 556;\n    t['z'] = 500;\n    t['braceleft'] = 389;\n    t['bar'] = 280;\n    t['braceright'] = 389;\n    t['asciitilde'] = 584;\n    t['exclamdown'] = 333;\n    t['cent'] = 556;\n    t['sterling'] = 556;\n    t['fraction'] = 167;\n    t['yen'] = 556;\n    t['florin'] = 556;\n    t['section'] = 556;\n    t['currency'] = 556;\n    t['quotesingle'] = 238;\n    t['quotedblleft'] = 500;\n    t['guillemotleft'] = 556;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 611;\n    t['fl'] = 611;\n    t['endash'] = 556;\n    t['dagger'] = 556;\n    t['daggerdbl'] = 556;\n    t['periodcentered'] = 278;\n    t['paragraph'] = 556;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 278;\n    t['quotedblbase'] = 500;\n    t['quotedblright'] = 500;\n    t['guillemotright'] = 556;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 611;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 370;\n    t['Lslash'] = 611;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 365;\n    t['ae'] = 889;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 611;\n    t['oe'] = 944;\n    t['germandbls'] = 611;\n    t['Idieresis'] = 278;\n    t['eacute'] = 556;\n    t['abreve'] = 556;\n    t['uhungarumlaut'] = 611;\n    t['ecaron'] = 556;\n    t['Ydieresis'] = 667;\n    t['divide'] = 584;\n    t['Yacute'] = 667;\n    t['Acircumflex'] = 722;\n    t['aacute'] = 556;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 556;\n    t['scommaaccent'] = 556;\n    t['ecircumflex'] = 556;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 556;\n    t['Uacute'] = 722;\n    t['uogonek'] = 611;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 737;\n    t['Emacron'] = 667;\n    t['ccaron'] = 556;\n    t['aring'] = 556;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 556;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 722;\n    t['atilde'] = 556;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 556;\n    t['scedilla'] = 556;\n    t['iacute'] = 278;\n    t['lozenge'] = 494;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 611;\n    t['acircumflex'] = 556;\n    t['Amacron'] = 722;\n    t['rcaron'] = 389;\n    t['ccedilla'] = 556;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 667;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 667;\n    t['dcaron'] = 743;\n    t['Umacron'] = 722;\n    t['uring'] = 611;\n    t['threesuperior'] = 333;\n    t['Ograve'] = 778;\n    t['Agrave'] = 722;\n    t['Abreve'] = 722;\n    t['multiply'] = 584;\n    t['uacute'] = 611;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 494;\n    t['ydieresis'] = 556;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 556;\n    t['edieresis'] = 556;\n    t['cacute'] = 556;\n    t['nacute'] = 611;\n    t['umacron'] = 611;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 278;\n    t['plusminus'] = 584;\n    t['brokenbar'] = 280;\n    t['registered'] = 737;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 278;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 389;\n    t['omacron'] = 611;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 389;\n    t['eogonek'] = 556;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 722;\n    t['Adieresis'] = 722;\n    t['egrave'] = 556;\n    t['zacute'] = 500;\n    t['iogonek'] = 278;\n    t['Oacute'] = 778;\n    t['oacute'] = 611;\n    t['amacron'] = 556;\n    t['sacute'] = 556;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 611;\n    t['twosuperior'] = 333;\n    t['Odieresis'] = 778;\n    t['mu'] = 611;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 611;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 611;\n    t['threequarters'] = 834;\n    t['Scedilla'] = 667;\n    t['lcaron'] = 400;\n    t['Kcommaaccent'] = 722;\n    t['Lacute'] = 611;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 556;\n    t['Igrave'] = 278;\n    t['Imacron'] = 278;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 834;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 611;\n    t['ntilde'] = 611;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 556;\n    t['gbreve'] = 611;\n    t['onequarter'] = 834;\n    t['Scaron'] = 667;\n    t['Scommaaccent'] = 667;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 611;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 611;\n    t['radical'] = 549;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 389;\n    t['Ntilde'] = 722;\n    t['otilde'] = 611;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 611;\n    t['Atilde'] = 722;\n    t['Aogonek'] = 722;\n    t['Aring'] = 722;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 500;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 278;\n    t['kcommaaccent'] = 556;\n    t['minus'] = 584;\n    t['Icircumflex'] = 278;\n    t['ncaron'] = 611;\n    t['tcommaaccent'] = 333;\n    t['logicalnot'] = 584;\n    t['odieresis'] = 611;\n    t['udieresis'] = 611;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 611;\n    t['eth'] = 611;\n    t['zcaron'] = 500;\n    t['ncommaaccent'] = 611;\n    t['onesuperior'] = 333;\n    t['imacron'] = 278;\n    t['Euro'] = 556;\n  });\n  t['Helvetica-BoldOblique'] = getLookupTableFactory(function (t) {\n    t['space'] = 278;\n    t['exclam'] = 333;\n    t['quotedbl'] = 474;\n    t['numbersign'] = 556;\n    t['dollar'] = 556;\n    t['percent'] = 889;\n    t['ampersand'] = 722;\n    t['quoteright'] = 278;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 389;\n    t['plus'] = 584;\n    t['comma'] = 278;\n    t['hyphen'] = 333;\n    t['period'] = 278;\n    t['slash'] = 278;\n    t['zero'] = 556;\n    t['one'] = 556;\n    t['two'] = 556;\n    t['three'] = 556;\n    t['four'] = 556;\n    t['five'] = 556;\n    t['six'] = 556;\n    t['seven'] = 556;\n    t['eight'] = 556;\n    t['nine'] = 556;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 584;\n    t['equal'] = 584;\n    t['greater'] = 584;\n    t['question'] = 611;\n    t['at'] = 975;\n    t['A'] = 722;\n    t['B'] = 722;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 722;\n    t['I'] = 278;\n    t['J'] = 556;\n    t['K'] = 722;\n    t['L'] = 611;\n    t['M'] = 833;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 667;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 667;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 944;\n    t['X'] = 667;\n    t['Y'] = 667;\n    t['Z'] = 611;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 584;\n    t['underscore'] = 556;\n    t['quoteleft'] = 278;\n    t['a'] = 556;\n    t['b'] = 611;\n    t['c'] = 556;\n    t['d'] = 611;\n    t['e'] = 556;\n    t['f'] = 333;\n    t['g'] = 611;\n    t['h'] = 611;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 556;\n    t['l'] = 278;\n    t['m'] = 889;\n    t['n'] = 611;\n    t['o'] = 611;\n    t['p'] = 611;\n    t['q'] = 611;\n    t['r'] = 389;\n    t['s'] = 556;\n    t['t'] = 333;\n    t['u'] = 611;\n    t['v'] = 556;\n    t['w'] = 778;\n    t['x'] = 556;\n    t['y'] = 556;\n    t['z'] = 500;\n    t['braceleft'] = 389;\n    t['bar'] = 280;\n    t['braceright'] = 389;\n    t['asciitilde'] = 584;\n    t['exclamdown'] = 333;\n    t['cent'] = 556;\n    t['sterling'] = 556;\n    t['fraction'] = 167;\n    t['yen'] = 556;\n    t['florin'] = 556;\n    t['section'] = 556;\n    t['currency'] = 556;\n    t['quotesingle'] = 238;\n    t['quotedblleft'] = 500;\n    t['guillemotleft'] = 556;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 611;\n    t['fl'] = 611;\n    t['endash'] = 556;\n    t['dagger'] = 556;\n    t['daggerdbl'] = 556;\n    t['periodcentered'] = 278;\n    t['paragraph'] = 556;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 278;\n    t['quotedblbase'] = 500;\n    t['quotedblright'] = 500;\n    t['guillemotright'] = 556;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 611;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 370;\n    t['Lslash'] = 611;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 365;\n    t['ae'] = 889;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 611;\n    t['oe'] = 944;\n    t['germandbls'] = 611;\n    t['Idieresis'] = 278;\n    t['eacute'] = 556;\n    t['abreve'] = 556;\n    t['uhungarumlaut'] = 611;\n    t['ecaron'] = 556;\n    t['Ydieresis'] = 667;\n    t['divide'] = 584;\n    t['Yacute'] = 667;\n    t['Acircumflex'] = 722;\n    t['aacute'] = 556;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 556;\n    t['scommaaccent'] = 556;\n    t['ecircumflex'] = 556;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 556;\n    t['Uacute'] = 722;\n    t['uogonek'] = 611;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 737;\n    t['Emacron'] = 667;\n    t['ccaron'] = 556;\n    t['aring'] = 556;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 556;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 722;\n    t['atilde'] = 556;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 556;\n    t['scedilla'] = 556;\n    t['iacute'] = 278;\n    t['lozenge'] = 494;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 611;\n    t['acircumflex'] = 556;\n    t['Amacron'] = 722;\n    t['rcaron'] = 389;\n    t['ccedilla'] = 556;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 667;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 667;\n    t['dcaron'] = 743;\n    t['Umacron'] = 722;\n    t['uring'] = 611;\n    t['threesuperior'] = 333;\n    t['Ograve'] = 778;\n    t['Agrave'] = 722;\n    t['Abreve'] = 722;\n    t['multiply'] = 584;\n    t['uacute'] = 611;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 494;\n    t['ydieresis'] = 556;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 556;\n    t['edieresis'] = 556;\n    t['cacute'] = 556;\n    t['nacute'] = 611;\n    t['umacron'] = 611;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 278;\n    t['plusminus'] = 584;\n    t['brokenbar'] = 280;\n    t['registered'] = 737;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 278;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 389;\n    t['omacron'] = 611;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 389;\n    t['eogonek'] = 556;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 722;\n    t['Adieresis'] = 722;\n    t['egrave'] = 556;\n    t['zacute'] = 500;\n    t['iogonek'] = 278;\n    t['Oacute'] = 778;\n    t['oacute'] = 611;\n    t['amacron'] = 556;\n    t['sacute'] = 556;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 611;\n    t['twosuperior'] = 333;\n    t['Odieresis'] = 778;\n    t['mu'] = 611;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 611;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 611;\n    t['threequarters'] = 834;\n    t['Scedilla'] = 667;\n    t['lcaron'] = 400;\n    t['Kcommaaccent'] = 722;\n    t['Lacute'] = 611;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 556;\n    t['Igrave'] = 278;\n    t['Imacron'] = 278;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 834;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 611;\n    t['ntilde'] = 611;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 556;\n    t['gbreve'] = 611;\n    t['onequarter'] = 834;\n    t['Scaron'] = 667;\n    t['Scommaaccent'] = 667;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 611;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 611;\n    t['radical'] = 549;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 389;\n    t['Ntilde'] = 722;\n    t['otilde'] = 611;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 611;\n    t['Atilde'] = 722;\n    t['Aogonek'] = 722;\n    t['Aring'] = 722;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 500;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 278;\n    t['kcommaaccent'] = 556;\n    t['minus'] = 584;\n    t['Icircumflex'] = 278;\n    t['ncaron'] = 611;\n    t['tcommaaccent'] = 333;\n    t['logicalnot'] = 584;\n    t['odieresis'] = 611;\n    t['udieresis'] = 611;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 611;\n    t['eth'] = 611;\n    t['zcaron'] = 500;\n    t['ncommaaccent'] = 611;\n    t['onesuperior'] = 333;\n    t['imacron'] = 278;\n    t['Euro'] = 556;\n  });\n  t['Helvetica-Oblique'] = getLookupTableFactory(function (t) {\n    t['space'] = 278;\n    t['exclam'] = 278;\n    t['quotedbl'] = 355;\n    t['numbersign'] = 556;\n    t['dollar'] = 556;\n    t['percent'] = 889;\n    t['ampersand'] = 667;\n    t['quoteright'] = 222;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 389;\n    t['plus'] = 584;\n    t['comma'] = 278;\n    t['hyphen'] = 333;\n    t['period'] = 278;\n    t['slash'] = 278;\n    t['zero'] = 556;\n    t['one'] = 556;\n    t['two'] = 556;\n    t['three'] = 556;\n    t['four'] = 556;\n    t['five'] = 556;\n    t['six'] = 556;\n    t['seven'] = 556;\n    t['eight'] = 556;\n    t['nine'] = 556;\n    t['colon'] = 278;\n    t['semicolon'] = 278;\n    t['less'] = 584;\n    t['equal'] = 584;\n    t['greater'] = 584;\n    t['question'] = 556;\n    t['at'] = 1015;\n    t['A'] = 667;\n    t['B'] = 667;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 722;\n    t['I'] = 278;\n    t['J'] = 500;\n    t['K'] = 667;\n    t['L'] = 556;\n    t['M'] = 833;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 667;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 667;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 944;\n    t['X'] = 667;\n    t['Y'] = 667;\n    t['Z'] = 611;\n    t['bracketleft'] = 278;\n    t['backslash'] = 278;\n    t['bracketright'] = 278;\n    t['asciicircum'] = 469;\n    t['underscore'] = 556;\n    t['quoteleft'] = 222;\n    t['a'] = 556;\n    t['b'] = 556;\n    t['c'] = 500;\n    t['d'] = 556;\n    t['e'] = 556;\n    t['f'] = 278;\n    t['g'] = 556;\n    t['h'] = 556;\n    t['i'] = 222;\n    t['j'] = 222;\n    t['k'] = 500;\n    t['l'] = 222;\n    t['m'] = 833;\n    t['n'] = 556;\n    t['o'] = 556;\n    t['p'] = 556;\n    t['q'] = 556;\n    t['r'] = 333;\n    t['s'] = 500;\n    t['t'] = 278;\n    t['u'] = 556;\n    t['v'] = 500;\n    t['w'] = 722;\n    t['x'] = 500;\n    t['y'] = 500;\n    t['z'] = 500;\n    t['braceleft'] = 334;\n    t['bar'] = 260;\n    t['braceright'] = 334;\n    t['asciitilde'] = 584;\n    t['exclamdown'] = 333;\n    t['cent'] = 556;\n    t['sterling'] = 556;\n    t['fraction'] = 167;\n    t['yen'] = 556;\n    t['florin'] = 556;\n    t['section'] = 556;\n    t['currency'] = 556;\n    t['quotesingle'] = 191;\n    t['quotedblleft'] = 333;\n    t['guillemotleft'] = 556;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 500;\n    t['fl'] = 500;\n    t['endash'] = 556;\n    t['dagger'] = 556;\n    t['daggerdbl'] = 556;\n    t['periodcentered'] = 278;\n    t['paragraph'] = 537;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 222;\n    t['quotedblbase'] = 333;\n    t['quotedblright'] = 333;\n    t['guillemotright'] = 556;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 611;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 370;\n    t['Lslash'] = 556;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 365;\n    t['ae'] = 889;\n    t['dotlessi'] = 278;\n    t['lslash'] = 222;\n    t['oslash'] = 611;\n    t['oe'] = 944;\n    t['germandbls'] = 611;\n    t['Idieresis'] = 278;\n    t['eacute'] = 556;\n    t['abreve'] = 556;\n    t['uhungarumlaut'] = 556;\n    t['ecaron'] = 556;\n    t['Ydieresis'] = 667;\n    t['divide'] = 584;\n    t['Yacute'] = 667;\n    t['Acircumflex'] = 667;\n    t['aacute'] = 556;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 500;\n    t['scommaaccent'] = 500;\n    t['ecircumflex'] = 556;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 556;\n    t['Uacute'] = 722;\n    t['uogonek'] = 556;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 737;\n    t['Emacron'] = 667;\n    t['ccaron'] = 500;\n    t['aring'] = 556;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 222;\n    t['agrave'] = 556;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 722;\n    t['atilde'] = 556;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 500;\n    t['scedilla'] = 500;\n    t['iacute'] = 278;\n    t['lozenge'] = 471;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 556;\n    t['acircumflex'] = 556;\n    t['Amacron'] = 667;\n    t['rcaron'] = 333;\n    t['ccedilla'] = 500;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 667;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 667;\n    t['dcaron'] = 643;\n    t['Umacron'] = 722;\n    t['uring'] = 556;\n    t['threesuperior'] = 333;\n    t['Ograve'] = 778;\n    t['Agrave'] = 667;\n    t['Abreve'] = 667;\n    t['multiply'] = 584;\n    t['uacute'] = 556;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 476;\n    t['ydieresis'] = 500;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 556;\n    t['edieresis'] = 556;\n    t['cacute'] = 500;\n    t['nacute'] = 556;\n    t['umacron'] = 556;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 278;\n    t['plusminus'] = 584;\n    t['brokenbar'] = 260;\n    t['registered'] = 737;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 278;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 333;\n    t['omacron'] = 556;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 222;\n    t['tcaron'] = 317;\n    t['eogonek'] = 556;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 667;\n    t['Adieresis'] = 667;\n    t['egrave'] = 556;\n    t['zacute'] = 500;\n    t['iogonek'] = 222;\n    t['Oacute'] = 778;\n    t['oacute'] = 556;\n    t['amacron'] = 556;\n    t['sacute'] = 500;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 556;\n    t['twosuperior'] = 333;\n    t['Odieresis'] = 778;\n    t['mu'] = 556;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 556;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 556;\n    t['threequarters'] = 834;\n    t['Scedilla'] = 667;\n    t['lcaron'] = 299;\n    t['Kcommaaccent'] = 667;\n    t['Lacute'] = 556;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 556;\n    t['Igrave'] = 278;\n    t['Imacron'] = 278;\n    t['Lcaron'] = 556;\n    t['onehalf'] = 834;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 556;\n    t['ntilde'] = 556;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 556;\n    t['gbreve'] = 556;\n    t['onequarter'] = 834;\n    t['Scaron'] = 667;\n    t['Scommaaccent'] = 667;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 556;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 556;\n    t['radical'] = 453;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 333;\n    t['Ntilde'] = 722;\n    t['otilde'] = 556;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 556;\n    t['Atilde'] = 667;\n    t['Aogonek'] = 667;\n    t['Aring'] = 667;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 500;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 278;\n    t['kcommaaccent'] = 500;\n    t['minus'] = 584;\n    t['Icircumflex'] = 278;\n    t['ncaron'] = 556;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 584;\n    t['odieresis'] = 556;\n    t['udieresis'] = 556;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 556;\n    t['eth'] = 556;\n    t['zcaron'] = 500;\n    t['ncommaaccent'] = 556;\n    t['onesuperior'] = 333;\n    t['imacron'] = 278;\n    t['Euro'] = 556;\n  });\n  t['Symbol'] = getLookupTableFactory(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 333;\n    t['universal'] = 713;\n    t['numbersign'] = 500;\n    t['existential'] = 549;\n    t['percent'] = 833;\n    t['ampersand'] = 778;\n    t['suchthat'] = 439;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asteriskmath'] = 500;\n    t['plus'] = 549;\n    t['comma'] = 250;\n    t['minus'] = 549;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 278;\n    t['semicolon'] = 278;\n    t['less'] = 549;\n    t['equal'] = 549;\n    t['greater'] = 549;\n    t['question'] = 444;\n    t['congruent'] = 549;\n    t['Alpha'] = 722;\n    t['Beta'] = 667;\n    t['Chi'] = 722;\n    t['Delta'] = 612;\n    t['Epsilon'] = 611;\n    t['Phi'] = 763;\n    t['Gamma'] = 603;\n    t['Eta'] = 722;\n    t['Iota'] = 333;\n    t['theta1'] = 631;\n    t['Kappa'] = 722;\n    t['Lambda'] = 686;\n    t['Mu'] = 889;\n    t['Nu'] = 722;\n    t['Omicron'] = 722;\n    t['Pi'] = 768;\n    t['Theta'] = 741;\n    t['Rho'] = 556;\n    t['Sigma'] = 592;\n    t['Tau'] = 611;\n    t['Upsilon'] = 690;\n    t['sigma1'] = 439;\n    t['Omega'] = 768;\n    t['Xi'] = 645;\n    t['Psi'] = 795;\n    t['Zeta'] = 611;\n    t['bracketleft'] = 333;\n    t['therefore'] = 863;\n    t['bracketright'] = 333;\n    t['perpendicular'] = 658;\n    t['underscore'] = 500;\n    t['radicalex'] = 500;\n    t['alpha'] = 631;\n    t['beta'] = 549;\n    t['chi'] = 549;\n    t['delta'] = 494;\n    t['epsilon'] = 439;\n    t['phi'] = 521;\n    t['gamma'] = 411;\n    t['eta'] = 603;\n    t['iota'] = 329;\n    t['phi1'] = 603;\n    t['kappa'] = 549;\n    t['lambda'] = 549;\n    t['mu'] = 576;\n    t['nu'] = 521;\n    t['omicron'] = 549;\n    t['pi'] = 549;\n    t['theta'] = 521;\n    t['rho'] = 549;\n    t['sigma'] = 603;\n    t['tau'] = 439;\n    t['upsilon'] = 576;\n    t['omega1'] = 713;\n    t['omega'] = 686;\n    t['xi'] = 493;\n    t['psi'] = 686;\n    t['zeta'] = 494;\n    t['braceleft'] = 480;\n    t['bar'] = 200;\n    t['braceright'] = 480;\n    t['similar'] = 549;\n    t['Euro'] = 750;\n    t['Upsilon1'] = 620;\n    t['minute'] = 247;\n    t['lessequal'] = 549;\n    t['fraction'] = 167;\n    t['infinity'] = 713;\n    t['florin'] = 500;\n    t['club'] = 753;\n    t['diamond'] = 753;\n    t['heart'] = 753;\n    t['spade'] = 753;\n    t['arrowboth'] = 1042;\n    t['arrowleft'] = 987;\n    t['arrowup'] = 603;\n    t['arrowright'] = 987;\n    t['arrowdown'] = 603;\n    t['degree'] = 400;\n    t['plusminus'] = 549;\n    t['second'] = 411;\n    t['greaterequal'] = 549;\n    t['multiply'] = 549;\n    t['proportional'] = 713;\n    t['partialdiff'] = 494;\n    t['bullet'] = 460;\n    t['divide'] = 549;\n    t['notequal'] = 549;\n    t['equivalence'] = 549;\n    t['approxequal'] = 549;\n    t['ellipsis'] = 1000;\n    t['arrowvertex'] = 603;\n    t['arrowhorizex'] = 1000;\n    t['carriagereturn'] = 658;\n    t['aleph'] = 823;\n    t['Ifraktur'] = 686;\n    t['Rfraktur'] = 795;\n    t['weierstrass'] = 987;\n    t['circlemultiply'] = 768;\n    t['circleplus'] = 768;\n    t['emptyset'] = 823;\n    t['intersection'] = 768;\n    t['union'] = 768;\n    t['propersuperset'] = 713;\n    t['reflexsuperset'] = 713;\n    t['notsubset'] = 713;\n    t['propersubset'] = 713;\n    t['reflexsubset'] = 713;\n    t['element'] = 713;\n    t['notelement'] = 713;\n    t['angle'] = 768;\n    t['gradient'] = 713;\n    t['registerserif'] = 790;\n    t['copyrightserif'] = 790;\n    t['trademarkserif'] = 890;\n    t['product'] = 823;\n    t['radical'] = 549;\n    t['dotmath'] = 250;\n    t['logicalnot'] = 713;\n    t['logicaland'] = 603;\n    t['logicalor'] = 603;\n    t['arrowdblboth'] = 1042;\n    t['arrowdblleft'] = 987;\n    t['arrowdblup'] = 603;\n    t['arrowdblright'] = 987;\n    t['arrowdbldown'] = 603;\n    t['lozenge'] = 494;\n    t['angleleft'] = 329;\n    t['registersans'] = 790;\n    t['copyrightsans'] = 790;\n    t['trademarksans'] = 786;\n    t['summation'] = 713;\n    t['parenlefttp'] = 384;\n    t['parenleftex'] = 384;\n    t['parenleftbt'] = 384;\n    t['bracketlefttp'] = 384;\n    t['bracketleftex'] = 384;\n    t['bracketleftbt'] = 384;\n    t['bracelefttp'] = 494;\n    t['braceleftmid'] = 494;\n    t['braceleftbt'] = 494;\n    t['braceex'] = 494;\n    t['angleright'] = 329;\n    t['integral'] = 274;\n    t['integraltp'] = 686;\n    t['integralex'] = 686;\n    t['integralbt'] = 686;\n    t['parenrighttp'] = 384;\n    t['parenrightex'] = 384;\n    t['parenrightbt'] = 384;\n    t['bracketrighttp'] = 384;\n    t['bracketrightex'] = 384;\n    t['bracketrightbt'] = 384;\n    t['bracerighttp'] = 494;\n    t['bracerightmid'] = 494;\n    t['bracerightbt'] = 494;\n    t['apple'] = 790;\n  });\n  t['Times-Roman'] = getLookupTableFactory(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 333;\n    t['quotedbl'] = 408;\n    t['numbersign'] = 500;\n    t['dollar'] = 500;\n    t['percent'] = 833;\n    t['ampersand'] = 778;\n    t['quoteright'] = 333;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 500;\n    t['plus'] = 564;\n    t['comma'] = 250;\n    t['hyphen'] = 333;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 278;\n    t['semicolon'] = 278;\n    t['less'] = 564;\n    t['equal'] = 564;\n    t['greater'] = 564;\n    t['question'] = 444;\n    t['at'] = 921;\n    t['A'] = 722;\n    t['B'] = 667;\n    t['C'] = 667;\n    t['D'] = 722;\n    t['E'] = 611;\n    t['F'] = 556;\n    t['G'] = 722;\n    t['H'] = 722;\n    t['I'] = 333;\n    t['J'] = 389;\n    t['K'] = 722;\n    t['L'] = 611;\n    t['M'] = 889;\n    t['N'] = 722;\n    t['O'] = 722;\n    t['P'] = 556;\n    t['Q'] = 722;\n    t['R'] = 667;\n    t['S'] = 556;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 722;\n    t['W'] = 944;\n    t['X'] = 722;\n    t['Y'] = 722;\n    t['Z'] = 611;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 469;\n    t['underscore'] = 500;\n    t['quoteleft'] = 333;\n    t['a'] = 444;\n    t['b'] = 500;\n    t['c'] = 444;\n    t['d'] = 500;\n    t['e'] = 444;\n    t['f'] = 333;\n    t['g'] = 500;\n    t['h'] = 500;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 500;\n    t['l'] = 278;\n    t['m'] = 778;\n    t['n'] = 500;\n    t['o'] = 500;\n    t['p'] = 500;\n    t['q'] = 500;\n    t['r'] = 333;\n    t['s'] = 389;\n    t['t'] = 278;\n    t['u'] = 500;\n    t['v'] = 500;\n    t['w'] = 722;\n    t['x'] = 500;\n    t['y'] = 500;\n    t['z'] = 444;\n    t['braceleft'] = 480;\n    t['bar'] = 200;\n    t['braceright'] = 480;\n    t['asciitilde'] = 541;\n    t['exclamdown'] = 333;\n    t['cent'] = 500;\n    t['sterling'] = 500;\n    t['fraction'] = 167;\n    t['yen'] = 500;\n    t['florin'] = 500;\n    t['section'] = 500;\n    t['currency'] = 500;\n    t['quotesingle'] = 180;\n    t['quotedblleft'] = 444;\n    t['guillemotleft'] = 500;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 556;\n    t['fl'] = 556;\n    t['endash'] = 500;\n    t['dagger'] = 500;\n    t['daggerdbl'] = 500;\n    t['periodcentered'] = 250;\n    t['paragraph'] = 453;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 333;\n    t['quotedblbase'] = 444;\n    t['quotedblright'] = 444;\n    t['guillemotright'] = 500;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 444;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 889;\n    t['ordfeminine'] = 276;\n    t['Lslash'] = 611;\n    t['Oslash'] = 722;\n    t['OE'] = 889;\n    t['ordmasculine'] = 310;\n    t['ae'] = 667;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 500;\n    t['oe'] = 722;\n    t['germandbls'] = 500;\n    t['Idieresis'] = 333;\n    t['eacute'] = 444;\n    t['abreve'] = 444;\n    t['uhungarumlaut'] = 500;\n    t['ecaron'] = 444;\n    t['Ydieresis'] = 722;\n    t['divide'] = 564;\n    t['Yacute'] = 722;\n    t['Acircumflex'] = 722;\n    t['aacute'] = 444;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 500;\n    t['scommaaccent'] = 389;\n    t['ecircumflex'] = 444;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 444;\n    t['Uacute'] = 722;\n    t['uogonek'] = 500;\n    t['Edieresis'] = 611;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 760;\n    t['Emacron'] = 611;\n    t['ccaron'] = 444;\n    t['aring'] = 444;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 444;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 667;\n    t['atilde'] = 444;\n    t['Edotaccent'] = 611;\n    t['scaron'] = 389;\n    t['scedilla'] = 389;\n    t['iacute'] = 278;\n    t['lozenge'] = 471;\n    t['Rcaron'] = 667;\n    t['Gcommaaccent'] = 722;\n    t['ucircumflex'] = 500;\n    t['acircumflex'] = 444;\n    t['Amacron'] = 722;\n    t['rcaron'] = 333;\n    t['ccedilla'] = 444;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 556;\n    t['Omacron'] = 722;\n    t['Racute'] = 667;\n    t['Sacute'] = 556;\n    t['dcaron'] = 588;\n    t['Umacron'] = 722;\n    t['uring'] = 500;\n    t['threesuperior'] = 300;\n    t['Ograve'] = 722;\n    t['Agrave'] = 722;\n    t['Abreve'] = 722;\n    t['multiply'] = 564;\n    t['uacute'] = 500;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 476;\n    t['ydieresis'] = 500;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 611;\n    t['adieresis'] = 444;\n    t['edieresis'] = 444;\n    t['cacute'] = 444;\n    t['nacute'] = 500;\n    t['umacron'] = 500;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 333;\n    t['plusminus'] = 564;\n    t['brokenbar'] = 200;\n    t['registered'] = 760;\n    t['Gbreve'] = 722;\n    t['Idotaccent'] = 333;\n    t['summation'] = 600;\n    t['Egrave'] = 611;\n    t['racute'] = 333;\n    t['omacron'] = 500;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 667;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 326;\n    t['eogonek'] = 444;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 722;\n    t['Adieresis'] = 722;\n    t['egrave'] = 444;\n    t['zacute'] = 444;\n    t['iogonek'] = 278;\n    t['Oacute'] = 722;\n    t['oacute'] = 500;\n    t['amacron'] = 444;\n    t['sacute'] = 389;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 722;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 500;\n    t['twosuperior'] = 300;\n    t['Odieresis'] = 722;\n    t['mu'] = 500;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 500;\n    t['Eogonek'] = 611;\n    t['dcroat'] = 500;\n    t['threequarters'] = 750;\n    t['Scedilla'] = 556;\n    t['lcaron'] = 344;\n    t['Kcommaaccent'] = 722;\n    t['Lacute'] = 611;\n    t['trademark'] = 980;\n    t['edotaccent'] = 444;\n    t['Igrave'] = 333;\n    t['Imacron'] = 333;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 750;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 500;\n    t['ntilde'] = 500;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 611;\n    t['emacron'] = 444;\n    t['gbreve'] = 500;\n    t['onequarter'] = 750;\n    t['Scaron'] = 556;\n    t['Scommaaccent'] = 556;\n    t['Ohungarumlaut'] = 722;\n    t['degree'] = 400;\n    t['ograve'] = 500;\n    t['Ccaron'] = 667;\n    t['ugrave'] = 500;\n    t['radical'] = 453;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 333;\n    t['Ntilde'] = 722;\n    t['otilde'] = 500;\n    t['Rcommaaccent'] = 667;\n    t['Lcommaaccent'] = 611;\n    t['Atilde'] = 722;\n    t['Aogonek'] = 722;\n    t['Aring'] = 722;\n    t['Otilde'] = 722;\n    t['zdotaccent'] = 444;\n    t['Ecaron'] = 611;\n    t['Iogonek'] = 333;\n    t['kcommaaccent'] = 500;\n    t['minus'] = 564;\n    t['Icircumflex'] = 333;\n    t['ncaron'] = 500;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 564;\n    t['odieresis'] = 500;\n    t['udieresis'] = 500;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 500;\n    t['eth'] = 500;\n    t['zcaron'] = 444;\n    t['ncommaaccent'] = 500;\n    t['onesuperior'] = 300;\n    t['imacron'] = 278;\n    t['Euro'] = 500;\n  });\n  t['Times-Bold'] = getLookupTableFactory(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 333;\n    t['quotedbl'] = 555;\n    t['numbersign'] = 500;\n    t['dollar'] = 500;\n    t['percent'] = 1000;\n    t['ampersand'] = 833;\n    t['quoteright'] = 333;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 500;\n    t['plus'] = 570;\n    t['comma'] = 250;\n    t['hyphen'] = 333;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 570;\n    t['equal'] = 570;\n    t['greater'] = 570;\n    t['question'] = 500;\n    t['at'] = 930;\n    t['A'] = 722;\n    t['B'] = 667;\n    t['C'] = 722;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 611;\n    t['G'] = 778;\n    t['H'] = 778;\n    t['I'] = 389;\n    t['J'] = 500;\n    t['K'] = 778;\n    t['L'] = 667;\n    t['M'] = 944;\n    t['N'] = 722;\n    t['O'] = 778;\n    t['P'] = 611;\n    t['Q'] = 778;\n    t['R'] = 722;\n    t['S'] = 556;\n    t['T'] = 667;\n    t['U'] = 722;\n    t['V'] = 722;\n    t['W'] = 1000;\n    t['X'] = 722;\n    t['Y'] = 722;\n    t['Z'] = 667;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 581;\n    t['underscore'] = 500;\n    t['quoteleft'] = 333;\n    t['a'] = 500;\n    t['b'] = 556;\n    t['c'] = 444;\n    t['d'] = 556;\n    t['e'] = 444;\n    t['f'] = 333;\n    t['g'] = 500;\n    t['h'] = 556;\n    t['i'] = 278;\n    t['j'] = 333;\n    t['k'] = 556;\n    t['l'] = 278;\n    t['m'] = 833;\n    t['n'] = 556;\n    t['o'] = 500;\n    t['p'] = 556;\n    t['q'] = 556;\n    t['r'] = 444;\n    t['s'] = 389;\n    t['t'] = 333;\n    t['u'] = 556;\n    t['v'] = 500;\n    t['w'] = 722;\n    t['x'] = 500;\n    t['y'] = 500;\n    t['z'] = 444;\n    t['braceleft'] = 394;\n    t['bar'] = 220;\n    t['braceright'] = 394;\n    t['asciitilde'] = 520;\n    t['exclamdown'] = 333;\n    t['cent'] = 500;\n    t['sterling'] = 500;\n    t['fraction'] = 167;\n    t['yen'] = 500;\n    t['florin'] = 500;\n    t['section'] = 500;\n    t['currency'] = 500;\n    t['quotesingle'] = 278;\n    t['quotedblleft'] = 500;\n    t['guillemotleft'] = 500;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 556;\n    t['fl'] = 556;\n    t['endash'] = 500;\n    t['dagger'] = 500;\n    t['daggerdbl'] = 500;\n    t['periodcentered'] = 250;\n    t['paragraph'] = 540;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 333;\n    t['quotedblbase'] = 500;\n    t['quotedblright'] = 500;\n    t['guillemotright'] = 500;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 500;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 1000;\n    t['ordfeminine'] = 300;\n    t['Lslash'] = 667;\n    t['Oslash'] = 778;\n    t['OE'] = 1000;\n    t['ordmasculine'] = 330;\n    t['ae'] = 722;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 500;\n    t['oe'] = 722;\n    t['germandbls'] = 556;\n    t['Idieresis'] = 389;\n    t['eacute'] = 444;\n    t['abreve'] = 500;\n    t['uhungarumlaut'] = 556;\n    t['ecaron'] = 444;\n    t['Ydieresis'] = 722;\n    t['divide'] = 570;\n    t['Yacute'] = 722;\n    t['Acircumflex'] = 722;\n    t['aacute'] = 500;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 500;\n    t['scommaaccent'] = 389;\n    t['ecircumflex'] = 444;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 500;\n    t['Uacute'] = 722;\n    t['uogonek'] = 556;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 747;\n    t['Emacron'] = 667;\n    t['ccaron'] = 444;\n    t['aring'] = 500;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 500;\n    t['Tcommaaccent'] = 667;\n    t['Cacute'] = 722;\n    t['atilde'] = 500;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 389;\n    t['scedilla'] = 389;\n    t['iacute'] = 278;\n    t['lozenge'] = 494;\n    t['Rcaron'] = 722;\n    t['Gcommaaccent'] = 778;\n    t['ucircumflex'] = 556;\n    t['acircumflex'] = 500;\n    t['Amacron'] = 722;\n    t['rcaron'] = 444;\n    t['ccedilla'] = 444;\n    t['Zdotaccent'] = 667;\n    t['Thorn'] = 611;\n    t['Omacron'] = 778;\n    t['Racute'] = 722;\n    t['Sacute'] = 556;\n    t['dcaron'] = 672;\n    t['Umacron'] = 722;\n    t['uring'] = 556;\n    t['threesuperior'] = 300;\n    t['Ograve'] = 778;\n    t['Agrave'] = 722;\n    t['Abreve'] = 722;\n    t['multiply'] = 570;\n    t['uacute'] = 556;\n    t['Tcaron'] = 667;\n    t['partialdiff'] = 494;\n    t['ydieresis'] = 500;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 500;\n    t['edieresis'] = 444;\n    t['cacute'] = 444;\n    t['nacute'] = 556;\n    t['umacron'] = 556;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 389;\n    t['plusminus'] = 570;\n    t['brokenbar'] = 220;\n    t['registered'] = 747;\n    t['Gbreve'] = 778;\n    t['Idotaccent'] = 389;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 444;\n    t['omacron'] = 500;\n    t['Zacute'] = 667;\n    t['Zcaron'] = 667;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 722;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 416;\n    t['eogonek'] = 444;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 722;\n    t['Adieresis'] = 722;\n    t['egrave'] = 444;\n    t['zacute'] = 444;\n    t['iogonek'] = 278;\n    t['Oacute'] = 778;\n    t['oacute'] = 500;\n    t['amacron'] = 500;\n    t['sacute'] = 389;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 778;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 556;\n    t['twosuperior'] = 300;\n    t['Odieresis'] = 778;\n    t['mu'] = 556;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 500;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 556;\n    t['threequarters'] = 750;\n    t['Scedilla'] = 556;\n    t['lcaron'] = 394;\n    t['Kcommaaccent'] = 778;\n    t['Lacute'] = 667;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 444;\n    t['Igrave'] = 389;\n    t['Imacron'] = 389;\n    t['Lcaron'] = 667;\n    t['onehalf'] = 750;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 500;\n    t['ntilde'] = 556;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 444;\n    t['gbreve'] = 500;\n    t['onequarter'] = 750;\n    t['Scaron'] = 556;\n    t['Scommaaccent'] = 556;\n    t['Ohungarumlaut'] = 778;\n    t['degree'] = 400;\n    t['ograve'] = 500;\n    t['Ccaron'] = 722;\n    t['ugrave'] = 556;\n    t['radical'] = 549;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 444;\n    t['Ntilde'] = 722;\n    t['otilde'] = 500;\n    t['Rcommaaccent'] = 722;\n    t['Lcommaaccent'] = 667;\n    t['Atilde'] = 722;\n    t['Aogonek'] = 722;\n    t['Aring'] = 722;\n    t['Otilde'] = 778;\n    t['zdotaccent'] = 444;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 389;\n    t['kcommaaccent'] = 556;\n    t['minus'] = 570;\n    t['Icircumflex'] = 389;\n    t['ncaron'] = 556;\n    t['tcommaaccent'] = 333;\n    t['logicalnot'] = 570;\n    t['odieresis'] = 500;\n    t['udieresis'] = 556;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 500;\n    t['eth'] = 500;\n    t['zcaron'] = 444;\n    t['ncommaaccent'] = 556;\n    t['onesuperior'] = 300;\n    t['imacron'] = 278;\n    t['Euro'] = 500;\n  });\n  t['Times-BoldItalic'] = getLookupTableFactory(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 389;\n    t['quotedbl'] = 555;\n    t['numbersign'] = 500;\n    t['dollar'] = 500;\n    t['percent'] = 833;\n    t['ampersand'] = 778;\n    t['quoteright'] = 333;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 500;\n    t['plus'] = 570;\n    t['comma'] = 250;\n    t['hyphen'] = 333;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 570;\n    t['equal'] = 570;\n    t['greater'] = 570;\n    t['question'] = 500;\n    t['at'] = 832;\n    t['A'] = 667;\n    t['B'] = 667;\n    t['C'] = 667;\n    t['D'] = 722;\n    t['E'] = 667;\n    t['F'] = 667;\n    t['G'] = 722;\n    t['H'] = 778;\n    t['I'] = 389;\n    t['J'] = 500;\n    t['K'] = 667;\n    t['L'] = 611;\n    t['M'] = 889;\n    t['N'] = 722;\n    t['O'] = 722;\n    t['P'] = 611;\n    t['Q'] = 722;\n    t['R'] = 667;\n    t['S'] = 556;\n    t['T'] = 611;\n    t['U'] = 722;\n    t['V'] = 667;\n    t['W'] = 889;\n    t['X'] = 667;\n    t['Y'] = 611;\n    t['Z'] = 611;\n    t['bracketleft'] = 333;\n    t['backslash'] = 278;\n    t['bracketright'] = 333;\n    t['asciicircum'] = 570;\n    t['underscore'] = 500;\n    t['quoteleft'] = 333;\n    t['a'] = 500;\n    t['b'] = 500;\n    t['c'] = 444;\n    t['d'] = 500;\n    t['e'] = 444;\n    t['f'] = 333;\n    t['g'] = 500;\n    t['h'] = 556;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 500;\n    t['l'] = 278;\n    t['m'] = 778;\n    t['n'] = 556;\n    t['o'] = 500;\n    t['p'] = 500;\n    t['q'] = 500;\n    t['r'] = 389;\n    t['s'] = 389;\n    t['t'] = 278;\n    t['u'] = 556;\n    t['v'] = 444;\n    t['w'] = 667;\n    t['x'] = 500;\n    t['y'] = 444;\n    t['z'] = 389;\n    t['braceleft'] = 348;\n    t['bar'] = 220;\n    t['braceright'] = 348;\n    t['asciitilde'] = 570;\n    t['exclamdown'] = 389;\n    t['cent'] = 500;\n    t['sterling'] = 500;\n    t['fraction'] = 167;\n    t['yen'] = 500;\n    t['florin'] = 500;\n    t['section'] = 500;\n    t['currency'] = 500;\n    t['quotesingle'] = 278;\n    t['quotedblleft'] = 500;\n    t['guillemotleft'] = 500;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 556;\n    t['fl'] = 556;\n    t['endash'] = 500;\n    t['dagger'] = 500;\n    t['daggerdbl'] = 500;\n    t['periodcentered'] = 250;\n    t['paragraph'] = 500;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 333;\n    t['quotedblbase'] = 500;\n    t['quotedblright'] = 500;\n    t['guillemotright'] = 500;\n    t['ellipsis'] = 1000;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 500;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 1000;\n    t['AE'] = 944;\n    t['ordfeminine'] = 266;\n    t['Lslash'] = 611;\n    t['Oslash'] = 722;\n    t['OE'] = 944;\n    t['ordmasculine'] = 300;\n    t['ae'] = 722;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 500;\n    t['oe'] = 722;\n    t['germandbls'] = 500;\n    t['Idieresis'] = 389;\n    t['eacute'] = 444;\n    t['abreve'] = 500;\n    t['uhungarumlaut'] = 556;\n    t['ecaron'] = 444;\n    t['Ydieresis'] = 611;\n    t['divide'] = 570;\n    t['Yacute'] = 611;\n    t['Acircumflex'] = 667;\n    t['aacute'] = 500;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 444;\n    t['scommaaccent'] = 389;\n    t['ecircumflex'] = 444;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 500;\n    t['Uacute'] = 722;\n    t['uogonek'] = 556;\n    t['Edieresis'] = 667;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 747;\n    t['Emacron'] = 667;\n    t['ccaron'] = 444;\n    t['aring'] = 500;\n    t['Ncommaaccent'] = 722;\n    t['lacute'] = 278;\n    t['agrave'] = 500;\n    t['Tcommaaccent'] = 611;\n    t['Cacute'] = 667;\n    t['atilde'] = 500;\n    t['Edotaccent'] = 667;\n    t['scaron'] = 389;\n    t['scedilla'] = 389;\n    t['iacute'] = 278;\n    t['lozenge'] = 494;\n    t['Rcaron'] = 667;\n    t['Gcommaaccent'] = 722;\n    t['ucircumflex'] = 556;\n    t['acircumflex'] = 500;\n    t['Amacron'] = 667;\n    t['rcaron'] = 389;\n    t['ccedilla'] = 444;\n    t['Zdotaccent'] = 611;\n    t['Thorn'] = 611;\n    t['Omacron'] = 722;\n    t['Racute'] = 667;\n    t['Sacute'] = 556;\n    t['dcaron'] = 608;\n    t['Umacron'] = 722;\n    t['uring'] = 556;\n    t['threesuperior'] = 300;\n    t['Ograve'] = 722;\n    t['Agrave'] = 667;\n    t['Abreve'] = 667;\n    t['multiply'] = 570;\n    t['uacute'] = 556;\n    t['Tcaron'] = 611;\n    t['partialdiff'] = 494;\n    t['ydieresis'] = 444;\n    t['Nacute'] = 722;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 667;\n    t['adieresis'] = 500;\n    t['edieresis'] = 444;\n    t['cacute'] = 444;\n    t['nacute'] = 556;\n    t['umacron'] = 556;\n    t['Ncaron'] = 722;\n    t['Iacute'] = 389;\n    t['plusminus'] = 570;\n    t['brokenbar'] = 220;\n    t['registered'] = 747;\n    t['Gbreve'] = 722;\n    t['Idotaccent'] = 389;\n    t['summation'] = 600;\n    t['Egrave'] = 667;\n    t['racute'] = 389;\n    t['omacron'] = 500;\n    t['Zacute'] = 611;\n    t['Zcaron'] = 611;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 667;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 366;\n    t['eogonek'] = 444;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 667;\n    t['Adieresis'] = 667;\n    t['egrave'] = 444;\n    t['zacute'] = 389;\n    t['iogonek'] = 278;\n    t['Oacute'] = 722;\n    t['oacute'] = 500;\n    t['amacron'] = 500;\n    t['sacute'] = 389;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 722;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 500;\n    t['twosuperior'] = 300;\n    t['Odieresis'] = 722;\n    t['mu'] = 576;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 500;\n    t['Eogonek'] = 667;\n    t['dcroat'] = 500;\n    t['threequarters'] = 750;\n    t['Scedilla'] = 556;\n    t['lcaron'] = 382;\n    t['Kcommaaccent'] = 667;\n    t['Lacute'] = 611;\n    t['trademark'] = 1000;\n    t['edotaccent'] = 444;\n    t['Igrave'] = 389;\n    t['Imacron'] = 389;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 750;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 500;\n    t['ntilde'] = 556;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 667;\n    t['emacron'] = 444;\n    t['gbreve'] = 500;\n    t['onequarter'] = 750;\n    t['Scaron'] = 556;\n    t['Scommaaccent'] = 556;\n    t['Ohungarumlaut'] = 722;\n    t['degree'] = 400;\n    t['ograve'] = 500;\n    t['Ccaron'] = 667;\n    t['ugrave'] = 556;\n    t['radical'] = 549;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 389;\n    t['Ntilde'] = 722;\n    t['otilde'] = 500;\n    t['Rcommaaccent'] = 667;\n    t['Lcommaaccent'] = 611;\n    t['Atilde'] = 667;\n    t['Aogonek'] = 667;\n    t['Aring'] = 667;\n    t['Otilde'] = 722;\n    t['zdotaccent'] = 389;\n    t['Ecaron'] = 667;\n    t['Iogonek'] = 389;\n    t['kcommaaccent'] = 500;\n    t['minus'] = 606;\n    t['Icircumflex'] = 389;\n    t['ncaron'] = 556;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 606;\n    t['odieresis'] = 500;\n    t['udieresis'] = 556;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 500;\n    t['eth'] = 500;\n    t['zcaron'] = 389;\n    t['ncommaaccent'] = 556;\n    t['onesuperior'] = 300;\n    t['imacron'] = 278;\n    t['Euro'] = 500;\n  });\n  t['Times-Italic'] = getLookupTableFactory(function (t) {\n    t['space'] = 250;\n    t['exclam'] = 333;\n    t['quotedbl'] = 420;\n    t['numbersign'] = 500;\n    t['dollar'] = 500;\n    t['percent'] = 833;\n    t['ampersand'] = 778;\n    t['quoteright'] = 333;\n    t['parenleft'] = 333;\n    t['parenright'] = 333;\n    t['asterisk'] = 500;\n    t['plus'] = 675;\n    t['comma'] = 250;\n    t['hyphen'] = 333;\n    t['period'] = 250;\n    t['slash'] = 278;\n    t['zero'] = 500;\n    t['one'] = 500;\n    t['two'] = 500;\n    t['three'] = 500;\n    t['four'] = 500;\n    t['five'] = 500;\n    t['six'] = 500;\n    t['seven'] = 500;\n    t['eight'] = 500;\n    t['nine'] = 500;\n    t['colon'] = 333;\n    t['semicolon'] = 333;\n    t['less'] = 675;\n    t['equal'] = 675;\n    t['greater'] = 675;\n    t['question'] = 500;\n    t['at'] = 920;\n    t['A'] = 611;\n    t['B'] = 611;\n    t['C'] = 667;\n    t['D'] = 722;\n    t['E'] = 611;\n    t['F'] = 611;\n    t['G'] = 722;\n    t['H'] = 722;\n    t['I'] = 333;\n    t['J'] = 444;\n    t['K'] = 667;\n    t['L'] = 556;\n    t['M'] = 833;\n    t['N'] = 667;\n    t['O'] = 722;\n    t['P'] = 611;\n    t['Q'] = 722;\n    t['R'] = 611;\n    t['S'] = 500;\n    t['T'] = 556;\n    t['U'] = 722;\n    t['V'] = 611;\n    t['W'] = 833;\n    t['X'] = 611;\n    t['Y'] = 556;\n    t['Z'] = 556;\n    t['bracketleft'] = 389;\n    t['backslash'] = 278;\n    t['bracketright'] = 389;\n    t['asciicircum'] = 422;\n    t['underscore'] = 500;\n    t['quoteleft'] = 333;\n    t['a'] = 500;\n    t['b'] = 500;\n    t['c'] = 444;\n    t['d'] = 500;\n    t['e'] = 444;\n    t['f'] = 278;\n    t['g'] = 500;\n    t['h'] = 500;\n    t['i'] = 278;\n    t['j'] = 278;\n    t['k'] = 444;\n    t['l'] = 278;\n    t['m'] = 722;\n    t['n'] = 500;\n    t['o'] = 500;\n    t['p'] = 500;\n    t['q'] = 500;\n    t['r'] = 389;\n    t['s'] = 389;\n    t['t'] = 278;\n    t['u'] = 500;\n    t['v'] = 444;\n    t['w'] = 667;\n    t['x'] = 444;\n    t['y'] = 444;\n    t['z'] = 389;\n    t['braceleft'] = 400;\n    t['bar'] = 275;\n    t['braceright'] = 400;\n    t['asciitilde'] = 541;\n    t['exclamdown'] = 389;\n    t['cent'] = 500;\n    t['sterling'] = 500;\n    t['fraction'] = 167;\n    t['yen'] = 500;\n    t['florin'] = 500;\n    t['section'] = 500;\n    t['currency'] = 500;\n    t['quotesingle'] = 214;\n    t['quotedblleft'] = 556;\n    t['guillemotleft'] = 500;\n    t['guilsinglleft'] = 333;\n    t['guilsinglright'] = 333;\n    t['fi'] = 500;\n    t['fl'] = 500;\n    t['endash'] = 500;\n    t['dagger'] = 500;\n    t['daggerdbl'] = 500;\n    t['periodcentered'] = 250;\n    t['paragraph'] = 523;\n    t['bullet'] = 350;\n    t['quotesinglbase'] = 333;\n    t['quotedblbase'] = 556;\n    t['quotedblright'] = 556;\n    t['guillemotright'] = 500;\n    t['ellipsis'] = 889;\n    t['perthousand'] = 1000;\n    t['questiondown'] = 500;\n    t['grave'] = 333;\n    t['acute'] = 333;\n    t['circumflex'] = 333;\n    t['tilde'] = 333;\n    t['macron'] = 333;\n    t['breve'] = 333;\n    t['dotaccent'] = 333;\n    t['dieresis'] = 333;\n    t['ring'] = 333;\n    t['cedilla'] = 333;\n    t['hungarumlaut'] = 333;\n    t['ogonek'] = 333;\n    t['caron'] = 333;\n    t['emdash'] = 889;\n    t['AE'] = 889;\n    t['ordfeminine'] = 276;\n    t['Lslash'] = 556;\n    t['Oslash'] = 722;\n    t['OE'] = 944;\n    t['ordmasculine'] = 310;\n    t['ae'] = 667;\n    t['dotlessi'] = 278;\n    t['lslash'] = 278;\n    t['oslash'] = 500;\n    t['oe'] = 667;\n    t['germandbls'] = 500;\n    t['Idieresis'] = 333;\n    t['eacute'] = 444;\n    t['abreve'] = 500;\n    t['uhungarumlaut'] = 500;\n    t['ecaron'] = 444;\n    t['Ydieresis'] = 556;\n    t['divide'] = 675;\n    t['Yacute'] = 556;\n    t['Acircumflex'] = 611;\n    t['aacute'] = 500;\n    t['Ucircumflex'] = 722;\n    t['yacute'] = 444;\n    t['scommaaccent'] = 389;\n    t['ecircumflex'] = 444;\n    t['Uring'] = 722;\n    t['Udieresis'] = 722;\n    t['aogonek'] = 500;\n    t['Uacute'] = 722;\n    t['uogonek'] = 500;\n    t['Edieresis'] = 611;\n    t['Dcroat'] = 722;\n    t['commaaccent'] = 250;\n    t['copyright'] = 760;\n    t['Emacron'] = 611;\n    t['ccaron'] = 444;\n    t['aring'] = 500;\n    t['Ncommaaccent'] = 667;\n    t['lacute'] = 278;\n    t['agrave'] = 500;\n    t['Tcommaaccent'] = 556;\n    t['Cacute'] = 667;\n    t['atilde'] = 500;\n    t['Edotaccent'] = 611;\n    t['scaron'] = 389;\n    t['scedilla'] = 389;\n    t['iacute'] = 278;\n    t['lozenge'] = 471;\n    t['Rcaron'] = 611;\n    t['Gcommaaccent'] = 722;\n    t['ucircumflex'] = 500;\n    t['acircumflex'] = 500;\n    t['Amacron'] = 611;\n    t['rcaron'] = 389;\n    t['ccedilla'] = 444;\n    t['Zdotaccent'] = 556;\n    t['Thorn'] = 611;\n    t['Omacron'] = 722;\n    t['Racute'] = 611;\n    t['Sacute'] = 500;\n    t['dcaron'] = 544;\n    t['Umacron'] = 722;\n    t['uring'] = 500;\n    t['threesuperior'] = 300;\n    t['Ograve'] = 722;\n    t['Agrave'] = 611;\n    t['Abreve'] = 611;\n    t['multiply'] = 675;\n    t['uacute'] = 500;\n    t['Tcaron'] = 556;\n    t['partialdiff'] = 476;\n    t['ydieresis'] = 444;\n    t['Nacute'] = 667;\n    t['icircumflex'] = 278;\n    t['Ecircumflex'] = 611;\n    t['adieresis'] = 500;\n    t['edieresis'] = 444;\n    t['cacute'] = 444;\n    t['nacute'] = 500;\n    t['umacron'] = 500;\n    t['Ncaron'] = 667;\n    t['Iacute'] = 333;\n    t['plusminus'] = 675;\n    t['brokenbar'] = 275;\n    t['registered'] = 760;\n    t['Gbreve'] = 722;\n    t['Idotaccent'] = 333;\n    t['summation'] = 600;\n    t['Egrave'] = 611;\n    t['racute'] = 389;\n    t['omacron'] = 500;\n    t['Zacute'] = 556;\n    t['Zcaron'] = 556;\n    t['greaterequal'] = 549;\n    t['Eth'] = 722;\n    t['Ccedilla'] = 667;\n    t['lcommaaccent'] = 278;\n    t['tcaron'] = 300;\n    t['eogonek'] = 444;\n    t['Uogonek'] = 722;\n    t['Aacute'] = 611;\n    t['Adieresis'] = 611;\n    t['egrave'] = 444;\n    t['zacute'] = 389;\n    t['iogonek'] = 278;\n    t['Oacute'] = 722;\n    t['oacute'] = 500;\n    t['amacron'] = 500;\n    t['sacute'] = 389;\n    t['idieresis'] = 278;\n    t['Ocircumflex'] = 722;\n    t['Ugrave'] = 722;\n    t['Delta'] = 612;\n    t['thorn'] = 500;\n    t['twosuperior'] = 300;\n    t['Odieresis'] = 722;\n    t['mu'] = 500;\n    t['igrave'] = 278;\n    t['ohungarumlaut'] = 500;\n    t['Eogonek'] = 611;\n    t['dcroat'] = 500;\n    t['threequarters'] = 750;\n    t['Scedilla'] = 500;\n    t['lcaron'] = 300;\n    t['Kcommaaccent'] = 667;\n    t['Lacute'] = 556;\n    t['trademark'] = 980;\n    t['edotaccent'] = 444;\n    t['Igrave'] = 333;\n    t['Imacron'] = 333;\n    t['Lcaron'] = 611;\n    t['onehalf'] = 750;\n    t['lessequal'] = 549;\n    t['ocircumflex'] = 500;\n    t['ntilde'] = 500;\n    t['Uhungarumlaut'] = 722;\n    t['Eacute'] = 611;\n    t['emacron'] = 444;\n    t['gbreve'] = 500;\n    t['onequarter'] = 750;\n    t['Scaron'] = 500;\n    t['Scommaaccent'] = 500;\n    t['Ohungarumlaut'] = 722;\n    t['degree'] = 400;\n    t['ograve'] = 500;\n    t['Ccaron'] = 667;\n    t['ugrave'] = 500;\n    t['radical'] = 453;\n    t['Dcaron'] = 722;\n    t['rcommaaccent'] = 389;\n    t['Ntilde'] = 667;\n    t['otilde'] = 500;\n    t['Rcommaaccent'] = 611;\n    t['Lcommaaccent'] = 556;\n    t['Atilde'] = 611;\n    t['Aogonek'] = 611;\n    t['Aring'] = 611;\n    t['Otilde'] = 722;\n    t['zdotaccent'] = 389;\n    t['Ecaron'] = 611;\n    t['Iogonek'] = 333;\n    t['kcommaaccent'] = 444;\n    t['minus'] = 675;\n    t['Icircumflex'] = 333;\n    t['ncaron'] = 500;\n    t['tcommaaccent'] = 278;\n    t['logicalnot'] = 675;\n    t['odieresis'] = 500;\n    t['udieresis'] = 500;\n    t['notequal'] = 549;\n    t['gcommaaccent'] = 500;\n    t['eth'] = 500;\n    t['zcaron'] = 389;\n    t['ncommaaccent'] = 500;\n    t['onesuperior'] = 300;\n    t['imacron'] = 278;\n    t['Euro'] = 500;\n  });\n  t['ZapfDingbats'] = getLookupTableFactory(function (t) {\n    t['space'] = 278;\n    t['a1'] = 974;\n    t['a2'] = 961;\n    t['a202'] = 974;\n    t['a3'] = 980;\n    t['a4'] = 719;\n    t['a5'] = 789;\n    t['a119'] = 790;\n    t['a118'] = 791;\n    t['a117'] = 690;\n    t['a11'] = 960;\n    t['a12'] = 939;\n    t['a13'] = 549;\n    t['a14'] = 855;\n    t['a15'] = 911;\n    t['a16'] = 933;\n    t['a105'] = 911;\n    t['a17'] = 945;\n    t['a18'] = 974;\n    t['a19'] = 755;\n    t['a20'] = 846;\n    t['a21'] = 762;\n    t['a22'] = 761;\n    t['a23'] = 571;\n    t['a24'] = 677;\n    t['a25'] = 763;\n    t['a26'] = 760;\n    t['a27'] = 759;\n    t['a28'] = 754;\n    t['a6'] = 494;\n    t['a7'] = 552;\n    t['a8'] = 537;\n    t['a9'] = 577;\n    t['a10'] = 692;\n    t['a29'] = 786;\n    t['a30'] = 788;\n    t['a31'] = 788;\n    t['a32'] = 790;\n    t['a33'] = 793;\n    t['a34'] = 794;\n    t['a35'] = 816;\n    t['a36'] = 823;\n    t['a37'] = 789;\n    t['a38'] = 841;\n    t['a39'] = 823;\n    t['a40'] = 833;\n    t['a41'] = 816;\n    t['a42'] = 831;\n    t['a43'] = 923;\n    t['a44'] = 744;\n    t['a45'] = 723;\n    t['a46'] = 749;\n    t['a47'] = 790;\n    t['a48'] = 792;\n    t['a49'] = 695;\n    t['a50'] = 776;\n    t['a51'] = 768;\n    t['a52'] = 792;\n    t['a53'] = 759;\n    t['a54'] = 707;\n    t['a55'] = 708;\n    t['a56'] = 682;\n    t['a57'] = 701;\n    t['a58'] = 826;\n    t['a59'] = 815;\n    t['a60'] = 789;\n    t['a61'] = 789;\n    t['a62'] = 707;\n    t['a63'] = 687;\n    t['a64'] = 696;\n    t['a65'] = 689;\n    t['a66'] = 786;\n    t['a67'] = 787;\n    t['a68'] = 713;\n    t['a69'] = 791;\n    t['a70'] = 785;\n    t['a71'] = 791;\n    t['a72'] = 873;\n    t['a73'] = 761;\n    t['a74'] = 762;\n    t['a203'] = 762;\n    t['a75'] = 759;\n    t['a204'] = 759;\n    t['a76'] = 892;\n    t['a77'] = 892;\n    t['a78'] = 788;\n    t['a79'] = 784;\n    t['a81'] = 438;\n    t['a82'] = 138;\n    t['a83'] = 277;\n    t['a84'] = 415;\n    t['a97'] = 392;\n    t['a98'] = 392;\n    t['a99'] = 668;\n    t['a100'] = 668;\n    t['a89'] = 390;\n    t['a90'] = 390;\n    t['a93'] = 317;\n    t['a94'] = 317;\n    t['a91'] = 276;\n    t['a92'] = 276;\n    t['a205'] = 509;\n    t['a85'] = 509;\n    t['a206'] = 410;\n    t['a86'] = 410;\n    t['a87'] = 234;\n    t['a88'] = 234;\n    t['a95'] = 334;\n    t['a96'] = 334;\n    t['a101'] = 732;\n    t['a102'] = 544;\n    t['a103'] = 544;\n    t['a104'] = 910;\n    t['a106'] = 667;\n    t['a107'] = 760;\n    t['a108'] = 760;\n    t['a112'] = 776;\n    t['a111'] = 595;\n    t['a110'] = 694;\n    t['a109'] = 626;\n    t['a120'] = 788;\n    t['a121'] = 788;\n    t['a122'] = 788;\n    t['a123'] = 788;\n    t['a124'] = 788;\n    t['a125'] = 788;\n    t['a126'] = 788;\n    t['a127'] = 788;\n    t['a128'] = 788;\n    t['a129'] = 788;\n    t['a130'] = 788;\n    t['a131'] = 788;\n    t['a132'] = 788;\n    t['a133'] = 788;\n    t['a134'] = 788;\n    t['a135'] = 788;\n    t['a136'] = 788;\n    t['a137'] = 788;\n    t['a138'] = 788;\n    t['a139'] = 788;\n    t['a140'] = 788;\n    t['a141'] = 788;\n    t['a142'] = 788;\n    t['a143'] = 788;\n    t['a144'] = 788;\n    t['a145'] = 788;\n    t['a146'] = 788;\n    t['a147'] = 788;\n    t['a148'] = 788;\n    t['a149'] = 788;\n    t['a150'] = 788;\n    t['a151'] = 788;\n    t['a152'] = 788;\n    t['a153'] = 788;\n    t['a154'] = 788;\n    t['a155'] = 788;\n    t['a156'] = 788;\n    t['a157'] = 788;\n    t['a158'] = 788;\n    t['a159'] = 788;\n    t['a160'] = 894;\n    t['a161'] = 838;\n    t['a163'] = 1016;\n    t['a164'] = 458;\n    t['a196'] = 748;\n    t['a165'] = 924;\n    t['a192'] = 748;\n    t['a166'] = 918;\n    t['a167'] = 927;\n    t['a168'] = 928;\n    t['a169'] = 928;\n    t['a170'] = 834;\n    t['a171'] = 873;\n    t['a172'] = 828;\n    t['a173'] = 924;\n    t['a162'] = 924;\n    t['a174'] = 917;\n    t['a175'] = 930;\n    t['a176'] = 931;\n    t['a177'] = 463;\n    t['a178'] = 883;\n    t['a179'] = 836;\n    t['a193'] = 836;\n    t['a180'] = 867;\n    t['a199'] = 867;\n    t['a181'] = 696;\n    t['a200'] = 696;\n    t['a182'] = 874;\n    t['a201'] = 874;\n    t['a183'] = 760;\n    t['a184'] = 946;\n    t['a197'] = 771;\n    t['a185'] = 865;\n    t['a194'] = 771;\n    t['a198'] = 888;\n    t['a186'] = 967;\n    t['a195'] = 888;\n    t['a187'] = 831;\n    t['a188'] = 873;\n    t['a189'] = 927;\n    t['a190'] = 970;\n    t['a191'] = 918;\n  });\n});\n\nexport {\n  getMetrics,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  FormatError, info, isBool, isEvalSupported, shadow, unreachable\n} from '../shared/util';\nimport { isDict, isStream } from './primitives';\nimport { PostScriptLexer, PostScriptParser } from './ps_parser';\n\nlet IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, 'value', isEvalSupported());\n  },\n};\n\nclass PDFFunctionFactory {\n  constructor({ xref, isEvalSupported = true, }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n  }\n\n  create(fn) {\n    return PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn,\n    });\n  }\n\n  createFromArray(fnObj) {\n    return PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj,\n    });\n  }\n}\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n  const length = arr.length;\n  for (let i = 0; i < length; i++) {\n    if (typeof arr[i] !== 'number') {\n      // Non-number is found -- convert all items to numbers.\n      const result = new Array(length);\n      for (let i = 0; i < length; i++) {\n        result[i] = +arr[i];\n      }\n      return result;\n    }\n  }\n  return arr;\n}\n\nvar PDFFunction = (function PDFFunctionClosure() {\n  const CONSTRUCT_SAMPLED = 0;\n  const CONSTRUCT_INTERPOLATED = 2;\n  const CONSTRUCT_STICHED = 3;\n  const CONSTRUCT_POSTSCRIPT = 4;\n\n  return {\n    getSampleArray(size, outputSize, bps, stream) {\n      var i, ii;\n      var length = 1;\n      for (i = 0, ii = size.length; i < ii; i++) {\n        length *= size[i];\n      }\n      length *= outputSize;\n\n      var array = new Array(length);\n      var codeSize = 0;\n      var codeBuf = 0;\n      // 32 is a valid bps so shifting won't work\n      var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);\n\n      var strBytes = stream.getBytes((length * bps + 7) / 8);\n      var strIdx = 0;\n      for (i = 0; i < length; i++) {\n        while (codeSize < bps) {\n          codeBuf <<= 8;\n          codeBuf |= strBytes[strIdx++];\n          codeSize += 8;\n        }\n        codeSize -= bps;\n        array[i] = (codeBuf >> codeSize) * sampleMul;\n        codeBuf &= (1 << codeSize) - 1;\n      }\n      return array;\n    },\n\n    getIR({ xref, isEvalSupported, fn, }) {\n      var dict = fn.dict;\n      if (!dict) {\n        dict = fn;\n      }\n\n      var types = [this.constructSampled,\n                   null,\n                   this.constructInterpolated,\n                   this.constructStiched,\n                   this.constructPostScript];\n\n      var typeNum = dict.get('FunctionType');\n      var typeFn = types[typeNum];\n      if (!typeFn) {\n        throw new FormatError('Unknown type of function');\n      }\n\n      return typeFn.call(this, { xref, isEvalSupported, fn, dict, });\n    },\n\n    fromIR({ xref, isEvalSupported, IR, }) {\n      var type = IR[0];\n      switch (type) {\n        case CONSTRUCT_SAMPLED:\n          return this.constructSampledFromIR({ xref, isEvalSupported, IR, });\n        case CONSTRUCT_INTERPOLATED:\n          return this.constructInterpolatedFromIR({ xref, isEvalSupported,\n                                                    IR, });\n        case CONSTRUCT_STICHED:\n          return this.constructStichedFromIR({ xref, isEvalSupported, IR, });\n        // case CONSTRUCT_POSTSCRIPT:\n        default:\n          return this.constructPostScriptFromIR({ xref, isEvalSupported, IR, });\n      }\n    },\n\n    parse({ xref, isEvalSupported, fn, }) {\n      let IR = this.getIR({ xref, isEvalSupported, fn, });\n      return this.fromIR({ xref, isEvalSupported, IR, });\n    },\n\n    parseArray({ xref, isEvalSupported, fnObj, }) {\n      if (!Array.isArray(fnObj)) {\n        // not an array -- parsing as regular function\n        return this.parse({ xref, isEvalSupported, fn: fnObj, });\n      }\n\n      var fnArray = [];\n      for (var j = 0, jj = fnObj.length; j < jj; j++) {\n        fnArray.push(this.parse({ xref, isEvalSupported,\n                                  fn: xref.fetchIfRef(fnObj[j]), }));\n      }\n      return function(src, srcOffset, dest, destOffset) {\n        for (var i = 0, ii = fnArray.length; i < ii; i++) {\n          fnArray[i](src, srcOffset, dest, destOffset + i);\n        }\n      };\n    },\n\n    constructSampled({ xref, isEvalSupported, fn, dict, }) {\n      function toMultiArray(arr) {\n        var inputLength = arr.length;\n        var out = [];\n        var index = 0;\n        for (var i = 0; i < inputLength; i += 2) {\n          out[index] = [arr[i], arr[i + 1]];\n          ++index;\n        }\n        return out;\n      }\n      var domain = toNumberArray(dict.getArray('Domain'));\n      var range = toNumberArray(dict.getArray('Range'));\n\n      if (!domain || !range) {\n        throw new FormatError('No domain or range');\n      }\n\n      var inputSize = domain.length / 2;\n      var outputSize = range.length / 2;\n\n      domain = toMultiArray(domain);\n      range = toMultiArray(range);\n\n      var size = toNumberArray(dict.getArray('Size'));\n      var bps = dict.get('BitsPerSample');\n      var order = dict.get('Order') || 1;\n      if (order !== 1) {\n        // No description how cubic spline interpolation works in PDF32000:2008\n        // As in poppler, ignoring order, linear interpolation may work as good\n        info('No support for cubic spline interpolation: ' + order);\n      }\n\n      var encode = toNumberArray(dict.getArray('Encode'));\n      if (!encode) {\n        encode = [];\n        for (var i = 0; i < inputSize; ++i) {\n          encode.push([0, size[i] - 1]);\n        }\n      } else {\n        encode = toMultiArray(encode);\n      }\n\n      var decode = toNumberArray(dict.getArray('Decode'));\n      if (!decode) {\n        decode = range;\n      } else {\n        decode = toMultiArray(decode);\n      }\n\n      var samples = this.getSampleArray(size, outputSize, bps, fn);\n\n      return [\n        CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size,\n        outputSize, Math.pow(2, bps) - 1, range\n      ];\n    },\n\n    constructSampledFromIR({ xref, isEvalSupported, IR, }) {\n      // See chapter 3, page 109 of the PDF reference\n      function interpolate(x, xmin, xmax, ymin, ymax) {\n        return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin)));\n      }\n\n      return function constructSampledFromIRResult(src, srcOffset,\n                                                   dest, destOffset) {\n        // See chapter 3, page 110 of the PDF reference.\n        var m = IR[1];\n        var domain = IR[2];\n        var encode = IR[3];\n        var decode = IR[4];\n        var samples = IR[5];\n        var size = IR[6];\n        var n = IR[7];\n        // var mask = IR[8];\n        var range = IR[9];\n\n        // Building the cube vertices: its part and sample index\n        // http://rjwagner49.com/Mathematics/Interpolation.pdf\n        var cubeVertices = 1 << m;\n        var cubeN = new Float64Array(cubeVertices);\n        var cubeVertex = new Uint32Array(cubeVertices);\n        var i, j;\n        for (j = 0; j < cubeVertices; j++) {\n          cubeN[j] = 1;\n        }\n\n        var k = n, pos = 1;\n        // Map x_i to y_j for 0 <= i < m using the sampled function.\n        for (i = 0; i < m; ++i) {\n          // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n          var domain_2i = domain[i][0];\n          var domain_2i_1 = domain[i][1];\n          var xi = Math.min(Math.max(src[srcOffset + i], domain_2i),\n                            domain_2i_1);\n\n          // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n          //                   Encode_2i, Encode_2i+1)\n          var e = interpolate(xi, domain_2i, domain_2i_1,\n                              encode[i][0], encode[i][1]);\n\n          // e_i' = min(max(e_i, 0), Size_i - 1)\n          var size_i = size[i];\n          e = Math.min(Math.max(e, 0), size_i - 1);\n\n          // Adjusting the cube: N and vertex sample index\n          var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n          var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n          var n1 = e - e0; // (e - e0) / (e1 - e0);\n          var offset0 = e0 * k;\n          var offset1 = offset0 + k; // e1 * k\n          for (j = 0; j < cubeVertices; j++) {\n            if (j & pos) {\n              cubeN[j] *= n1;\n              cubeVertex[j] += offset1;\n            } else {\n              cubeN[j] *= n0;\n              cubeVertex[j] += offset0;\n            }\n          }\n\n          k *= size_i;\n          pos <<= 1;\n        }\n\n        for (j = 0; j < n; ++j) {\n          // Sum all cube vertices' samples portions\n          var rj = 0;\n          for (i = 0; i < cubeVertices; i++) {\n            rj += samples[cubeVertex[i] + j] * cubeN[i];\n          }\n\n          // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n          //                    Decode_2j, Decode_2j+1)\n          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n          // y_j = min(max(r_j, range_2j), range_2j+1)\n          dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]),\n                                          range[j][1]);\n        }\n      };\n    },\n\n    constructInterpolated({ xref, isEvalSupported, fn, dict, }) {\n      var c0 = toNumberArray(dict.getArray('C0')) || [0];\n      var c1 = toNumberArray(dict.getArray('C1')) || [1];\n      var n = dict.get('N');\n\n      var length = c0.length;\n      var diff = [];\n      for (var i = 0; i < length; ++i) {\n        diff.push(c1[i] - c0[i]);\n      }\n\n      return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n    },\n\n    constructInterpolatedFromIR({ xref, isEvalSupported, IR, }) {\n      var c0 = IR[1];\n      var diff = IR[2];\n      var n = IR[3];\n\n      var length = diff.length;\n\n      return function constructInterpolatedFromIRResult(src, srcOffset,\n                                                        dest, destOffset) {\n        var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);\n\n        for (var j = 0; j < length; ++j) {\n          dest[destOffset + j] = c0[j] + (x * diff[j]);\n        }\n      };\n    },\n\n    constructStiched({ xref, isEvalSupported, fn, dict, }) {\n      var domain = toNumberArray(dict.getArray('Domain'));\n\n      if (!domain) {\n        throw new FormatError('No domain');\n      }\n\n      var inputSize = domain.length / 2;\n      if (inputSize !== 1) {\n        throw new FormatError('Bad domain for stiched function');\n      }\n\n      var fnRefs = dict.get('Functions');\n      var fns = [];\n      for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n        fns.push(this.parse({ xref, isEvalSupported,\n                              fn: xref.fetchIfRef(fnRefs[i]), }));\n      }\n\n      var bounds = toNumberArray(dict.getArray('Bounds'));\n      var encode = toNumberArray(dict.getArray('Encode'));\n\n      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n    },\n\n    constructStichedFromIR({ xref, isEvalSupported, IR, }) {\n      var domain = IR[1];\n      var bounds = IR[2];\n      var encode = IR[3];\n      var fns = IR[4];\n      var tmpBuf = new Float32Array(1);\n\n      return function constructStichedFromIRResult(src, srcOffset,\n                                                   dest, destOffset) {\n        var clip = function constructStichedFromIRClip(v, min, max) {\n          if (v > max) {\n            v = max;\n          } else if (v < min) {\n            v = min;\n          }\n          return v;\n        };\n\n        // clip to domain\n        var v = clip(src[srcOffset], domain[0], domain[1]);\n        // calculate which bound the value is in\n        for (var i = 0, ii = bounds.length; i < ii; ++i) {\n          if (v < bounds[i]) {\n            break;\n          }\n        }\n\n        // encode value into domain of function\n        var dmin = domain[0];\n        if (i > 0) {\n          dmin = bounds[i - 1];\n        }\n        var dmax = domain[1];\n        if (i < bounds.length) {\n          dmax = bounds[i];\n        }\n\n        var rmin = encode[2 * i];\n        var rmax = encode[2 * i + 1];\n\n        // Prevent the value from becoming NaN as a result\n        // of division by zero (fixes issue6113.pdf).\n        tmpBuf[0] = dmin === dmax ? rmin :\n                    rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n\n        // call the appropriate function\n        fns[i](tmpBuf, 0, dest, destOffset);\n      };\n    },\n\n    constructPostScript({ xref, isEvalSupported, fn, dict, }) {\n      var domain = toNumberArray(dict.getArray('Domain'));\n      var range = toNumberArray(dict.getArray('Range'));\n\n      if (!domain) {\n        throw new FormatError('No domain.');\n      }\n\n      if (!range) {\n        throw new FormatError('No range.');\n      }\n\n      var lexer = new PostScriptLexer(fn);\n      var parser = new PostScriptParser(lexer);\n      var code = parser.parse();\n\n      return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n    },\n\n    constructPostScriptFromIR({ xref, isEvalSupported, IR, }) {\n      var domain = IR[1];\n      var range = IR[2];\n      var code = IR[3];\n\n      if (isEvalSupported && IsEvalSupportedCached.value) {\n        let compiled = (new PostScriptCompiler()).compile(code, domain, range);\n        if (compiled) {\n          // Compiled function consists of simple expressions such as addition,\n          // subtraction, Math.max, and also contains 'var' and 'return'\n          // statements. See the generation in the PostScriptCompiler below.\n          // eslint-disable-next-line no-new-func\n          return new Function('src', 'srcOffset', 'dest', 'destOffset',\n                              compiled);\n        }\n      }\n      info('Unable to compile PS function');\n\n      var numOutputs = range.length >> 1;\n      var numInputs = domain.length >> 1;\n      var evaluator = new PostScriptEvaluator(code);\n      // Cache the values for a big speed up, the cache size is limited though\n      // since the number of possible values can be huge from a PS function.\n      var cache = Object.create(null);\n      // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n      // seen in our tests.\n      var MAX_CACHE_SIZE = 2048 * 4;\n      var cache_available = MAX_CACHE_SIZE;\n      var tmpBuf = new Float32Array(numInputs);\n\n      return function constructPostScriptFromIRResult(src, srcOffset,\n                                                      dest, destOffset) {\n        var i, value;\n        var key = '';\n        var input = tmpBuf;\n        for (i = 0; i < numInputs; i++) {\n          value = src[srcOffset + i];\n          input[i] = value;\n          key += value + '_';\n        }\n\n        var cachedValue = cache[key];\n        if (cachedValue !== undefined) {\n          dest.set(cachedValue, destOffset);\n          return;\n        }\n\n        var output = new Float32Array(numOutputs);\n        var stack = evaluator.execute(input);\n        var stackIndex = stack.length - numOutputs;\n        for (i = 0; i < numOutputs; i++) {\n          value = stack[stackIndex + i];\n          var bound = range[i * 2];\n          if (value < bound) {\n            value = bound;\n          } else {\n            bound = range[i * 2 + 1];\n            if (value > bound) {\n              value = bound;\n            }\n          }\n          output[i] = value;\n        }\n        if (cache_available > 0) {\n          cache_available--;\n          cache[key] = output;\n        }\n        dest.set(output, destOffset);\n      };\n    },\n  };\n})();\n\nfunction isPDFFunction(v) {\n  var fnDict;\n  if (typeof v !== 'object') {\n    return false;\n  } else if (isDict(v)) {\n    fnDict = v;\n  } else if (isStream(v)) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n  return fnDict.has('FunctionType');\n}\n\nvar PostScriptStack = (function PostScriptStackClosure() {\n  var MAX_STACK_SIZE = 100;\n  function PostScriptStack(initialStack) {\n    this.stack = !initialStack ? [] :\n                 Array.prototype.slice.call(initialStack, 0);\n  }\n\n  PostScriptStack.prototype = {\n    push: function PostScriptStack_push(value) {\n      if (this.stack.length >= MAX_STACK_SIZE) {\n        throw new Error('PostScript function stack overflow.');\n      }\n      this.stack.push(value);\n    },\n    pop: function PostScriptStack_pop() {\n      if (this.stack.length <= 0) {\n        throw new Error('PostScript function stack underflow.');\n      }\n      return this.stack.pop();\n    },\n    copy: function PostScriptStack_copy(n) {\n      if (this.stack.length + n >= MAX_STACK_SIZE) {\n        throw new Error('PostScript function stack overflow.');\n      }\n      var stack = this.stack;\n      for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n        stack.push(stack[i]);\n      }\n    },\n    index: function PostScriptStack_index(n) {\n      this.push(this.stack[this.stack.length - n - 1]);\n    },\n    // rotate the last n stack elements p times\n    roll: function PostScriptStack_roll(n, p) {\n      var stack = this.stack;\n      var l = stack.length - n;\n      var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t;\n      for (i = l, j = r; i < j; i++, j--) {\n        t = stack[i]; stack[i] = stack[j]; stack[j] = t;\n      }\n      for (i = l, j = c - 1; i < j; i++, j--) {\n        t = stack[i]; stack[i] = stack[j]; stack[j] = t;\n      }\n      for (i = c, j = r; i < j; i++, j--) {\n        t = stack[i]; stack[i] = stack[j]; stack[j] = t;\n      }\n    },\n  };\n  return PostScriptStack;\n})();\nvar PostScriptEvaluator = (function PostScriptEvaluatorClosure() {\n  function PostScriptEvaluator(operators) {\n    this.operators = operators;\n  }\n  PostScriptEvaluator.prototype = {\n    execute: function PostScriptEvaluator_execute(initialStack) {\n      var stack = new PostScriptStack(initialStack);\n      var counter = 0;\n      var operators = this.operators;\n      var length = operators.length;\n      var operator, a, b;\n      while (counter < length) {\n        operator = operators[counter++];\n        if (typeof operator === 'number') {\n          // Operator is really an operand and should be pushed to the stack.\n          stack.push(operator);\n          continue;\n        }\n        switch (operator) {\n          // non standard ps operators\n          case 'jz': // jump if false\n            b = stack.pop();\n            a = stack.pop();\n            if (!a) {\n              counter = b;\n            }\n            break;\n          case 'j': // jump\n            a = stack.pop();\n            counter = a;\n            break;\n\n          // all ps operators in alphabetical order (excluding if/ifelse)\n          case 'abs':\n            a = stack.pop();\n            stack.push(Math.abs(a));\n            break;\n          case 'add':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a + b);\n            break;\n          case 'and':\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a && b);\n            } else {\n              stack.push(a & b);\n            }\n            break;\n          case 'atan':\n            a = stack.pop();\n            stack.push(Math.atan(a));\n            break;\n          case 'bitshift':\n            b = stack.pop();\n            a = stack.pop();\n            if (a > 0) {\n              stack.push(a << b);\n            } else {\n              stack.push(a >> b);\n            }\n            break;\n          case 'ceiling':\n            a = stack.pop();\n            stack.push(Math.ceil(a));\n            break;\n          case 'copy':\n            a = stack.pop();\n            stack.copy(a);\n            break;\n          case 'cos':\n            a = stack.pop();\n            stack.push(Math.cos(a));\n            break;\n          case 'cvi':\n            a = stack.pop() | 0;\n            stack.push(a);\n            break;\n          case 'cvr':\n            // noop\n            break;\n          case 'div':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a / b);\n            break;\n          case 'dup':\n            stack.copy(1);\n            break;\n          case 'eq':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a === b);\n            break;\n          case 'exch':\n            stack.roll(2, 1);\n            break;\n          case 'exp':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(Math.pow(a, b));\n            break;\n          case 'false':\n            stack.push(false);\n            break;\n          case 'floor':\n            a = stack.pop();\n            stack.push(Math.floor(a));\n            break;\n          case 'ge':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a >= b);\n            break;\n          case 'gt':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a > b);\n            break;\n          case 'idiv':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push((a / b) | 0);\n            break;\n          case 'index':\n            a = stack.pop();\n            stack.index(a);\n            break;\n          case 'le':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a <= b);\n            break;\n          case 'ln':\n            a = stack.pop();\n            stack.push(Math.log(a));\n            break;\n          case 'log':\n            a = stack.pop();\n            stack.push(Math.log(a) / Math.LN10);\n            break;\n          case 'lt':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a < b);\n            break;\n          case 'mod':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a % b);\n            break;\n          case 'mul':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a * b);\n            break;\n          case 'ne':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a !== b);\n            break;\n          case 'neg':\n            a = stack.pop();\n            stack.push(-a);\n            break;\n          case 'not':\n            a = stack.pop();\n            if (isBool(a)) {\n              stack.push(!a);\n            } else {\n              stack.push(~a);\n            }\n            break;\n          case 'or':\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a || b);\n            } else {\n              stack.push(a | b);\n            }\n            break;\n          case 'pop':\n            stack.pop();\n            break;\n          case 'roll':\n            b = stack.pop();\n            a = stack.pop();\n            stack.roll(a, b);\n            break;\n          case 'round':\n            a = stack.pop();\n            stack.push(Math.round(a));\n            break;\n          case 'sin':\n            a = stack.pop();\n            stack.push(Math.sin(a));\n            break;\n          case 'sqrt':\n            a = stack.pop();\n            stack.push(Math.sqrt(a));\n            break;\n          case 'sub':\n            b = stack.pop();\n            a = stack.pop();\n            stack.push(a - b);\n            break;\n          case 'true':\n            stack.push(true);\n            break;\n          case 'truncate':\n            a = stack.pop();\n            a = a < 0 ? Math.ceil(a) : Math.floor(a);\n            stack.push(a);\n            break;\n          case 'xor':\n            b = stack.pop();\n            a = stack.pop();\n            if (isBool(a) && isBool(b)) {\n              stack.push(a !== b);\n            } else {\n              stack.push(a ^ b);\n            }\n            break;\n          default:\n            throw new FormatError(`Unknown operator ${operator}`);\n        }\n      }\n      return stack.stack;\n    },\n  };\n  return PostScriptEvaluator;\n})();\n\n// Most of the PDFs functions consist of simple operations such as:\n//   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nvar PostScriptCompiler = (function PostScriptCompilerClosure() {\n  function AstNode(type) {\n    this.type = type;\n  }\n  AstNode.prototype.visit = function (visitor) {\n    unreachable('abstract method');\n  };\n\n  function AstArgument(index, min, max) {\n    AstNode.call(this, 'args');\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstArgument.prototype = Object.create(AstNode.prototype);\n  AstArgument.prototype.visit = function (visitor) {\n    visitor.visitArgument(this);\n  };\n\n  function AstLiteral(number) {\n    AstNode.call(this, 'literal');\n    this.number = number;\n    this.min = number;\n    this.max = number;\n  }\n  AstLiteral.prototype = Object.create(AstNode.prototype);\n  AstLiteral.prototype.visit = function (visitor) {\n    visitor.visitLiteral(this);\n  };\n\n  function AstBinaryOperation(op, arg1, arg2, min, max) {\n    AstNode.call(this, 'binary');\n    this.op = op;\n    this.arg1 = arg1;\n    this.arg2 = arg2;\n    this.min = min;\n    this.max = max;\n  }\n  AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n  AstBinaryOperation.prototype.visit = function (visitor) {\n    visitor.visitBinaryOperation(this);\n  };\n\n  function AstMin(arg, max) {\n    AstNode.call(this, 'max');\n    this.arg = arg;\n    this.min = arg.min;\n    this.max = max;\n  }\n  AstMin.prototype = Object.create(AstNode.prototype);\n  AstMin.prototype.visit = function (visitor) {\n    visitor.visitMin(this);\n  };\n\n  function AstVariable(index, min, max) {\n    AstNode.call(this, 'var');\n    this.index = index;\n    this.min = min;\n    this.max = max;\n  }\n  AstVariable.prototype = Object.create(AstNode.prototype);\n  AstVariable.prototype.visit = function (visitor) {\n    visitor.visitVariable(this);\n  };\n\n  function AstVariableDefinition(variable, arg) {\n    AstNode.call(this, 'definition');\n    this.variable = variable;\n    this.arg = arg;\n  }\n  AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n  AstVariableDefinition.prototype.visit = function (visitor) {\n    visitor.visitVariableDefinition(this);\n  };\n\n  function ExpressionBuilderVisitor() {\n    this.parts = [];\n  }\n  ExpressionBuilderVisitor.prototype = {\n    visitArgument(arg) {\n      this.parts.push('Math.max(', arg.min, ', Math.min(',\n                      arg.max, ', src[srcOffset + ', arg.index, ']))');\n    },\n    visitVariable(variable) {\n      this.parts.push('v', variable.index);\n    },\n    visitLiteral(literal) {\n      this.parts.push(literal.number);\n    },\n    visitBinaryOperation(operation) {\n      this.parts.push('(');\n      operation.arg1.visit(this);\n      this.parts.push(' ', operation.op, ' ');\n      operation.arg2.visit(this);\n      this.parts.push(')');\n    },\n    visitVariableDefinition(definition) {\n      this.parts.push('var ');\n      definition.variable.visit(this);\n      this.parts.push(' = ');\n      definition.arg.visit(this);\n      this.parts.push(';');\n    },\n    visitMin(max) {\n      this.parts.push('Math.min(');\n      max.arg.visit(this);\n      this.parts.push(', ', max.max, ')');\n    },\n    toString() {\n      return this.parts.join('');\n    },\n  };\n\n  function buildAddOperation(num1, num2) {\n    if (num2.type === 'literal' && num2.number === 0) {\n      // optimization: second operand is 0\n      return num1;\n    }\n    if (num1.type === 'literal' && num1.number === 0) {\n      // optimization: first operand is 0\n      return num2;\n    }\n    if (num2.type === 'literal' && num1.type === 'literal') {\n      // optimization: operands operand are literals\n      return new AstLiteral(num1.number + num2.number);\n    }\n    return new AstBinaryOperation('+', num1, num2,\n                                  num1.min + num2.min, num1.max + num2.max);\n  }\n\n  function buildMulOperation(num1, num2) {\n    if (num2.type === 'literal') {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num2.number === 1) {\n        return num1; // and it's 1\n      } else if (num1.type === 'literal') {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n    if (num1.type === 'literal') {\n      // optimization: first operands is a literal...\n      if (num1.number === 0) {\n        return new AstLiteral(0); // and it's 0\n      } else if (num1.number === 1) {\n        return num2; // and it's 1\n      }\n    }\n    var min = Math.min(num1.min * num2.min, num1.min * num2.max,\n                       num1.max * num2.min, num1.max * num2.max);\n    var max = Math.max(num1.min * num2.min, num1.min * num2.max,\n                       num1.max * num2.min, num1.max * num2.max);\n    return new AstBinaryOperation('*', num1, num2, min, max);\n  }\n\n  function buildSubOperation(num1, num2) {\n    if (num2.type === 'literal') {\n      // optimization: second operands is a literal...\n      if (num2.number === 0) {\n        return num1; // ... and it's 0\n      } else if (num1.type === 'literal') {\n        // ... and first operands is a literal too\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n    if (num2.type === 'binary' && num2.op === '-' &&\n      num1.type === 'literal' && num1.number === 1 &&\n      num2.arg1.type === 'literal' && num2.arg1.number === 1) {\n      // optimization for case: 1 - (1 - x)\n      return num2.arg2;\n    }\n    return new AstBinaryOperation('-', num1, num2,\n                                  num1.min - num2.max, num1.max - num2.min);\n  }\n\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      // optimization: num1 min value is not less than required max\n      return new AstLiteral(max); // just returning max\n    } else if (num1.max <= max) {\n      // optimization: num1 max value is not greater than required max\n      return num1; // just returning an argument\n    }\n    return new AstMin(num1, max);\n  }\n\n  function PostScriptCompiler() {}\n  PostScriptCompiler.prototype = {\n    compile: function PostScriptCompiler_compile(code, domain, range) {\n      var stack = [];\n      var i, ii;\n      var instructions = [];\n      var inputSize = domain.length >> 1, outputSize = range.length >> 1;\n      var lastRegister = 0;\n      var n, j;\n      var num1, num2, ast1, ast2, tmpVar, item;\n      for (i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n\n      for (i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n        if (typeof item === 'number') {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n\n        switch (item) {\n          case 'add':\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n          case 'cvr':\n            if (stack.length < 1) {\n              return null;\n            }\n            break;\n          case 'mul':\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n          case 'sub':\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n          case 'exch':\n            if (stack.length < 2) {\n              return null;\n            }\n            ast1 = stack.pop(); ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n          case 'pop':\n            if (stack.length < 1) {\n              return null;\n            }\n            stack.pop();\n            break;\n          case 'index':\n            if (stack.length < 1) {\n              return null;\n            }\n            num1 = stack.pop();\n            if (num1.type !== 'literal') {\n              return null;\n            }\n            n = num1.number;\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n            ast1 = stack[stack.length - n - 1];\n            if (ast1.type === 'literal' || ast1.type === 'var') {\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case 'dup':\n            if (stack.length < 1) {\n              return null;\n            }\n            if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' &&\n                code[i + 3] === i + 7 && code[i + 4] === 'jz' &&\n                code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) {\n              // special case of the commands sequence for the min operation\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n            ast1 = stack[stack.length - 1];\n            if (ast1.type === 'literal' || ast1.type === 'var') {\n              // we don't have to save into intermediate variable a literal or\n              // variable.\n              stack.push(ast1);\n              break;\n            }\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n          case 'roll':\n            if (stack.length < 2) {\n              return null;\n            }\n            num2 = stack.pop();\n            num1 = stack.pop();\n            if (num2.type !== 'literal' || num1.type !== 'literal') {\n              // both roll operands must be numbers\n              return null;\n            }\n            j = num2.number;\n            n = num1.number;\n            if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) ||\n                stack.length < n) {\n              // ... and integers\n              return null;\n            }\n            j = ((j % n) + n) % n;\n            if (j === 0) {\n              break; // just skipping -- there are nothing to rotate\n            }\n            Array.prototype.push.apply(stack,\n                                       stack.splice(stack.length - n, n - j));\n            break;\n          default:\n            return null; // unsupported operator\n        }\n      }\n\n      if (stack.length !== outputSize) {\n        return null;\n      }\n\n      var result = [];\n      instructions.forEach(function (instruction) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      });\n      stack.forEach(function (expr, i) {\n        var statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        var min = range[i * 2], max = range[i * 2 + 1];\n        var out = [statementBuilder.toString()];\n        if (min > expr.min) {\n          out.unshift('Math.max(', min, ', ');\n          out.push(')');\n        }\n        if (max < expr.max) {\n          out.unshift('Math.min(', max, ', ');\n          out.push(')');\n        }\n        out.unshift('dest[destOffset + ', i, '] = ');\n        out.push(';');\n        result.push(out.join(''));\n      });\n      return result.join('\\n');\n    },\n  };\n\n  return PostScriptCompiler;\n})();\n\nexport {\n  isPDFFunction,\n  PDFFunctionFactory,\n  PostScriptEvaluator,\n  PostScriptCompiler,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, isSpace } from '../shared/util';\nimport { EOF } from './primitives';\n\nvar PostScriptParser = (function PostScriptParserClosure() {\n  function PostScriptParser(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n  PostScriptParser.prototype = {\n    nextToken: function PostScriptParser_nextToken() {\n      this.prev = this.token;\n      this.token = this.lexer.getToken();\n    },\n    accept: function PostScriptParser_accept(type) {\n      if (this.token.type === type) {\n        this.nextToken();\n        return true;\n      }\n      return false;\n    },\n    expect: function PostScriptParser_expect(type) {\n      if (this.accept(type)) {\n        return true;\n      }\n      throw new FormatError(\n        `Unexpected symbol: found ${this.token.type} expected ${type}.`);\n    },\n    parse: function PostScriptParser_parse() {\n      this.nextToken();\n      this.expect(PostScriptTokenTypes.LBRACE);\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      return this.operators;\n    },\n    parseBlock: function PostScriptParser_parseBlock() {\n      while (true) {\n        if (this.accept(PostScriptTokenTypes.NUMBER)) {\n          this.operators.push(this.prev.value);\n        } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n          this.operators.push(this.prev.value);\n        } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n          this.parseCondition();\n        } else {\n          return;\n        }\n      }\n    },\n    parseCondition: function PostScriptParser_parseCondition() {\n      // Add two place holders that will be updated later\n      var conditionLocation = this.operators.length;\n      this.operators.push(null, null);\n\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      if (this.accept(PostScriptTokenTypes.IF)) {\n        // The true block is right after the 'if' so it just falls through on\n        // true else it jumps and skips the true block.\n        this.operators[conditionLocation] = this.operators.length;\n        this.operators[conditionLocation + 1] = 'jz';\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        var jumpLocation = this.operators.length;\n        this.operators.push(null, null);\n        var endOfTrue = this.operators.length;\n        this.parseBlock();\n        this.expect(PostScriptTokenTypes.RBRACE);\n        this.expect(PostScriptTokenTypes.IFELSE);\n        // The jump is added at the end of the true block to skip the false\n        // block.\n        this.operators[jumpLocation] = this.operators.length;\n        this.operators[jumpLocation + 1] = 'j';\n\n        this.operators[conditionLocation] = endOfTrue;\n        this.operators[conditionLocation + 1] = 'jz';\n      } else {\n        throw new FormatError('PS Function: error parsing conditional.');\n      }\n    },\n  };\n  return PostScriptParser;\n})();\n\nvar PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5,\n};\n\nvar PostScriptToken = (function PostScriptTokenClosure() {\n  function PostScriptToken(type, value) {\n    this.type = type;\n    this.value = value;\n  }\n\n  var opCache = Object.create(null);\n\n  PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {\n    var opValue = opCache[op];\n    if (opValue) {\n      return opValue;\n    }\n    return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);\n  };\n\n  PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE,\n    '{');\n  PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE,\n    '}');\n  PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF');\n  PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE,\n    'IFELSE');\n  return PostScriptToken;\n})();\n\nvar PostScriptLexer = (function PostScriptLexerClosure() {\n  function PostScriptLexer(stream) {\n    this.stream = stream;\n    this.nextChar();\n\n    this.strBuf = [];\n  }\n  PostScriptLexer.prototype = {\n    nextChar: function PostScriptLexer_nextChar() {\n      return (this.currentChar = this.stream.getByte());\n    },\n    getToken: function PostScriptLexer_getToken() {\n      var comment = false;\n      var ch = this.currentChar;\n\n      // skip comments\n      while (true) {\n        if (ch < 0) {\n          return EOF;\n        }\n\n        if (comment) {\n          if (ch === 0x0A || ch === 0x0D) {\n            comment = false;\n          }\n        } else if (ch === 0x25) { // '%'\n          comment = true;\n        } else if (!isSpace(ch)) {\n          break;\n        }\n        ch = this.nextChar();\n      }\n      switch (ch | 0) {\n        case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4'\n        case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9'\n        case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.'\n          return new PostScriptToken(PostScriptTokenTypes.NUMBER,\n                                     this.getNumber());\n        case 0x7B: // '{'\n          this.nextChar();\n          return PostScriptToken.LBRACE;\n        case 0x7D: // '}'\n          this.nextChar();\n          return PostScriptToken.RBRACE;\n      }\n      // operator\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      strBuf[0] = String.fromCharCode(ch);\n\n      while ((ch = this.nextChar()) >= 0 && // and 'A'-'Z', 'a'-'z'\n             ((ch >= 0x41 && ch <= 0x5A) || (ch >= 0x61 && ch <= 0x7A))) {\n        strBuf.push(String.fromCharCode(ch));\n      }\n      var str = strBuf.join('');\n      switch (str.toLowerCase()) {\n        case 'if':\n          return PostScriptToken.IF;\n        case 'ifelse':\n          return PostScriptToken.IFELSE;\n        default:\n          return PostScriptToken.getOperator(str);\n      }\n    },\n    getNumber: function PostScriptLexer_getNumber() {\n      var ch = this.currentChar;\n      var strBuf = this.strBuf;\n      strBuf.length = 0;\n      strBuf[0] = String.fromCharCode(ch);\n\n      while ((ch = this.nextChar()) >= 0) {\n        if ((ch >= 0x30 && ch <= 0x39) || // '0'-'9'\n            ch === 0x2D || ch === 0x2E) { // '-', '.'\n          strBuf.push(String.fromCharCode(ch));\n        } else {\n          break;\n        }\n      }\n      var value = parseFloat(strBuf.join(''));\n      if (isNaN(value)) {\n        throw new FormatError(`Invalid floating point number: ${value}`);\n      }\n      return value;\n    },\n  };\n  return PostScriptLexer;\n})();\n\nexport {\n  PostScriptLexer,\n  PostScriptParser,\n};\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer, isString } from '../shared/util';\n\nvar MurmurHash3_64 = (function MurmurHash3_64Closure(seed) {\n  // Workaround for missing math precision in JS.\n  var MASK_HIGH = 0xffff0000;\n  var MASK_LOW = 0xffff;\n\n  function MurmurHash3_64(seed) {\n    var SEED = 0xc3d2e1f0;\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  MurmurHash3_64.prototype = {\n    update: function MurmurHash3_64_update(input) {\n      let data, length;\n      if (isString(input)) {\n        data = new Uint8Array(input.length * 2);\n        length = 0;\n        for (let i = 0, ii = input.length; i < ii; i++) {\n          var code = input.charCodeAt(i);\n          if (code <= 0xff) {\n            data[length++] = code;\n          } else {\n            data[length++] = code >>> 8;\n            data[length++] = code & 0xff;\n          }\n        }\n      } else if (isArrayBuffer(input)) {\n        data = input;\n        length = data.byteLength;\n      } else {\n        throw new Error('Wrong data format in MurmurHash3_64_update. ' +\n                        'Input must be a string or array.');\n      }\n\n      var blockCounts = length >> 2;\n      var tailLength = length - blockCounts * 4;\n      // we don't care about endianness here\n      var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n      var k1 = 0;\n      var k2 = 0;\n      var h1 = this.h1;\n      var h2 = this.h2;\n      var C1 = 0xcc9e2d51;\n      var C2 = 0x1b873593;\n      var C1_LOW = C1 & MASK_LOW;\n      var C2_LOW = C2 & MASK_LOW;\n\n      for (let i = 0; i < blockCounts; i++) {\n        if (i & 1) {\n          k1 = dataUint32[i];\n          k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW);\n          k1 = k1 << 15 | k1 >>> 17;\n          k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW);\n          h1 ^= k1;\n          h1 = h1 << 13 | h1 >>> 19;\n          h1 = h1 * 5 + 0xe6546b64;\n        } else {\n          k2 = dataUint32[i];\n          k2 = (k2 * C1 & MASK_HIGH) | (k2 * C1_LOW & MASK_LOW);\n          k2 = k2 << 15 | k2 >>> 17;\n          k2 = (k2 * C2 & MASK_HIGH) | (k2 * C2_LOW & MASK_LOW);\n          h2 ^= k2;\n          h2 = h2 << 13 | h2 >>> 19;\n          h2 = h2 * 5 + 0xe6546b64;\n        }\n      }\n\n      k1 = 0;\n\n      switch (tailLength) {\n        case 3:\n          k1 ^= data[blockCounts * 4 + 2] << 16;\n          /* falls through */\n        case 2:\n          k1 ^= data[blockCounts * 4 + 1] << 8;\n          /* falls through */\n        case 1:\n          k1 ^= data[blockCounts * 4];\n          /* falls through */\n        k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW);\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n      }\n\n      this.h1 = h1;\n      this.h2 = h2;\n      return this;\n    },\n\n    hexdigest: function MurmurHash3_64_hexdigest() {\n      var h1 = this.h1;\n      var h2 = this.h2;\n\n      h1 ^= h2 >>> 1;\n      h1 = (h1 * 0xed558ccd & MASK_HIGH) | (h1 * 0x8ccd & MASK_LOW);\n      h2 = (h2 * 0xff51afd7 & MASK_HIGH) |\n           (((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16);\n      h1 ^= h2 >>> 1;\n      h1 = (h1 * 0x1a85ec53 & MASK_HIGH) | (h1 * 0xec53 & MASK_LOW);\n      h2 = (h2 * 0xc4ceb9fe & MASK_HIGH) |\n           (((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16);\n      h1 ^= h2 >>> 1;\n\n      for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) {\n        var hex = (arr[i] >>> 0).toString(16);\n        while (hex.length < 8) {\n          hex = '0' + hex;\n        }\n        str += hex;\n      }\n\n      return str;\n    },\n  };\n\n  return MurmurHash3_64;\n})();\n\nexport {\n  MurmurHash3_64,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, FormatError, ImageKind, info, warn } from '../shared/util';\nimport { isName, isStream, Name } from './primitives';\nimport { ColorSpace } from './colorspace';\nimport { DecodeStream } from './stream';\nimport { JpegStream } from './jpeg_stream';\nimport { JpxImage } from './jpx';\n\nvar PDFImage = (function PDFImageClosure() {\n  /**\n   * Decodes the image using native decoder if possible. Resolves the promise\n   * when the image data is ready.\n   */\n  function handleImageData(image, nativeDecoder) {\n    if (nativeDecoder && nativeDecoder.canDecode(image)) {\n      return nativeDecoder.decode(image).catch((reason) => {\n        warn('Native image decoding failed -- trying to recover: ' +\n             (reason && reason.message));\n        return image;\n      });\n    }\n    return Promise.resolve(image);\n  }\n\n  /**\n   * Decode and clamp a value. The formula is different from the spec because we\n   * don't decode to float range [0,1], we decode it in the [0,max] range.\n   */\n  function decodeAndClamp(value, addend, coefficient, max) {\n    value = addend + value * coefficient;\n    // Clamp the value to the range\n    return (value < 0 ? 0 : (value > max ? max : value));\n  }\n\n  /**\n   * Resizes an image mask with 1 component.\n   * @param {TypedArray} src - The source buffer.\n   * @param {Number} bpc - Number of bits per component.\n   * @param {Number} w1 - Original width.\n   * @param {Number} h1 - Original height.\n   * @param {Number} w2 - New width.\n   * @param {Number} h2 - New height.\n   * @returns {TypedArray} The resized image mask buffer.\n   */\n  function resizeImageMask(src, bpc, w1, h1, w2, h2) {\n    var length = w2 * h2;\n    var dest = (bpc <= 8 ? new Uint8Array(length) :\n      (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length)));\n    var xRatio = w1 / w2;\n    var yRatio = h1 / h2;\n    var i, j, py, newIndex = 0, oldIndex;\n    var xScaled = new Uint16Array(w2);\n    var w1Scanline = w1;\n\n    for (i = 0; i < w2; i++) {\n      xScaled[i] = Math.floor(i * xRatio);\n    }\n    for (i = 0; i < h2; i++) {\n      py = Math.floor(i * yRatio) * w1Scanline;\n      for (j = 0; j < w2; j++) {\n        oldIndex = py + xScaled[j];\n        dest[newIndex++] = src[oldIndex];\n      }\n    }\n    return dest;\n  }\n\n  function PDFImage({ xref, res, image, isInline = false, smask = null,\n                      mask = null, isMask = false, pdfFunctionFactory, }) {\n    this.image = image;\n    var dict = image.dict;\n\n    const filter = dict.get('Filter');\n    if (isName(filter)) {\n      switch (filter.name) {\n        case 'JPXDecode':\n          var jpxImage = new JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n        case 'JBIG2Decode':\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n    // TODO cache rendered images?\n\n    let width = dict.get('Width', 'W');\n    let height = dict.get('Height', 'H');\n\n    if ((Number.isInteger(image.width) && image.width > 0) &&\n        (Number.isInteger(image.height) && image.height > 0) &&\n        (image.width !== width || image.height !== height)) {\n      warn('PDFImage - using the Width/Height of the image data, ' +\n           'rather than the image dictionary.');\n      width = image.width;\n      height = image.height;\n    }\n    if (width < 1 || height < 1) {\n      throw new FormatError(`Invalid image width: ${width} or ` +\n                            `height: ${height}`);\n    }\n    this.width = width;\n    this.height = height;\n\n    this.interpolate = dict.get('Interpolate', 'I') || false;\n    this.imageMask = dict.get('ImageMask', 'IM') || false;\n    this.matte = dict.get('Matte') || false;\n\n    var bitsPerComponent = image.bitsPerComponent;\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get('BitsPerComponent', 'BPC');\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new FormatError(\n            `Bits per component missing in image: ${this.imageMask}`);\n        }\n      }\n    }\n    this.bpc = bitsPerComponent;\n\n    if (!this.imageMask) {\n      var colorSpace = dict.get('ColorSpace', 'CS');\n      if (!colorSpace) {\n        info('JPX images (which do not require color spaces)');\n        switch (image.numComps) {\n          case 1:\n            colorSpace = Name.get('DeviceGray');\n            break;\n          case 3:\n            colorSpace = Name.get('DeviceRGB');\n            break;\n          case 4:\n            colorSpace = Name.get('DeviceCMYK');\n            break;\n          default:\n            throw new Error(`JPX images with ${image.numComps} ` +\n                            'color components not supported.');\n        }\n      }\n      let resources = isInline ? res : null;\n      this.colorSpace = ColorSpace.parse(colorSpace, xref, resources,\n                                         pdfFunctionFactory);\n      this.numComps = this.colorSpace.numComps;\n    }\n\n    this.decode = dict.getArray('Decode', 'D');\n    this.needsDecode = false;\n    if (this.decode &&\n        ((this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode)) ||\n         (isMask && !ColorSpace.isDefaultDecode(this.decode, 1)))) {\n      this.needsDecode = true;\n      // Do some preprocessing to avoid more math.\n      var max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        var dmin = this.decode[i];\n        var dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = dmax - dmin;\n        this.decodeAddends[j] = max * dmin;\n      }\n    }\n\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n      });\n    } else if (mask) {\n      if (isStream(mask)) {\n        var maskDict = mask.dict, imageMask = maskDict.get('ImageMask', 'IM');\n        if (!imageMask) {\n          warn('Ignoring /Mask in image without /ImageMask.');\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n          });\n        }\n      } else {\n        // Color key mask (just an array).\n        this.mask = mask;\n      }\n    }\n  }\n  /**\n   * Handles processing of image data and returns the Promise that is resolved\n   * with a PDFImage when the image is ready to be used.\n   */\n  PDFImage.buildImage = function({ handler, xref, res, image, isInline = false,\n                                   nativeDecoder = null,\n                                   pdfFunctionFactory, }) {\n    var imagePromise = handleImageData(image, nativeDecoder);\n    var smaskPromise;\n    var maskPromise;\n\n    var smask = image.dict.get('SMask');\n    var mask = image.dict.get('Mask');\n\n    if (smask) {\n      smaskPromise = handleImageData(smask, nativeDecoder);\n      maskPromise = Promise.resolve(null);\n    } else {\n      smaskPromise = Promise.resolve(null);\n      if (mask) {\n        if (isStream(mask)) {\n          maskPromise = handleImageData(mask, nativeDecoder);\n        } else if (Array.isArray(mask)) {\n          maskPromise = Promise.resolve(mask);\n        } else {\n          warn('Unsupported mask format.');\n          maskPromise = Promise.resolve(null);\n        }\n      } else {\n        maskPromise = Promise.resolve(null);\n      }\n    }\n    return Promise.all([imagePromise, smaskPromise, maskPromise]).then(\n      function([imageData, smaskData, maskData]) {\n        return new PDFImage({\n          xref,\n          res,\n          image: imageData,\n          isInline,\n          smask: smaskData,\n          mask: maskData,\n          pdfFunctionFactory,\n        });\n      });\n  };\n\n  PDFImage.createMask = function({ imgArray, width, height,\n                                   imageIsFromDecodeStream, inverseDecode, }) {\n    if (typeof PDFJSDev === 'undefined' ||\n        PDFJSDev.test('!PRODUCTION || TESTING')) {\n      assert(imgArray instanceof Uint8ClampedArray,\n             'PDFImage.createMask: Unsupported \"imgArray\" type.');\n    }\n    // |imgArray| might not contain full data for every pixel of the mask, so\n    // we need to distinguish between |computedLength| and |actualLength|.\n    // In particular, if inverseDecode is true, then the array we return must\n    // have a length of |computedLength|.\n\n    var computedLength = ((width + 7) >> 3) * height;\n    var actualLength = imgArray.byteLength;\n    var haveFullData = computedLength === actualLength;\n    var data, i;\n\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      // imgArray came from a DecodeStream and its data is in an appropriate\n      // form, so we can just transfer it.\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n\n    // If necessary, invert the original mask data (but not any extra we might\n    // have added above). It's safe to modify the array -- whether it's the\n    // original or a copy, we're about to transfer it anyway, so nothing else\n    // in this thread can be relying on its contents.\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xFF;\n      }\n    }\n\n    return { data, width, height, };\n  };\n\n  PDFImage.prototype = {\n    get drawWidth() {\n      return Math.max(this.width,\n                      this.smask && this.smask.width || 0,\n                      this.mask && this.mask.width || 0);\n    },\n\n    get drawHeight() {\n      return Math.max(this.height,\n                      this.smask && this.smask.height || 0,\n                      this.mask && this.mask.height || 0);\n    },\n\n    decodeBuffer(buffer) {\n      var bpc = this.bpc;\n      var numComps = this.numComps;\n\n      var decodeAddends = this.decodeAddends;\n      var decodeCoefficients = this.decodeCoefficients;\n      var max = (1 << bpc) - 1;\n      var i, ii;\n\n      if (bpc === 1) {\n        // If the buffer needed decode that means it just needs to be inverted.\n        for (i = 0, ii = buffer.length; i < ii; i++) {\n          buffer[i] = +!(buffer[i]);\n        }\n        return;\n      }\n      var index = 0;\n      for (i = 0, ii = this.width * this.height; i < ii; i++) {\n        for (var j = 0; j < numComps; j++) {\n          buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j],\n                                         decodeCoefficients[j], max);\n          index++;\n        }\n      }\n    },\n\n    getComponents(buffer) {\n      var bpc = this.bpc;\n\n      // This image doesn't require any extra work.\n      if (bpc === 8) {\n        return buffer;\n      }\n\n      var width = this.width;\n      var height = this.height;\n      var numComps = this.numComps;\n\n      var length = width * height * numComps;\n      var bufferPos = 0;\n      var output = (bpc <= 8 ? new Uint8Array(length) :\n        (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length)));\n      var rowComps = width * numComps;\n\n      var max = (1 << bpc) - 1;\n      var i = 0, ii, buf;\n\n      if (bpc === 1) {\n        // Optimization for reading 1 bpc images.\n        var mask, loop1End, loop2End;\n        for (var j = 0; j < height; j++) {\n          loop1End = i + (rowComps & ~7);\n          loop2End = i + rowComps;\n\n          // unroll loop for all full bytes\n          while (i < loop1End) {\n            buf = buffer[bufferPos++];\n            output[i] = (buf >> 7) & 1;\n            output[i + 1] = (buf >> 6) & 1;\n            output[i + 2] = (buf >> 5) & 1;\n            output[i + 3] = (buf >> 4) & 1;\n            output[i + 4] = (buf >> 3) & 1;\n            output[i + 5] = (buf >> 2) & 1;\n            output[i + 6] = (buf >> 1) & 1;\n            output[i + 7] = buf & 1;\n            i += 8;\n          }\n\n          // handle remaining bits\n          if (i < loop2End) {\n            buf = buffer[bufferPos++];\n            mask = 128;\n            while (i < loop2End) {\n              output[i++] = +!!(buf & mask);\n              mask >>= 1;\n            }\n          }\n        }\n      } else {\n        // The general case that handles all other bpc values.\n        var bits = 0;\n        buf = 0;\n        for (i = 0, ii = length; i < ii; ++i) {\n          if (i % rowComps === 0) {\n            buf = 0;\n            bits = 0;\n          }\n\n          while (bits < bpc) {\n            buf = (buf << 8) | buffer[bufferPos++];\n            bits += 8;\n          }\n\n          var remainingBits = bits - bpc;\n          var value = buf >> remainingBits;\n          output[i] = (value < 0 ? 0 : (value > max ? max : value));\n          buf = buf & ((1 << remainingBits) - 1);\n          bits = remainingBits;\n        }\n      }\n      return output;\n    },\n\n    fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(rgbaBuf instanceof Uint8ClampedArray,\n               'PDFImage.fillOpacity: Unsupported \"rgbaBuf\" type.');\n      }\n      var smask = this.smask;\n      var mask = this.mask;\n      var alphaBuf, sw, sh, i, ii, j;\n\n      if (smask) {\n        sw = smask.width;\n        sh = smask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        smask.fillGrayBuffer(alphaBuf);\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh,\n                                     width, height);\n        }\n      } else if (mask) {\n        if (mask instanceof PDFImage) {\n          sw = mask.width;\n          sh = mask.height;\n          alphaBuf = new Uint8ClampedArray(sw * sh);\n          mask.numComps = 1;\n          mask.fillGrayBuffer(alphaBuf);\n\n          // Need to invert values in rgbaBuf\n          for (i = 0, ii = sw * sh; i < ii; ++i) {\n            alphaBuf[i] = 255 - alphaBuf[i];\n          }\n\n          if (sw !== width || sh !== height) {\n            alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh,\n                                       width, height);\n          }\n        } else if (Array.isArray(mask)) {\n          // Color key mask: if any of the components are outside the range\n          // then they should be painted.\n          alphaBuf = new Uint8ClampedArray(width * height);\n          var numComps = this.numComps;\n          for (i = 0, ii = width * height; i < ii; ++i) {\n            var opacity = 0;\n            var imageOffset = i * numComps;\n            for (j = 0; j < numComps; ++j) {\n              var color = image[imageOffset + j];\n              var maskOffset = j * 2;\n              if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n                opacity = 255;\n                break;\n              }\n            }\n            alphaBuf[i] = opacity;\n          }\n        } else {\n          throw new FormatError('Unknown mask format.');\n        }\n      }\n\n      if (alphaBuf) {\n        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n          rgbaBuf[j] = alphaBuf[i];\n        }\n      } else {\n        // No mask.\n        for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n          rgbaBuf[j] = 255;\n        }\n      }\n    },\n\n    undoPreblend(buffer, width, height) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(buffer instanceof Uint8ClampedArray,\n               'PDFImage.undoPreblend: Unsupported \"buffer\" type.');\n      }\n      var matte = this.smask && this.smask.matte;\n      if (!matte) {\n        return;\n      }\n      var matteRgb = this.colorSpace.getRgb(matte, 0);\n      var matteR = matteRgb[0];\n      var matteG = matteRgb[1];\n      var matteB = matteRgb[2];\n      var length = width * height * 4;\n      for (var i = 0; i < length; i += 4) {\n        var alpha = buffer[i + 3];\n        if (alpha === 0) {\n          // according formula we have to get Infinity in all components\n          // making it white (typical paper color) should be okay\n          buffer[i] = 255;\n          buffer[i + 1] = 255;\n          buffer[i + 2] = 255;\n          continue;\n        }\n        var k = 255 / alpha;\n        buffer[i] = (buffer[i] - matteR) * k + matteR;\n        buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n        buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n      }\n    },\n\n    createImageData(forceRGBA = false) {\n      var drawWidth = this.drawWidth;\n      var drawHeight = this.drawHeight;\n      var imgData = { // other fields are filled in below\n        width: drawWidth,\n        height: drawHeight,\n        kind: 0,\n        data: null,\n      };\n\n      var numComps = this.numComps;\n      var originalWidth = this.width;\n      var originalHeight = this.height;\n      var bpc = this.bpc;\n\n      // Rows start at byte boundary.\n      var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n      var imgArray;\n\n      if (!forceRGBA) {\n        // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n        // without any complications, we pass a same-sized copy to the main\n        // thread rather than expanding by 32x to RGBA form. This saves *lots*\n        // of memory for many scanned documents. It's also much faster.\n        //\n        // Similarly, if it is a 24-bit-per pixel RGB image without any\n        // complications, we avoid expanding by 1.333x to RGBA form.\n        var kind;\n        if (this.colorSpace.name === 'DeviceGray' && bpc === 1) {\n          kind = ImageKind.GRAYSCALE_1BPP;\n        } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 &&\n                   !this.needsDecode) {\n          kind = ImageKind.RGB_24BPP;\n        }\n        if (kind && !this.smask && !this.mask &&\n            drawWidth === originalWidth && drawHeight === originalHeight) {\n          imgData.kind = kind;\n\n          imgArray = this.getImageBytes(originalHeight * rowBytes);\n          // If imgArray came from a DecodeStream, we're safe to transfer it\n          // (and thus detach its underlying buffer) because it will constitute\n          // the entire DecodeStream's data.  But if it came from a Stream, we\n          // need to copy it because it'll only be a portion of the Stream's\n          // data, and the rest will be read later on.\n          if (this.image instanceof DecodeStream) {\n            imgData.data = imgArray;\n          } else {\n            var newArray = new Uint8ClampedArray(imgArray.length);\n            newArray.set(imgArray);\n            imgData.data = newArray;\n          }\n          if (this.needsDecode) {\n            // Invert the buffer (which must be grayscale if we reached here).\n            assert(kind === ImageKind.GRAYSCALE_1BPP,\n                   'PDFImage.createImageData: The image must be grayscale.');\n            var buffer = imgData.data;\n            for (var i = 0, ii = buffer.length; i < ii; i++) {\n              buffer[i] ^= 0xff;\n            }\n          }\n          return imgData;\n        }\n        if (this.image instanceof JpegStream && !this.smask && !this.mask) {\n          let imageLength = originalHeight * rowBytes;\n          switch (this.colorSpace.name) {\n            case 'DeviceGray':\n              // Avoid truncating the image, since `JpegImage.getData`\n              // will expand the image data when `forceRGB === true`.\n              imageLength *= 3;\n              /* falls through */\n            case 'DeviceRGB':\n            case 'DeviceCMYK':\n              imgData.kind = ImageKind.RGB_24BPP;\n              imgData.data = this.getImageBytes(imageLength,\n                drawWidth, drawHeight, /* forceRGB = */ true);\n              return imgData;\n          }\n        }\n      }\n\n      imgArray = this.getImageBytes(originalHeight * rowBytes);\n      // imgArray can be incomplete (e.g. after CCITT fax encoding).\n      var actualHeight = 0 | (imgArray.length / rowBytes *\n                         drawHeight / originalHeight);\n\n      var comps = this.getComponents(imgArray);\n\n      // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n      // more compact RGB_24BPP form if allowable.\n      var alpha01, maybeUndoPreblend;\n      if (!forceRGBA && !this.smask && !this.mask) {\n        imgData.kind = ImageKind.RGB_24BPP;\n        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n        alpha01 = 0;\n        maybeUndoPreblend = false;\n      } else {\n        imgData.kind = ImageKind.RGBA_32BPP;\n        imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n        alpha01 = 1;\n        maybeUndoPreblend = true;\n\n        // Color key masking (opacity) must be performed before decoding.\n        this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight,\n                         comps);\n      }\n\n      if (this.needsDecode) {\n        this.decodeBuffer(comps);\n      }\n      this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight,\n                              drawWidth, drawHeight, actualHeight, bpc, comps,\n                              alpha01);\n      if (maybeUndoPreblend) {\n        this.undoPreblend(imgData.data, drawWidth, actualHeight);\n      }\n\n      return imgData;\n    },\n\n    fillGrayBuffer(buffer) {\n      if (typeof PDFJSDev === 'undefined' ||\n          PDFJSDev.test('!PRODUCTION || TESTING')) {\n        assert(buffer instanceof Uint8ClampedArray,\n               'PDFImage.fillGrayBuffer: Unsupported \"buffer\" type.');\n      }\n      var numComps = this.numComps;\n      if (numComps !== 1) {\n        throw new FormatError(\n          `Reading gray scale from a color image: ${numComps}`);\n      }\n\n      var width = this.width;\n      var height = this.height;\n      var bpc = this.bpc;\n\n      // rows start at byte boundary\n      var rowBytes = (width * numComps * bpc + 7) >> 3;\n      var imgArray = this.getImageBytes(height * rowBytes);\n\n      var comps = this.getComponents(imgArray);\n      var i, length;\n\n      if (bpc === 1) {\n        // inline decoding (= inversion) for 1 bpc images\n        length = width * height;\n        if (this.needsDecode) {\n          // invert and scale to {0, 255}\n          for (i = 0; i < length; ++i) {\n            buffer[i] = (comps[i] - 1) & 255;\n          }\n        } else {\n          // scale to {0, 255}\n          for (i = 0; i < length; ++i) {\n            buffer[i] = (-comps[i]) & 255;\n          }\n        }\n        return;\n      }\n\n      if (this.needsDecode) {\n        this.decodeBuffer(comps);\n      }\n      length = width * height;\n      // we aren't using a colorspace so we need to scale the value\n      var scale = 255 / ((1 << bpc) - 1);\n      for (i = 0; i < length; ++i) {\n        buffer[i] = scale * comps[i];\n      }\n    },\n\n    getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n      this.image.reset();\n      this.image.drawWidth = drawWidth || this.width;\n      this.image.drawHeight = drawHeight || this.height;\n      this.image.forceRGB = !!forceRGB;\n      return this.image.getBytes(length, /* forceClamped = */ true);\n    },\n  };\n  return PDFImage;\n})();\n\nexport {\n  PDFImage,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException, assert, createPromiseCapability, MissingPDFException,\n  ReadableStream, UnexpectedResponseException, UnknownErrorException\n} from './util';\n\nasync function resolveCall(fn, args, thisArg = null) {\n  if (!fn) {\n    return;\n  }\n  return fn.apply(thisArg, args);\n}\n\nfunction wrapReason(reason) {\n  if (typeof reason !== 'object') {\n    return reason;\n  }\n  switch (reason.name) {\n    case 'AbortException':\n      return new AbortException(reason.message);\n    case 'MissingPDFException':\n      return new MissingPDFException(reason.message);\n    case 'UnexpectedResponseException':\n      return new UnexpectedResponseException(reason.message, reason.status);\n    default:\n      return new UnknownErrorException(reason.message, reason.details);\n  }\n}\n\nfunction makeReasonSerializable(reason) {\n  if (!(reason instanceof Error) ||\n      reason instanceof AbortException ||\n      reason instanceof MissingPDFException ||\n      reason instanceof UnexpectedResponseException ||\n      reason instanceof UnknownErrorException) {\n    return reason;\n  }\n  return new UnknownErrorException(reason.message, reason.toString());\n}\n\nfunction resolveOrReject(capability, success, reason) {\n  if (success) {\n    capability.resolve();\n  } else {\n    capability.reject(reason);\n  }\n}\n\nfunction finalize(promise) {\n  return Promise.resolve(promise).catch(() => {});\n}\n\nfunction MessageHandler(sourceName, targetName, comObj) {\n  this.sourceName = sourceName;\n  this.targetName = targetName;\n  this.comObj = comObj;\n  this.callbackId = 1;\n  this.streamId = 1;\n  this.postMessageTransfers = true;\n  this.streamSinks = Object.create(null);\n  this.streamControllers = Object.create(null);\n  let callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n  let ah = this.actionHandler = Object.create(null);\n\n  this._onComObjOnMessage = (event) => {\n    let data = event.data;\n    if (data.targetName !== this.sourceName) {\n      return;\n    }\n    if (data.stream) {\n      this._processStreamMessage(data);\n    } else if (data.isReply) {\n      let callbackId = data.callbackId;\n      if (data.callbackId in callbacksCapabilities) {\n        let callback = callbacksCapabilities[callbackId];\n        delete callbacksCapabilities[callbackId];\n        if ('error' in data) {\n          callback.reject(wrapReason(data.error));\n        } else {\n          callback.resolve(data.data);\n        }\n      } else {\n        throw new Error(`Cannot resolve callback ${callbackId}`);\n      }\n    } else if (data.action in ah) {\n      let action = ah[data.action];\n      if (data.callbackId) {\n        let sourceName = this.sourceName;\n        let targetName = data.sourceName;\n        Promise.resolve().then(function () {\n          return action[0].call(action[1], data.data);\n        }).then((result) => {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            isReply: true,\n            callbackId: data.callbackId,\n            data: result,\n          });\n        }, (reason) => {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            isReply: true,\n            callbackId: data.callbackId,\n            error: makeReasonSerializable(reason),\n          });\n        });\n      } else if (data.streamId) {\n        this._createStreamSink(data);\n      } else {\n        action[0].call(action[1], data.data);\n      }\n    } else {\n      throw new Error(`Unknown action from worker: ${data.action}`);\n    }\n  };\n  comObj.addEventListener('message', this._onComObjOnMessage);\n}\n\nMessageHandler.prototype = {\n  on(actionName, handler, scope) {\n    var ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = [handler, scope];\n  },\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {String} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers\n   */\n  send(actionName, data, transfers) {\n    var message = {\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data,\n    };\n    this.postMessage(message, transfers);\n  },\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {String} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    var callbackId = this.callbackId++;\n    var message = {\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data,\n      callbackId,\n    };\n    var capability = createPromiseCapability();\n    this.callbacksCapabilities[callbackId] = capability;\n    try {\n      this.postMessage(message, transfers);\n    } catch (e) {\n      capability.reject(e);\n    }\n    return capability.promise;\n  },\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {String} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n   * @return {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    let streamId = this.streamId++;\n    let sourceName = this.sourceName;\n    let targetName = this.targetName;\n\n    return new ReadableStream({\n      start: (controller) => {\n        let startCapability = createPromiseCapability();\n        this.streamControllers[streamId] = {\n          controller,\n          startCall: startCapability,\n          isClosed: false,\n        };\n        this.postMessage({\n          sourceName,\n          targetName,\n          action: actionName,\n          streamId,\n          data,\n          desiredSize: controller.desiredSize,\n        });\n        // Return Promise for Async process, to signal success/failure.\n        return startCapability.promise;\n      },\n\n      pull: (controller) => {\n        let pullCapability = createPromiseCapability();\n        this.streamControllers[streamId].pullCall = pullCapability;\n        this.postMessage({\n          sourceName,\n          targetName,\n          stream: 'pull',\n          streamId,\n          desiredSize: controller.desiredSize,\n        });\n        // Returning Promise will not call \"pull\"\n        // again until current pull is resolved.\n        return pullCapability.promise;\n      },\n\n      cancel: (reason) => {\n        let cancelCapability = createPromiseCapability();\n        this.streamControllers[streamId].cancelCall = cancelCapability;\n        this.streamControllers[streamId].isClosed = true;\n        this.postMessage({\n          sourceName,\n          targetName,\n          stream: 'cancel',\n          reason,\n          streamId,\n        });\n        // Return Promise to signal success or failure.\n        return cancelCapability.promise;\n      },\n    }, queueingStrategy);\n  },\n\n  _createStreamSink(data) {\n    let self = this;\n    let action = this.actionHandler[data.action];\n    let streamId = data.streamId;\n    let desiredSize = data.desiredSize;\n    let sourceName = this.sourceName;\n    let targetName = data.sourceName;\n    let capability = createPromiseCapability();\n\n    let sendStreamRequest = ({ stream, chunk, transfers,\n                               success, reason, }) => {\n      this.postMessage({ sourceName, targetName, stream, streamId,\n                         chunk, success, reason, }, transfers);\n    };\n\n    let streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        let lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = createPromiseCapability();\n          this.ready = this.sinkCapability.promise;\n        }\n        sendStreamRequest({ stream: 'enqueue', chunk, transfers, });\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        sendStreamRequest({ stream: 'close', });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        sendStreamRequest({ stream: 'error', reason, });\n      },\n\n      sinkCapability: capability,\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    resolveCall(action[0], [data.data, streamSink], action[1]).then(() => {\n      sendStreamRequest({ stream: 'start_complete', success: true, });\n    }, (reason) => {\n      sendStreamRequest({ stream: 'start_complete', success: false, reason, });\n    });\n  },\n\n  _processStreamMessage(data) {\n    let sourceName = this.sourceName;\n    let targetName = data.sourceName;\n    let streamId = data.streamId;\n\n    let sendStreamResponse = ({ stream, success, reason, }) => {\n      this.comObj.postMessage({ sourceName, targetName, stream,\n                                success, streamId, reason, });\n    };\n\n    let deleteStreamController = () => {\n      // Delete streamController only when start, pull and\n      // cancel callbacks are resolved, to avoid \"TypeError\".\n      Promise.all([\n        this.streamControllers[data.streamId].startCall,\n        this.streamControllers[data.streamId].pullCall,\n        this.streamControllers[data.streamId].cancelCall\n      ].map(function(capability) {\n        return capability && finalize(capability.promise);\n      })).then(() => {\n        delete this.streamControllers[data.streamId];\n      });\n    };\n\n    switch (data.stream) {\n      case 'start_complete':\n        resolveOrReject(this.streamControllers[data.streamId].startCall,\n                        data.success, wrapReason(data.reason));\n        break;\n      case 'pull_complete':\n        resolveOrReject(this.streamControllers[data.streamId].pullCall,\n                        data.success, wrapReason(data.reason));\n        break;\n      case 'pull':\n        // Ignore any pull after close is called.\n        if (!this.streamSinks[data.streamId]) {\n          sendStreamResponse({ stream: 'pull_complete', success: true, });\n          break;\n        }\n        // Pull increases the desiredSize property of sink,\n        // so when it changes from negative to positive,\n        // set ready property as resolved promise.\n        if (this.streamSinks[data.streamId].desiredSize <= 0 &&\n            data.desiredSize > 0) {\n          this.streamSinks[data.streamId].sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n        resolveCall(this.streamSinks[data.streamId].onPull).then(() => {\n          sendStreamResponse({ stream: 'pull_complete', success: true, });\n        }, (reason) => {\n          sendStreamResponse({ stream: 'pull_complete',\n                               success: false, reason, });\n        });\n        break;\n      case 'enqueue':\n        assert(this.streamControllers[data.streamId],\n               'enqueue should have stream controller');\n        if (!this.streamControllers[data.streamId].isClosed) {\n          this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n        }\n        break;\n      case 'close':\n        assert(this.streamControllers[data.streamId],\n               'close should have stream controller');\n        if (this.streamControllers[data.streamId].isClosed) {\n          break;\n        }\n        this.streamControllers[data.streamId].isClosed = true;\n        this.streamControllers[data.streamId].controller.close();\n        deleteStreamController();\n        break;\n      case 'error':\n        assert(this.streamControllers[data.streamId],\n               'error should have stream controller');\n        this.streamControllers[data.streamId].controller.\n          error(wrapReason(data.reason));\n        deleteStreamController();\n        break;\n      case 'cancel_complete':\n        resolveOrReject(this.streamControllers[data.streamId].cancelCall,\n                        data.success, wrapReason(data.reason));\n        deleteStreamController();\n        break;\n      case 'cancel':\n        if (!this.streamSinks[data.streamId]) {\n          break;\n        }\n        resolveCall(this.streamSinks[data.streamId].onCancel,\n                    [wrapReason(data.reason)]).then(() => {\n          sendStreamResponse({ stream: 'cancel_complete', success: true, });\n        }, (reason) => {\n          sendStreamResponse({ stream: 'cancel_complete',\n                               success: false, reason, });\n        });\n        this.streamSinks[data.streamId].sinkCapability.\n          reject(wrapReason(data.reason));\n        this.streamSinks[data.streamId].isCancelled = true;\n        delete this.streamSinks[data.streamId];\n        break;\n      default:\n        throw new Error('Unexpected stream case');\n    }\n  },\n\n  /**\n   * Sends raw message to the comObj.\n   * @private\n   * @param {Object} message - Raw message.\n   * @param transfers List of transfers/ArrayBuffers, or undefined.\n   */\n  postMessage(message, transfers) {\n    if (transfers && this.postMessageTransfers) {\n      this.comObj.postMessage(message, transfers);\n    } else {\n      this.comObj.postMessage(message);\n    }\n  },\n\n  destroy() {\n    this.comObj.removeEventListener('message', this._onComObjOnMessage);\n  },\n};\n\nexport {\n  MessageHandler,\n};\n"],"sourceRoot":""}
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/pdfobject.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,178 @@
/*
PDFObject v1.2.20111123
https://github.com/pipwerks/PDFObject
Copyright (c) Philip Hutchison
MIT-style license: http://pipwerks.mit-license.org/*/
/*jslint browser: true, sloppy: true, white: true, plusplus: true */
/*global ActiveXObject, window */
var PDFObject = function(obj) {
    if (!obj || !obj.url) {
        return false;
    }
    var pdfobjectversion = "1.2",
    //Set reasonable defaults
    id = obj.id || "vcipdfview", width = obj.width || "100%", height = obj.height
            || "100%", pdfOpenParams = obj.pdfOpenParams, url, pluginTypeFound,
    //declare functions
    createAXO, hasReaderActiveX, hasReader, hasGeneric, pluginFound, setCssForFullWindowPdf, buildQueryString, get, embed;
    /* ----------------------------------------------------       Supporting functions       ---------------------------------------------------- */
    createAXO = function(type) {
        var ax;
        try {
            ax = new ActiveXObject(type);
        } catch (e) {
            //ensure ax remains null
            ax = null;
        }
        return ax;
    };
    //Tests specifically for Adobe Reader (aka Acrobat) in Internet Explorer
    hasReaderActiveX = function() {
        var axObj = null;
        if (window.ActiveXObject) {
            axObj = createAXO("AcroPDF.PDF");
            //If "AcroPDF.PDF" didn't work, try "PDF.PdfCtrl"
            if (!axObj) {
                axObj = createAXO("PDF.PdfCtrl");
            }
            //If either "AcroPDF.PDF" or "PDF.PdfCtrl" are found, return true
            if (axObj !== null) {
                return true;
            }
        }
        //If you got to this point, there's no ActiveXObject for PDFs
        return false;
    };
    //Tests specifically for Adobe Reader (aka Adobe Acrobat) in non-IE browsers
    hasReader = function() {
        var i, n = navigator.plugins, count = n.length, regx = /Adobe Reader|Adobe PDF|Acrobat/gi;
        for (i = 0; i < count; i++) {
            if (regx.test(n[i].name)) {
                return true;
            }
        }
        return false;
    };
    //Detects unbranded PDF support
    hasGeneric = function() {
        var plugin = navigator.mimeTypes["application/pdf"];
        return (plugin && plugin.enabledPlugin);
    };
    //Determines what kind of PDF support is available: Adobe or generic
    pluginFound = function() {
        var type = null;
        if (hasReader() || hasReaderActiveX()) {
            type = "Adobe";
        } else if (hasGeneric()) {
            type = "generic";
        }
        return type;
    };
    //If setting PDF to fill page, need to handle some CSS first
    setCssForFullWindowPdf = function() {
        var html = document.getElementsByTagName("html"), html_style, body_style;
        if (!html) {
            return false;
        }
        html_style = html[0].style;
        body_style = document.body.style;
        html_style.height = "100%";
        html_style.overflow = "hidden";
        body_style.margin = "0";
        body_style.padding = "0";
        body_style.height = "100%";
        body_style.overflow = "hidden";
    };
    //Creating a querystring for using PDF Open parameters when embedding PDF
    buildQueryString = function(pdfParams) {
        var string = "", prop;
        if (!pdfParams) {
            return string;
        }
        for (prop in pdfParams) {
            if (pdfParams.hasOwnProperty(prop)) {
                string += prop + "=";
                if (prop === "search") {
                    string += encodeURI(pdfParams[prop]);
                } else {
                    string += pdfParams[prop];
                }
                string += "&";
            }
        }
        //Remove last ampersand
        return string.slice(0, string.length - 1);
    };
    //Simple function for returning values from PDFObject
    get = function(prop) {
        var value = null;
        switch (prop) {
        case "url":
            value = url;
            break;
        case "id":
            value = id;
            break;
        case "width":
            value = width;
            break;
        case "height":
            value = height;
            break;
        case "pdfOpenParams":
            value = pdfOpenParams;
            break;
        case "pluginTypeFound":
            value = pluginTypeFound;
            break;
        case "pdfobjectversion":
            value = pdfobjectversion;
            break;
        }
        return value;
    };
    /* ----------------------------------------------------       PDF Embedding functions       ---------------------------------------------------- */
    embed = function(targetID) {
        if (!pluginTypeFound) {
            return false;
        }
        var targetNode = null;
        if (targetID) {
            //Allow users to pass an element OR an element's ID
            targetNode = (targetID.nodeType && targetID.nodeType === 1) ? targetID
                    : document.getElementById(targetID);
            //Ensure target element is found in document before continuing
            if (!targetNode) {
                return false;
            }
        } else {
            targetNode = document.body;
            setCssForFullWindowPdf();
            width = "100%";
            height = "100%";
        }
        targetNode.innerHTML = '<object data="' + url
                + '" type="application/pdf" width="' + width + '" height="'
                + height + '" id="' + id + '">';
        //targetNode.innerHTML +='<param name="_version" value="327680">';
        //targetNode.innerHTML +='<param name="_Extentx" value="2646">';
        //targetNode.innerHTML +='<param name="_Extenty" value="1323">';
        // targetNode.innerHTML +='<param name="_StockProps" value="0">';
        targetNode.innerHTML += '</object>';
        //style="margin-top:-70px;"
        return targetNode.getElementsByTagName("object")[0];
    };
    //The hash (#) prevents odd behavior in Windows
    //Append optional Adobe params for opening document
    url = encodeURI(obj.url) + "#" + buildQueryString(pdfOpenParams);
    pluginTypeFound = pluginFound();
    this.get = function(prop) {
        return get(prop);
    };
    this.embed = function(id) {
        return embed(id);
    };
    this.pdfobjectversion = pdfobjectversion;
    return this;
};
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-RKSJ-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78ms-RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/78ms-RKSJ-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/83pv-RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90ms-RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90ms-RKSJ-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90msp-RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90msp-RKSJ-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90pv-RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/90pv-RKSJ-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Add-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Add-RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Add-RKSJ-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Add-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-0.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-1.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-2.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-3.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-4.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-5.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-6.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-CNS1-UCS2.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-0.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-1.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-2.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-3.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-4.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-5.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-GB1-UCS2.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-0.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-1.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-2.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-3.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-4.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-5.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-6.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Japan1-UCS2.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Korea1-0.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Korea1-1.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Korea1-2.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Adobe-Korea1-UCS2.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/B5pc-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/B5pc-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS1-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS1-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS2-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/CNS2-V.bcmap
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
郣Copyright 1990-2009 Adobe Systems Incorporated.
All rights reserved.
See ./LICENSEáCNS2-H
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETHK-B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETHK-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETen-B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETen-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETenms-B5-H.bcmap
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
郣Copyright 1990-2009 Adobe Systems Incorporated.
All rights reserved.
See ./LICENSEá    ETen-B5-H` ^
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/ETenms-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Ext-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Ext-RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Ext-RKSJ-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Ext-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GB-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GB-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GB-H.bcmap
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
郣Copyright 1990-2009 Adobe Systems Incorporated.
All rights reserved.
See ./LICENSE!!º]aX!!]`21>    Âp z$]‚"R‚d-Uƒ7*„ 4„%+ Â„Z Â„{/…%…<9K…b1]†."‡ ‰`]‡,"]ˆ
"]ˆh"]‰F"]Š$"]‹"]‹`"]Œ>"]"]z"]ŽX"]6"]"]r"]‘P"]’."]“ "]“j"]”H"]•&"]–"]–b"]—@"]˜"]˜|"]™Z"]š8"]›"]›t"]œR"]0"]ž"]žl"]ŸJ"] ("]¡"]¡d"]¢B"]£ Â"X£~']¤W"]Â¥5"]¦"]¦q"]§O"]¨-"]© "]©i"]ªG"]«%"]¬"]¬a"]­?"]®"]®{"]¯Y"]°7"]±"]±s"]²Q"]³/"]´ "]´k"]µI"]¶'"]·"]·c"]¸A"]¹"]¹}"]º["]»9
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GB-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBK-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBK-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBK2K-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBK2K-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBKp-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBKp-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBT-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBT-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBT-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBT-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBTpc-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBTpc-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBpc-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/GBpc-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKdla-B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKdla-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKdlb-B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKdlb-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKgccs-B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKgccs-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKm314-B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKm314-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKm471-B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKm471-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKscs-B5-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/HKscs-B5-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Hankaku.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Hiragana.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-Johab-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-Johab-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCms-UHC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCms-UHC-HW-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCms-UHC-HW-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCms-UHC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCpc-EUC-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/KSCpc-EUC-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Katakana.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/LICENSE
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
%%Copyright: -----------------------------------------------------------
%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated.
%%Copyright: All rights reserved.
%%Copyright:
%%Copyright: Redistribution and use in source and binary forms, with or
%%Copyright: without modification, are permitted provided that the
%%Copyright: following conditions are met:
%%Copyright:
%%Copyright: Redistributions of source code must retain the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer.
%%Copyright:
%%Copyright: Redistributions in binary form must reproduce the above
%%Copyright: copyright notice, this list of conditions and the following
%%Copyright: disclaimer in the documentation and/or other materials
%%Copyright: provided with the distribution.
%%Copyright:
%%Copyright: Neither the name of Adobe Systems Incorporated nor the names
%%Copyright: of its contributors may be used to endorse or promote
%%Copyright: products derived from this software without specific prior
%%Copyright: written permission.
%%Copyright:
%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
%%Copyright: -----------------------------------------------------------
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/NWP-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/NWP-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/RKSJ-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/RKSJ-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/Roman.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UCS2-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UCS2-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF16-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF16-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF32-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF32-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF8-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniCNS-UTF8-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UCS2-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UCS2-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF16-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF16-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF32-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF32-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF8-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniGB-UTF8-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UCS2-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UCS2-HW-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UCS2-HW-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UCS2-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF16-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF16-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF32-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF32-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF8-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS-UTF8-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF16-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF16-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF32-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF32-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF8-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJIS2004-UTF8-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISPro-UCS2-HW-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISPro-UCS2-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISPro-UTF8-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISX0213-UTF32-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISX0213-UTF32-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISX02132004-UTF32-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniJISX02132004-UTF32-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UCS2-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UCS2-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF16-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF16-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF32-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF32-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF8-H.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/UniKS-UTF8-V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/V.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/cmaps/WP-Symbol.bcmap
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/compressed.tracemonkey-pldi-09.pdf
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/debugger.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,619 @@
/* Copyright 2012 Mozilla Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* eslint-disable no-var */
'use strict';
var FontInspector = (function FontInspectorClosure() {
  var fonts, createObjectURL;
  var active = false;
  var fontAttribute = 'data-font-name';
  function removeSelection() {
    var divs = document.querySelectorAll('div[' + fontAttribute + ']');
    for (var i = 0, ii = divs.length; i < ii; ++i) {
      var div = divs[i];
      div.className = '';
    }
  }
  function resetSelection() {
    var divs = document.querySelectorAll('div[' + fontAttribute + ']');
    for (var i = 0, ii = divs.length; i < ii; ++i) {
      var div = divs[i];
      div.className = 'debuggerHideText';
    }
  }
  function selectFont(fontName, show) {
    var divs = document.querySelectorAll('div[' + fontAttribute + '=' +
                                         fontName + ']');
    for (var i = 0, ii = divs.length; i < ii; ++i) {
      var div = divs[i];
      div.className = show ? 'debuggerShowText' : 'debuggerHideText';
    }
  }
  function textLayerClick(e) {
    if (!e.target.dataset.fontName ||
        e.target.tagName.toUpperCase() !== 'DIV') {
      return;
    }
    var fontName = e.target.dataset.fontName;
    var selects = document.getElementsByTagName('input');
    for (var i = 0; i < selects.length; ++i) {
      var select = selects[i];
      if (select.dataset.fontName !== fontName) {
        continue;
      }
      select.checked = !select.checked;
      selectFont(fontName, select.checked);
      select.scrollIntoView();
    }
  }
  return {
    // Properties/functions needed by PDFBug.
    id: 'FontInspector',
    name: 'Font Inspector',
    panel: null,
    manager: null,
    init: function init(pdfjsLib) {
      var panel = this.panel;
      panel.setAttribute('style', 'padding: 5px;');
      var tmp = document.createElement('button');
      tmp.addEventListener('click', resetSelection);
      tmp.textContent = 'Refresh';
      panel.appendChild(tmp);
      fonts = document.createElement('div');
      panel.appendChild(fonts);
      createObjectURL = pdfjsLib.createObjectURL;
    },
    cleanup: function cleanup() {
      fonts.textContent = '';
    },
    enabled: false,
    get active() {
      return active;
    },
    set active(value) {
      active = value;
      if (active) {
        document.body.addEventListener('click', textLayerClick, true);
        resetSelection();
      } else {
        document.body.removeEventListener('click', textLayerClick, true);
        removeSelection();
      }
    },
    // FontInspector specific functions.
    fontAdded: function fontAdded(fontObj, url) {
      function properties(obj, list) {
        var moreInfo = document.createElement('table');
        for (var i = 0; i < list.length; i++) {
          var tr = document.createElement('tr');
          var td1 = document.createElement('td');
          td1.textContent = list[i];
          tr.appendChild(td1);
          var td2 = document.createElement('td');
          td2.textContent = obj[list[i]].toString();
          tr.appendChild(td2);
          moreInfo.appendChild(tr);
        }
        return moreInfo;
      }
      var moreInfo = properties(fontObj, ['name', 'type']);
      var fontName = fontObj.loadedName;
      var font = document.createElement('div');
      var name = document.createElement('span');
      name.textContent = fontName;
      var download = document.createElement('a');
      if (url) {
        url = /url\(['"]?([^\)"']+)/.exec(url);
        download.href = url[1];
      } else if (fontObj.data) {
        download.href = createObjectURL(fontObj.data, fontObj.mimeType);
      }
      download.textContent = 'Download';
      var logIt = document.createElement('a');
      logIt.href = '';
      logIt.textContent = 'Log';
      logIt.addEventListener('click', function(event) {
        event.preventDefault();
        console.log(fontObj);
      });
      var select = document.createElement('input');
      select.setAttribute('type', 'checkbox');
      select.dataset.fontName = fontName;
      select.addEventListener('click', (function(select, fontName) {
        return (function() {
           selectFont(fontName, select.checked);
        });
      })(select, fontName));
      font.appendChild(select);
      font.appendChild(name);
      font.appendChild(document.createTextNode(' '));
      font.appendChild(download);
      font.appendChild(document.createTextNode(' '));
      font.appendChild(logIt);
      font.appendChild(moreInfo);
      fonts.appendChild(font);
      // Somewhat of a hack, should probably add a hook for when the text layer
      // is done rendering.
      setTimeout(() => {
        if (this.active) {
          resetSelection();
        }
      }, 2000);
    },
  };
})();
var opMap;
// Manages all the page steppers.
var StepperManager = (function StepperManagerClosure() {
  var steppers = [];
  var stepperDiv = null;
  var stepperControls = null;
  var stepperChooser = null;
  var breakPoints = Object.create(null);
  return {
    // Properties/functions needed by PDFBug.
    id: 'Stepper',
    name: 'Stepper',
    panel: null,
    manager: null,
    init: function init(pdfjsLib) {
      var self = this;
      this.panel.setAttribute('style', 'padding: 5px;');
      stepperControls = document.createElement('div');
      stepperChooser = document.createElement('select');
      stepperChooser.addEventListener('change', function(event) {
        self.selectStepper(this.value);
      });
      stepperControls.appendChild(stepperChooser);
      stepperDiv = document.createElement('div');
      this.panel.appendChild(stepperControls);
      this.panel.appendChild(stepperDiv);
      if (sessionStorage.getItem('pdfjsBreakPoints')) {
        breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints'));
      }
      opMap = Object.create(null);
      for (var key in pdfjsLib.OPS) {
        opMap[pdfjsLib.OPS[key]] = key;
      }
    },
    cleanup: function cleanup() {
      stepperChooser.textContent = '';
      stepperDiv.textContent = '';
      steppers = [];
    },
    enabled: false,
    active: false,
    // Stepper specific functions.
    create: function create(pageIndex) {
      var debug = document.createElement('div');
      debug.id = 'stepper' + pageIndex;
      debug.setAttribute('hidden', true);
      debug.className = 'stepper';
      stepperDiv.appendChild(debug);
      var b = document.createElement('option');
      b.textContent = 'Page ' + (pageIndex + 1);
      b.value = pageIndex;
      stepperChooser.appendChild(b);
      var initBreakPoints = breakPoints[pageIndex] || [];
      var stepper = new Stepper(debug, pageIndex, initBreakPoints);
      steppers.push(stepper);
      if (steppers.length === 1) {
        this.selectStepper(pageIndex, false);
      }
      return stepper;
    },
    selectStepper: function selectStepper(pageIndex, selectPanel) {
      var i;
      pageIndex = pageIndex | 0;
      if (selectPanel) {
        this.manager.selectPanel(this);
      }
      for (i = 0; i < steppers.length; ++i) {
        var stepper = steppers[i];
        if (stepper.pageIndex === pageIndex) {
          stepper.panel.removeAttribute('hidden');
        } else {
          stepper.panel.setAttribute('hidden', true);
        }
      }
      var options = stepperChooser.options;
      for (i = 0; i < options.length; ++i) {
        var option = options[i];
        option.selected = (option.value | 0) === pageIndex;
      }
    },
    saveBreakPoints: function saveBreakPoints(pageIndex, bps) {
      breakPoints[pageIndex] = bps;
      sessionStorage.setItem('pdfjsBreakPoints', JSON.stringify(breakPoints));
    },
  };
})();
// The stepper for each page's IRQueue.
var Stepper = (function StepperClosure() {
  // Shorter way to create element and optionally set textContent.
  function c(tag, textContent) {
    var d = document.createElement(tag);
    if (textContent) {
      d.textContent = textContent;
    }
    return d;
  }
  function simplifyArgs(args) {
    if (typeof args === 'string') {
      var MAX_STRING_LENGTH = 75;
      return args.length <= MAX_STRING_LENGTH ? args :
        args.substring(0, MAX_STRING_LENGTH) + '...';
    }
    if (typeof args !== 'object' || args === null) {
      return args;
    }
    if ('length' in args) { // array
      var simpleArgs = [], i, ii;
      var MAX_ITEMS = 10;
      for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) {
        simpleArgs.push(simplifyArgs(args[i]));
      }
      if (i < args.length) {
        simpleArgs.push('...');
      }
      return simpleArgs;
    }
    var simpleObj = {};
    for (var key in args) {
      simpleObj[key] = simplifyArgs(args[key]);
    }
    return simpleObj;
  }
  function Stepper(panel, pageIndex, initialBreakPoints) {
    this.panel = panel;
    this.breakPoint = 0;
    this.nextBreakPoint = null;
    this.pageIndex = pageIndex;
    this.breakPoints = initialBreakPoints;
    this.currentIdx = -1;
    this.operatorListIdx = 0;
  }
  Stepper.prototype = {
    init: function init(operatorList) {
      var panel = this.panel;
      var content = c('div', 'c=continue, s=step');
      var table = c('table');
      content.appendChild(table);
      table.cellSpacing = 0;
      var headerRow = c('tr');
      table.appendChild(headerRow);
      headerRow.appendChild(c('th', 'Break'));
      headerRow.appendChild(c('th', 'Idx'));
      headerRow.appendChild(c('th', 'fn'));
      headerRow.appendChild(c('th', 'args'));
      panel.appendChild(content);
      this.table = table;
      this.updateOperatorList(operatorList);
    },
    updateOperatorList: function updateOperatorList(operatorList) {
      var self = this;
      function cboxOnClick() {
        var x = +this.dataset.idx;
        if (this.checked) {
          self.breakPoints.push(x);
        } else {
          self.breakPoints.splice(self.breakPoints.indexOf(x), 1);
        }
        StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints);
      }
      var MAX_OPERATORS_COUNT = 15000;
      if (this.operatorListIdx > MAX_OPERATORS_COUNT) {
        return;
      }
      var chunk = document.createDocumentFragment();
      var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT,
                                        operatorList.fnArray.length);
      for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) {
        var line = c('tr');
        line.className = 'line';
        line.dataset.idx = i;
        chunk.appendChild(line);
        var checked = this.breakPoints.includes(i);
        var args = operatorList.argsArray[i] || [];
        var breakCell = c('td');
        var cbox = c('input');
        cbox.type = 'checkbox';
        cbox.className = 'points';
        cbox.checked = checked;
        cbox.dataset.idx = i;
        cbox.onclick = cboxOnClick;
        breakCell.appendChild(cbox);
        line.appendChild(breakCell);
        line.appendChild(c('td', i.toString()));
        var fn = opMap[operatorList.fnArray[i]];
        var decArgs = args;
        if (fn === 'showText') {
          var glyphs = args[0];
          var newArgs = [];
          var str = [];
          for (var j = 0; j < glyphs.length; j++) {
            var glyph = glyphs[j];
            if (typeof glyph === 'object' && glyph !== null) {
              str.push(glyph.fontChar);
            } else {
              if (str.length > 0) {
                newArgs.push(str.join(''));
                str = [];
              }
              newArgs.push(glyph); // null or number
            }
          }
          if (str.length > 0) {
            newArgs.push(str.join(''));
          }
          decArgs = [newArgs];
        }
        line.appendChild(c('td', fn));
        line.appendChild(c('td', JSON.stringify(simplifyArgs(decArgs))));
      }
      if (operatorsToDisplay < operatorList.fnArray.length) {
        line = c('tr');
        var lastCell = c('td', '...');
        lastCell.colspan = 4;
        chunk.appendChild(lastCell);
      }
      this.operatorListIdx = operatorList.fnArray.length;
      this.table.appendChild(chunk);
    },
    getNextBreakPoint: function getNextBreakPoint() {
      this.breakPoints.sort(function(a, b) {
        return a - b;
      });
      for (var i = 0; i < this.breakPoints.length; i++) {
        if (this.breakPoints[i] > this.currentIdx) {
          return this.breakPoints[i];
        }
      }
      return null;
    },
    breakIt: function breakIt(idx, callback) {
      StepperManager.selectStepper(this.pageIndex, true);
      var self = this;
      var dom = document;
      self.currentIdx = idx;
      var listener = function(e) {
        switch (e.keyCode) {
          case 83: // step
            dom.removeEventListener('keydown', listener);
            self.nextBreakPoint = self.currentIdx + 1;
            self.goTo(-1);
            callback();
            break;
          case 67: // continue
            dom.removeEventListener('keydown', listener);
            var breakPoint = self.getNextBreakPoint();
            self.nextBreakPoint = breakPoint;
            self.goTo(-1);
            callback();
            break;
        }
      };
      dom.addEventListener('keydown', listener);
      self.goTo(idx);
    },
    goTo: function goTo(idx) {
      var allRows = this.panel.getElementsByClassName('line');
      for (var x = 0, xx = allRows.length; x < xx; ++x) {
        var row = allRows[x];
        if ((row.dataset.idx | 0) === idx) {
          row.style.backgroundColor = 'rgb(251,250,207)';
          row.scrollIntoView();
        } else {
          row.style.backgroundColor = null;
        }
      }
    },
  };
  return Stepper;
})();
var Stats = (function Stats() {
  var stats = [];
  function clear(node) {
    while (node.hasChildNodes()) {
      node.removeChild(node.lastChild);
    }
  }
  function getStatIndex(pageNumber) {
    for (var i = 0, ii = stats.length; i < ii; ++i) {
      if (stats[i].pageNumber === pageNumber) {
        return i;
      }
    }
    return false;
  }
  return {
    // Properties/functions needed by PDFBug.
    id: 'Stats',
    name: 'Stats',
    panel: null,
    manager: null,
    init(pdfjsLib) {
      this.panel.setAttribute('style', 'padding: 5px;');
    },
    enabled: false,
    active: false,
    // Stats specific functions.
    add(pageNumber, stat) {
      if (!stat) {
        return;
      }
      var statsIndex = getStatIndex(pageNumber);
      if (statsIndex !== false) {
        var b = stats[statsIndex];
        this.panel.removeChild(b.div);
        stats.splice(statsIndex, 1);
      }
      var wrapper = document.createElement('div');
      wrapper.className = 'stats';
      var title = document.createElement('div');
      title.className = 'title';
      title.textContent = 'Page: ' + pageNumber;
      var statsDiv = document.createElement('div');
      statsDiv.textContent = stat.toString();
      wrapper.appendChild(title);
      wrapper.appendChild(statsDiv);
      stats.push({ pageNumber, div: wrapper, });
      stats.sort(function(a, b) {
        return a.pageNumber - b.pageNumber;
      });
      clear(this.panel);
      for (var i = 0, ii = stats.length; i < ii; ++i) {
        this.panel.appendChild(stats[i].div);
      }
    },
    cleanup() {
      stats = [];
      clear(this.panel);
    },
  };
})();
// Manages all the debugging tools.
window.PDFBug = (function PDFBugClosure() {
  var panelWidth = 300;
  var buttons = [];
  var activePanel = null;
  return {
    tools: [
      FontInspector,
      StepperManager,
      Stats
    ],
    enable(ids) {
      var all = false, tools = this.tools;
      if (ids.length === 1 && ids[0] === 'all') {
        all = true;
      }
      for (var i = 0; i < tools.length; ++i) {
        var tool = tools[i];
        if (all || ids.includes(tool.id)) {
          tool.enabled = true;
        }
      }
      if (!all) {
        // Sort the tools by the order they are enabled.
        tools.sort(function(a, b) {
          var indexA = ids.indexOf(a.id);
          indexA = indexA < 0 ? tools.length : indexA;
          var indexB = ids.indexOf(b.id);
          indexB = indexB < 0 ? tools.length : indexB;
          return indexA - indexB;
        });
      }
    },
    init(pdfjsLib, container) {
      /*
       * Basic Layout:
       * PDFBug
       *  Controls
       *  Panels
       *    Panel
       *    Panel
       *    ...
       */
      var ui = document.createElement('div');
      ui.id = 'PDFBug';
      var controls = document.createElement('div');
      controls.setAttribute('class', 'controls');
      ui.appendChild(controls);
      var panels = document.createElement('div');
      panels.setAttribute('class', 'panels');
      ui.appendChild(panels);
      container.appendChild(ui);
      container.style.right = panelWidth + 'px';
      // Initialize all the debugging tools.
      var tools = this.tools;
      var self = this;
      for (var i = 0; i < tools.length; ++i) {
        var tool = tools[i];
        var panel = document.createElement('div');
        var panelButton = document.createElement('button');
        panelButton.textContent = tool.name;
        panelButton.addEventListener('click', (function(selected) {
          return function(event) {
            event.preventDefault();
            self.selectPanel(selected);
          };
        })(i));
        controls.appendChild(panelButton);
        panels.appendChild(panel);
        tool.panel = panel;
        tool.manager = this;
        if (tool.enabled) {
          tool.init(pdfjsLib);
        } else {
          panel.textContent = tool.name + ' is disabled. To enable add ' +
                              ' "' + tool.id + '" to the pdfBug parameter ' +
                              'and refresh (separate multiple by commas).';
        }
        buttons.push(panelButton);
      }
      this.selectPanel(0);
    },
    cleanup() {
      for (var i = 0, ii = this.tools.length; i < ii; i++) {
        if (this.tools[i].enabled) {
          this.tools[i].cleanup();
        }
      }
    },
    selectPanel(index) {
      if (typeof index !== 'number') {
        index = this.tools.indexOf(index);
      }
      if (index === activePanel) {
        return;
      }
      activePanel = index;
      var tools = this.tools;
      for (var j = 0; j < tools.length; ++j) {
        if (j === index) {
          buttons[j].setAttribute('class', 'active');
          tools[j].active = true;
          tools[j].panel.removeAttribute('hidden');
        } else {
          buttons[j].setAttribute('class', '');
          tools[j].active = false;
          tools[j].panel.setAttribute('hidden', 'true');
        }
      }
    },
  };
})();
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-check.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="40"
   height="40"
   viewBox="0 0 40 40">
  <path
     d="M 1.5006714,23.536225 6.8925879,18.994244 14.585721,26.037937 34.019683,4.5410479 38.499329,9.2235032 14.585721,35.458952 z"
     id="path4"
     style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.25402856;stroke-opacity:1" />
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-comment.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   height="40"
   width="40"
   viewBox="0 0 40 40">
  <rect
     style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
     width="33.76017"
     height="33.76017"
     x="3.119915"
     y="3.119915" />
  <path
     d="m 20.677967,8.54499 c -7.342801,0 -13.295293,4.954293 -13.295293,11.065751 0,2.088793 0.3647173,3.484376 1.575539,5.150563 L 6.0267418,31.45501 13.560595,29.011117 c 2.221262,1.387962 4.125932,1.665377 7.117372,1.665377 7.3428,0 13.295291,-4.954295 13.295291,-11.065753 0,-6.111458 -5.952491,-11.065751 -13.295291,-11.065751 z"
     style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.93031836;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"/>
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-help.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="40"
   height="40"
   viewBox="0 0 40 40">
  <g
     transform="translate(0,-60)"
     id="layer1">
    <rect
       width="36.460953"
       height="34.805603"
       x="1.7695236"
       y="62.597198"
       style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.30826771;stroke-opacity:1" />
    <g
       transform="matrix(0.88763677,0,0,0.88763677,2.2472646,8.9890584)">
      <path
         d="M 20,64.526342 C 11.454135,64.526342 4.5263421,71.454135 4.5263421,80 4.5263421,88.545865 11.454135,95.473658 20,95.473658 28.545865,95.473658 35.473658,88.545865 35.473658,80 35.473658,71.454135 28.545865,64.526342 20,64.526342 z m -0.408738,9.488564 c 3.527079,0 6.393832,2.84061 6.393832,6.335441 0,3.494831 -2.866753,6.335441 -6.393832,6.335441 -3.527079,0 -6.393832,-2.84061 -6.393832,-6.335441 0,-3.494831 2.866753,-6.335441 6.393832,-6.335441 z"
         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.02768445;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
      <path
         d="m 7.2335209,71.819938 4.9702591,4.161823 c -1.679956,2.581606 -1.443939,6.069592 0.159325,8.677725 l -5.1263071,3.424463 c 0.67516,1.231452 3.0166401,3.547686 4.2331971,4.194757 l 3.907728,-4.567277 c 2.541952,1.45975 5.730694,1.392161 8.438683,-0.12614 l 3.469517,6.108336 c 1.129779,-0.44367 4.742234,-3.449633 5.416358,-5.003859 l -5.46204,-4.415541 c 1.44319,-2.424098 1.651175,-5.267515 0.557303,-7.748623 l 5.903195,-3.833951 C 33.14257,71.704996 30.616217,69.018606 29.02952,67.99296 l -4.118813,4.981678 C 22.411934,71.205099 18.900853,70.937534 16.041319,72.32916 l -3.595408,-5.322091 c -1.345962,0.579488 -4.1293881,2.921233 -5.2123901,4.812869 z m 8.1010311,3.426672 c 2.75284,-2.446266 6.769149,-2.144694 9.048998,0.420874 2.279848,2.56557 2.113919,6.596919 -0.638924,9.043185 -2.752841,2.446267 -6.775754,2.13726 -9.055604,-0.428308 -2.279851,-2.565568 -2.107313,-6.589485 0.64553,-9.035751 z"
         style="fill:#000000;fill-opacity:1;stroke:none" />
    </g>
  </g>
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-insert.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="64"
   height="64"
   viewBox="0 0 64 64">
  <path
     d="M 32.003143,1.4044602 57.432701,62.632577 6.5672991,62.627924 z"
     style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:1.00493038;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-key.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="64"
   height="64"
   viewBox="0 0 64 64">
  <path
     d="M 25.470843,9.4933766 C 25.30219,12.141818 30.139101,14.445969 34.704831,13.529144 40.62635,12.541995 41.398833,7.3856498 35.97505,5.777863 31.400921,4.1549155 25.157674,6.5445892 25.470843,9.4933766 z M 4.5246282,17.652051 C 4.068249,11.832873 9.2742983,5.9270407 18.437379,3.0977088 29.751911,-0.87185184 45.495663,1.4008022 53.603953,7.1104009 c 9.275765,6.1889221 7.158128,16.2079421 -3.171076,21.5939521 -1.784316,1.635815 -6.380222,1.21421 -7.068351,3.186186 -1.04003,0.972427 -1.288046,2.050158 -1.232864,3.168203 1.015111,2.000108 -3.831548,1.633216 -3.270553,3.759574 0.589477,5.264544 -0.179276,10.53738 -0.362842,15.806257 -0.492006,2.184998 1.163456,4.574232 -0.734888,6.610642 -2.482919,2.325184 -7.30604,2.189143 -9.193497,-0.274767 -2.733688,-1.740626 -8.254447,-3.615254 -6.104247,-6.339626 3.468112,-1.708686 -2.116197,-3.449897 0.431242,-5.080274 5.058402,-1.39256 -2.393215,-2.304318 -0.146889,-4.334645 3.069198,-0.977415 2.056986,-2.518352 -0.219121,-3.540397 1.876567,-1.807151 1.484149,-4.868919 -2.565455,-5.942205 0.150866,-1.805474 2.905737,-4.136876 -1.679967,-5.20493 C 10.260902,27.882167 4.6872697,22.95045 4.5245945,17.652051 z"
     id="path604"
     style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1.72665179;stroke-opacity:1" />
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-newparagraph.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="64"
   height="64"
   viewBox="0 0 64 64">
  <path
     d="M 32.003143,10.913072 57.432701,53.086929 6.567299,53.083723 z"
     id="path2985"
     style="fill:#ffff00;fill-opacity:0.94117647;fill-rule:nonzero;stroke:#000000;stroke-width:0.83403099;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-noicon.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="40"
   height="40"
   viewBox="0 0 40 40">
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-note.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="40"
   height="40"
   viewBox="0 0 40 40">
  <rect
     width="36.075428"
     height="31.096582"
     x="1.962286"
     y="4.4517088"
     id="rect4"
     style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.23004246;stroke-opacity:1" />
  <rect
     width="27.96859"
     height="1.5012145"
     x="6.0157046"
     y="10.285"
     id="rect6"
     style="fill:#000000;fill-opacity:1;stroke:none" />
  <rect
     width="27.96859"
     height="0.85783684"
     x="6.0157056"
     y="23.21689"
     id="rect8"
     style="fill:#000000;fill-opacity:1;stroke:none" />
  <rect
     width="27.96859"
     height="0.85783684"
     x="5.8130345"
     y="28.964394"
     id="rect10"
     style="fill:#000000;fill-opacity:1;stroke:none" />
  <rect
     width="27.96859"
     height="0.85783684"
     x="6.0157046"
     y="17.426493"
     id="rect12"
     style="fill:#000000;fill-opacity:1;stroke:none" />
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/annotation-paragraph.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   width="40"
   height="40"
   viewBox="0 0 40 40">
  <rect
     width="33.76017"
     height="33.76017"
     x="3.119915"
     y="3.119915"
     style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
  <path
     d="m 17.692678,34.50206 0,-16.182224 c -1.930515,-0.103225 -3.455824,-0.730383 -4.57593,-1.881473 -1.12011,-1.151067 -1.680164,-2.619596 -1.680164,-4.405591 0,-1.992435 0.621995,-3.5796849 1.865988,-4.7617553 1.243989,-1.1820288 3.06352,-1.7730536 5.458598,-1.7730764 l 9.802246,0 0,2.6789711 -2.229895,0 0,26.3251486 -2.632515,0 0,-26.3251486 -3.45324,0 0,26.3251486 z"
     style="font-size:29.42051125px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.07795751;stroke-opacity:1;font-family:Arial;-inkscape-font-specification:Arial" />
</svg>
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-next-rtl.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-next-rtl@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-next.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-next@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-previous-rtl.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-previous-rtl@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-previous.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/findbarButton-previous@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/grab.cur
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/grabbing.cur
Binary files differ
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/loading-icon.gif
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/loading-small.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/loading-small@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-documentProperties.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-documentProperties@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-firstPage.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-firstPage@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-handTool.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-handTool@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-lastPage.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-lastPage@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-rotateCcw.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-rotateCcw@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-rotateCw.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-rotateCw@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollHorizontal.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollHorizontal@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollVertical.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollVertical@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollWrapped.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-scrollWrapped@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-selectTool.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-selectTool@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadEven.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadEven@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadNone.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadNone@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadOdd.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/secondaryToolbarButton-spreadOdd@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/shadow.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/texture.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-bookmark.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-bookmark@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-download.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-download@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-menuArrows.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-menuArrows@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-openFile.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-openFile@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageDown-rtl.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageDown-rtl@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageDown.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageDown@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageUp-rtl.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageUp-rtl@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageUp.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-pageUp@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-presentationMode.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-presentationMode@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-print.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-print@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-search.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-search@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-secondaryToolbarToggle-rtl.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-secondaryToolbarToggle.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-secondaryToolbarToggle@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-sidebarToggle-rtl.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-sidebarToggle-rtl@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-sidebarToggle.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-sidebarToggle@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewAttachments.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewAttachments@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewOutline-rtl.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewOutline-rtl@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewOutline.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewOutline@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewThumbnail.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-viewThumbnail@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-zoomIn.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-zoomIn@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-zoomOut.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/toolbarButton-zoomOut@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-collapsed-rtl.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-collapsed-rtl@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-collapsed.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-collapsed@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-expanded.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/images/treeitem-expanded@2x.png
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ach/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,207 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Pot buk mukato
previous_label=Mukato
next.title=Pot buk malubo
next_label=Malubo
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Pot buk
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=pi {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} me {{pagesCount}})
zoom_out.title=Jwik Matidi
zoom_out_label=Jwik Matidi
zoom_in.title=Kwot Madit
zoom_in_label=Kwot Madit
zoom.title=Kwoti
presentation_mode.title=Lokke i kit me tyer
presentation_mode_label=Kit me tyer
open_file.title=Yab Pwail
open_file_label=Yab
print.title=Go
print_label=Go
download.title=Gam
download_label=Gam
bookmark.title=Neno ma kombedi (lok onyo yab i dirica manyen)
bookmark_label=Neno ma kombedi
# Secondary toolbar and context menu
tools.title=Gintic
tools_label=Gintic
first_page.title=Cit i pot buk mukwongo
first_page.label=Cit i pot buk mukwongo
first_page_label=Cit i pot buk mukwongo
last_page.title=Cit i pot buk magiko
last_page.label=Cit i pot buk magiko
last_page_label=Cit i pot buk magiko
page_rotate_cw.title=Wire i tung lacuc
page_rotate_cw.label=Wire i tung lacuc
page_rotate_cw_label=Wire i tung lacuc
page_rotate_ccw.title=Wire i tung lacam
page_rotate_ccw.label=Wire i tung lacam
page_rotate_ccw_label=Wire i tung lacam
cursor_text_select_tool.title=Cak gitic me yero coc
cursor_text_select_tool_label=Gitic me yero coc
cursor_hand_tool.title=Cak gitic me cing
cursor_hand_tool_label=Gitic cing
# Document properties dialog box
document_properties.title=Jami me gin acoya…
document_properties_label=Jami me gin acoya…
document_properties_file_name=Nying pwail:
document_properties_file_size=Dit pa pwail:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Wiye:
document_properties_author=Ngat mucoyo:
document_properties_subject=Subjek:
document_properties_keywords=Lok mapire tek:
document_properties_creation_date=Nino dwe me cwec:
document_properties_modification_date=Nino dwe me yub:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Lacwec:
document_properties_producer=Layub PDF:
document_properties_version=Kit PDF:
document_properties_page_count=Kwan me pot buk:
document_properties_page_size=Dit pa potbuk:
document_properties_page_size_unit_inches=i
document_properties_page_size_unit_millimeters=mm
document_properties_page_size_orientation_portrait=atir
document_properties_page_size_orientation_landscape=arii
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Waraga
document_properties_page_size_name_legal=Cik
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} Ã— {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}} Ã— {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized_yes=Eyo
document_properties_linearized_no=Pe
document_properties_close=Lor
print_progress_message=Yubo coc me agoya…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Juki
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Lok gintic ma inget
toggle_sidebar_notification.title=Lok lanyut me nget (wiyewiye tye i gin acoya/attachments)
toggle_sidebar_label=Lok gintic ma inget
document_outline.title=Nyut Wiyewiye me Gin acoya (dii-kiryo me yaro/kano jami weng)
document_outline_label=Pek pa gin acoya
attachments.title=Nyut twec
attachments_label=Twec
thumbs.title=Nyut cal
thumbs_label=Cal
findbar.title=Nong iye gin acoya
findbar_label=Nong
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Pot buk {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Cal me pot buk {{page}}
# Find panel button title and messages
find_input.title=Nong
find_input.placeholder=Nong i dokumen…
find_previous.title=Nong timme pa lok mukato
find_previous_label=Mukato
find_next.title=Nong timme pa lok malubo
find_next_label=Malubo
find_highlight=Wer weng
find_match_case_label=Lok marwate
find_reached_top=Oo iwi gin acoya, omede ki i tere
find_reached_bottom=Oo i agiki me gin acoya, omede ki iwiye
find_not_found=Lok pe ononge
# Error panel labels
error_more_info=Ngec Mukene
error_less_info=Ngec Manok
error_close=Lor
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Kwena: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Can kikore {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Pwail: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Rek: {{line}}
rendering_error=Bal otime i kare me nyuto pot buk.
# Predefined zoom values
page_scale_width=Lac me iye pot buk
page_scale_fit=Porre me pot buk
page_scale_auto=Kwot pire kene
page_scale_actual=Dite kikome
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Bal
loading_error=Bal otime kun cano PDF.
invalid_file_error=Pwail me PDF ma pe atir onyo obale woko.
missing_file_error=Pwail me PDF tye ka rem.
unexpected_response_error=Lagam mape kigeno pa lapok tic.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Lok angea manok]
password_label=Ket mung me donyo me yabo pwail me PDF man.
password_invalid=Mung me donyo pe atir. Tim ber i tem doki.
password_ok=OK
password_cancel=Juki
printing_not_supported=Ciko: Layeny ma pe teno goyo liweng.
printing_not_ready=Ciko: PDF pe ocane weng me agoya.
web_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine.
document_colors_not_allowed=Pe ki yee ki gin acoya me PDF me tic ki rangi gi kengi: Kijuko woko â€œYee pot buk me yero rangi mamegi kengi” ki i layeny.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/af/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,184 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Vorige bladsy
previous_label=Vorige
next.title=Volgende bladsy
next_label=Volgende
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Bladsy
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=van {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} van {{pagesCount}})
zoom_out.title=Zoem uit
zoom_out_label=Zoem uit
zoom_in.title=Zoem in
zoom_in_label=Zoem in
zoom.title=Zoem
presentation_mode.title=Wissel na voorleggingsmodus
presentation_mode_label=Voorleggingsmodus
open_file.title=Open lêer
open_file_label=Open
print.title=Druk
print_label=Druk
download.title=Laai af
download_label=Laai af
bookmark.title=Huidige aansig (kopieer of open in nuwe venster)
bookmark_label=Huidige aansig
# Secondary toolbar and context menu
tools.title=Nutsgoed
tools_label=Nutsgoed
first_page.title=Gaan na eerste bladsy
first_page.label=Gaan na eerste bladsy
first_page_label=Gaan na eerste bladsy
last_page.title=Gaan na laaste bladsy
last_page.label=Gaan na laaste bladsy
last_page_label=Gaan na laaste bladsy
page_rotate_cw.title=Roteer kloksgewys
page_rotate_cw.label=Roteer kloksgewys
page_rotate_cw_label=Roteer kloksgewys
page_rotate_ccw.title=Roteer anti-kloksgewys
page_rotate_ccw.label=Roteer anti-kloksgewys
page_rotate_ccw_label=Roteer anti-kloksgewys
cursor_text_select_tool.title=Aktiveer gereedskap om teks te merk
cursor_text_select_tool_label=Teksmerkgereedskap
cursor_hand_tool.title=Aktiveer handjie
cursor_hand_tool_label=Handjie
# Document properties dialog box
document_properties.title=Dokumenteienskappe…
document_properties_label=Dokumenteienskappe…
document_properties_file_name=Lêernaam:
document_properties_file_size=Lêergrootte:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} kG ({{size_b}} grepe)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MG ({{size_b}} grepe)
document_properties_title=Titel:
document_properties_author=Outeur:
document_properties_subject=Onderwerp:
document_properties_keywords=Sleutelwoorde:
document_properties_creation_date=Skeppingsdatum:
document_properties_modification_date=Wysigingsdatum:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Skepper:
document_properties_producer=PDF-vervaardiger:
document_properties_version=PDF-weergawe:
document_properties_page_count=Aantal bladsye:
document_properties_close=Sluit
print_progress_message=Berei tans dokument voor om te druk…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Kanselleer
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Sypaneel aan/af
toggle_sidebar_notification.title=Sypaneel aan/af (dokument bevat skema/aanhegsels)
toggle_sidebar_label=Sypaneel aan/af
document_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou)
document_outline_label=Dokumentoorsig
attachments.title=Wys aanhegsels
attachments_label=Aanhegsels
thumbs.title=Wys duimnaels
thumbs_label=Duimnaels
findbar.title=Soek in dokument
findbar_label=Vind
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Bladsy {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Duimnael van bladsy {{page}}
# Find panel button title and messages
find_input.title=Vind
find_input.placeholder=Soek in dokument…
find_previous.title=Vind die vorige voorkoms van die frase
find_previous_label=Vorige
find_next.title=Vind die volgende voorkoms van die frase
find_next_label=Volgende
find_highlight=Verlig almal
find_match_case_label=Kassensitief
find_reached_top=Bokant van dokument is bereik; gaan voort van onder af
find_reached_bottom=Einde van dokument is bereik; gaan voort van bo af
find_not_found=Frase nie gevind nie
# Error panel labels
error_more_info=Meer inligting
error_less_info=Minder inligting
error_close=Sluit
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (ID: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Boodskap: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stapel: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Lêer: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Lyn: {{line}}
rendering_error='n Fout het voorgekom toe die bladsy weergegee is.
# Predefined zoom values
page_scale_width=Bladsywydte
page_scale_fit=Pas bladsy
page_scale_auto=Outomatiese zoem
page_scale_actual=Werklike grootte
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Fout
loading_error='n Fout het voorgekom met die laai van die PDF.
invalid_file_error=Ongeldige of korrupte PDF-lêer.
missing_file_error=PDF-lêer is weg.
unexpected_response_error=Onverwagse antwoord van bediener.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}}-annotasie]
password_label=Gee die wagwoord om dié PDF-lêer mee te open.
password_invalid=Ongeldige wagwoord. Probeer gerus weer.
password_ok=OK
password_cancel=Kanselleer
printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie.
printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie.
web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie.
document_colors_not_allowed=PDF-dokumente word nie toegelaat om hul eie kleure te gebruik nie: â€œLaat bladsye toe om hul eie kleure te kies” is gedeaktiveer in die blaaier.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ak/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Krataafa baako a etwa mu
previous_label=Ekyiri-baako
next.title=Krataafa a edi so baako
next_label=Dea-ɛ-di-so-baako
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
zoom_out.title=Zuum pue
zoom_out_label=Zuum ba abɔnten
zoom_in.title=Zuum kɔ mu
zoom_in_label=Zuum kɔ mu
zoom.title=Zuum
presentation_mode.title=Sesa kɔ Yɛkyerɛ Tebea mu
presentation_mode_label=Yɛkyerɛ Tebea
open_file.title=Bue Fael
open_file_label=Bue
print.title=Prente
print_label=Prente
download.title=Twe
download_label=Twe
bookmark.title=Seisei nhwɛ (fa anaaso bue wɔ tokuro foforo mu)
bookmark_label=Seisei nhwɛ
# Secondary toolbar and context menu
# Document properties dialog box
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_title=Ti asɛm:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Sɔ anaaso dum saedbaa
toggle_sidebar_label=Sɔ anaaso dum saedbaa
document_outline_label=Dɔkomɛnt bɔbea
thumbs.title=Kyerɛ mfoniwaa
thumbs_label=Mfoniwaa
findbar.title=Hu wɔ dɔkomɛnt no mu
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Krataafa {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Krataafa ne mfoniwaa {{page}}
# Find panel button title and messages
find_previous.title=San hu fres wɔ ekyiri baako
find_previous_label=Ekyiri baako
find_next.title=San hu fres no wɔ enim baako
find_next_label=Ndiso
find_highlight=Hyɛ bibiara nso
find_match_case_label=Fa susu kaase
find_reached_top=Edu krataafa ne soro, atoa so efiri ase
find_reached_bottom=Edu krataafa n'ewiei, atoa so efiri soro
find_not_found=Ennhu fres
# Error panel labels
error_more_info=Infɔmehyɛn bio a wɔka ho
error_less_info=Te infɔmehyɛn bio a wɔka ho so
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{vɛɛhyen}} (nsi: {{si}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Nkrato: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Staake: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Fael: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Laen: {{line}}
rendering_error=Mfomso bae wɔ bere a wɔ rekyerɛ krataafa no.
# Predefined zoom values
page_scale_width=Krataafa tɛtrɛtɛ
page_scale_fit=Krataafa ehimtwa
page_scale_auto=Zuum otomatik
page_scale_actual=Kɛseyɛ ankasa
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
# Loading indicator messages
loading_error_indicator=Mfomso
loading_error=Mfomso bae wɔ bere a wɔreloode PDF no.
invalid_file_error=PDF fael no nndi mu anaaso ho atɔ kyima.
missing_file_error=PDF fael no ayera.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Tɛkst-nyiano]
password_ok=OK
printing_not_supported=Kɔkɔbɔ: Brawsa yi nnhyɛ daa mma prent ho kwan.
printing_not_ready=Kɔkɔbɔ: Wɔnntwee PDF fael no nyinara mmbaee ama wo É› tumi aprente.
web_fonts_disabled=Ɔedum wɛb-mfɔnt: nntumi mmfa PDF mfɔnt a wɔhyɛ mu nndi dwuma.
document_colors_not_allowed=Wɔmma ho kwan sɛ PDF adɔkomɛnt de wɔn ara wɔn ahosu bɛdi dwuma: wɔ adum 'Ma ho kwan ma nkrataafa mpaw wɔn ara wɔn ahosu' wɔ brawsa yi mu.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/an/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,184 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Pachina anterior
previous_label=Anterior
next.title=Pachina siguient
next_label=Siguient
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Pachina
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=de {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} de {{pagesCount}})
zoom_out.title=Achiquir
zoom_out_label=Achiquir
zoom_in.title=Agrandir
zoom_in_label=Agrandir
zoom.title=Grandaria
presentation_mode.title=Cambear t'o modo de presentación
presentation_mode_label=Modo de presentación
open_file.title=Ubrir o fichero
open_file_label=Ubrir
print.title=Imprentar
print_label=Imprentar
download.title=Descargar
download_label=Descargar
bookmark.title=Vista actual (copiar u ubrir en una nueva finestra)
bookmark_label=Anvista actual
# Secondary toolbar and context menu
tools.title=Ferramientas
tools_label=Ferramientas
first_page.title=Ir ta la primer pachina
first_page.label=Ir ta la primer pachina
first_page_label=Ir ta la primer pachina
last_page.title=Ir ta la zaguer pachina
last_page.label=Ir ta la zaguera pachina
last_page_label=Ir ta la zaguer pachina
page_rotate_cw.title=Chirar enta la dreita
page_rotate_cw.label=Chirar enta la dreita
page_rotate_cw_label=Chira enta la dreita
page_rotate_ccw.title=Chirar enta la zurda
page_rotate_ccw.label=Chirar en sentiu antihorario
page_rotate_ccw_label=Chirar enta la zurda
cursor_text_select_tool.title=Activar la ferramienta de selección de texto
cursor_text_select_tool_label=Ferramienta de selección de texto
cursor_hand_tool.title=Activar la ferramienta man
cursor_hand_tool_label=Ferramienta man
# Document properties dialog box
document_properties.title=Propiedatz d'o documento...
document_properties_label=Propiedatz d'o documento...
document_properties_file_name=Nombre de fichero:
document_properties_file_size=Grandaria d'o fichero:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Titol:
document_properties_author=Autor:
document_properties_subject=Afer:
document_properties_keywords=Parolas clau:
document_properties_creation_date=Calendata de creyación:
document_properties_modification_date=Calendata de modificación:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creyador:
document_properties_producer=Creyador de PDF:
document_properties_version=Versión de PDF:
document_properties_page_count=Numero de pachinas:
document_properties_close=Zarrar
print_progress_message=Se ye preparando la documentación pa imprentar…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Cancelar
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Amostrar u amagar a barra lateral
toggle_sidebar_notification.title=Cambiar barra lateral (lo documento contiene esquema/adchuntos)
toggle_sidebar_label=Amostrar a barra lateral
document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items)
document_outline_label=Esquema d'o documento
attachments.title=Amostrar os adchuntos
attachments_label=Adchuntos
thumbs.title=Amostrar as miniaturas
thumbs_label=Miniaturas
findbar.title=Trobar en o documento
findbar_label=Trobar
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Pachina {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Miniatura d'a pachina {{page}}
# Find panel button title and messages
find_input.title=Trobar
find_input.placeholder=Trobar en o documento…
find_previous.title=Trobar l'anterior coincidencia d'a frase
find_previous_label=Anterior
find_next.title=Trobar a siguient coincidencia d'a frase
find_next_label=Siguient
find_highlight=Resaltar-lo tot
find_match_case_label=Coincidencia de mayusclas/minusclas
find_reached_top=S'ha plegau a l'inicio d'o documento, se contina dende baixo
find_reached_bottom=S'ha plegau a la fin d'o documento, se contina dende alto
find_not_found=No s'ha trobau a frase
# Error panel labels
error_more_info=Mas información
error_less_info=Menos información
error_close=Zarrar
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Mensache: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Pila: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Fichero: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Linia: {{line}}
rendering_error=Ha ocurriu una error en renderizar a pachina.
# Predefined zoom values
page_scale_width=Amplaria d'a pachina
page_scale_fit=Achuste d'a pachina
page_scale_auto=Grandaria automatica
page_scale_actual=Grandaria actual
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Error
loading_error=S'ha produciu una error en cargar o PDF.
invalid_file_error=O PDF no ye valido u ye estorbau.
missing_file_error=No i ha fichero PDF.
unexpected_response_error=Respuesta a lo servicio inasperada.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Anotación {{type}}]
password_label=Introduzca a clau ta ubrir iste fichero PDF.
password_invalid=Clau invalida. Torna a intentar-lo.
password_ok=Acceptar
password_cancel=Cancelar
printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions.
printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo.
web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF.
document_colors_not_allowed=Los documentos PDF no pueden fer servir las suyas propias colors: 'Permitir que as pachinas triguen as suyas propias colors' ye desactivau en o navegador.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ar/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,242 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=الصفحة Ø§Ù„سابقة
previous_label=السابقة
next.title=الصفحة Ø§Ù„تالية
next_label=التالية
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=صفحة
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=من {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} Ù…Ù† {{pagesCount}})
zoom_out.title=بعّد
zoom_out_label=بعّد
zoom_in.title=قرّب
zoom_in_label=قرّب
zoom.title=التقريب
presentation_mode.title=انتقل Ù„وضع Ø§Ù„عرض Ø§Ù„تقديمي
presentation_mode_label=وضع Ø§Ù„عرض Ø§Ù„تقديمي
open_file.title=افتح Ù…لفًا
open_file_label=افتح
print.title=اطبع
print_label=اطبع
download.title=نزّل
download_label=نزّل
bookmark.title=المنظور Ø§Ù„حالي (انسخ Ø£Ùˆ Ø§ÙØªØ­ ÙÙŠ Ù†Ø§ÙØ°Ø© Ø¬Ø¯ÙŠØ¯Ø©)
bookmark_label=المنظور Ø§Ù„حالي
# Secondary toolbar and context menu
tools.title=الأدوات
tools_label=الأدوات
first_page.title=اذهب Ø¥Ù„Ù‰ Ø§Ù„صفحة Ø§Ù„أولى
first_page.label=اذهب Ø¥Ù„Ù‰ Ø§Ù„صفحة Ø§Ù„أولى
first_page_label=اذهب Ø¥Ù„Ù‰ Ø§Ù„صفحة Ø§Ù„أولى
last_page.title=اذهب Ø¥Ù„Ù‰ Ø§Ù„صفحة Ø§Ù„أخيرة
last_page.label=اذهب Ø¥Ù„Ù‰ Ø§Ù„صفحة Ø§Ù„أخيرة
last_page_label=اذهب Ø¥Ù„Ù‰ Ø§Ù„صفحة Ø§Ù„أخيرة
page_rotate_cw.title=أدر Ø¨Ø§ØªØ¬Ø§Ù‡ Ø¹Ù‚ارب Ø§Ù„ساعة
page_rotate_cw.label=أدر Ø¨Ø§ØªØ¬Ø§Ù‡ Ø¹Ù‚ارب Ø§Ù„ساعة
page_rotate_cw_label=أدر Ø¨Ø§ØªØ¬Ø§Ù‡ Ø¹Ù‚ارب Ø§Ù„ساعة
page_rotate_ccw.title=أدر Ø¨Ø¹ÙƒØ³ Ø§ØªØ¬Ø§Ù‡ Ø¹Ù‚ارب Ø§Ù„ساعة
page_rotate_ccw.label=أدر Ø¨Ø¹ÙƒØ³ Ø§ØªØ¬Ø§Ù‡ Ø¹Ù‚ارب Ø§Ù„ساعة
page_rotate_ccw_label=أدر Ø¨Ø¹ÙƒØ³ Ø§ØªØ¬Ø§Ù‡ Ø¹Ù‚ارب Ø§Ù„ساعة
cursor_text_select_tool.title=فعّل Ø£Ø¯Ø§Ø© Ø§Ø®ØªÙŠØ§Ø± Ø§Ù„نص
cursor_text_select_tool_label=أداة Ø§Ø®ØªÙŠØ§Ø± Ø§Ù„نص
cursor_hand_tool.title=فعّل Ø£Ø¯Ø§Ø© Ø§Ù„يد
cursor_hand_tool_label=أداة Ø§Ù„يد
scroll_vertical.title=استخدم Ø§Ù„تمرير Ø§Ù„رأسي
scroll_vertical_label=التمرير Ø§Ù„رأسي
scroll_horizontal.title=استخدم Ø§Ù„تمرير Ø§Ù„أفقي
scroll_horizontal_label=التمرير Ø§Ù„أفقي
scroll_wrapped.title=استخدم Ø§Ù„تمرير Ø§Ù„ملتف
scroll_wrapped_label=التمرير Ø§Ù„ملتف
spread_none.title=لا ØªØ¯Ù…ج Ù‡ÙˆØ§Ù…Ø´ Ø§Ù„صفحات Ù…ع Ø¨Ø¹Ø¶Ù‡Ø§ Ø§Ù„بعض
spread_none_label=بلا Ù‡ÙˆØ§Ù…Ø´
spread_odd.title=ادمج Ù‡ÙˆØ§Ù…Ø´ Ø§Ù„صفحات Ø§Ù„فردية
spread_odd_label=هوامش Ø§Ù„صفحات Ø§Ù„فردية
spread_even.title=ادمج Ù‡ÙˆØ§Ù…Ø´ Ø§Ù„صفحات Ø§Ù„زوجية
spread_even_label=هوامش Ø§Ù„صفحات Ø§Ù„زوجية
# Document properties dialog box
document_properties.title=خصائص Ø§Ù„مستند…
document_properties_label=خصائص Ø§Ù„مستند…
document_properties_file_name=اسم Ø§Ù„ملف:
document_properties_file_size=حجم Ø§Ù„ملف:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} Ùƒ.بايت ({{size_b}} Ø¨Ø§ÙŠØª)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} Ù….بايت ({{size_b}} Ø¨Ø§ÙŠØª)
document_properties_title=العنوان:
document_properties_author=المؤلف:
document_properties_subject=الموضوع:
document_properties_keywords=الكلمات Ø§Ù„أساسية:
document_properties_creation_date=تاريخ Ø§Ù„إنشاء:
document_properties_modification_date=تاريخ Ø§Ù„تعديل:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}، {{time}}
document_properties_creator=المنشئ:
document_properties_producer=منتج PDF:
document_properties_version=إصدارة PDF:
document_properties_page_count=عدد Ø§Ù„صفحات:
document_properties_page_size=مقاس Ø§Ù„ورقة:
document_properties_page_size_unit_inches=بوصة
document_properties_page_size_unit_millimeters=ملم
document_properties_page_size_orientation_portrait=طوليّ
document_properties_page_size_orientation_landscape=عرضيّ
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=خطاب
document_properties_page_size_name_legal=قانونيّ
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string=‏{{width}} Ã— â€{{height}} â€{{unit}} (‏{{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string=‏{{width}} Ã— â€{{height}} â€{{unit}} (‏{{name}}، {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=العرض Ø§Ù„سريع Ø¹Ø¨Ø± Ø§Ù„وِب:
document_properties_linearized_yes=نعم
document_properties_linearized_no=لا
document_properties_close=أغلق
print_progress_message=يُحضّر Ø§Ù„مستند Ù„لطباعة…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}Ùª
print_progress_close=ألغِ
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=بدّل Ø¸Ù‡ÙˆØ± Ø§Ù„شريط Ø§Ù„جانبي
toggle_sidebar_notification.title=بدّل Ø¸Ù‡ÙˆØ± Ø§Ù„شريط Ø§Ù„جانبي (يحتوي Ø§Ù„مستند Ø¹Ù„Ù‰ Ù…خطط Ø£Ùˆ Ù…رفقات)
toggle_sidebar_label=بدّل Ø¸Ù‡ÙˆØ± Ø§Ù„شريط Ø§Ù„جانبي
document_outline.title=اعرض ÙÙ‡Ø±Ø³ Ø§Ù„مستند (نقر Ù…زدوج Ù„تمديد Ø£Ùˆ ØªÙ‚ليص ÙƒÙ„ Ø§Ù„عناصر)
document_outline_label=مخطط Ø§Ù„مستند
attachments.title=اعرض Ø§Ù„مرفقات
attachments_label=المُرفقات
thumbs.title=اعرض Ù…ُصغرات
thumbs_label=مُصغّرات
findbar.title=ابحث ÙÙŠ Ø§Ù„Ù…Ø³ØªÙ†Ø¯
findbar_label=ابحث
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=صفحة {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=مصغّرة ØµÙØ­Ø© {{page}}
# Find panel button title and messages
find_input.title=ابحث
find_input.placeholder=ابحث ÙÙŠ Ø§Ù„Ù…Ø³ØªÙ†Ø¯â€¦
find_previous.title=ابحث Ø¹Ù† Ø§Ù„تّواجد Ø§Ù„سّابق Ù„لعبارة
find_previous_label=السابق
find_next.title=ابحث Ø¹Ù† Ø§Ù„تّواجد Ø§Ù„تّالي Ù„لعبارة
find_next_label=التالي
find_highlight=أبرِز Ø§Ù„كل
find_match_case_label=طابق Ø­Ø§Ù„Ø© Ø§Ù„أحرف
find_entire_word_label=كلمات ÙƒØ§Ù…لة
find_reached_top=تابعت Ù…Ù† Ø§Ù„أسفل Ø¨Ø¹Ø¯Ù…ا ÙˆØµÙ„ت Ø¥Ù„Ù‰ Ø¨Ø¯Ø§ÙŠØ© Ø§Ù„مستند
find_reached_bottom=تابعت Ù…Ù† Ø§Ù„أعلى Ø¨Ø¹Ø¯Ù…ا ÙˆØµÙ„ت Ø¥Ù„Ù‰ Ù†Ù‡Ø§ÙŠØ© Ø§Ù„مستند
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
find_match_count={[ plural(total) ]}
find_match_count[one]={{current}} Ù…Ù† Ø£ØµÙ„ Ù…طابقة ÙˆØ§Ø­Ø¯Ø©
find_match_count[two]={{current}} Ù…Ù† Ø£ØµÙ„ Ù…طابقتين
find_match_count[few]={{current}} Ù…Ù† Ø£ØµÙ„ {{total}} Ù…طابقات
find_match_count[many]={{current}} Ù…Ù† Ø£ØµÙ„ {{total}} Ù…طابقة
find_match_count[other]={{current}} Ù…Ù† Ø£ØµÙ„ {{total}} Ù…طابقة
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=فقط
find_match_count_limit[one]=أكثر Ù…Ù† Ù…طابقة ÙˆØ§Ø­Ø¯Ø©
find_match_count_limit[two]=أكثر Ù…Ù† Ù…طابقتين
find_match_count_limit[few]=أكثر Ù…Ù† {{limit}} Ù…طابقات
find_match_count_limit[many]=أكثر Ù…Ù† {{limit}} Ù…طابقة
find_match_count_limit[other]=أكثر Ù…Ù† {{limit}} Ù…طابقة
find_not_found=لا ÙˆØ¬ÙˆØ¯ Ù„لعبارة
# Error panel labels
error_more_info=معلومات Ø£ÙƒØ«Ø±
error_less_info=معلومات Ø£Ù‚Ù„
error_close=أغلق
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=‏PDF.js Ù†{{version}} â€(بناء: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=الرسالة: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=الرصّة: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=الملف: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=السطر: {{line}}
rendering_error=حدث Ø®Ø·Ø£ Ø£Ø«Ù†Ø§Ø¡ Ø¹Ø±Ø¶ Ø§Ù„صفحة.
# Predefined zoom values
page_scale_width=عرض Ø§Ù„صفحة
page_scale_fit=ملائمة Ø§Ù„صفحة
page_scale_auto=تقريب ØªÙ„قائي
page_scale_actual=الحجم Ø§Ù„فعلي
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}Ùª
# Loading indicator messages
loading_error_indicator=عطل
loading_error=حدث Ø¹Ø·Ù„ Ø£Ø«Ù†Ø§Ø¡ ØªØ­Ù…يل Ù…لف PDF.
invalid_file_error=ملف PDF ØªØ§Ù„ف Ø£Ùˆ ØºÙŠØ± ØµØ­ÙŠØ­.
missing_file_error=ملف PDF ØºÙŠØ± Ù…وجود.
unexpected_response_error=استجابة Ø®Ø§Ø¯ÙˆÙ… ØºÙŠØ± Ù…توقعة.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[تعليق {{type}}]
password_label=أدخل Ù„كلمة Ø§Ù„سر Ù„فتح Ù‡Ø°Ø§ Ø§Ù„ملف.
password_invalid=كلمة Ø³Ø± Ø®Ø·Ø£. Ù…Ù† ÙØ¶Ù„Ùƒ Ø£Ø¹Ø¯ Ø§Ù„محاولة.
password_ok=حسنا
password_cancel=ألغِ
printing_not_supported=تحذير: Ù„ا ÙŠØ¯Ø¹Ù… Ù‡Ø°Ø§ Ø§Ù„متصفح Ø§Ù„طباعة Ø¨Ø´ÙƒÙ„ ÙƒØ§Ù…Ù„.
printing_not_ready=تحذير: Ù…لف PDF Ù„Ù… ÙŠÙØ­Ù…ّل ÙƒØ§Ù…لًا Ù„لطباعة.
web_fonts_disabled=خطوط Ø§Ù„وب Ù…ُعطّلة: ØªØ¹Ø°Ù‘ر Ø§Ø³ØªØ®Ø¯Ø§Ù… Ø®Ø·ÙˆØ· PDF Ø§Ù„مُضمّنة.
document_colors_not_allowed=ليس Ù…سموحًا Ù„ملفات PDF Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù… Ø£Ù„وانها Ø§Ù„خاصة: Ø®ÙŠØ§Ø± â€Ø§Ø³Ù…Ø­ Ù„لصفحات Ø¨Ø§Ø®ØªÙŠØ§Ø± Ø£Ù„وانها Ø§Ù„خاصة“ Ù„يس Ù…ُفعّلًا ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/as/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,167 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=পূৰ্বৱৰ্তী à¦ªà§ƒà¦·à§à¦ à¦¾
previous_label=পূৰ্বৱৰ্তী
next.title=পৰৱৰ্তী à¦ªà§ƒà¦·à§à¦ à¦¾
next_label=পৰৱৰ্তী
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
zoom_out.title=জুম à¦†à¦‰à¦Ÿ
zoom_out_label=জুম à¦†à¦‰à¦Ÿ
zoom_in.title=জুম à¦‡à¦¨
zoom_in_label=জুম à¦‡à¦¨
zoom.title=জুম à¦•ৰক
presentation_mode.title=উপস্থাপন à¦…ৱস্থালে à¦¯à¦¾à¦“ক
presentation_mode_label=উপস্থাপন à¦…ৱস্থা
open_file.title=ফাইল à¦–োলক
open_file_label=খোলক
print.title=প্ৰিন্ট à¦•ৰক
print_label=প্ৰিন্ট à¦•ৰক
download.title=ডাউনল'ড à¦•ৰক
download_label=ডাউনল'ড à¦•ৰক
bookmark.title=বৰ্তমান à¦¦à§ƒà¦¶à§à¦¯ (কপি à¦•ৰক à¦…থবা à¦¨à¦¤à§à¦¨ à¦‰à¦‡à¦¨à§à¦¡à§‹à¦¤ à¦–োলক)
bookmark_label=বৰ্তমান à¦¦à§ƒà¦¶à§à¦¯
# Secondary toolbar and context menu
tools.title=সঁজুলিসমূহ
tools_label=সঁজুলিসমূহ
first_page.title=প্ৰথম à¦ªà§ƒà¦·à§à¦ à¦¾à¦¤ à¦¯à¦¾à¦“ক
first_page.label=প্ৰথম à¦ªà§ƒà¦·à§à¦ à¦¾à¦¤ à¦¯à¦¾à¦“ক
first_page_label=প্ৰথম à¦ªà§ƒà¦·à§à¦ à¦¾à¦¤ à¦¯à¦¾à¦“ক
last_page.title=সৰ্বশেষ à¦ªà§ƒà¦·à§à¦ à¦¾à¦¤ à¦¯à¦¾à¦“ক
last_page.label=সৰ্বশেষ à¦ªà§ƒà¦·à§à¦ à¦¾à¦¤ à¦¯à¦¾à¦“ক
last_page_label=সৰ্বশেষ à¦ªà§ƒà¦·à§à¦ à¦¾à¦¤ à¦¯à¦¾à¦“ক
page_rotate_cw.title=ঘড়ীৰ à¦¦à¦¿à¦¶à¦¤ à¦˜à§à§°à¦¾à¦“ক
page_rotate_cw.label=ঘড়ীৰ à¦¦à¦¿à¦¶à¦¤ à¦˜à§à§°à¦¾à¦“ক
page_rotate_cw_label=ঘড়ীৰ à¦¦à¦¿à¦¶à¦¤ à¦˜à§à§°à¦¾à¦“ক
page_rotate_ccw.title=ঘড়ীৰ à¦“লোটা à¦¦à¦¿à¦¶à¦¤ à¦˜à§à§°à¦¾à¦“ক
page_rotate_ccw.label=ঘড়ীৰ à¦“লোটা à¦¦à¦¿à¦¶à¦¤ à¦˜à§à§°à¦¾à¦“ক
page_rotate_ccw_label=ঘড়ীৰ à¦“লোটা à¦¦à¦¿à¦¶à¦¤ à¦˜à§à§°à¦¾à¦“ক
# Document properties dialog box
document_properties.title=দস্তাবেজৰ à¦¬à§ˆà¦¶à¦¿à¦·à§à¦Ÿà§à¦¯à¦¸à¦®à§‚হ…
document_properties_label=দস্তাবেজৰ à¦¬à§ˆà¦¶à¦¿à¦·à§à¦Ÿà§à¦¯à¦¸à¦®à§‚হ…
document_properties_file_name=ফাইল à¦¨à¦¾à¦®:
document_properties_file_size=ফাইলৰ à¦†à¦•াৰ:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=শীৰ্ষক:
document_properties_author=লেখক:
document_properties_subject=বিষয়:
document_properties_keywords=কিৱাৰ্ডসমূহ:
document_properties_creation_date=সৃষ্টিৰ à¦¤à¦¾à§°à¦¿à¦–:
document_properties_modification_date=পৰিবৰ্তনৰ à¦¤à¦¾à§°à¦¿à¦–:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=সৃষ্টিকৰ্তা:
document_properties_producer=PDF à¦‰à§Žà¦ªà¦¾à¦¦à¦•:
document_properties_version=PDF à¦¸à¦‚স্কৰণ:
document_properties_page_count=পৃষ্ঠাৰ à¦—ণনা:
document_properties_close=বন্ধ à¦•ৰক
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=কাষবাৰ à¦Ÿà¦—ল à¦•ৰক
toggle_sidebar_label=কাষবাৰ à¦Ÿà¦—ল à¦•ৰক
document_outline_label=দস্তাবেজ à¦†à¦‰à¦Ÿà¦²à¦¾à¦‡à¦¨
attachments.title=এটাচমেন্টসমূহ à¦¦à§‡à¦–ুৱাওক
attachments_label=এটাচমেন্টসমূহ
thumbs.title=থাম্বনেইলসমূহ à¦¦à§‡à¦–ুৱাওক
thumbs_label=থাম্বনেইলসমূহ
findbar.title=দস্তাবেজত à¦¸à¦¨à§à¦§à¦¾à¦¨ à¦•ৰক
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=পৃষ্ঠা {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=পৃষ্ঠাৰ à¦¥à¦¾à¦®à§à¦¬à¦¨à§‡à¦‡à¦² {{page}}
# Find panel button title and messages
find_previous.title=বাক্যাংশৰ à¦ªà§‚ৰ্বৱৰ্তী à¦‰à¦ªà¦¸à§à¦¥à¦¿à¦¤à¦¿ à¦¸à¦¨à§à¦§à¦¾à¦¨ à¦•ৰক
find_previous_label=পূৰ্বৱৰ্তী
find_next.title=বাক্যাংশৰ à¦ªà§°à§±à§°à§à¦¤à§€ à¦‰à¦ªà¦¸à§à¦¥à¦¿à¦¤à¦¿ à¦¸à¦¨à§à¦§à¦¾à¦¨ à¦•ৰক
find_next_label=পৰৱৰ্তী
find_highlight=সকলো à¦‰à¦œà§à¦œà§à¦¬à¦² à¦•ৰক
find_match_case_label=ফলা à¦®à¦¿à¦²à¦¾à¦“ক
find_reached_top=তলৰ à¦ªà§°à¦¾ à¦†à§°à¦®à§à¦­ à¦•ৰি, à¦¦à¦¸à§à¦¤à¦¾à¦¬à§‡à¦œà§° à¦“পৰলৈ à¦…হা à¦¹à§ˆà¦›à§‡
find_reached_bottom=ওপৰৰ à¦ªà§°à¦¾ à¦†à§°à¦®à§à¦­ à¦•ৰি, à¦¦à¦¸à§à¦¤à¦¾à¦¬à§‡à¦œà§° à¦¤à¦²à¦²à§ˆ à¦…হা à¦¹à§ˆà¦›à§‡
find_not_found=বাক্যাংশ à¦ªà§‹à§±à¦¾ à¦¨à¦—ল
# Error panel labels
error_more_info=অধিক à¦¤à¦¥à§à¦¯
error_less_info=কম à¦¤à¦¥à§à¦¯
error_close=বন্ধ à¦•ৰক
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=বাৰ্তা: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=স্টেক: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=ফাইল: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=শাৰী: {{line}}
rendering_error=এই à¦ªà§ƒà¦·à§à¦ à¦¾ à§°à§‡à¦£à§à¦¡à¦¾à§° à¦•ৰোতে à¦à¦Ÿà¦¾ à¦¤à§à§°à§à¦Ÿà¦¿ à¦¦à§‡à¦–া à¦¦à¦¿à¦²à§‡à¥¤
# Predefined zoom values
page_scale_width=পৃষ্ঠাৰ à¦ªà§à§°à¦¸à§à¦¥
page_scale_fit=পৃষ্ঠা à¦–াপ
page_scale_auto=স্বচালিত à¦œà§à¦®
page_scale_actual=প্ৰকৃত à¦†à¦•াৰ
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
# Loading indicator messages
loading_error_indicator=ত্ৰুটি
loading_error=PDF à¦²'ড à¦•ৰোতে à¦à¦Ÿà¦¾ à¦¤à§à§°à§à¦Ÿà¦¿ à¦¦à§‡à¦–া à¦¦à¦¿à¦²à§‡à¥¤
invalid_file_error=অবৈধ à¦…থবা à¦•্ষতিগ্ৰস্থ PDF file।
missing_file_error=সন্ধানহিন PDF à¦«à¦¾à¦‡à¦²à¥¤
unexpected_response_error=অপ্ৰত্যাশিত à¦šà¦¾à§°à§à¦­à¦¾à§° à¦ªà§à§°à¦¤à¦¿à¦•্ৰিয়া।
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} à¦Ÿà§‹à¦•া]
password_label=এই PDF à¦«à¦¾à¦‡à¦² à¦–োলিবলৈ à¦ªà¦¾à¦›à§±à§°à§à¦¡ à¦¸à§à¦®à§à§±à¦¾à¦“ক।
password_invalid=অবৈধ à¦ªà¦¾à¦›à§±à§°à§à¦¡à¥¤ à¦…নুগ্ৰহ à¦•ৰি à¦ªà§à¦¨à§° à¦šà§‡à¦·à§à¦Ÿà¦¾ à¦•ৰক।
password_ok=ঠিক à¦†à¦›à§‡
printing_not_supported=সতৰ্কবাৰ্তা: à¦ªà§à§°à¦¿à¦¨à§à¦Ÿà¦¿à¦‚ à¦à¦‡ à¦¬à§à§°à¦¾à¦‰à¦›à¦¾à§° à¦¦à§à¦¬à¦¾à§°à¦¾ à¦¸à¦®à§à¦ªà§‚ৰ্ণভাৱে à¦¸à¦®à§°à§à¦¥à¦¿à¦¤ à¦¨à¦¹à§Ÿà¥¤
printing_not_ready=সতৰ্কবাৰ্তা: PDF à¦ªà§à§°à¦¿à¦¨à§à¦Ÿà¦¿à¦‚à§° à¦¬à¦¾à¦¬à§‡ à¦¸à¦®à§à¦ªà§‚ৰ্ণভাৱে à¦²'ডেড à¦¨à¦¹à§Ÿà¥¤
web_fonts_disabled=ৱেব à¦«à¦¨à§à¦Ÿà¦¸à¦®à§‚হ à¦…সামৰ্থবান à¦•ৰা à¦†à¦›à§‡: à¦…ন্তৰ্ভুক্ত PDF à¦«à¦¨à§à¦Ÿà¦¸à¦®à§‚হ à¦¬à§à¦¯à§±à¦¹à¦¾à§° à¦•ৰিবলে à¦…ক্ষম।
document_colors_not_allowed=PDF à¦¦à¦¸à§à¦¤à¦¾à¦¬à§‡à¦œà¦¸à¦®à§‚হৰ à¦¸à¦¿à¦¹à¦¤à§° à¦¨à¦¿à¦œà¦¸à§à¦¬ à§°à¦™ à¦¬à§à¦¯à§±à¦¹à¦¾à§° à¦•ৰাৰ à¦…নুমতি à¦¨à¦¾à¦‡: à¦¬à§à§°à¦¾à¦‰à¦›à¦¾à§°à¦¤ 'পৃষ্ঠাসমূহক à¦¸à¦¿à¦¹à¦¤à§° à¦¨à¦¿à¦œà¦¸à§à¦¬ à§°à¦™ à¦¨à¦¿à§°à§à¦¬à¦¾à¦šà¦¨ à¦•ৰাৰ à¦…নুমতি à¦¦à¦¿à§Ÿà¦•' à¦…সামৰ্থবান à¦•ৰা à¦†à¦›à§‡à¥¤
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ast/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,197 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Páxina anterior
previous_label=Anterior
next.title=Páxina siguiente
next_label=Siguiente
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Páxina
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=de {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} de {{pagesCount}})
zoom_out.title=Reducir
zoom_out_label=Reducir
zoom_in.title=Aumentar
zoom_in_label=Aumentar
zoom.title=Tamañu
presentation_mode.title=
presentation_mode_label=
open_file.title=Abrir ficheru
open_file_label=Abrir
print.title=Imprentar
print_label=Imprentar
download.title=Descargar
download_label=Descargar
bookmark.title=Vista actual (copiar o abrir nuna nueva ventana)
bookmark_label=Vista actual
# Secondary toolbar and context menu
tools.title=Ferramientes
tools_label=Ferramientes
first_page.title=Dir a la primer páxina
first_page.label=Dir a la primer páxina
first_page_label=Dir a la primer páxina
last_page.title=Dir a la postrer páxina
last_page.label=Dir a la cabera páxina
last_page_label=Dir a la postrer páxina
page_rotate_cw.title=Xirar en sen horariu
page_rotate_cw.label=
page_rotate_cw_label=Xirar en sen horariu
page_rotate_ccw.title=Xirar en sen antihorariu
page_rotate_ccw.label=
page_rotate_ccw_label=Xirar en sen antihorariu
# Document properties dialog box
document_properties.title=Propiedaes del documentu…
document_properties_label=Propiedaes del documentu…
document_properties_file_name=Nome de ficheru:
document_properties_file_size=Tamañu de ficheru:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Títulu:
document_properties_author=Autor:
document_properties_subject=Asuntu:
document_properties_keywords=Pallabres clave:
document_properties_creation_date=Data de creación:
document_properties_modification_date=Data de modificación:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creador:
document_properties_producer=Productor PDF:
document_properties_version=Versión PDF:
document_properties_page_count=Númberu de páxines:
document_properties_page_size_unit_inches=in
document_properties_page_size_unit_millimeters=mm
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} Ã— {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}} Ã— {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized_yes=Sí
document_properties_linearized_no=Non
document_properties_close=Zarrar
print_progress_message=Tresnando documentu pa imprentar…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Encaboxar
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Camudar barra llateral
toggle_sidebar_label=Camudar barra llateral
document_outline.title=Amosar esquema del documentu (duble clic pa espander/contrayer tolos elementos)
document_outline_label=Esquema del documentu
attachments.title=Amosar axuntos
attachments_label=Axuntos
thumbs.title=Amosar miniatures
thumbs_label=Miniatures
findbar.title=Guetar nel documentu
findbar_label=Guetar
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Páxina {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Miniatura de la páxina {{page}}
# Find panel button title and messages
find_input.title=Guetar
find_input.placeholder=Guetar nel documentu…
find_previous.title=Alcontrar l'anterior apaición de la fras
find_previous_label=Anterior
find_next.title=Alcontrar la siguiente apaición d'esta fras
find_next_label=Siguiente
find_highlight=Remarcar toos
find_match_case_label=Coincidencia de mayús./minús.
find_reached_top=Algamóse'l principiu del documentu, siguir dende'l final
find_reached_bottom=Algamóse'l final del documentu, siguir dende'l principiu
find_not_found=Frase non atopada
# Error panel labels
error_more_info=Más información
error_less_info=Menos información
error_close=Zarrar
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Mensaxe: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Pila: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Ficheru: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Llinia: {{line}}
rendering_error=Hebo un fallu al renderizar la páxina.
# Predefined zoom values
page_scale_width=Anchor de la páxina
page_scale_fit=Axuste de la páxina
page_scale_auto=Tamañu automáticu
page_scale_actual=Tamañu actual
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Fallu
loading_error=Hebo un fallu al cargar el PDF.
invalid_file_error=Ficheru PDF inválidu o corruptu.
missing_file_error=Nun hai ficheru PDF.
unexpected_response_error=Rempuesta inesperada del sirvidor.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Anotación {{type}}]
password_label=Introduz la contraseña p'abrir esti ficheru PDF
password_invalid=Contraseña non válida. Vuelvi a intentalo.
password_ok=Aceutar
password_cancel=Encaboxar
printing_not_supported=Alvertencia: La imprentación entá nun ta sofitada dafechu nesti restolador.
printing_not_ready=Avisu: Esti PDF nun se cargó completamente pa poder imprentase.
web_fonts_disabled=Les fontes web tán desactivaes: ye imposible usar les fontes PDF embebíes.
document_colors_not_allowed=Los documentos PDF nun tienen permisu pa usar les sos colores: Â«Permitir que les páxines escueyan les sos colores» ta desactivao nel restolador.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/az/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,242 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Əvvəlki səhifə
previous_label=Əvvəlkini tap
next.title=Növbəti səhifə
next_label=İrəli
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Səhifə
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=/ {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} / {{pagesCount}})
zoom_out.title=Uzaqlaş
zoom_out_label=Uzaqlaş
zoom_in.title=Yaxınlaş
zoom_in_label=Yaxınlaş
zoom.title=Yaxınlaşdırma
presentation_mode.title=Təqdimat Rejiminə Keç
presentation_mode_label=Təqdimat Rejimi
open_file.title=Fayl Aç
open_file_label=Aç
print.title=Yazdır
print_label=Yazdır
download.title=Yüklə
download_label=Yüklə
bookmark.title=Hazırkı görünüş (köçür və ya yeni pəncərədə aç)
bookmark_label=Hazırkı görünüş
# Secondary toolbar and context menu
tools.title=Alətlər
tools_label=Alətlər
first_page.title=İlk Səhifəyə get
first_page.label=İlk Səhifəyə get
first_page_label=İlk Səhifəyə get
last_page.title=Son Səhifəyə get
last_page.label=Son Səhifəyə get
last_page_label=Son Səhifəyə get
page_rotate_cw.title=Saat Ä°stiqamətində Fırlat
page_rotate_cw.label=Saat Ä°stiqamətində Fırlat
page_rotate_cw_label=Saat Ä°stiqamətində Fırlat
page_rotate_ccw.title=Saat Ä°stiqamətinin Æksinə Fırlat
page_rotate_ccw.label=Saat Ä°stiqamətinin Æksinə Fırlat
page_rotate_ccw_label=Saat Ä°stiqamətinin Æksinə Fırlat
cursor_text_select_tool.title=Yazı seçmə alətini aktivləşdir
cursor_text_select_tool_label=Yazı seçmə aləti
cursor_hand_tool.title=Əl alətini aktivləşdir
cursor_hand_tool_label=Əl aləti
scroll_vertical.title=Şaquli sürüşdürmə işlət
scroll_vertical_label=Şaquli sürüşdürmə
scroll_horizontal.title=Üfüqi sürüşdürmə işlət
scroll_horizontal_label=Üfüqi sürüşdürmə
scroll_wrapped.title=Bükülü sürüşdürmə işlət
scroll_wrapped_label=Bükülü sürüşdürmə
spread_none.title=Yan-yana birləşdirilmiş səhifələri işlətmə
spread_none_label=Birləşdirmə
spread_odd.title=Yan-yana birləşdirilmiş səhifələri tək nömrəli səhifələrdən başlat
spread_odd_label=Tək nömrəli
spread_even.title=Yan-yana birləşdirilmiş səhifələri cüt nömrəli səhifələrdən başlat
spread_even_label=Cüt nömrəli
# Document properties dialog box
document_properties.title=Sənəd xüsusiyyətləri…
document_properties_label=Sənəd xüsusiyyətləri…
document_properties_file_name=Fayl adı:
document_properties_file_size=Fayl Ã¶lçüsü:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bayt)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bayt)
document_properties_title=Başlık:
document_properties_author=Müəllif:
document_properties_subject=Mövzu:
document_properties_keywords=Açar sözlər:
document_properties_creation_date=Yaradılış Tarixi :
document_properties_modification_date=Dəyişdirilmə Tarixi :
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Yaradan:
document_properties_producer=PDF yaradıcısı:
document_properties_version=PDF versiyası:
document_properties_page_count=Səhifə sayı:
document_properties_page_size=Səhifə Ã–lçüsü:
document_properties_page_size_unit_inches=inç
document_properties_page_size_unit_millimeters=mm
document_properties_page_size_orientation_portrait=portret
document_properties_page_size_orientation_landscape=albom
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Məktub
document_properties_page_size_name_legal=Hüquqi
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} Ã— {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}} Ã— {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=Fast Web View:
document_properties_linearized_yes=Bəli
document_properties_linearized_no=Xeyr
document_properties_close=Qapat
print_progress_message=Sənəd Ã§ap Ã¼Ã§Ã¼n hazırlanır…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Ləğv et
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Yan Paneli Aç/Bağla
toggle_sidebar_notification.title=Yan paneli Ã§evir (sənəddə icmal/bağlama var)
toggle_sidebar_label=Yan Paneli Aç/Bağla
document_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq Ã¼Ã§Ã¼n iki dəfə klikləyin)
document_outline_label=Sənəd strukturu
attachments.title=Bağlamaları göstər
attachments_label=Bağlamalar
thumbs.title=Kiçik ÅŸÉ™killəri göstər
thumbs_label=Kiçik ÅŸÉ™killər
findbar.title=Sənəddə Tap
findbar_label=Tap
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Səhifə{{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas={{page}} səhifəsinin kiçik vəziyyəti
# Find panel button title and messages
find_input.title=Tap
find_input.placeholder=Sənəddə tap…
find_previous.title=Bir Ã¶ncəki uyğun gələn sözü tapır
find_previous_label=Geri
find_next.title=Bir sonrakı uyğun gələn sözü tapır
find_next_label=İrəli
find_highlight=İşarələ
find_match_case_label=Böyük/kiçik hərfə həssaslıq
find_entire_word_label=Tam sözlər
find_reached_top=Sənədin yuxarısına Ã§atdı, aşağıdan davam edir
find_reached_bottom=Sənədin sonuna Ã§atdı, yuxarıdan davam edir
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
find_match_count={[ plural(total) ]}
find_match_count[one]={{current}} / {{total}} uyğunluq
find_match_count[two]={{current}} / {{total}} uyğunluq
find_match_count[few]={{current}} / {{total}} uyğunluq
find_match_count[many]={{current}} / {{total}} uyğunluq
find_match_count[other]={{current}} / {{total}} uyğunluq
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]={{limit}}-dan Ã§ox uyğunluq
find_match_count_limit[one]={{limit}}-dən Ã§ox uyğunluq
find_match_count_limit[two]={{limit}}-dən Ã§ox uyğunluq
find_match_count_limit[few]={{limit}} uyğunluqdan daha Ã§ox
find_match_count_limit[many]={{limit}} uyğunluqdan daha Ã§ox
find_match_count_limit[other]={{limit}} uyğunluqdan daha Ã§ox
find_not_found=Uyğunlaşma tapılmadı
# Error panel labels
error_more_info=Daha Ã§ox məlumati
error_less_info=Daha az məlumat
error_close=Qapat
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (yığma: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=İsmarıc: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stek: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Fayl: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Sətir: {{line}}
rendering_error=Səhifə göstərilərkən səhv yarandı.
# Predefined zoom values
page_scale_width=Səhifə genişliyi
page_scale_fit=Səhifəni sığdır
page_scale_auto=Avtomatik yaxınlaşdır
page_scale_actual=Hazırkı Həcm
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Səhv
loading_error=PDF yüklenərkən bir səhv yarandı.
invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl.
missing_file_error=PDF fayl yoxdur.
unexpected_response_error=Gözlənilməz server cavabı.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Annotasiyası]
password_label=Bu PDF faylı açmaq Ã¼Ã§Ã¼n parolu daxil edin.
password_invalid=Parol səhvdir. Bir daha yoxlayın.
password_ok=Tamam
password_cancel=Ləğv et
printing_not_supported=Xəbərdarlıq: Ã‡ap bu səyyah tərəfindən tam olaraq dəstəklənmir.
printing_not_ready=Xəbərdarlıq: PDF Ã§ap Ã¼Ã§Ã¼n tam yüklənməyib.
web_fonts_disabled=Web Åžriftlər söndürülüb: yerləşdirilmiş PDF ÅŸriftlərini istifadə etmək mümkün deyil.
document_colors_not_allowed=PDF sənədlərə Ã¶z rənglərini işlətməyə icazə verilmir: â€œSəhifələrə Ã¶z rənglərini istifadə etməyə icazə ver”mə səyyahda söndürülüb.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/be/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,242 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Папярэдняя ÑÑ‚аронка
previous_label=Папярэдняя
next.title=Наступная ÑÑ‚аронка
next_label=Наступная
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Старонка
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=з {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} Ð· {{pagesCount}})
zoom_out.title=Паменшыць
zoom_out_label=Паменшыць
zoom_in.title=Павялічыць
zoom_in_label=Павялічыць
zoom.title=Павялічэнне Ñ‚эксту
presentation_mode.title=Пераключыцца Ñž Ñ€ÑÐ¶Ñ‹Ð¼ Ð¿Ð°ÐºÐ°Ð·Ñƒ
presentation_mode_label=Рэжым Ð¿Ð°ÐºÐ°Ð·Ñƒ
open_file.title=Адкрыць Ñ„айл
open_file_label=Адкрыць
print.title=Друкаваць
print_label=Друкаваць
download.title=Сцягнуць
download_label=Сцягнуць
bookmark.title=Цяперашняя Ð¿Ñ€Ð°ÑÐ²Ð° (скапіяваць Ð°Ð±Ð¾ Ð°Ð´Ñ‡Ñ‹Ð½Ñ–ць Ñƒ Ð½Ð¾Ð²Ñ‹Ð¼ Ð°ÐºÐ½Ðµ)
bookmark_label=Цяперашняя Ð¿Ñ€Ð°ÑÐ²Ð°
# Secondary toolbar and context menu
tools.title=Прылады
tools_label=Прылады
first_page.title=Перайсці Ð½Ð° Ð¿ÐµÑ€ÑˆÑƒÑŽ ÑÑ‚Ð°Ñ€Ð¾Ð½ÐºÑƒ
first_page.label=Перайсці Ð½Ð° Ð¿ÐµÑ€ÑˆÑƒÑŽ ÑÑ‚Ð°Ñ€Ð¾Ð½ÐºÑƒ
first_page_label=Перайсці Ð½Ð° Ð¿ÐµÑ€ÑˆÑƒÑŽ ÑÑ‚Ð°Ñ€Ð¾Ð½ÐºÑƒ
last_page.title=Перайсці Ð½Ð° Ð°Ð¿Ð¾ÑˆÐ½ÑŽÑŽ ÑÑ‚Ð°Ñ€Ð¾Ð½ÐºÑƒ
last_page.label=Перайсці Ð½Ð° Ð°Ð¿Ð¾ÑˆÐ½ÑŽÑŽ ÑÑ‚Ð°Ñ€Ð¾Ð½ÐºÑƒ
last_page_label=Перайсці Ð½Ð° Ð°Ð¿Ð¾ÑˆÐ½ÑŽÑŽ ÑÑ‚Ð°Ñ€Ð¾Ð½ÐºÑƒ
page_rotate_cw.title=Павярнуць Ð¿Ð° ÑÐ¾Ð½Ñ†Ñƒ
page_rotate_cw.label=Павярнуць Ð¿Ð° ÑÐ¾Ð½Ñ†Ñƒ
page_rotate_cw_label=Павярнуць Ð¿Ð° ÑÐ¾Ð½Ñ†Ñƒ
page_rotate_ccw.title=Павярнуць ÑÑƒÐ¿Ñ€Ð°Ñ†ÑŒ ÑÐ¾Ð½Ñ†Ð°
page_rotate_ccw.label=Павярнуць ÑÑƒÐ¿Ñ€Ð°Ñ†ÑŒ ÑÐ¾Ð½Ñ†Ð°
page_rotate_ccw_label=Павярнуць ÑÑƒÐ¿Ñ€Ð°Ñ†ÑŒ ÑÐ¾Ð½Ñ†Ð°
cursor_text_select_tool.title=Уключыць Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ñƒ Ð²Ñ‹Ð±Ð°Ñ€Ñƒ Ñ‚эксту
cursor_text_select_tool_label=Прылада Ð²Ñ‹Ð±Ð°Ñ€Ñƒ Ñ‚эксту
cursor_hand_tool.title=Уключыць Ñ€ÑƒÑ‡Ð½ÑƒÑŽ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ñƒ
cursor_hand_tool_label=Ручная Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ð°
scroll_vertical.title=Ужываць Ð²ÐµÑ€Ñ‚ыкальную Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ку
scroll_vertical_label=Вертыкальная Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ка
scroll_horizontal.title=Ужываць Ð³Ð°Ñ€Ñ‹Ð·Ð°Ð½Ñ‚альную Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ку
scroll_horizontal_label=Гарызантальная Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ка
scroll_wrapped.title=Ужываць Ð¼Ð°ÑˆÑ‚абавальную Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ку
scroll_wrapped_label=Маштабавальная Ð¿Ñ€Ð°ÐºÑ€ÑƒÑ‚ка
spread_none.title=Не Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚оўваць Ñ€Ð°Ð·Ð³Ð¾Ñ€Ð½ÑƒÑ‚ыя ÑÑ‚аронкі
spread_none_label=Без Ñ€Ð°Ð·Ð³Ð¾Ñ€Ð½ÑƒÑ‚ых ÑÑ‚аронак
spread_odd.title=Разгорнутыя ÑÑ‚аронкі Ð¿Ð°Ñ‡Ñ‹Ð½Ð°ÑŽÑ‡Ñ‹ Ð· Ð½ÑÑ†Ð¾Ñ‚ных Ð½ÑƒÐ¼Ð°Ñ€Ð¾Ñž
spread_odd_label=Няцотныя ÑÑ‚аронкі Ð·Ð»ÐµÐ²Ð°
spread_even.title=Разгорнутыя ÑÑ‚аронкі Ð¿Ð°Ñ‡Ñ‹Ð½Ð°ÑŽÑ‡Ñ‹ Ð· Ñ†Ð¾Ñ‚ных Ð½ÑƒÐ¼Ð°Ñ€Ð¾Ñž
spread_even_label=Цотныя ÑÑ‚аронкі Ð·Ð»ÐµÐ²Ð°
# Document properties dialog box
document_properties.title=Уласцівасці Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚а…
document_properties_label=Уласцівасці Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚а…
document_properties_file_name=Назва Ñ„айла:
document_properties_file_size=Памер Ñ„айла:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} ÐšÐ‘ ({{size_b}} Ð±Ð°Ð¹Ñ‚)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} ÐœÐ‘ ({{size_b}} Ð±Ð°Ð¹Ñ‚)
document_properties_title=Загаловак:
document_properties_author=Аўтар:
document_properties_subject=Тэма:
document_properties_keywords=Ключавыя ÑÐ»Ð¾Ð²Ñ‹:
document_properties_creation_date=Дата ÑÑ‚варэння:
document_properties_modification_date=Дата Ð·Ð¼ÑÐ½ÐµÐ½Ð½Ñ:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Стваральнік:
document_properties_producer=Вырабнік PDF:
document_properties_version=Версія PDF:
document_properties_page_count=Колькасць ÑÑ‚аронак:
document_properties_page_size=Памер ÑÑ‚аронкі:
document_properties_page_size_unit_inches=цаляў
document_properties_page_size_unit_millimeters=мм
document_properties_page_size_orientation_portrait=кніжная
document_properties_page_size_orientation_landscape=альбомная
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Letter
document_properties_page_size_name_legal=Legal
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} Ã— {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}} Ã— {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=Хуткі Ð¿Ñ€Ð°Ð³Ð»ÑÐ´ Ñƒ Ð†Ð½Ñ‚эрнэце:
document_properties_linearized_yes=Так
document_properties_linearized_no=Не
document_properties_close=Закрыць
print_progress_message=Падрыхтоўка Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚а Ð´Ð° Ð´Ñ€ÑƒÐºÑƒâ€¦
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Скасаваць
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Паказаць/схаваць Ð±Ð°ÐºÐ°Ð²ÑƒÑŽ Ð¿Ð°Ð½ÑÐ»ÑŒ
toggle_sidebar_notification.title=Паказаць/схаваць Ð±Ð°ÐºÐ°Ð²ÑƒÑŽ Ð¿Ð°Ð½ÑÐ»ÑŒ (дакумент Ð¼Ð°Ðµ Ð·Ð¼ÐµÑÑ‚/укладанні)
toggle_sidebar_label=Паказаць/схаваць Ð±Ð°ÐºÐ°Ð²ÑƒÑŽ Ð¿Ð°Ð½ÑÐ»ÑŒ
document_outline.title=Паказаць ÑÑ‚руктуру Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚а (двайная Ð¿ÑÑ‚рычка, ÐºÐ°Ð± Ñ€Ð°Ð·Ð³Ð°Ñ€Ð½ÑƒÑ†ÑŒ /згарнуць ÑƒÑÐµ ÑÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹)
document_outline_label=Структура Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚а
attachments.title=Паказаць Ð´Ð°Ð»ÑƒÑ‡ÑÐ½Ð½Ñ–
attachments_label=Далучэнні
thumbs.title=Паказ Ð¼Ñ–ніяцюр
thumbs_label=Мініяцюры
findbar.title=Пошук Ñƒ Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ†Ðµ
findbar_label=Знайсці
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Старонка {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Мініяцюра ÑÑ‚аронкі {{page}}
# Find panel button title and messages
find_input.title=Шукаць
find_input.placeholder=Шукаць Ñƒ Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ†Ðµâ€¦
find_previous.title=Знайсці Ð¿Ð°Ð¿ÑÑ€ÑÐ´Ð½Ñ– Ð²Ñ‹Ð¿Ð°Ð´Ð°Ðº Ð²Ñ‹Ñ€Ð°Ð·Ñƒ
find_previous_label=Папярэдні
find_next.title=Знайсці Ð½Ð°ÑÑ‚упны Ð²Ñ‹Ð¿Ð°Ð´Ð°Ðº Ð²Ñ‹Ñ€Ð°Ð·Ñƒ
find_next_label=Наступны
find_highlight=Падфарбаваць ÑƒÑÐµ
find_match_case_label=Адрозніваць Ð²ÑÐ»Ñ–кія/малыя Ð»Ñ–тары
find_entire_word_label=Словы Ñ†Ð°Ð»ÐºÐ°Ð¼
find_reached_top=Дасягнуты Ð¿Ð°Ñ‡Ð°Ñ‚ак Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚а, Ð¿Ñ€Ð°Ñ†ÑÐ³ Ð· ÐºÐ°Ð½Ñ†Ð°
find_reached_bottom=Дасягнуты ÐºÐ°Ð½ÐµÑ† Ð´Ð°ÐºÑƒÐ¼ÐµÐ½Ñ‚а, Ð¿Ñ€Ð°Ñ†ÑÐ³ Ð· Ð¿Ð°Ñ‡Ð°Ñ‚ку
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
find_match_count={[ plural(total) ]}
find_match_count[one]={{current}} Ð· {{total}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½Ñ
find_match_count[two]={{current}} Ð· {{total}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
find_match_count[few]={{current}} Ð· {{total}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
find_match_count[many]={{current}} Ð· {{total}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
find_match_count[other]={{current}} Ð· {{total}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=Больш Ð·Ð° {{limit}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
find_match_count_limit[one]=Больш Ð·Ð° {{limit}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½Ðµ
find_match_count_limit[two]=Больш Ð·Ð° {{limit}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
find_match_count_limit[few]=Больш Ð·Ð° {{limit}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
find_match_count_limit[many]=Больш Ð·Ð° {{limit}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
find_match_count_limit[other]=Больш Ð·Ð° {{limit}} ÑÑƒÐ¿Ð°Ð´Ð·ÐµÐ½Ð½ÑÑž
find_not_found=Выраз Ð½Ðµ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹
# Error panel labels
error_more_info=Падрабязней
error_less_info=Сцісла
error_close=Закрыць
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js Ð²{{version}} (зборка: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Паведамленне: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Стос: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Файл: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Радок: {{line}}
rendering_error=Здарылася Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð°Ð´Ð»ÑŽÑÑ‚равання ÑÑ‚аронкі.
# Predefined zoom values
page_scale_width=Шырыня ÑÑ‚аронкі
page_scale_fit=Уцісненне ÑÑ‚аронкі
page_scale_auto=Аўтаматычнае Ð¿Ð°Ð²ÐµÐ»Ñ–чэнне
page_scale_actual=Сапраўдны Ð¿Ð°Ð¼ÐµÑ€
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Памылка
loading_error=Здарылася Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– PDF.
invalid_file_error=Няспраўны Ð°Ð±Ð¾ Ð¿Ð°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½Ñ‹ Ñ„айл PDF.
missing_file_error=Адсутны Ñ„айл PDF.
unexpected_response_error=Нечаканы Ð°Ð´ÐºÐ°Ð· ÑÐµÑ€Ð²ÐµÑ€Ð°.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Annotation]
password_label=Увядзіце Ð¿Ð°Ñ€Ð¾Ð»ÑŒ, ÐºÐ°Ð± Ð°Ð´ÐºÑ€Ñ‹Ñ†ÑŒ Ð³ÑÑ‚Ñ‹ Ñ„айл PDF.
password_invalid=Нядзейсны Ð¿Ð°Ñ€Ð¾Ð»ÑŒ. ÐŸÐ°ÑÐ¿Ñ€Ð°Ð±ÑƒÐ¹Ñ†Ðµ Ð·Ð½Ð¾Ñž.
password_ok=Добра
password_cancel=Скасаваць
printing_not_supported=Папярэджанне: Ð´Ñ€ÑƒÐº Ð½Ðµ Ð¿Ð°Ð´Ñ‚рымліваецца Ñ†Ð°Ð»ÐºÐ°Ð¼ Ð³ÑÑ‚ым Ð±Ñ€Ð°ÑžÐ·ÐµÑ€Ð°Ð¼.
printing_not_ready=Увага: PDF Ð½Ðµ ÑÑ†ÑÐ³Ð½ÑƒÑ‚Ñ‹ Ñ†Ð°Ð»ÐºÐ°Ð¼ Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÐ°Ð²Ð°Ð½Ð½Ñ.
web_fonts_disabled=Шрыфты Ð¡ÐµÑ†Ñ–ва Ð·Ð°Ð±Ð°Ñ€Ð¾Ð½ÐµÐ½Ñ‹: Ð½ÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° ÑžÐ¶Ñ‹Ð²Ð°Ñ†ÑŒ ÑƒÐºÐ»Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ ÑˆÑ€Ñ‹Ñ„ты PDF.
document_colors_not_allowed=PDF-дакументам Ð½Ðµ Ð´Ð°Ð·Ð²Ð¾Ð»ÐµÐ½Ð° Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚оўваць ÑÐ²Ð°Ðµ ÐºÐ¾Ð»ÐµÑ€Ñ‹: Ñƒ Ð±Ñ€Ð°ÑžÐ·ÐµÑ€Ñ‹ Ð°Ð´ÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ "Дазволіць Ð²ÑÐ±-сайтам Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚оўваць ÑÐ²Ð°Ðµ ÐºÐ¾Ð»ÐµÑ€Ñ‹".
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/bg/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,242 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Предишна ÑÑ‚раница
previous_label=Предишна
next.title=Следваща ÑÑ‚раница
next_label=Следваща
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Страница
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=от {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} Ð¾Ñ‚ {{pagesCount}})
zoom_out.title=Намаляване
zoom_out_label=Намаляване
zoom_in.title=Увеличаване
zoom_in_label=Увеличаване
zoom.title=Мащабиране
presentation_mode.title=Превключване ÐºÑŠÐ¼ Ñ€ÐµÐ¶Ð¸Ð¼ Ð½Ð° Ð¿Ñ€ÐµÐ´ÑÑ‚авяне
presentation_mode_label=Режим Ð½Ð° Ð¿Ñ€ÐµÐ´ÑÑ‚авяне
open_file.title=Отваряне Ð½Ð° Ñ„айл
open_file_label=Отваряне
print.title=Отпечатване
print_label=Отпечатване
download.title=Изтегляне
download_label=Изтегляне
bookmark.title=Текущ Ð¸Ð·Ð³Ð»ÐµÐ´ (копиране Ð¸Ð»Ð¸ Ð¾Ñ‚варяне Ð² Ð½Ð¾Ð² Ð¿Ñ€Ð¾Ð·Ð¾Ñ€ÐµÑ†)
bookmark_label=Текущ Ð¸Ð·Ð³Ð»ÐµÐ´
# Secondary toolbar and context menu
tools.title=Инструменти
tools_label=Инструменти
first_page.title=Към Ð¿ÑŠÑ€Ð²Ð°Ñ‚а ÑÑ‚раница
first_page.label=Към Ð¿ÑŠÑ€Ð²Ð°Ñ‚а ÑÑ‚раница
first_page_label=Към Ð¿ÑŠÑ€Ð²Ð°Ñ‚а ÑÑ‚раница
last_page.title=Към Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð°Ñ‚а ÑÑ‚раница
last_page.label=Към Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð°Ñ‚а ÑÑ‚раница
last_page_label=Към Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð°Ñ‚а ÑÑ‚раница
page_rotate_cw.title=Завъртане Ð¿Ð¾ Ñ‡Ð°Ñ. ÑÑ‚релка
page_rotate_cw.label=Завъртане Ð¿Ð¾ Ñ‡Ð°ÑÐ¾Ð²Ð½Ð¸ÐºÐ¾Ð²Ð°Ñ‚а ÑÑ‚релка
page_rotate_cw_label=Завъртане Ð¿Ð¾ Ñ‡Ð°ÑÐ¾Ð²Ð½Ð¸ÐºÐ¾Ð²Ð°Ñ‚а ÑÑ‚релка
page_rotate_ccw.title=Завъртане Ð¾Ð±Ñ€Ð°Ñ‚но Ð½Ð° Ñ‡Ð°Ñ. ÑÑ‚релка
page_rotate_ccw.label=Завъртане Ð¾Ð±Ñ€Ð°Ñ‚но Ð½Ð° Ñ‡Ð°ÑÐ¾Ð²Ð½Ð¸ÐºÐ¾Ð²Ð°Ñ‚а ÑÑ‚релка
page_rotate_ccw_label=Завъртане Ð¾Ð±Ñ€Ð°Ñ‚но Ð½Ð° Ñ‡Ð°ÑÐ¾Ð²Ð½Ð¸ÐºÐ¾Ð²Ð°Ñ‚а ÑÑ‚релка
cursor_text_select_tool.title=Включване Ð½Ð° Ð¸Ð½ÑÑ‚румента Ð·Ð° Ð¸Ð·Ð±Ð¾Ñ€ Ð½Ð° Ñ‚екст
cursor_text_select_tool_label=Инструмент Ð·Ð° Ð¸Ð·Ð±Ð¾Ñ€ Ð½Ð° Ñ‚екст
cursor_hand_tool.title=Включване Ð½Ð° Ð¸Ð½ÑÑ‚румента Ñ€ÑŠÐºÐ°
cursor_hand_tool_label=Инструмент Ñ€ÑŠÐºÐ°
scroll_vertical.title=Използване Ð½Ð° Ð²ÐµÑ€Ñ‚икално Ð¿Ð»ÑŠÐ·Ð³Ð°Ð½Ðµ
scroll_vertical_label=Вертикално Ð¿Ð»ÑŠÐ·Ð³Ð°Ð½Ðµ
scroll_horizontal.title=Използване Ð½Ð° Ñ…оризонтално
scroll_horizontal_label=Хоризонтално Ð¿Ð»ÑŠÐ·Ð³Ð°Ð½Ðµ
scroll_wrapped.title=Използване Ð½Ð° Ð¼Ð°Ñ‰Ð°Ð±Ð¸Ñ€ÑƒÐµÐ¼Ð¾ Ð¿Ð»ÑŠÐ·Ð³Ð°Ð½Ðµ
scroll_wrapped_label=Мащабируемо Ð¿Ð»ÑŠÐ·Ð³Ð°Ð½Ðµ
spread_none.title=Режимът Ð½Ð° ÑÐ´Ð²Ð¾ÑÐ²Ð°Ð½Ðµ Ðµ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½
spread_none_label=Без ÑÐ´Ð²Ð¾ÑÐ²Ð°Ð½Ðµ
spread_odd.title=Сдвояване, Ð·Ð°Ð¿Ð¾Ñ‡Ð²Ð°Ð¹ÐºÐ¸ Ð¾Ñ‚ Ð½ÐµÑ‡ÐµÑ‚ните ÑÑ‚раници
spread_odd_label=Нечетните Ð¾Ñ‚ляво
spread_even.title=Сдвояване, Ð·Ð°Ð¿Ð¾Ñ‡Ð²Ð°Ð¹ÐºÐ¸ Ð¾Ñ‚ Ñ‡ÐµÑ‚ните ÑÑ‚раници
spread_even_label=Четните Ð¾Ñ‚ляво
# Document properties dialog box
document_properties.title=Свойства Ð½Ð° Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а…
document_properties_label=Свойства Ð½Ð° Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а…
document_properties_file_name=Име Ð½Ð° Ñ„айл:
document_properties_file_size=Големина Ð½Ð° Ñ„айл:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} ÐšÐ‘ ({{size_b}} Ð±Ð°Ð¹Ñ‚а)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} ÐœÐ‘ ({{size_b}} Ð±Ð°Ð¹Ñ‚а)
document_properties_title=Заглавие:
document_properties_author=Автор:
document_properties_subject=Тема:
document_properties_keywords=Ключови Ð´ÑƒÐ¼Ð¸:
document_properties_creation_date=Дата Ð½Ð° ÑÑŠÐ·Ð´Ð°Ð²Ð°Ð½Ðµ:
document_properties_modification_date=Дата Ð½Ð° Ð¿Ñ€Ð¾Ð¼ÑÐ½Ð°:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Създател:
document_properties_producer=PDF Ð¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½ Ð¾Ñ‚:
document_properties_version=Издание Ð½Ð° PDF:
document_properties_page_count=Брой ÑÑ‚раници:
document_properties_page_size=Размер Ð½Ð° ÑÑ‚раницата:
document_properties_page_size_unit_inches=инч
document_properties_page_size_unit_millimeters=мм
document_properties_page_size_orientation_portrait=портрет
document_properties_page_size_orientation_landscape=пейзаж
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Letter
document_properties_page_size_name_legal=Правни Ð²ÑŠÐ¿Ñ€Ð¾ÑÐ¸
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} Ã— {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}} Ã— {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=Бърз Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´:
document_properties_linearized_yes=Да
document_properties_linearized_no=Не
document_properties_close=Затваряне
print_progress_message=Подготвяне Ð½Ð° Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а Ð·Ð° Ð¾Ñ‚печатване…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Отказ
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Превключване Ð½Ð° ÑÑ‚раничната Ð»ÐµÐ½Ñ‚а
toggle_sidebar_notification.title=Превключване Ð½Ð° ÑÑ‚раничната Ð»ÐµÐ½Ñ‚а (документи ÑÑŠÑ ÑÑ‚руктура/прикачени Ñ„айлове)
toggle_sidebar_label=Превключване Ð½Ð° ÑÑ‚раничната Ð»ÐµÐ½Ñ‚а
document_outline.title=Показване Ð½Ð° ÑÑ‚руктурата Ð½Ð° Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а (двукратно Ñ‰Ñ€Ð°ÐºÐ²Ð°Ð½Ðµ Ð·Ð° ÑÐ²Ð¸Ð²Ð°Ð½Ðµ/разгъване Ð½Ð° Ð²ÑÐ¸Ñ‡ÐºÐ¾)
document_outline_label=Структура Ð½Ð° Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а
attachments.title=Показване Ð½Ð° Ð¿Ñ€Ð¸Ñ‚урките
attachments_label=Притурки
thumbs.title=Показване Ð½Ð° Ð¼Ð¸Ð½Ð¸Ð°Ñ‚юрите
thumbs_label=Миниатюри
findbar.title=Намиране Ð² Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а
findbar_label=Търсене
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Страница {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Миниатюра Ð½Ð° ÑÑ‚раница {{page}}
# Find panel button title and messages
find_input.title=Търсене
find_input.placeholder=Търсене Ð² Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а…
find_previous.title=Намиране Ð½Ð° Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð¾ ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ð½Ð° Ñ„разата
find_previous_label=Предишна
find_next.title=Намиране Ð½Ð° ÑÐ»ÐµÐ´Ð²Ð°Ñ‰Ð¾ ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ð½Ð° Ñ„разата
find_next_label=Следваща
find_highlight=Открояване Ð½Ð° Ð²ÑÐ¸Ñ‡ÐºÐ¸
find_match_case_label=Съвпадение Ð½Ð° Ñ€ÐµÐ³Ð¸ÑÑ‚ъра
find_entire_word_label=Цели Ð´ÑƒÐ¼Ð¸
find_reached_top=Достигнато Ðµ Ð½Ð°Ñ‡Ð°Ð»Ð¾Ñ‚о Ð½Ð° Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а, Ð¿Ñ€Ð¾Ð´ÑŠÐ»Ð¶Ð°Ð²Ð°Ð½Ðµ Ð¾Ñ‚ ÐºÑ€Ð°Ñ
find_reached_bottom=Достигнат Ðµ ÐºÑ€Ð°ÑÑ‚ Ð½Ð° Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚а, Ð¿Ñ€Ð¾Ð´ÑŠÐ»Ð¶Ð°Ð²Ð°Ð½Ðµ Ð¾Ñ‚ Ð½Ð°Ñ‡Ð°Ð»Ð¾Ñ‚о
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
find_match_count={[ plural(total) ]}
find_match_count[one]={{current}} Ð¾Ñ‚ {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ
find_match_count[two]={{current}} Ð¾Ñ‚ {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
find_match_count[few]={{current}} Ð¾Ñ‚ {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
find_match_count[many]={{current}} Ð¾Ñ‚ {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
find_match_count[other]={{current}} Ð¾Ñ‚ {{total}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=Повече Ð¾Ñ‚ {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
find_match_count_limit[one]=Повече Ð¾Ñ‚ {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ
find_match_count_limit[two]=Повече Ð¾Ñ‚ {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
find_match_count_limit[few]=Повече Ð¾Ñ‚ {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
find_match_count_limit[many]=Повече Ð¾Ñ‚ {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
find_match_count_limit[other]=Повече Ð¾Ñ‚ {{limit}} ÑÑŠÐ²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ
find_not_found=Фразата Ð½Ðµ Ðµ Ð½Ð°Ð¼ÐµÑ€ÐµÐ½Ð°
# Error panel labels
error_more_info=Повече Ð¸Ð½Ñ„ормация
error_less_info=По-малко Ð¸Ð½Ñ„ормация
error_close=Затваряне
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=Издание Ð½Ð° PDF.js {{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Съобщение: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Стек: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Файл: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Ред: {{line}}
rendering_error=Грешка Ð¿Ñ€Ð¸ Ð¸Ð·Ñ‡ÐµÑ€Ñ‚аване Ð½Ð° ÑÑ‚раницата.
# Predefined zoom values
page_scale_width=Ширина Ð½Ð° ÑÑ‚раницата
page_scale_fit=Вместване Ð² ÑÑ‚раницата
page_scale_auto=Автоматично Ð¼Ð°Ñ‰Ð°Ð±Ð¸Ñ€Ð°Ð½Ðµ
page_scale_actual=Действителен Ñ€Ð°Ð·Ð¼ÐµÑ€
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Грешка
loading_error=Получи ÑÐµ Ð³Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸ Ð·Ð°Ñ€ÐµÐ¶Ð´Ð°Ð½Ðµ Ð½Ð° PDF-а.
invalid_file_error=Невалиден Ð¸Ð»Ð¸ Ð¿Ð¾Ð²Ñ€ÐµÐ´ÐµÐ½ PDF Ñ„айл.
missing_file_error=Липсващ PDF Ñ„айл.
unexpected_response_error=Неочакван Ð¾Ñ‚говор Ð¾Ñ‚ ÑÑŠÑ€Ð²ÑŠÑ€Ð°.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Анотация {{type}}]
password_label=Въведете Ð¿Ð°Ñ€Ð¾Ð»Ð° Ð·Ð° Ð¾Ñ‚варяне Ð½Ð° Ñ‚ози PDF Ñ„айл.
password_invalid=Невалидна Ð¿Ð°Ñ€Ð¾Ð»Ð°. ÐœÐ¾Ð»Ñ, Ð¾Ð¿Ð¸Ñ‚айте Ð¾Ñ‚ново.
password_ok=Добре
password_cancel=Отказ
printing_not_supported=Внимание: Ð¢Ð¾Ð·Ð¸ Ñ‡ÐµÑ‚ец Ð½ÑÐ¼Ð° Ð¿ÑŠÐ»Ð½Ð° Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° Ð½Ð° Ð¾Ñ‚печатване.
printing_not_ready=Внимание: Ð¢Ð¾Ð·Ð¸ PDF Ñ„айл Ð½Ðµ Ðµ Ð½Ð°Ð¿ÑŠÐ»Ð½Ð¾ Ð·Ð°Ñ€ÐµÐ´ÐµÐ½ Ð·Ð° Ð¿ÐµÑ‡Ð°Ñ‚.
web_fonts_disabled=Уеб-шрифтовете ÑÐ° Ð·Ð°Ð±Ñ€Ð°Ð½ÐµÐ½Ð¸: Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°Ð²Ð°Ð½Ðµ Ð½Ð° Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½ÐµÑ‚о Ð½Ð° Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ‚е PDF ÑˆÑ€Ð¸Ñ„тове.
document_colors_not_allowed=На Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚ите Ð¾Ñ‚ Ð²Ð¸Ð´ PDF Ð½Ðµ Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð´Ð° Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ñ‚ ÑÐ¾Ð±ÑÑ‚вени Ñ†Ð²ÐµÑ‚ове: â€žÐ Ð°Ð·Ñ€ÐµÑˆÐ°Ð²Ð°Ð½Ðµ Ð½Ð° ÑÑ‚раниците Ð´Ð° Ð¸Ð·Ð±Ð¸Ñ€Ð°Ñ‚ ÑÐ¾Ð±ÑÑ‚вени Ñ†Ð²ÐµÑ‚ове“ Ðµ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¾ Ð² Ñ‡ÐµÑ‚еца.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/bn-BD/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,215 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=পূর্ববর্তী à¦ªà¦¾à¦¤à¦¾
previous_label=পূর্ববর্তী
next.title=পরবর্তী à¦ªà¦¾à¦¤à¦¾
next_label=পরবর্তী
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=পাতা
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages={{pagesCount}} à¦à¦°
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pagesCount}} à¦à¦° {{pageNumber}})
zoom_out.title=ছোট à¦†à¦•ারে à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
zoom_out_label=ছোট à¦†à¦•ারে à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
zoom_in.title=বড় à¦†à¦•ারে à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
zoom_in_label=বড় à¦†à¦•ারে à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
zoom.title=বড় à¦†à¦•ারে à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
presentation_mode.title=উপস্থাপনা à¦®à§‹à¦¡à§‡ à¦¸à§à¦¯à§à¦‡à¦š à¦•রুন
presentation_mode_label=উপস্থাপনা à¦®à§‹à¦¡
open_file.title=ফাইল à¦–ুলুন
open_file_label=খুলুন
print.title=মুদ্রণ
print_label=মুদ্রণ
download.title=ডাউনলোড
download_label=ডাউনলোড
bookmark.title=বর্তমান à¦…বস্থা (অনুলিপি à¦…থবা à¦¨à¦¤à§à¦¨ à¦‰à¦‡à¦¨à§à¦¡à§‹ à¦¤à§‡ à¦–ুলুন)
bookmark_label=বর্তমান à¦…বস্থা
# Secondary toolbar and context menu
tools.title=টুল
tools_label=টুল
first_page.title=প্রথম à¦ªà¦¾à¦¤à¦¾à§Ÿ à¦¯à¦¾à¦“
first_page.label=প্রথম à¦ªà¦¾à¦¤à¦¾à§Ÿ à¦¯à¦¾à¦“
first_page_label=প্রথম à¦ªà¦¾à¦¤à¦¾à§Ÿ à¦¯à¦¾à¦“
last_page.title=শেষ à¦ªà¦¾à¦¤à¦¾à§Ÿ à¦¯à¦¾à¦“
last_page.label=শেষ à¦ªà¦¾à¦¤à¦¾à§Ÿ à¦¯à¦¾à¦“
last_page_label=শেষ à¦ªà¦¾à¦¤à¦¾à§Ÿ à¦¯à¦¾à¦“
page_rotate_cw.title=ঘড়ির à¦•াঁটার à¦¦à¦¿à¦•ে à¦˜à§‹à¦°à¦¾à¦“
page_rotate_cw.label=ঘড়ির à¦•াঁটার à¦¦à¦¿à¦•ে à¦˜à§‹à¦°à¦¾à¦“
page_rotate_cw_label=ঘড়ির à¦•াঁটার à¦¦à¦¿à¦•ে à¦˜à§‹à¦°à¦¾à¦“
page_rotate_ccw.title=ঘড়ির à¦•াঁটার à¦¬à¦¿à¦ªà¦°à§€à¦¤à§‡ à¦˜à§‹à¦°à¦¾à¦“
page_rotate_ccw.label=ঘড়ির à¦•াঁটার à¦¬à¦¿à¦ªà¦°à§€à¦¤à§‡ à¦˜à§‹à¦°à¦¾à¦“
page_rotate_ccw_label=ঘড়ির à¦•াঁটার à¦¬à¦¿à¦ªà¦°à§€à¦¤à§‡ à¦˜à§‹à¦°à¦¾à¦“
cursor_text_select_tool.title=লেখা à¦¨à¦¿à¦°à§à¦¬à¦¾à¦šà¦• à¦Ÿà§à¦² à¦¸à¦•্রিয় à¦•রুন
cursor_text_select_tool_label=লেখা à¦¨à¦¿à¦°à§à¦¬à¦¾à¦šà¦• à¦Ÿà§à¦²
cursor_hand_tool.title=হ্যান্ড à¦Ÿà§à¦² à¦¸à¦•্রিয় à¦•রুন
cursor_hand_tool_label=হ্যান্ড à¦Ÿà§à¦²
# Document properties dialog box
document_properties.title=নথি à¦¬à§ˆà¦¶à¦¿à¦·à§à¦Ÿà§à¦¯â€¦
document_properties_label=নথি à¦¬à§ˆà¦¶à¦¿à¦·à§à¦Ÿà§à¦¯â€¦
document_properties_file_name=ফাইলের à¦¨à¦¾à¦®:
document_properties_file_size=ফাইলের à¦†à¦•ার:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} à¦•েবি ({{size_b}} à¦¬à¦¾à¦‡à¦Ÿ)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} à¦à¦®à¦¬à¦¿ ({{size_b}} à¦¬à¦¾à¦‡à¦Ÿ)
document_properties_title=শিরোনাম:
document_properties_author=লেখক:
document_properties_subject=বিষয়:
document_properties_keywords=কীওয়ার্ড:
document_properties_creation_date=তৈরির à¦¤à¦¾à¦°à¦¿à¦–:
document_properties_modification_date=পরিবর্তনের à¦¤à¦¾à¦°à¦¿à¦–:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=প্রস্তুতকারক:
document_properties_producer=পিডিএফ à¦ªà§à¦°à¦¸à§à¦¤à§à¦¤à¦•ারক:
document_properties_version=পিডিএফ à¦¸à¦‚ষ্করণ:
document_properties_page_count=মোট à¦ªà¦¾à¦¤à¦¾:
document_properties_page_size=পাতার à¦¸à¦¾à¦‡à¦œ:
document_properties_page_size_unit_inches=এর à¦®à¦§à§à¦¯à§‡
document_properties_page_size_unit_millimeters=mm
document_properties_page_size_orientation_portrait=উলম্ব
document_properties_page_size_orientation_landscape=অনুভূমিক
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=লেটার
document_properties_page_size_name_legal=লীগাল
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} Ã— {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}} Ã— {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized_yes=হ্যাঁ
document_properties_linearized_no=না
document_properties_close=বন্ধ
print_progress_message=মুদ্রণের à¦œà¦¨à§à¦¯ à¦¨à¦¥à¦¿ à¦ªà§à¦°à¦¸à§à¦¤à§à¦¤ à¦•রা à¦¹à¦šà§à¦›à§‡â€¦
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=বাতিল
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=সাইডবার à¦Ÿà¦—ল à¦•রুন
toggle_sidebar_notification.title=সাইডবার à¦Ÿà¦—ল (নথিতে à¦†à¦‰à¦Ÿà¦²à¦¾à¦‡à¦¨/এটাচমেন্ট à¦°à¦¯à¦¼à§‡à¦›à§‡)
toggle_sidebar_label=সাইডবার à¦Ÿà¦—ল à¦•রুন
document_outline.title=নথির à¦†à¦‰à¦Ÿà¦²à¦¾à¦‡à¦¨ à¦¦à§‡à¦–াও (সব à¦†à¦‡à¦Ÿà§‡à¦® à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤/সঙ্কুচিত à¦•রতে à¦¡à¦¬à¦² à¦•্লিক à¦•রুন)
document_outline_label=নথির à¦°à§‚পরেখা
attachments.title=সংযুক্তি à¦¦à§‡à¦–াও
attachments_label=সংযুক্তি
thumbs.title=থাম্বনেইল à¦¸à¦®à§‚হ à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨ à¦•রুন
thumbs_label=থাম্বনেইল à¦¸à¦®à§‚হ
findbar.title=নথির à¦®à¦§à§à¦¯à§‡ à¦–ুঁজুন
findbar_label=খুঁজুন
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=পাতা {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas={{page}} à¦ªà¦¾à¦¤à¦¾à¦° à¦¥à¦¾à¦®à§à¦¬à¦¨à§‡à¦‡à¦²
# Find panel button title and messages
find_input.title=খুঁজুন
find_input.placeholder=নথির à¦®à¦§à§à¦¯à§‡ à¦–ুঁজুন…
find_previous.title=বাক্যাংশের à¦ªà§‚র্ববর্তী à¦‰à¦ªà¦¸à§à¦¥à¦¿à¦¤à¦¿ à¦…নুসন্ধান
find_previous_label=পূর্ববর্তী
find_next.title=বাক্যাংশের à¦ªà¦°à¦¬à¦°à§à¦¤à§€ à¦‰à¦ªà¦¸à§à¦¥à¦¿à¦¤à¦¿ à¦…নুসন্ধান
find_next_label=পরবর্তী
find_highlight=সব à¦¹à¦¾à¦‡à¦²à¦¾à¦‡à¦Ÿ à¦•রা à¦¹à¦¬à§‡
find_match_case_label=অক্ষরের à¦›à¦¾à¦à¦¦ à¦®à§‡à¦²à¦¾à¦¨à§‹
find_reached_top=পাতার à¦¶à§à¦°à§à¦¤à§‡ à¦ªà§Œà¦›à§‡ à¦—েছে, à¦¨à§€à¦š à¦¥à§‡à¦•ে à¦†à¦°à¦®à§à¦­ à¦•রা à¦¹à§Ÿà§‡à¦›à§‡
find_reached_bottom=পাতার à¦¶à§‡à¦·à§‡ à¦ªà§Œà¦›à§‡ à¦—েছে, à¦‰à¦ªà¦° à¦¥à§‡à¦•ে à¦†à¦°à¦®à§à¦­ à¦•রা à¦¹à§Ÿà§‡à¦›à§‡
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_not_found=বাক্যাংশ à¦ªà¦¾à¦“য়া à¦¯à¦¾à§Ÿà¦¨à¦¿
# Error panel labels
error_more_info=আরও à¦¤à¦¥à§à¦¯
error_less_info=কম à¦¤à¦¥à§à¦¯
error_close=বন্ধ
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=বার্তা: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=নথি: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=লাইন: {{line}}
rendering_error=পাতা à¦‰à¦ªà¦¸à§à¦¥à¦¾à¦ªà¦¨à¦¾à¦° à¦¸à¦®à§Ÿ à¦¤à§à¦°à§à¦Ÿà¦¿ à¦¦à§‡à¦–া à¦¦à¦¿à§Ÿà§‡à¦›à§‡à¥¤
# Predefined zoom values
page_scale_width=পাতার à¦ªà§à¦°à¦¸à§à¦¥
page_scale_fit=পাতা à¦«à¦¿à¦Ÿ à¦•রুন
page_scale_auto=স্বয়ংক্রিয় à¦œà§à¦®
page_scale_actual=প্রকৃত à¦†à¦•ার
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=ত্রুটি
loading_error=পিডিএফ à¦²à§‹à¦¡ à¦•রার à¦¸à¦®à§Ÿ à¦¤à§à¦°à§à¦Ÿà¦¿ à¦¦à§‡à¦–া à¦¦à¦¿à§Ÿà§‡à¦›à§‡à¥¤
invalid_file_error=অকার্যকর à¦…থবা à¦•্ষতিগ্রস্ত à¦ªà¦¿à¦¡à¦¿à¦à¦« à¦«à¦¾à¦‡à¦²à¥¤
missing_file_error=নিখোঁজ PDF à¦«à¦¾à¦‡à¦²à¥¤
unexpected_response_error=অপ্রত্যাশীত à¦¸à¦¾à¦°à§à¦­à¦¾à¦° à¦ªà§à¦°à¦¤à¦¿à¦•্রিয়া।
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} à¦Ÿà§€à¦•া]
password_label=পিডিএফ à¦«à¦¾à¦‡à¦²à¦Ÿà¦¿ à¦“পেন à¦•রতে à¦ªà¦¾à¦¸à¦“য়ার্ড à¦¦à¦¿à¦¨à¥¤
password_invalid=ভুল à¦ªà¦¾à¦¸à¦“য়ার্ড। à¦…নুগ্রহ à¦•রে à¦†à¦¬à¦¾à¦° à¦šà§‡à¦·à§à¦Ÿà¦¾ à¦•রুন।
password_ok=ঠিক à¦†à¦›à§‡
password_cancel=বাতিল
printing_not_supported=সতর্কতা: à¦à¦‡ à¦¬à§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ à¦®à§à¦¦à§à¦°à¦£ à¦¸à¦®à§à¦ªà§‚র্ণভাবে à¦¸à¦®à¦°à§à¦¥à¦¿à¦¤ à¦¨à§Ÿà¥¤
printing_not_ready=সতর্কীকরণ: à¦ªà¦¿à¦¡à¦¿à¦à¦«à¦Ÿà¦¿ à¦®à§à¦¦à§à¦°à¦£à§‡à¦° à¦œà¦¨à§à¦¯ à¦¸à¦®à§à¦ªà§‚র্ণ à¦²à§‹à¦¡ à¦¹à§Ÿà¦¨à¦¿à¥¤
web_fonts_disabled=ওয়েব à¦«à¦¨à§à¦Ÿ à¦¨à¦¿à¦·à§à¦•্রিয়: à¦¸à¦‚যুক্ত à¦ªà¦¿à¦¡à¦¿à¦à¦« à¦«à¦¨à§à¦Ÿ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦° à¦•রা à¦¯à¦¾à¦šà§à¦›à§‡ à¦¨à¦¾à¥¤
document_colors_not_allowed=পিডিএফ à¦¡à¦•ুমেন্টকে à¦¤à¦¾à¦¦à§‡à¦° à¦¨à¦¿à¦œà¦¸à§à¦¬ à¦°à¦™ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦°à§‡ à¦…নুমতি à¦¨à§‡à¦‡: 'পাতা à¦¤à¦¾à¦¦à§‡à¦° à¦¨à¦¿à¦œà§‡à¦¸à§à¦¬ à¦°à¦™ à¦¨à¦¿à¦°à§à¦¬à¦¾à¦šà¦¨ à¦•রতে à¦…নুমতি à¦¦à¦¿à¦¨' à¦à¦‡ à¦¬à§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ à¦¨à¦¿à¦·à§à¦•্রিয় à¦°à§Ÿà§‡à¦›à§‡à¥¤
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/bn-IN/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,177 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=পূর্ববর্তী à¦ªà§ƒà¦·à§à¦ à¦¾
previous_label=পূর্ববর্তী
next.title=পরবর্তী à¦ªà§ƒà¦·à§à¦ à¦¾
next_label=পরবর্তী
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=পেজ
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages={{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pagesCount}} à¦à¦° {{pageNumber}})
zoom_out.title=ছোট à¦®à¦¾à¦ªà§‡ à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
zoom_out_label=ছোট à¦®à¦¾à¦ªà§‡ à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
zoom_in.title=বড় à¦®à¦¾à¦ªà§‡ à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
zoom_in_label=বড় à¦®à¦¾à¦ªà§‡ à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
zoom.title=প্রদর্শনের à¦®à¦¾à¦ª
presentation_mode.title=উপস্থাপনা à¦®à§‹à¦¡ à¦¸à§à¦¯à§à¦‡à¦š à¦•রুন
presentation_mode_label=উপস্থাপনা à¦®à§‹à¦¡
open_file.title=ফাইল à¦–ুলুন
open_file_label=খুলুন
print.title=প্রিন্ট à¦•রুন
print_label=প্রিন্ট à¦•রুন
download.title=ডাউনলোড à¦•রুন
download_label=ডাউনলোড à¦•রুন
bookmark.title=বর্তমান à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨ (কপি à¦•রুন à¦…থবা à¦¨à¦¤à§à¦¨ à¦‰à¦‡à¦¨à§à¦¡à§‹à¦¤à§‡ à¦–ুলুন)
bookmark_label=বর্তমান à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
# Secondary toolbar and context menu
tools.title=সরঞ্জাম
tools_label=সরঞ্জাম
first_page.title=প্রথম à¦ªà§ƒà¦·à§à¦ à¦¾à§Ÿ à¦šà¦²à§à¦¨
first_page.label=প্রথম à¦ªà§ƒà¦·à§à¦ à¦¾à§Ÿ à¦šà¦²à§à¦¨
first_page_label=প্রথম à¦ªà§ƒà¦·à§à¦ à¦¾à§Ÿ à¦šà¦²à§à¦¨
last_page.title=সর্বশেষ à¦ªà§ƒà¦·à§à¦ à¦¾à§Ÿ à¦šà¦²à§à¦¨
last_page.label=সর্বশেষ à¦ªà§ƒà¦·à§à¦ à¦¾à§Ÿ à¦šà¦²à§à¦¨
last_page_label=সর্বশেষ à¦ªà§ƒà¦·à§à¦ à¦¾à§Ÿ à¦šà¦²à§à¦¨
page_rotate_cw.title=ডানদিকে à¦˜à§‹à¦°à¦¾à¦¨à§‹ à¦¹à¦¬à§‡
page_rotate_cw.label=ডানদিকে à¦˜à§‹à¦°à¦¾à¦¨à§‹ à¦¹à¦¬à§‡
page_rotate_cw_label=ডানদিকে à¦˜à§‹à¦°à¦¾à¦¨à§‹ à¦¹à¦¬à§‡
page_rotate_ccw.title=বাঁদিকে à¦˜à§‹à¦°à¦¾à¦¨à§‹ à¦¹à¦¬à§‡
page_rotate_ccw.label=বাঁদিকে à¦˜à§‹à¦°à¦¾à¦¨à§‹ à¦¹à¦¬à§‡
page_rotate_ccw_label=বাঁদিকে à¦˜à§‹à¦°à¦¾à¦¨à§‹ à¦¹à¦¬à§‡
# Document properties dialog box
document_properties.title=নথির à¦¬à§ˆà¦¶à¦¿à¦·à§à¦Ÿà§à¦¯â€¦
document_properties_label=নথির à¦¬à§ˆà¦¶à¦¿à¦·à§à¦Ÿà§à¦¯â€¦
document_properties_file_name=ফাইলের à¦¨à¦¾à¦®:
document_properties_file_size=ফাইলের à¦®à¦¾à¦ª:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} à¦®à§‡à¦—াবাইট ({{size_b}} bytes)
document_properties_title=শিরোনাম:
document_properties_author=লেখক:
document_properties_subject=বিষয়:
document_properties_keywords=নির্দেশক à¦¶à¦¬à§à¦¦:
document_properties_creation_date=নির্মাণের à¦¤à¦¾à¦°à¦¿à¦–:
document_properties_modification_date=পরিবর্তনের à¦¤à¦¾à¦°à¦¿à¦–:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=নির্মাতা:
document_properties_producer=PDF à¦¨à¦¿à¦°à§à¦®à¦¾à¦¤à¦¾:
document_properties_version=PDF à¦¸à¦‚স্করণ:
document_properties_page_count=মোট à¦ªà§ƒà¦·à§à¦ à¦¾:
document_properties_close=বন্ধ à¦•রুন
print_progress_message=ডকুমেন্ট à¦ªà§à¦°à¦¿à¦¨à§à¦Ÿà¦¿à¦‚-র à¦œà¦¨à§à¦¯ à¦¤à§ˆà¦°à¦¿ à¦•রা à¦¹à¦šà§à¦›à§‡...
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=বাতিল
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=সাইডবার à¦Ÿà¦—ল à¦•রুন
toggle_sidebar_label=সাইডবার à¦Ÿà¦—ল à¦•রুন
document_outline.title=ডকুমেন্ট à¦†à¦‰à¦Ÿà¦²à¦¾à¦‡à¦¨ à¦¦à§‡à¦–ান (দুবার à¦•্লিক à¦•রুন à¦¬à¦¾à§œà¦¾à¦¤à§‡//collapse à¦¸à¦®à¦¸à§à¦¤ à¦†à¦‡à¦Ÿà§‡à¦®)
document_outline_label=ডকুমেন্ট à¦†à¦‰à¦Ÿà¦²à¦¾à¦‡à¦¨
attachments.title=সংযুক্তিসমূহ à¦¦à§‡à¦–ান
attachments_label=সংযুক্ত à¦¬à¦¸à§à¦¤à§
thumbs.title=থাম্ব-নেইল à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
thumbs_label=থাম্ব-নেইল à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨
findbar.title=নথিতে à¦–ুঁজুন
findbar_label=অনুসন্ধান à¦•রুন
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=পৃষ্ঠা {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=পৃষ্ঠা {{page}}-র à¦¥à¦¾à¦®à§à¦¬-নেইল
# Find panel button title and messages
find_previous.title=চিহ্নিত à¦ªà¦‚ক্তির à¦ªà§‚র্ববর্তী à¦‰à¦ªà¦¸à§à¦¥à¦¿à¦¤à¦¿ à¦…নুসন্ধান à¦•রুন
find_previous_label=পূর্ববর্তী
find_next.title=চিহ্নিত à¦ªà¦‚ক্তির à¦ªà¦°à¦¬à¦°à§à¦¤à§€ à¦‰à¦ªà¦¸à§à¦¥à¦¿à¦¤à¦¿ à¦…নুসন্ধান à¦•রুন
find_next_label=পরবর্তী
find_highlight=সমগ্র à¦‰à¦œà§à¦œà§à¦¬à¦² à¦•রুন
find_match_case_label=হরফের à¦›à¦¾à¦à¦¦ à¦®à§‡à¦²à¦¾à¦¨à§‹ à¦¹à¦¬à§‡
find_reached_top=পৃষ্ঠার à¦ªà§à¦°à¦¾à¦°à¦®à§à¦­à§‡ à¦ªà§Œà¦›à§‡ à¦—েছে, à¦¨à§€à¦šà§‡à¦° à¦…ংশ à¦¥à§‡à¦•ে à¦†à¦°à¦®à§à¦­ à¦•রা à¦¹à¦¬à§‡
find_reached_bottom=পৃষ্ঠার à¦…ন্তিম à¦ªà§à¦°à¦¾à¦¨à§à¦¤à§‡ à¦ªà§Œà¦›à§‡ à¦—েছে, à¦ªà§à¦°à¦¥à¦® à¦…ংশ à¦¥à§‡à¦•ে à¦†à¦°à¦®à§à¦­ à¦•রা à¦¹à¦¬à§‡
find_not_found=পংক্তি à¦ªà¦¾à¦“য়া à¦¯à¦¾à§Ÿà¦¨à¦¿
# Error panel labels
error_more_info=অতিরিক্ত à¦¤à¦¥à§à¦¯
error_less_info=কম à¦¤à¦¥à§à¦¯
error_close=বন্ধ à¦•রুন
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Message: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=File: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Line: {{line}}
rendering_error=পৃষ্ঠা à¦ªà§à¦°à¦¦à¦°à§à¦¶à¦¨à¦•ালে à¦à¦•টি à¦¸à¦®à¦¸à§à¦¯à¦¾ à¦¦à§‡à¦–া à¦¦à¦¿à§Ÿà§‡à¦›à§‡à¥¤
# Predefined zoom values
page_scale_width=পৃষ্ঠার à¦ªà§à¦°à¦¸à§à¦¥ à¦…নুযায়ী
page_scale_fit=পৃষ্ঠার à¦®à¦¾à¦ª à¦…নুযায়ী
page_scale_auto=স্বয়ংক্রিয় à¦®à¦¾à¦ª à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦£
page_scale_actual=প্রকৃত à¦®à¦¾à¦ª
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=ত্রুটি
loading_error=PDF à¦²à§‹à¦¡ à¦•রার à¦¸à¦®à§Ÿ à¦¸à¦®à¦¸à§à¦¯à¦¾ à¦¦à§‡à¦–া à¦¦à¦¿à§Ÿà§‡à¦›à§‡à¥¤
invalid_file_error=অবৈধ à¦¬à¦¾ à¦•্ষতিগ্রস্ত à¦ªà¦¿à¦¡à¦¿à¦à¦« à¦«à¦¾à¦‡à¦²à¥¤
missing_file_error=অনুপস্থিত PDF à¦«à¦¾à¦‡à¦²
unexpected_response_error=সার্ভার à¦¥à§‡à¦•ে à¦…প্রত্যাশিত à¦¸à¦¾à§œà¦¾ à¦ªà¦¾à¦“য়া à¦—েছে।
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Annotation]
password_label=এই PDF à¦«à¦¾à¦‡à¦² à¦–োলার à¦œà¦¨à§à¦¯ à¦ªà¦¾à¦¸à¦“য়ার্ড à¦¦à¦¿à¦¨à¥¤
password_invalid=পাসওয়ার্ড à¦¸à¦ à¦¿à¦• à¦¨à§Ÿà¥¤ à¦…নুগ্রহ à¦•রে à¦ªà§à¦¨à¦°à¦¾à§Ÿ à¦ªà§à¦°à¦šà§‡à¦·à§à¦Ÿà¦¾ à¦•রুন।
password_ok=OK
password_cancel=বাতিল à¦•রুন
printing_not_supported=সতর্কবার্তা: à¦à¦‡ à¦¬à§à¦°à¦¾à¦‰à¦œà¦¾à¦° à¦¦à§à¦¬à¦¾à¦°à¦¾ à¦ªà§à¦°à¦¿à¦¨à§à¦Ÿ à¦¬à§à¦¯à¦¬à¦¸à§à¦¥à¦¾ à¦¸à¦®à§à¦ªà§‚র্ণরূপে à¦¸à¦®à¦°à§à¦¥à¦¿à¦¤ à¦¨à§Ÿà¥¤
printing_not_ready=সতর্কবাণী: à¦ªà¦¿à¦¡à¦¿à¦à¦« à¦¸à¦®à§à¦ªà§‚র্ণরূপে à¦®à§à¦¦à§à¦°à¦£à§‡à¦° à¦œà¦¨à§à¦¯ à¦²à§‹à¦¡ à¦•রা à¦¹à¦¯à¦¼ à¦¨à¦¾.
web_fonts_disabled=ওয়েব à¦«à¦¨à§à¦Ÿ à¦¨à¦¿à¦·à§à¦•্রিয় à¦•রা à¦¹à¦¯à¦¼à§‡à¦›à§‡: à¦à¦®à¦¬à§‡à¦¡à§‡à¦¡ à¦ªà¦¿à¦¡à¦¿à¦à¦« à¦«à¦¨à§à¦Ÿ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦° à¦•রতে à¦…ক্ষম.
document_colors_not_allowed=পিডিএফ à¦¨à¦¥à¦¿ à¦¤à¦¾à¦¦à§‡à¦° à¦¨à¦¿à¦œà¦¸à§à¦¬ à¦°à¦‚ à¦¬à§à¦¯à¦¬à¦¹à¦¾à¦° à¦•রার à¦œà¦¨à§à¦¯ à¦…নুমতিপ্রাপ্ত à¦¨à¦¯à¦¼: à¦¬à§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ à¦¨à¦¿à¦·à§à¦•্রিয় à¦•রা à¦¹à¦¯à¦¼à§‡à¦›à§‡ à§Ÿà§‡à¦¨  'পেজ à¦¤à¦¾à¦¦à§‡à¦° à¦¨à¦¿à¦œà¦¸à§à¦¬ à¦°à¦‚ à¦¨à¦¿à¦°à§à¦¬à¦¾à¦šà¦¨ à¦•রার à¦…নুমতি à¦ªà§à¦°à¦¦à¦¾à¦¨ à¦•রা à§Ÿà¦¾à§Ÿà¥¤'
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/br/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,242 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Pajenn a-raok
previous_label=A-raok
next.title=Pajenn war-lerc'h
next_label=War-lerc'h
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Pajenn
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=eus {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} war {{pagesCount}})
zoom_out.title=Zoum bihanaat
zoom_out_label=Zoum bihanaat
zoom_in.title=Zoum brasaat
zoom_in_label=Zoum brasaat
zoom.title=Zoum
presentation_mode.title=Trec'haoliñ etrezek ar mod kinnigadenn
presentation_mode_label=Mod kinnigadenn
open_file.title=Digeriñ ur restr
open_file_label=Digeriñ ur restr
print.title=Moullañ
print_label=Moullañ
download.title=Pellgargañ
download_label=Pellgargañ
bookmark.title=Gwel bremanel (eilañ pe zigeriñ e-barzh ur prenestr nevez)
bookmark_label=Gwel bremanel
# Secondary toolbar and context menu
tools.title=Ostilhoù
tools_label=Ostilhoù
first_page.title=Mont d'ar bajenn gentañ
first_page.label=Mont d'ar bajenn gentañ
first_page_label=Mont d'ar bajenn gentañ
last_page.title=Mont d'ar bajenn diwezhañ
last_page.label=Mont d'ar bajenn diwezhañ
last_page_label=Mont d'ar bajenn diwezhañ
page_rotate_cw.title=C'hwelañ gant roud ar bizied
page_rotate_cw.label=C'hwelañ gant roud ar bizied
page_rotate_cw_label=C'hwelañ gant roud ar bizied
page_rotate_ccw.title=C'hwelañ gant roud gin ar bizied
page_rotate_ccw.label=C'hwelañ gant roud gin ar bizied
page_rotate_ccw_label=C'hwelañ gant roud gin ar bizied
cursor_text_select_tool.title=Gweredekaat an ostilh diuzañ testenn
cursor_text_select_tool_label=Ostilh diuzañ testenn
cursor_hand_tool.title=Gweredekaat an ostilh dorn
cursor_hand_tool_label=Ostilh dorn
scroll_vertical.title=Arverañ an dibunañ a-blom
scroll_vertical_label=Dibunañ a-serzh
scroll_horizontal.title=Arverañ an dibunañ a-blaen
scroll_horizontal_label=Dibunañ a-blaen
scroll_wrapped.title=Arverañ an dibunañ paket
scroll_wrapped_label=Dibunañ paket
spread_none.title=Chom hep stagañ ar skignadurioù
spread_none_label=Skignadenn ebet
spread_odd.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù ampar
spread_odd_label=Pajennoù ampar
spread_even.title=Lakaat ar pajennadoù en ur gregiñ gant ar pajennoù par
spread_even_label=Pajennoù par
# Document properties dialog box
document_properties.title=Perzhioù an teul…
document_properties_label=Perzhioù an teul…
document_properties_file_name=Anv restr :
document_properties_file_size=Ment ar restr :
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit)
document_properties_title=Titl :
document_properties_author=Aozer :
document_properties_subject=Danvez :
document_properties_keywords=Gerioù-alc'hwez :
document_properties_creation_date=Deiziad krouiñ :
document_properties_modification_date=Deiziad kemmañ :
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Krouer :
document_properties_producer=Kenderc'her PDF :
document_properties_version=Handelv PDF :
document_properties_page_count=Niver a bajennoù :
document_properties_page_size=Ment ar bajenn:
document_properties_page_size_unit_inches=in
document_properties_page_size_unit_millimeters=mm
document_properties_page_size_orientation_portrait=poltred
document_properties_page_size_orientation_landscape=gweledva
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Lizher
document_properties_page_size_name_legal=Lezennel
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} Ã— {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}} Ã— {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=Gwel Web Herrek:
document_properties_linearized_yes=Ya
document_properties_linearized_no=Ket
document_properties_close=Serriñ
print_progress_message=O prientiñ an teul evit moullañ...
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Nullañ
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez
toggle_sidebar_notification.title=Trec'haoliñ ar verrenn-gostez (ur steuñv pe stagadennoù a zo en teul)
toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez
document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù)
document_outline_label=Sinedoù an teuliad
attachments.title=Diskouez ar c'henstagadurioù
attachments_label=Kenstagadurioù
thumbs.title=Diskouez ar melvennoù
thumbs_label=Melvennoù
findbar.title=Klask e-barzh an teuliad
findbar_label=Klask
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Pajenn {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Melvenn ar bajenn {{page}}
# Find panel button title and messages
find_input.title=Klask
find_input.placeholder=Klask e-barzh an teuliad
find_previous.title=Kavout an tamm frazenn kent o klotañ ganti
find_previous_label=Kent
find_next.title=Kavout an tamm frazenn war-lerc'h o klotañ ganti
find_next_label=War-lerc'h
find_highlight=Usskediñ pep tra
find_match_case_label=Teurel evezh ouzh ar pennlizherennoù
find_entire_word_label=Gerioù a-bezh
find_reached_top=Tizhet eo bet derou ar bajenn, kenderc'hel diouzh an diaz
find_reached_bottom=Tizhet eo bet dibenn ar bajenn, kenderc'hel diouzh ar c'hrec'h
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
find_match_count={[ plural(total) ]}
find_match_count[one]=Klotadenn {{current}} war {{total}}
find_match_count[two]=Klotadenn {{current}} war {{total}}
find_match_count[few]=Klotadenn {{current}} war {{total}}
find_match_count[many]=Klotadenn {{current}} war {{total}}
find_match_count[other]=Klotadenn {{current}} war {{total}}
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=Muioc'h eget {{limit}} a glotadennoù
find_match_count_limit[one]=Muioc'h eget {{limit}} a glotadennoù
find_match_count_limit[two]=Muioc'h eget {{limit}} a glotadennoù
find_match_count_limit[few]=Muioc'h eget {{limit}} a glotadennoù
find_match_count_limit[many]=Muioc'h eget {{limit}} a glotadennoù
find_match_count_limit[other]=Muioc'h eget {{limit}} a glotadennoù
find_not_found=N'haller ket kavout ar frazenn
# Error panel labels
error_more_info=Muioc'h a ditouroù
error_less_info=Nebeutoc'h a ditouroù
error_close=Serriñ
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js handelv {{version}} (kempunadur : {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Kemennadenn : {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Torn : {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Restr : {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Linenn : {{line}}
rendering_error=Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajennad.
# Predefined zoom values
page_scale_width=Led ar bajenn
page_scale_fit=Pajenn a-bezh
page_scale_auto=Zoum emgefreek
page_scale_actual=Ment wir
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Fazi
loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF.
invalid_file_error=Restr PDF didalvoudek pe kontronet.
missing_file_error=Restr PDF o vankout.
unexpected_response_error=Respont dic'hortoz a-berzh an dafariad
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Notennañ]
password_label=Enankit ar ger-tremen evit digeriñ ar restr PDF-mañ.
password_invalid=Ger-tremen didalvoudek. Klaskit en-dro mar plij.
password_ok=Mat eo
password_cancel=Nullañ
printing_not_supported=Kemenn : N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ.
printing_not_ready=Kemenn : N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn.
web_fonts_disabled=Diweredekaet eo an nodrezhoù web : n'haller ket arverañ an nodrezhoù PDF enframmet.
document_colors_not_allowed=N'eo ket aotreet an teuliadoù PDF da arverañ o livioù dezho : diweredekaet eo â€œAotren ar pajennoù da zibab o livioù dezho” e-barzh ar merdeer.
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/brx/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,167 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=आगोलनि à¤¬à¤¿à¤²à¤¾à¤‡
previous_label=आगोलनि
next.title=उननि à¤¬à¤¿à¤²à¤¾à¤‡
next_label=उननि
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
zoom_out.title=फिसायै à¤œà¥à¤® à¤–ालाम
zoom_out_label=फिसायै à¤œà¥à¤® à¤–ालाम
zoom_in.title=गेदेरै à¤œà¥à¤® à¤–ालाम
zoom_in_label=गेदेरै à¤œà¥à¤® à¤–ालाम
zoom.title=जुम à¤–ालाम
presentation_mode.title=दिन्थिफुंनाय à¤®'डआव à¤¥à¤¾à¤‚
presentation_mode_label=दिन्थिफुंनाय à¤®'ड
open_file.title=फाइलखौ à¤–ेव
open_file_label=खेव
print.title=साफाय
print_label=साफाय
download.title=डाउनल'ड à¤–ालाम
download_label=डाउनल'ड à¤–ालाम
bookmark.title=दानि à¤¨à¥à¤¥à¤¾à¤¯ (गोदान à¤‰à¤‡à¤¨à¥à¤¡'आव à¤•पि à¤–ालाम à¤à¤¬à¤¾ à¤–ेव)
bookmark_label=दानि à¤¨à¥à¤¥à¤¾à¤¯
# Secondary toolbar and context menu
tools.title=टुल
tools_label=टुल
first_page.title=गिबि à¤¬à¤¿à¤²à¤¾à¤‡à¤†à¤µ à¤¥à¤¾à¤‚
first_page.label=गिबि à¤¬à¤¿à¤²à¤¾à¤‡à¤†à¤µ à¤¥à¤¾à¤‚
first_page_label=गिबि à¤¬à¤¿à¤²à¤¾à¤‡à¤†à¤µ à¤¥à¤¾à¤‚
last_page.title=जोबथा à¤¬à¤¿à¤²à¤¾à¤‡à¤†à¤µ à¤¥à¤¾à¤‚
last_page.label=जोबथा à¤¬à¤¿à¤²à¤¾à¤‡à¤†à¤µ à¤¥à¤¾à¤‚
last_page_label=जोबथा à¤¬à¤¿à¤²à¤¾à¤‡à¤†à¤µ à¤¥à¤¾à¤‚
page_rotate_cw.title=घरि à¤—िदिंनाय à¤«à¤¾à¤°à¥à¤¸à¥‡ à¤«à¤¿à¤¦à¤¿à¤‚
page_rotate_cw.label=घरि à¤—िदिंनाय à¤«à¤¾à¤°à¥à¤¸à¥‡ à¤«à¤¿à¤¦à¤¿à¤‚
page_rotate_cw_label=घरि à¤—िदिंनाय à¤«à¤¾à¤°à¥à¤¸à¥‡ à¤«à¤¿à¤¦à¤¿à¤‚
page_rotate_ccw.title=घरि à¤—िदिंनाय à¤‰à¤²à¥à¤¥à¤¾ à¤«à¤¾à¤°à¥à¤¸à¥‡ à¤«à¤¿à¤¦à¤¿à¤‚
page_rotate_ccw.label=घरि à¤—िदिंनाय à¤‰à¤²à¥à¤¥à¤¾ à¤«à¤¾à¤°à¥à¤¸à¥‡ à¤«à¤¿à¤¦à¤¿à¤‚
page_rotate_ccw_label=घरि à¤—िदिंनाय à¤‰à¤²à¥à¤¥à¤¾ à¤«à¤¾à¤°à¥à¤¸à¥‡ à¤«à¤¿à¤¦à¤¿à¤‚
# Document properties dialog box
document_properties.title=फोरमान à¤¬à¤¿à¤²à¤¾à¤‡à¤¨à¤¿ à¤†à¤–ुथाय...
document_properties_label=फोरमान à¤¬à¤¿à¤²à¤¾à¤‡à¤¨à¤¿ à¤†à¤–ुथाय...
document_properties_file_name=फाइलनि à¤®à¥à¤‚:
document_properties_file_size=फाइलनि à¤®à¤¹à¤°:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} à¤¬à¤¾à¤‡à¤Ÿ)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} à¤¬à¤¾à¤‡à¤Ÿ)
document_properties_title=बिमुं:
document_properties_author=लिरगिरि:
document_properties_subject=आयदा:
document_properties_keywords=गाहाय à¤¸à¥‹à¤¦à¥‹à¤¬:
document_properties_creation_date=सोरजिनाय à¤…क्ट':
document_properties_modification_date=सुद्रायनाय à¤…क्ट':
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=सोरजिग्रा:
document_properties_producer=PDF à¤¦à¤¿à¤¹à¥à¤¨à¤—्रा:
document_properties_version=PDF à¤¬à¤¿à¤¸à¤¾à¤¨:
document_properties_page_count=बिलाइनि à¤¹à¤¿à¤¸à¤¾à¤¬:
document_properties_close=बन्द à¤–ालाम
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=टग्गल à¤¸à¤¾à¤‡à¤¡à¤¬à¤¾à¤°
toggle_sidebar_label=टग्गल à¤¸à¤¾à¤‡à¤¡à¤¬à¤¾à¤°
document_outline_label=फोरमान à¤¬à¤¿à¤²à¤¾à¤‡ à¤¸à¤¿à¤®à¤¾ à¤¹à¤¾à¤‚खो
attachments.title=नांजाब à¤¹à¥‹à¤¨à¤¾à¤¯à¤–ौ à¤¦à¤¿à¤¨à¥à¤¥à¤¿
attachments_label=नांजाब à¤¹à¥‹à¤¨à¤¾à¤¯
thumbs.title=थामनेइलखौ à¤¦à¤¿à¤¨à¥à¤¥à¤¿
thumbs_label=थामनेइल
findbar.title=फोरमान à¤¬à¤¿à¤²à¤¾à¤‡à¤†à¤µ à¤¨à¤¾à¤—िरना à¤¦à¤¿à¤¹à¥à¤¨
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=बिलाइ {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=बिलाइ {{page}} à¤¨à¤¿ à¤¥à¤¾à¤®à¤¨à¥‡à¤‡à¤²
# Find panel button title and messages
find_previous.title=बाथ्रा à¤–ोन्दोबनि à¤¸à¤¿à¤—ांनि à¤¨à¥à¤œà¤¾à¤¥à¤¿à¤¨à¤¾à¤¯à¤–ौ à¤¨à¤¾à¤—िर
find_previous_label=आगोलनि
find_next.title=बाथ्रा à¤–ोन्दोबनि à¤‰à¤¨à¤¨à¤¿ à¤¨à¥à¤œà¤¾à¤¥à¤¿à¤¨à¤¾à¤¯à¤–ौ à¤¨à¤¾à¤—िर
find_next_label=उननि
find_highlight=गासैखौबो à¤¹à¤¾à¤‡à¤²à¤¾à¤‡à¤Ÿ à¤–ालाम
find_match_case_label=गोरोबनाय à¤•ेस
find_reached_top=थालो à¤¨à¤¿à¤«à¥à¤°à¤¾à¤¯ à¤œà¤¾à¤—ायनानै à¤«à¥‹à¤°à¤®à¤¾à¤¨ à¤¬à¤¿à¤²à¤¾à¤‡à¤¨à¤¿ à¤¬à¤¿à¤œà¥Œà¤†à¤µ à¤¸à¥Œà¤¹à¥ˆà¤¬à¤¾à¤¯
find_reached_bottom=बिजौ à¤¨à¤¿à¤«à¥à¤°à¤¾à¤¯ à¤œà¤¾à¤—ायनानै à¤«à¥‹à¤°à¤®à¤¾à¤¨ à¤¬à¤¿à¤²à¤¾à¤‡à¤¨à¤¿ à¤¬à¤¿à¤œà¥Œà¤†à¤µ à¤¸à¥Œà¤¹à¥ˆà¤¬à¤¾à¤¯
find_not_found=बाथ्रा à¤–ोन्दोब à¤®à¥‹à¤¨à¤¾à¤–ै
# Error panel labels
error_more_info=गोबां à¤«à¥‹à¤°à¤®à¤¾à¤¯à¤¥à¤¿à¤¹à¥‹à¤—्रा
error_less_info=खम à¤«à¥‹à¤°à¤®à¤¾à¤¯à¤¥à¤¿à¤¹à¥‹à¤—्रा
error_close=बन्द à¤–ालाम
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=खौरां: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=स्टेक: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=फाइल: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=सारि: {{line}}
rendering_error=बिलाइखौ à¤°à¤¾à¤µ à¤¸à¥‹à¤²à¤¾à¤¯à¤¨à¤¾à¤¯ à¤¸à¤®à¤¾à¤µ à¤®à¥‹à¤¨à¤¸à¥‡ à¤—ोरोन्थि à¤œà¤¾à¤¦à¥‹à¤‚।
# Predefined zoom values
page_scale_width=बिलाइनि à¤—ुवार
page_scale_fit=बिलाइ à¤—ोरोबनाय
page_scale_auto=गावनोगाव à¤œà¥à¤®
page_scale_actual=थार à¤®à¤¹à¤°
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
# Loading indicator messages
loading_error_indicator=गोरोन्थि
loading_error=PDF à¤²'ड à¤–ालामनाय à¤¸à¤®à¤¾à¤µ à¤®à¥‹à¤¨à¤¸à¥‡ à¤—ोरोन्थि à¤œà¤¾à¤¬à¤¾à¤¯à¥¤
invalid_file_error=बाहायजायै à¤à¤¬à¤¾ à¤—ाज्रि à¤œà¤¾à¤¨à¤¾à¤¯ PDF à¤«à¤¾à¤‡à¤²
missing_file_error=गोमानाय PDF à¤«à¤¾à¤‡à¤²
unexpected_response_error=मिजिंथियै à¤¸à¤¾à¤°à¥à¤­à¤¾à¤° à¤«à¤¿à¤¨à¤¨à¤¾à¤¯à¥¤
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} à¤¸à¥‹à¤¦à¥‹à¤¬ à¤¬à¥‡à¤–ेवनाय]
password_label=बे PDF à¤«à¤¾à¤‡à¤²à¤–ौ à¤–ेवनो à¤ªà¤¾à¤¸à¤µà¤¾à¤°à¥à¤¡ à¤¹à¤¾à¤¬à¤¹à¥‹à¥¤
password_invalid=बाहायजायै à¤ªà¤¾à¤¸à¤µà¤¾à¤°à¥à¤¡à¥¤ à¤…ननानै à¤«à¤¿à¤¨ à¤¨à¤¾à¤œà¤¾à¥¤
password_ok=OK
printing_not_supported=सांग्रांथि: à¤¸à¤¾à¤«à¤¾à¤¯à¤¨à¤¾à¤¯à¤¾ à¤¬à¥‡ à¤¬à¥à¤°à¤¾à¤‰à¤œà¤¾à¤°à¤œà¥‹à¤‚ à¤†à¤¬à¥à¤™à¥ˆ à¤¹à¥‡à¤«à¤¾à¤œà¤¾à¤¬ à¤¹à¥‹à¤œà¤¾à¤¯à¤¾à¥¤
printing_not_ready=सांग्रांथि: PDF à¤–ौ à¤¸à¤¾à¤«à¤¾à¤¯à¤¨à¤¾à¤¯à¤¨à¤¿ à¤¥à¤¾à¤–ाय à¤«à¥à¤°à¤¾à¤¯à¥ˆ à¤²'ड à¤–ालामाखै।
web_fonts_disabled=वेब à¤«à¤¨à¥à¤Ÿà¤–ौ à¤²à¥‹à¤°à¤¬à¤¾à¤‚ à¤–ालामबाय: à¤…रजाबहोनाय PDF à¤«à¤¨à¥à¤Ÿà¤–ौ à¤¬à¤¾à¤¹à¤¾à¤¯à¤¨à¥‹ à¤¹à¤¾à¤¯à¤¾à¤–ै।
document_colors_not_allowed=PDF à¤«à¥‹à¤°à¤®à¤¾à¤¨ à¤¬à¤¿à¤²à¤¾à¤‡à¤–ौ à¤¬à¤¿à¤¸à¥‹à¤°à¤¨à¤¿ à¤¨à¤¿à¤œà¤¿ à¤—ाब à¤¬à¤¾à¤¹à¤¾à¤¯à¤¨à¥‹ à¤—नायथि à¤¹à¥‹à¤¨à¤¾à¤¯ à¤œà¤¾à¤¯à¤¾: 'बिसोरनि à¤¨à¤¿à¤œà¤¿ à¤—ाब à¤¬à¤¾à¤¸à¤¿à¤–नो à¤¬à¤¿à¤²à¤¾à¤‡à¤–ौ à¤—नायथि à¤¹à¥‹'-खौ à¤¬à¥à¤°à¤¾à¤‰à¤œà¤¾à¤°à¤†à¤µ à¤²à¥‹à¤°à¤¬à¤¾à¤‚ à¤–ालामनाय à¤œà¤¾à¤¯à¥‹à¥¤
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/bs/viewer.properties
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
# Copyright 2012 Mozilla Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Prethodna strana
previous_label=Prethodna
next.title=Sljedeća strna
next_label=Sljedeća
# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Strana
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=od {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} od {{pagesCount}})
zoom_out.title=Umanji
zoom_out_label=Umanji
zoom_in.title=Uvećaj
zoom_in_label=Uvećaj
zoom.title=Uvećanje
presentation_mode.title=Prebaci se u prezentacijski režim
presentation_mode_label=Prezentacijski režim
open_file.title=Otvori fajl
open_file_label=Otvori
print.title=Å tampaj
print_label=Å tampaj
download.title=Preuzmi
download_label=Preuzmi
bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru)
bookmark_label=Trenutni prikaz
# Secondary toolbar and context menu
tools.title=Alati
tools_label=Alati
first_page.title=Idi na prvu stranu
first_page.label=Idi na prvu stranu
first_page_label=Idi na prvu stranu
last_page.title=Idi na zadnju stranu
last_page.label=Idi na zadnju stranu
last_page_label=Idi na zadnju stranu
page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu
page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu
page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu
page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu
page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu
page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu
cursor_text_select_tool.title=Omogući alat za označavanje teksta
cursor_text_select_tool_label=Alat za označavanje teksta
cursor_hand_tool.title=Omogući ručni alat
cursor_hand_tool_label=Ručni alat
# Document properties dialog box
document_properties.title=Svojstva dokumenta...
document_properties_label=Svojstva dokumenta...
document_properties_file_name=Naziv fajla:
document_properties_file_size=Veličina fajla:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bajta)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bajta)
document_properties_title=Naslov:
document_properties_author=Autor:
document_properties_subject=Predmet:
document_properties_keywords=Ključne riječi:
document_properties_creation_date=Datum kreiranja:
document_properties_modification_date=Datum promjene:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Kreator:
document_properties_producer=PDF stvaratelj:
document_properties_version=PDF verzija:
document_properties_page_count=Broj stranica:
document_properties_page_size=Veličina stranice:
document_properties_page_size_unit_inches=u
document_properties_page_size_unit_millimeters=mm
document_properties_page_size_orientation_portrait=uspravno
document_properties_page_size_orientation_landscape=vodoravno
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Pismo
document_properties_page_size_name_legal=Pravni
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} Ã— {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}} Ã— {{height}} {{unit}} ({{name}}, {{orientation}})
document_properties_close=Zatvori
print_progress_message=Pripremam dokument za Å¡tampu…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=Otkaži
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Uključi/isključi bočnu traku
toggle_sidebar_notification.title=Uključi/isključi sidebar (dokument sadrži outline/priloge)
toggle_sidebar_label=Uključi/isključi bočnu traku
document_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/Å¡irenje svih stavki)
document_outline_label=Konture dokumenta
attachments.title=Prikaži priloge
attachments_label=Prilozi
thumbs.title=Prikaži thumbnailove
thumbs_label=Thumbnailovi
findbar.title=Pronađi u dokumentu
findbar_label=Pronađi
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Strana {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Thumbnail strane {{page}}
# Find panel button title and messages
find_input.title=Pronađi
find_input.placeholder=Pronađi u dokumentu…
find_previous.title=Pronađi prethodno pojavljivanje fraze
find_previous_label=Prethodno
find_next.title=Pronađi sljedeće pojavljivanje fraze
find_next_label=Sljedeće
find_highlight=Označi sve
find_match_case_label=Osjetljivost na karaktere
find_reached_top=Dostigao sam vrh dokumenta, nastavljam sa dna
find_reached_bottom=Dostigao sam kraj dokumenta, nastavljam sa vrha
find_not_found=Fraza nije pronađena
# Error panel labels
error_more_info=ViÅ¡e informacija
error_less_info=Manje informacija
error_close=Zatvori
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Poruka: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Fajl: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Linija: {{line}}
rendering_error=DoÅ¡lo je do greÅ¡ke prilikom renderiranja strane.
# Predefined zoom values
page_scale_width=Å irina strane
page_scale_fit=Uklopi stranu
page_scale_auto=Automatsko uvećanje
page_scale_actual=Stvarna veličina
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Greška
loading_error=DoÅ¡lo je do greÅ¡ke prilikom učitavanja PDF-a.
invalid_file_error=Neispravan ili oÅ¡tećen PDF fajl.
missing_file_error=Nedostaje PDF fajl.
unexpected_response_error=Neočekivani odgovor servera.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 â€“ Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} pribiljeÅ¡ka]
password_label=UpiÅ¡ite lozinku da biste otvorili ovaj PDF fajl.
password_invalid=PogreÅ¡na lozinka. PokuÅ¡ajte ponovo.
password_ok=OK
password_cancel=Otkaži
printing_not_supported=Upozorenje: Å tampanje nije u potpunosti podržano u ovom browseru.
printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za Å¡tampanje.
web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubačene PDF fontove.
document_colors_not_allowed=PDF dokumentima nije dozvoljeno da koriste vlastite boje: 'Dozvoli stranicama da izaberu vlastite boje' je deaktivirano u browseru.
在上述文件截断后对比
Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ca/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/cak/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/crh/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/cs/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/csb/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/cy/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/da/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/de/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/el/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/en-CA/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/en-GB/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/en-US/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/en-ZA/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/eo/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/es-AR/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/es-CL/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/es-ES/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/es-MX/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/et/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/eu/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/fa/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ff/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/fi/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/fr/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/fy-NL/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ga-IE/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/gd/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/gl/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/gn/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/gu-IN/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/he/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hi-IN/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hr/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hsb/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hto/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hu/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/hy-AM/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ia/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/id/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/is/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/it/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ja/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ka/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/kab/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/kk/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/km/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/kn/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ko/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/kok/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ks/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ku/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lg/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lij/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lo/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/locale.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lt/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ltg/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/lv/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/mai/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/meh/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/mk/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ml/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/mn/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/mr/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ms/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/my/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/nb-NO/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ne-NP/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/nl/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/nn-NO/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/nso/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/oc/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/or/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/pa-IN/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/pl/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/pt-BR/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/pt-PT/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/rm/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ro/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ru/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/rw/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sah/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sat/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/si/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sk/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sl/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/son/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sq/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sr/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sv-SE/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/sw/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ta-LK/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ta/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/te/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/th/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/tl/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/tn/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/tr/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/tsz/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/uk/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/ur/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/uz/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/vi/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/wo/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/xh/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/zam/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/zh-CN/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/zh-TW/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/locale/zu/viewer.properties Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.css Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.html Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/filepreview/web/viewer.js.map Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/dcConfig.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/dynamicCondition.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/formulaEditor.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/referConfig.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciFilePreview.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebAdvSearch.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebCheckSession.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebComboxStore.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebDataGrid.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebDataRightCheck.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebFileManager.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebMenu.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebOnlineUser.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebPortal.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebPortalDojoUI.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebPortalHome.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferDefalut.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferGrid.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferStand.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReferTree.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebReminder.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/framework/vciWebSocket.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/carousel.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/code.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/dltable.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/dropdown.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/echarts.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/element.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/flow.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/form.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/jquery.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/lay.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/laydate.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/layedit.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/layer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/layer.old.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/laypage.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/laytpl.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile/layer-mobile.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile/layim-mobile-open.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile/upload-mobile.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/mobile/zepto.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/rate.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/table.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/table.old.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/transfer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/transferTable.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/tree.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/treeGrid.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/upload.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/modules/util.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseAddAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseDeleteAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseEditAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseFileDownloadAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseFileUploadAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseLinkAddAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseLinkDeleteAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseLinkEditAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseRevisionAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseStartWorkflowAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseTabViewAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/BaseViewAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/actions/RefreshAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdAreaClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdCustomer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdCustomerClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdCustomerSaleClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdGoodsLocation.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdMaterial.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdMaterialClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdMaterialClassifyExtendAttr.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdMaterialSelectPanel.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSelectInputChar.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplier.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplierAdmittance.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplierClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplierImporttance.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdSupplierRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdUnit.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdWarehouse.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/basedoc/BdWarehouseClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/developer/logs/VciLogMonitor.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/fileManage/VciFileDocClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/fileManage/VciFileList.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/fileManage/VciFileStore.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/home/vciHomeTaskAction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/monitor/VciMonitorMain.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/monitor/VciService.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/monitor/VciSqlTool.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/monitor/VciYAML.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/HelpDocument.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsAttribute.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsAttributeForBtmRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsAttributeUtil.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsBtmType.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsBtmTypeRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsCodeGenerator.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsCodeGeneratorComp.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsCodePreview.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsCodeRule.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsDLL.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsEnum.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsLinkType.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsWebApi.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/OsWebMethods.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciDataBaseConnect.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciMarkdownViewer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciMd.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciOsLifeCycle.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciOsStatus.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciOsStatusRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciUIContentViewer.bak.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/VciUIContentViewer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/css/app.5c53683c.css Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/erContent.html Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/erContent.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/js/app.24d70361.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/js/app.24d70361.js.map Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/js/chunk-vendors.80f2064b.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/er/js/chunk-vendors.80f2064b.js.map Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/markdown.html Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/markdown.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/objectService/md.html Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/OrgPosition.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/orgDuty.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/orgJobGrade.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/orgsDepartment.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/orgs/vciWebPost.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/plugins/ImageView.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/plugins/Sql2Table.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/VciProcessProxy.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/VciProcessTemplate.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/VciProcessTemplateClassify.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/VciProcessUserGroup.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/WfWorkflowHandle.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/VciProcessDesigner.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/css/style.css Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/draw2d/draw2d.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/draw2d/moocanvas.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/draw2d/mootools.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/draw2d/wz_jsgraphics.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/activate.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/assign.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/browseButton.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/calendar.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/cancel.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/chart_bar_edit.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/clock.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/deactivate.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/delegate.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/delete.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/download.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/edit.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/edit_add.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/en_US.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/fen.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/fen2.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/help.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/homePage.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/hua.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/hua2.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/hui.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/hui2.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/Thumbs.db Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/action.down.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/action.magnifier.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/action.up.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/callactivity.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/defaultCustomServiceTask.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/ereference.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/error.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/errorCustomServiceTask.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/palette.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/process.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/properties.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/timer.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/tree_folder_open.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.annotation.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.business.rule.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.endevent.none.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.gateway.exclusive.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.gateway.inclusive.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.gateway.parallel.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.loopmarker.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.mail.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.manual.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.receive.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.script.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.send.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.service.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.startevent.none.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.subprocess.collapsed.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.subprocess.expanded.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/icons/type.user.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/join.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/lan.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/lan2.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/left_icon.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/logout.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/lv.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/lv2.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/menu.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/message.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/modify.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/ok.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/pages.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/paint.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/password_icon.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/permissions.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/picture_go.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/right_icon.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/role.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/save.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/setPassword.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/task.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/unchecked.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/upload.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/user_icon.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/validatebox_pointer.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/validatebox_warning.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/weather.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/welcome.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/zh_CN.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/images/zoom.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/MyCanvas.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/ResizeImage.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/connection/DecoratedConnection.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/connection/MyInputPort.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/connection/MyOutputPort.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/designer.css Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/designer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/event/End.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/event/Start.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/gateway/ExclusiveGateway.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/gateway/ParallelGateway.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/circle.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/grid_10.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/manual-task.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/menu.gif Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/img/menu_sep.png Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/BaseTask.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/ManualTask.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/ServiceTask.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/Task.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/process/designer/js/designer/task/UserTask.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/SmButton.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/SmFunction.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/SmPasswordStrategy.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/SmWorkType.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/VciSmRightCenter.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/VciSmRole.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/platform/securityManage/VciSmUser.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseCalPortlet.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseDevPortlet.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseFavPortlet.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseTaskPortlet.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciBaseUserPortlet.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciDefaultIndex.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/portal/vciWebProUndoTaskPortlet.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProAllProcessInfo.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProBusinessData.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProBusinessDoc.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProExecutePanel.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProExecuteTask.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProExecutingTab.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProHistory.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProMonitor.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProProxy.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProUndoTab.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebProcessAssign.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebStartProcess.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/process/vciWebUserTransferRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/OrgDepartmentGridRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/OrgDepartmentRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/OrgDutyRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmRoleRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmUserGridRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmUserRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmUserReferBase.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/SmWorkTypeRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/lay/refer/WfProcessTemplateRefer.js Source/platformProject/platform2022UI/jslib/layui-2.2.5-debug/layui.js Source/platformProject/platform2022UI/jslib/markdown/highlight.min.js Source/platformProject/platform2022UI/jslib/markdown/marked.min.js Source/platformProject/platform2022UI/jslib/markdown/marked2.1.3.js Source/platformProject/platform2022UI/jslib/markdown/monokai_sublime.min.css Source/platformProject/platform2022UI/jslib/metaQueryForIe8/htm5.min.js Source/platformProject/platform2022UI/jslib/metaQueryForIe8/respond.min.js Source/platformProject/platform2022UI/jslib/vcijs/admin.js Source/platformProject/platform2022UI/jslib/vcijs/adminMain.js Source/platformProject/platform2022UI/jslib/vcijs/browserInfo.js Source/platformProject/platform2022UI/jslib/vcijs/json2.js Source/platformProject/platform2022UI/jslib/vcijs/login.js Source/platformProject/platform2022UI/jslib/vcijs/main.js Source/platformProject/platform2022UI/jslib/vcijs/md5.js Source/platformProject/platform2022UI/jslib/vcijs/showTodo.js Source/platformProject/platform2022UI/jslib/vcijs/singleLogin.js Source/platformProject/platform2022UI/jslib/vcijs/vciWebUtil.js Source/platformProject/platform2022UI/jslib/websocket/WebSocketMain.swf Source/platformProject/platform2022UI/jslib/websocket/swfobject.js Source/platformProject/platform2022UI/jslib/websocket/web_socket.js Source/platformProject/platform2022UI/jslib/yaml/css/codemirror.css Source/platformProject/platform2022UI/jslib/yaml/index.html Source/platformProject/platform2022UI/jslib/yaml/js/codemirror.js Source/platformProject/platform2022UI/jslib/yaml/js/js-yaml.js Source/platformProject/platform2022UI/jslib/yaml/js/js-yaml.min.js Source/platformProject/platform2022UI/jslib/yaml/js/yaml.js Source/platformProject/platform2022UI/main.html Source/platformProject/platform2022UI/mainAdmin.html Source/platformProject/platform2022UI/platform2020UI.iml Source/platformProject/platform2022UI/style/css/common.css Source/platformProject/platform2022UI/style/css/dc.css Source/platformProject/platform2022UI/style/css/dm-button.css Source/platformProject/platform2022UI/style/css/easyui.css Source/platformProject/platform2022UI/style/css/layui-dojo-small.css Source/platformProject/platform2022UI/style/css/layuimodify.css Source/platformProject/platform2022UI/style/css/login.css Source/platformProject/platform2022UI/style/css/markdown.min.css Source/platformProject/platform2022UI/style/css/vciproject.css Source/platformProject/platform2022UI/style/font/loginform-icon.eot Source/platformProject/platform2022UI/style/font/loginform-icon.svg Source/platformProject/platform2022UI/style/font/loginform-icon.ttf Source/platformProject/platform2022UI/style/font/loginform-icon.woff Source/platformProject/platform2022UI/style/images/base/button/assignOrg.png Source/platformProject/platform2022UI/style/images/base/button/assignRole.png Source/platformProject/platform2022UI/style/images/base/button/assignUser.png Source/platformProject/platform2022UI/style/images/base/button/attach.png Source/platformProject/platform2022UI/style/images/base/button/cancel.gif Source/platformProject/platform2022UI/style/images/base/button/comment.png Source/platformProject/platform2022UI/style/images/base/button/comment_add.png Source/platformProject/platform2022UI/style/images/base/button/comment_delete.png Source/platformProject/platform2022UI/style/images/base/button/comments.png Source/platformProject/platform2022UI/style/images/base/button/disk.png Source/platformProject/platform2022UI/style/images/base/button/down.gif Source/platformProject/platform2022UI/style/images/base/button/folder.png Source/platformProject/platform2022UI/style/images/base/button/importExcel.png Source/platformProject/platform2022UI/style/images/base/button/in.png Source/platformProject/platform2022UI/style/images/base/button/information.png Source/platformProject/platform2022UI/style/images/base/button/mail.png Source/platformProject/platform2022UI/style/images/base/button/notAllow.png Source/platformProject/platform2022UI/style/images/base/button/out.png Source/platformProject/platform2022UI/style/images/base/button/pencil_add.png Source/platformProject/platform2022UI/style/images/base/button/preview.png Source/platformProject/platform2022UI/style/images/base/button/printer.png Source/platformProject/platform2022UI/style/images/base/button/schema_add.png Source/platformProject/platform2022UI/style/images/base/button/table_add.png Source/platformProject/platform2022UI/style/images/base/button/table_cleanref.png Source/platformProject/platform2022UI/style/images/base/button/table_copy.png Source/platformProject/platform2022UI/style/images/base/button/table_delete.png Source/platformProject/platform2022UI/style/images/base/button/table_disabled.png Source/platformProject/platform2022UI/style/images/base/button/table_edit.png Source/platformProject/platform2022UI/style/images/base/button/table_enable.png Source/platformProject/platform2022UI/style/images/base/button/table_modify.png Source/platformProject/platform2022UI/style/images/base/button/table_refresh.png Source/platformProject/platform2022UI/style/images/base/button/table_search.png Source/platformProject/platform2022UI/style/images/base/button/table_sync.png Source/platformProject/platform2022UI/style/images/base/button/trans.png Source/platformProject/platform2022UI/style/images/base/button/trash.gif Source/platformProject/platform2022UI/style/images/base/button/tree_leaf.gif Source/platformProject/platform2022UI/style/images/base/button/unReadMsg.png Source/platformProject/platform2022UI/style/images/base/button/up.gif Source/platformProject/platform2022UI/style/images/base/buttonEnabled.png Source/platformProject/platform2022UI/style/images/base/buttonHover.png Source/platformProject/platform2022UI/style/images/base/flow/end.png Source/platformProject/platform2022UI/style/images/base/flow/gateway.png Source/platformProject/platform2022UI/style/images/base/flow/gatewayIn.png Source/platformProject/platform2022UI/style/images/base/flow/mail.png Source/platformProject/platform2022UI/style/images/base/flow/messages.png Source/platformProject/platform2022UI/style/images/base/flow/painterBg.png Source/platformProject/platform2022UI/style/images/base/flow/reference.png Source/platformProject/platform2022UI/style/images/base/flow/service.png Source/platformProject/platform2022UI/style/images/base/flow/start.png Source/platformProject/platform2022UI/style/images/base/flow/timer.png Source/platformProject/platform2022UI/style/images/base/flow/userTask.png Source/platformProject/platform2022UI/style/images/base/index/dm_index_exit.png Source/platformProject/platform2022UI/style/images/base/index/dm_index_fav.png Source/platformProject/platform2022UI/style/images/base/index/dm_index_menu_bus.png Source/platformProject/platform2022UI/style/images/base/index/dm_index_notification.png Source/platformProject/platform2022UI/style/images/base/index/dm_index_person.png Source/platformProject/platform2022UI/style/images/base/index/dm_index_system.png Source/platformProject/platform2022UI/style/images/base/index/dm_index_unfav.png Source/platformProject/platform2022UI/style/images/base/index/nosession.png Source/platformProject/platform2022UI/style/images/base/index/sessionRemind.png Source/platformProject/platform2022UI/style/images/base/layout_arrows.png Source/platformProject/platform2022UI/style/images/base/login/background-access.png Source/platformProject/platform2022UI/style/images/base/login/background-classic.png Source/platformProject/platform2022UI/style/images/base/login/background-gray.png Source/platformProject/platform2022UI/style/images/base/login/background-naptune.png Source/platformProject/platform2022UI/style/images/base/login/code.png Source/platformProject/platform2022UI/style/images/base/login/login_name.png Source/platformProject/platform2022UI/style/images/base/login/login_pic.png Source/platformProject/platform2022UI/style/images/base/login/login_pw.png Source/platformProject/platform2022UI/style/images/base/login/progress-default-bg.gif Source/platformProject/platform2022UI/style/images/base/login/userphotoman.png Source/platformProject/platform2022UI/style/images/base/login/userphotowoman.png Source/platformProject/platform2022UI/style/images/base/menu/changeorg.png Source/platformProject/platform2022UI/style/images/base/menu/changepassword.png Source/platformProject/platform2022UI/style/images/base/menu/changetheme.png Source/platformProject/platform2022UI/style/images/base/menu/lockwindow.png Source/platformProject/platform2022UI/style/images/base/menu/standardGradient.png Source/platformProject/platform2022UI/style/images/base/spriteRoundedIconsSmallBl.png Source/platformProject/platform2022UI/style/images/base/tabBottomEnabledC.gif Source/platformProject/platform2022UI/style/images/base/tabContainerSprite.gif Source/platformProject/platform2022UI/style/images/base/tabTopSelected.png Source/platformProject/platform2022UI/style/images/base/tabTopUnselected.png Source/platformProject/platform2022UI/style/images/ie.png Source/platformProject/platform2022UI/style/images/menuicons/2088211.png Source/platformProject/platform2022UI/style/images/music/message.mp3 Source/platformProject/platform2022UI/style/images/music/message.ogg Source/platformProject/platform2022UI/vciweb/CreateAuditTask.js Source/platformProject/platform2022UI/vciweb/bd/workUnit.js Source/platformProject/platform2022UI/vciweb/mdm/CodeButton.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassify.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyAttribute.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyClassifyuse.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyEnumUse.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyProcessTemp.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyTempMapItem.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyTemplate.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyTemplateAttr.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyTemplateButton.js Source/platformProject/platform2022UI/vciweb/mdm/CodeClassifyVerifyUser.js Source/platformProject/platform2022UI/vciweb/mdm/CodeGroupExportRule.js Source/platformProject/platform2022UI/vciweb/mdm/CodeGroupImportRule.js Source/platformProject/platform2022UI/vciweb/mdm/CodeKeyAttrRepeatRule.js Source/platformProject/platform2022UI/vciweb/mdm/CodeResembleRule.js Source/platformProject/platform2022UI/vciweb/mdm/CodeRule.js Source/platformProject/platform2022UI/vciweb/mdm/CodeSelectInputChar.js Source/platformProject/platform2022UI/vciweb/mdm/CodeSerialAlgorithm.js Source/platformProject/platform2022UI/vciweb/mdm/CodeSynonym.js Source/platformProject/platform2022UI/vciweb/mdm/MdmApply.js Source/platformProject/platform2022UI/vciweb/mdm/MdmEngine.js Source/platformProject/platform2022UI/vciweb/mdm/MdmEngineForm.js Source/platformProject/platform2022UI/vciweb/mdm/MdmEngineInProcess.js Source/platformProject/platform2022UI/vciweb/mdm/SysIntAuthority.js Source/platformProject/platform2022UI/vciweb/mdm/SysIntBase.js Source/platformProject/platform2022UI/vciweb/mdm/SysIntInfo.js Source/platformProject/platform2022UI/vciweb/mdm/refer/CodeClassTemplateAttrRefer.js Source/platformProject/platform2022UI/vciweb/mdm/refer/CodeClassTemplateRefer.js Source/platformProject/platform2022UI/vciweb/mdm/refer/CodeClassifyAttrRefer.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmAlonePlan.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmGroundPlan.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmPlanCalulate.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmPlaneItem.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmPlanePlan.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmSalePlan.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmSalePlanAccord.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmSalePlanRecord.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmSalePlanTarget.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmStationPlan.js Source/platformProject/platform2022UI/vciweb/mes/wrj/PmYearPlan.js Source/platformProject/platform2022UI/vciweb/vciAlias.js Source/platformProject/platform2022UI/vciweb/view/showDetail.js Source/platformProject/pom.xml Source/platformProject/vci-platform-server-starter/pom.xml Source/platformProject/vci-platform-starter/pom.xml Source/platformProject/vci-platform-web/README.md Source/platformProject/vci-platform-web/pom.xml Source/platformProject/vci-platform-web/settings.xml Source/platformProject/vci-platform-web/src/main/java/com/vci/BatchRedeployJar2Maven.java Source/platformProject/vci-platform-web/src/main/java/com/vci/PlatformWebApplication.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTask.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/ajaxTask/SmUserUnLockTaskManager.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/ISmFunctionQueryService.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDutyQueryServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDutyQueryServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmSessionForLoginImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/constant/FrameWorkBtmTypeConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/constant/FrameWorkBusLangCodeConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/constant/FrameWorkDefaultValueConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/controller/OrgDutyQueryController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/enumpck/DataObjectEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/enumpck/ResourceControlTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/enumpck/RoleClassifyEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/enumpck/RoleControlAreaEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/lcstatuspck/FrameworkDataLCStatus.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/lcstatuspck/ReleaseDataLCStatus.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/model/OrgDeptForPlatform1.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/model/SmFunctionForPlatform1.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyForPlatform1.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/model/SmRoleForPlatform1.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/MenuVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/OrgDepartmentVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/OrgDutyVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/SmFunctionVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/SmPasswordStrategyVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/SmRoleVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/pagemodel/SmUserVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/properties/VciFramworkCompatibilityProperties.java Source/platformProject/vci-platform-web/src/main/java/com/vci/frameworkcore/properties/VciSecurityManageProperties.java Source/platformProject/vci-platform-web/src/main/java/com/vci/plugins/controller/AuditTaskController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/plugins/controller/ImageViewerController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/plugins/controller/Sql2TableController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/plugins/dto/AuditTaskDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/BdSelectInput.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/FlowNotifyAfter.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/FlowNotifyBefore.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/FlowNotifyWeb.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/annotation/VciTransactional.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/BtmOrLinkProcessAttributeInfo.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/FlowNoticeInfo.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/LoginResultBO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsAttrOtherInfoBO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsCodeGenAttributeBO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsCodeGenButtonBO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsCodeGenQueryBO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/OsCodeSerialBuildBO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/bo/VciLogObjectBO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/config/WebFilePreviewAutoConfig.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/BtmIdConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/CacheKeyConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/CacheNameConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/EnumIdConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/FieldConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/FileTypeConstants.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/LinkTypeIdConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/TokenKeyConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/WFVariablesKeyConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/constant/WebLangCodeConstant.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/BdSelectInputCharController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/HomeTaskController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/LoginController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/OsAttributeController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/OsLifeCycleController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/OsLinkTypeController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/SmFavFunctionController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/SmFunctionController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/SmMenuController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/StmFunctionController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciFileDownloadController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciFileQueryController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciFileUploadController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciMdController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciOsCodeRuleController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/VciOsStatusController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WFWorkflowNodeFavController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebActionController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebBtmTypeController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebCodeGenSchemaController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebDataRightController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebEnumController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebFormulaController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebOnlineUserController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebProcessCommandController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebProcessDefineController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebScanAnnotationController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebUIController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/controller/WebUIDataController.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/BdSelectInputCharDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeBreakCodeDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeEnumDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeGenSchemaDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeRuleDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeRuleElementDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/OsCodeSerialNumberDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/VciFileDocClassifyDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/VciFileObjectDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/VciFileVolumeDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/WFWorkflowNodeFavItemDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/WebProcessDaoI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/BdSelectInputCharDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeBreakCodeDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeEnumDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeGenSchemaDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeRuleElementDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/OsCodeSerialNumberDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/VciFileDocClassifyDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/VciFileObjectDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/VciFileVolumeDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/WFWorkflowNodeFavItemDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dao/impl/WebProcessDaoImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BaseLinkModelDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BaseLinkModelDTOList.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BaseModelDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BaseModelDTOList.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/BdSelectInputCharDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/DeleteDataDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/DeleteLinkDataDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/FormDataDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/FormDataDTOList.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/FormLinkDataDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/FormLinkDataDTOList.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/LoginUserDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsAttributeDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsBtmTypeDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsBtmTypeExportDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsBtmTypeLinkAttributesDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeEnumDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeGenSchemaDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeRuleDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeRuleElementDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsCodeRuleProduceDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsEnumDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsLifeCycleDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsLifeCycleLineDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsLifeCycleLineEventDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsLinkTypeDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsRevisionRuleDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/OsStatusDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/ProcessNodeUseDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/ProcessStartConfigDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/WFWorkflowNodeFavDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/WFWorkflowNodeFavItemDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/dto/WebHomeTaskActionDTO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeDateValueTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeElementTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeFillTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeGenJsPanelTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/OsCodeProductTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UIButtonDisplayModeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UIComponentDisplayTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UIComponentTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UIFieldTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UILayoutAreaTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/enumpck/UITreeLoadTypeEnum.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/initTask/VciWebInitTaskComponent.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/interceptor/MyMVCConfig.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/lifeCycle/FileObjectLCStatus.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/lifeCycle/ReleaseDataLCStatus.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/BaseLinkModel.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/BdSelectInputCharDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsAttributeDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeBreakCodeDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeEnumDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeGenSchemaDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeRuleDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeRuleElementDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsCodeSerialNumberDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsLifeCycleDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsLinkTypeDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/OsStatusDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/ProcessInstance.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/ProcessTask.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/SmFavFunctionDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/SmPasswordStrategyDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/SmUserDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/VciFileDocClassifyDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/VciFileObjectDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/VciFileVolumeDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WFProcessClassifyDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WFProcessTemplateDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WFWorkflowNodeFavDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WFWorkflowNodeFavItemDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/model/WebHomeTaskActionDO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/BdSelectInputCharAspect.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/FlowNoticeExample.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/OsMapToObjFunction.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/VciFileDownloadInfo.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/other/WorkFlowEndedNotice.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/BatchCBO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/BdSelectInputCharVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/KeyValue.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/LinkTypeInfoVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsAttributeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsBtmTypeAttributeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsBtmTypeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeEnumVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeGenSchemaVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeResultVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeRuleElementVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsCodeRuleVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsERNodePropertyVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsERNodeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsERRelationVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsERVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsEnumItemVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsEnumVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLifeCycleLineBoundVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLifeCycleLineEventVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLifeCycleLineVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLifeCycleVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLinkTypeAttributeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsLinkTypeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsRevisionRuleVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsStatusVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/OsUsedAttributeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessClassifyVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessHistoryVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessInstanceVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessNodeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessOutcomeVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessTaskVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessTemplateVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ProcessUserVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/ReferConfigVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/SmOperationVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/TreeSettingVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIActionVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIButtonDefineVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIComponentVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIContentVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFieldSortVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFormDataVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFormDefineVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFormItemVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UIFormReferVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UILayoutVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITableCustomDefineVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITableDefineVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITableFieldVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITablePageVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITreeDefineVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/UITreeTableDefineVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/VciFilePreviewConfigVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/WFWorkflowNodeFavItemVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/WFWorkflowNodeFavVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/pageModel/WebHomeTaskActionVO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/properties/OsDDLExportWordFieldProperties.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/properties/WebProperties.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/FileImageViewerQuery.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UIBaseQuery.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UIDataGridQuery.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UIFormQuery.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UILinkTypeDataQuery.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UITreeQuery.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/query/UITreeRootQuery.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/redis/FastJson2JsonRedisSerializer.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/redis/RedisConfig.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/redis/RedisService.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/BdSelectInputCharServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/LoginServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsAttributeServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsBaseServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsBtmServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsCodeGenSchemaServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsCodeRuleServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsEnumServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsLifeCycleServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsLinkTypeServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsRevisionRuleServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/OsStatusServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/SmFavFunctionServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/SmOperationServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/UIDataServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/UIEngineServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileDocClassifyServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileDownloadServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileObjectServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileQueryServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileUploadServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciFileVolumeServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/VciMdServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WFWorkflowNodeFavItemServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WFWorkflowNodeFavServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebActionServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebBoServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebBtmIOServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebHomeTaskServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebLoServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebLogServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebProcessCommandServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebProcessDefineServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/WebSecretServiceI.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/BdSelectInputCharServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/FormulaServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsAttributeServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsBtmServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsCodeGenSchemaServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsCodeRuleServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsLifeCycleServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsLinkTypeServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsRevisionRuleServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/OsStatusServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/SmFavFunctionServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/SmOperationServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileDocClassifyServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileDownloadServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileObjectServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileUploadServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciFileVolumeServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/VciMdServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavItemServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WFWorkflowNodeFavServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebActionServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebBtmIOServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebContextInfoFetcher.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebHomeTaskServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebInitServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebLoServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebLogServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebProcessCommandServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebProcessDefineServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/service/impl/WebSecretServiceImpl.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/BusAnnotationUtil.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/OsScanAnnotationTool.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/PlatformClientUtil.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/util/WebUtil.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/xmlmodel/UIComponentDetailXO.java Source/platformProject/vci-platform-web/src/main/java/com/vci/web/xmlmodel/UIComponentItemXO.java Source/platformProject/vci-platform-web/src/main/resources/DefaultAttribute.json Source/platformProject/vci-platform-web/src/main/resources/application-dev.yml Source/platformProject/vci-platform-web/src/main/resources/application-prod.yml Source/platformProject/vci-platform-web/src/main/resources/application.yml Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Controller.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/DO.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/DTO.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Mapper.impl.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Mapper.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Mapper.xml.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/PO.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Service.impl.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/Service.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/VO.java.vm Source/platformProject/vci-platform-web/src/main/resources/codeTemplate/ui.js.vm Source/platformProject/vci-platform-web/src/main/resources/compatibility_field_map.yml Source/platformProject/vci-platform-web/src/main/resources/ehcache.xml Source/platformProject/vci-platform-web/src/main/resources/excelTemplate/dataBaseExport.xls Source/platformProject/vci-platform-web/src/main/resources/i18n/messages.properties Source/platformProject/vci-platform-web/src/main/resources/i18n/messages_zh_CN.properties Source/platformProject/vci-platform-web/src/main/resources/i18n/messages_zh_TW.properties Source/platformProject/vci-platform-web/src/main/resources/log4j2-spring-dev.xml Source/platformProject/vci-platform-web/src/main/resources/log4j2-spring-prod.xml Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_ADD.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_DEL.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_EDIT.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_FILEDOWNLOAD.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_FILEUPLOAD.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_LINKADD.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_LINKDEL.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_LINKEDIT.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_REFRESH.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_TAB.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_UI.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_UPREVISION.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_VIEW.md Source/platformProject/vci-platform-web/src/main/resources/md/BUTTON_WORKFLOW.md Source/platformProject/vci-platform-web/src/main/resources/md/CUSTOMER_UI.md Source/platformProject/vci-platform-web/src/main/resources/md/VOLUME.md Source/platformProject/vci-platform-web/src/main/resources/properties/corba.properties Source/platformProject/vci-platform-web/src/main/resources/properties/iceClient.properties Source/platformProject/vci-platform-web/src/main/resources/wordTemplate/dataBaseExport.doc