From dc31cb4c268816fc4923fe9af8fe8de3a6c4d2bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Thu, 2 Jun 2022 08:30:48 +0800 Subject: [PATCH 01/34] ahh --- .DS_Store | Bin 0 -> 6148 bytes 1234.md | 6 -- docs/.vuepress/config.js | 52 ---------- docs/.vuepress/dist/0.png | Bin 430878 -> 0 bytes docs/.vuepress/dist/404.html | 20 ---- docs/.vuepress/dist/CNAME | 1 - docs/.vuepress/dist/README.md | 3 - .../dist/assets/css/0.styles.fd37d801.css | 1 - .../dist/assets/img/search.83621669.svg | 1 - docs/.vuepress/dist/assets/js/10.412f68a1.js | 1 - docs/.vuepress/dist/assets/js/11.bbd83b26.js | 1 - docs/.vuepress/dist/assets/js/12.9c4516f5.js | 1 - docs/.vuepress/dist/assets/js/13.5e57d5fb.js | 1 - docs/.vuepress/dist/assets/js/2.a3ac53fe.js | 1 - docs/.vuepress/dist/assets/js/3.dba40c6f.js | 1 - docs/.vuepress/dist/assets/js/4.bf66db01.js | 1 - docs/.vuepress/dist/assets/js/5.e88a4e27.js | 1 - docs/.vuepress/dist/assets/js/6.9ca53b6f.js | 1 - docs/.vuepress/dist/assets/js/7.c7313454.js | 1 - docs/.vuepress/dist/assets/js/8.0a1f366f.js | 1 - docs/.vuepress/dist/assets/js/9.266a40d1.js | 1 - docs/.vuepress/dist/assets/js/app.34842fb5.js | 8 -- docs/.vuepress/dist/index.html | 50 ---------- docs/.vuepress/dist/pages/guide/index.html | 42 -------- docs/.vuepress/dist/pages/java/index.html | 42 -------- docs/.vuepress/dist/pages/react/hooks.html | 42 -------- docs/.vuepress/dist/pages/react/index.html | 42 -------- docs/.vuepress/dist/pages/vue/abc.html | 46 --------- docs/.vuepress/dist/pages/vue/index.html | 42 -------- docs/.vuepress/public/0.png | Bin 430878 -> 0 bytes docs/.vuepress/public/CNAME | 1 - docs/.vuepress/public/README.md | 3 - docs/.vuepress/styles/index.styl | 92 ------------------ docs/.vuepress/styles/palette.styl | 29 ------ docs/README.md | 14 --- docs/pages/guide/README.md | 1 - docs/pages/java/README.md | 1 - docs/pages/react/README.md | 1 - docs/pages/react/hooks.md | 1 - docs/pages/vue/README.md | 1 - docs/pages/vue/abc.md | 1 - index.html | 45 ++++++++- static/1111.png | Bin 0 -> 446446 bytes 43 files changed, 44 insertions(+), 556 deletions(-) create mode 100644 .DS_Store delete mode 100644 1234.md delete mode 100644 docs/.vuepress/config.js delete mode 100644 docs/.vuepress/dist/0.png delete mode 100644 docs/.vuepress/dist/404.html delete mode 100644 docs/.vuepress/dist/CNAME delete mode 100644 docs/.vuepress/dist/README.md delete mode 100644 docs/.vuepress/dist/assets/css/0.styles.fd37d801.css delete mode 100644 docs/.vuepress/dist/assets/img/search.83621669.svg delete mode 100644 docs/.vuepress/dist/assets/js/10.412f68a1.js delete mode 100644 docs/.vuepress/dist/assets/js/11.bbd83b26.js delete mode 100644 docs/.vuepress/dist/assets/js/12.9c4516f5.js delete mode 100644 docs/.vuepress/dist/assets/js/13.5e57d5fb.js delete mode 100644 docs/.vuepress/dist/assets/js/2.a3ac53fe.js delete mode 100644 docs/.vuepress/dist/assets/js/3.dba40c6f.js delete mode 100644 docs/.vuepress/dist/assets/js/4.bf66db01.js delete mode 100644 docs/.vuepress/dist/assets/js/5.e88a4e27.js delete mode 100644 docs/.vuepress/dist/assets/js/6.9ca53b6f.js delete mode 100644 docs/.vuepress/dist/assets/js/7.c7313454.js delete mode 100644 docs/.vuepress/dist/assets/js/8.0a1f366f.js delete mode 100644 docs/.vuepress/dist/assets/js/9.266a40d1.js delete mode 100644 docs/.vuepress/dist/assets/js/app.34842fb5.js delete mode 100644 docs/.vuepress/dist/index.html delete mode 100644 docs/.vuepress/dist/pages/guide/index.html delete mode 100644 docs/.vuepress/dist/pages/java/index.html delete mode 100644 docs/.vuepress/dist/pages/react/hooks.html delete mode 100644 docs/.vuepress/dist/pages/react/index.html delete mode 100644 docs/.vuepress/dist/pages/vue/abc.html delete mode 100644 docs/.vuepress/dist/pages/vue/index.html delete mode 100644 docs/.vuepress/public/0.png delete mode 100644 docs/.vuepress/public/CNAME delete mode 100644 docs/.vuepress/public/README.md delete mode 100644 docs/.vuepress/styles/index.styl delete mode 100644 docs/.vuepress/styles/palette.styl delete mode 100644 docs/README.md delete mode 100644 docs/pages/guide/README.md delete mode 100644 docs/pages/java/README.md delete mode 100644 docs/pages/react/README.md delete mode 100644 docs/pages/react/hooks.md delete mode 100644 docs/pages/vue/README.md delete mode 100644 docs/pages/vue/abc.md create mode 100644 static/1111.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b29cf45c06c73dcbb480b3636a8cee136a934bbb GIT binary patch literal 6148 zcmeHKOHRWu5PdF1gwLYv*dXNsL@IEAP?ZI1E&y#%`Gf`ukXUAk#2vT-M}#+?QPm`L zi%>Najo)}O&rzPOI0g_#uf-4;07&S9y=^wXnA{idSkE$>#1O~G@Ps*L7iBf=RD0q- zDj;*0U})FU{7uSg!h5nX-szv;W{kI3eT);FBEusJneClwj8etXhqs3#_%@uG3T!FP$ zfP1!Bva9H=E8q&a0t*G?`;gKFbHiFOemdC1BLK0_bTr2D%P5@GFgL6fd50F1N>pmF zBSug<^QqP4hP9&75$y00?8(7SC?P(btTb3T$Y1Ap8IM>hph-)pAa2F1m96-I9*y}_0%C4hD>6g#AAu-? KH?F{+D)0mJ%~UJ^ literal 0 HcmV?d00001 diff --git a/1234.md b/1234.md deleted file mode 100644 index 7851288..0000000 --- a/1234.md +++ /dev/null @@ -1,6 +0,0 @@ -aa -aabb`这里输入代码` - -``` -这里输入代码 -``` diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js deleted file mode 100644 index c71b76d..0000000 --- a/docs/.vuepress/config.js +++ /dev/null @@ -1,52 +0,0 @@ -module.exports = { - title: '旺仔小前端', - description: '再看,再看我就把我卡掉', - head: [ - ['link', { rel: 'icon', href: '/0.png' }], - ], - plugins: [ - '@vuepress/back-to-top', - '@vuepress/medium-zoom' - ], - themeConfig: { - activeHeaderLinks: false, // 默认值:true - smoothScroll: true, // 启动页面滚动 - logo: '/0.png', - nav:[ - { text: 'Home', link: '/'}, - { text: 'vue', link: '/pages/vue/' }, // 内部链接 以docs为根目录 - { text: 'react', link: '/pages/react/'}, - { text: 'guide', link: '/pages/guide/'}, - { text: 'java', link: '/pages/java/'}, - { text: 'GitHub', link: 'https://github.com/imlinhe'} - ], - sidebar: { - '/pages/vue/': [ - { - title: 'vue', - collapsable: true, - children: [ - ['abc', 'abc'], - ], - }, - { - title: '响应式原理1', - collapsable: true, - children: [ - ['abc', 'abc'], - ], - }, - ], - '/pages/react/': [ - { - title: 'react', - collapsable: true, - children: [ - ['hooks', 'hooks'], - ] - } - ], - // '/pages/abstract/': abstractSideBar - } - } -} \ No newline at end of file diff --git a/docs/.vuepress/dist/0.png b/docs/.vuepress/dist/0.png deleted file mode 100644 index 353b0f1ead9b88011774feba6048cce861b0efde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430878 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 z 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%0AFP=Iw_ap@AtJ8jx5d#NKe5N6VepdABT~>yB*L^ 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

?`gQZ)EPmU&^+7m?O-z}WlExcUE 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

QEoD3<{x~C{=76L*7PRN~vAw8X4O%@l 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

Q%%E0g0&wULJY$HC2F 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 diff --git a/docs/.vuepress/dist/404.html b/docs/.vuepress/dist/404.html deleted file mode 100644 index 13d34b2..0000000 --- a/docs/.vuepress/dist/404.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - 旺仔小前端 - - - - - - - - -

- - - diff --git a/docs/.vuepress/dist/CNAME b/docs/.vuepress/dist/CNAME deleted file mode 100644 index fa781ca..0000000 --- a/docs/.vuepress/dist/CNAME +++ /dev/null @@ -1 +0,0 @@ -imlinhe.com diff --git a/docs/.vuepress/dist/README.md b/docs/.vuepress/dist/README.md deleted file mode 100644 index d7c32e8..0000000 --- a/docs/.vuepress/dist/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# 博客静态目录 - -[项目地址](https://imlinhe.com) diff --git a/docs/.vuepress/dist/assets/css/0.styles.fd37d801.css b/docs/.vuepress/dist/assets/css/0.styles.fd37d801.css deleted file mode 100644 index 0fd0029..0000000 --- a/docs/.vuepress/dist/assets/css/0.styles.fd37d801.css +++ /dev/null @@ -1 +0,0 @@ -.medium-zoom-overlay{z-index:100}.medium-zoom-overlay~img{z-index:101}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#16a085}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:1000px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#16a085}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:focus .header-anchor,h1:hover .header-anchor,h2:focus .header-anchor,h2:hover .header-anchor,h3:focus .header-anchor,h3:hover .header-anchor,h4:focus .header-anchor,h4:hover .header-anchor,h5:focus .header-anchor,h5:hover .header-anchor,h6:focus .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:focus,a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}body,body .sidebar,html,html .sidebar{font-size:14px}.theme-container .navbar{background-color:#2c3e50;border-bottom-color:#2c3e50;box-shadow:0 0 10px #2c3e50}.theme-container .navbar .site-name{color:#ecf0f1}.theme-container .navbar .logo{border-radius:50%}.theme-container .navbar .search-box input:focus{border-color:#2c3e50}.theme-container .navbar .links{background-color:#2c3e50;color:#ecf0f1}.theme-container .navbar .nav-links a.router-link-active,.theme-container .navbar .nav-links a:hover{color:#ecf0f1}.theme-container .sidebar::-webkit-scrollbar{width:0;height:0}.theme-container .sidebar:hover::-webkit-scrollbar{width:6px;height:6px;background-color:#ecf0f1}.theme-container .sidebar:hover::-webkit-scrollbar-track{background-color:#ecf0f1}.theme-container .sidebar:hover::-webkit-scrollbar-thumb{border-radius:2px;background:#95a5a6}.theme-container .home .hero img{max-height:230px}.theme-container .home .feature p{text-align:center}.theme-container .page{position:relative}.theme-container .page h2{border:none}.theme-container .page .custom-block.tip{border-color:#16a085}.theme-container .page .custom-block.warning{border-color:#f1c40f}.theme-container .page .custom-block.danger{border-color:#e74c3c}#nprogress{pointer-events:none}#nprogress .bar{background:#16a085;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #16a085,0 0 5px #16a085;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#16a085 transparent transparent #16a085;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html{scroll-behavior:smooth}.go-to-top[data-v-5fd4ef0c]{cursor:pointer;position:fixed;bottom:2rem;right:2.5rem;width:2rem;color:#16a085;z-index:1}.go-to-top[data-v-5fd4ef0c]:hover{color:#35e3c1}@media (max-width:959px){.go-to-top[data-v-5fd4ef0c]{display:none}}.fade-enter-active[data-v-5fd4ef0c],.fade-leave-active[data-v-5fd4ef0c]{transition:opacity .3s}.fade-enter[data-v-5fd4ef0c],.fade-leave-to[data-v-5fd4ef0c]{opacity:0}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#16a085;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #149078}.home .hero .action-button:hover{background-color:#1abd9d}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#16a085}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#16a085}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title,.dropdown-wrapper .mobile-dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#2c3e50}.dropdown-wrapper .dropdown-title:hover,.dropdown-wrapper .mobile-dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow,.dropdown-wrapper .mobile-dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .mobile-dropdown-title{display:none;font-weight:600}.dropdown-wrapper .mobile-dropdown-title font-size inherit:hover{color:#16a085}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:1rem 1.5rem .45rem 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#16a085}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #16a085;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{display:none}.dropdown-wrapper .mobile-dropdown-title{display:block}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#16a085}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #19b798}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:1000px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#767676}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:1000px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#16a085;border-left-color:#16a085}.sidebar-heading.clickable:hover{color:#16a085}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#16a085}a.sidebar-link.active{font-weight:600;color:#16a085;border-left-color:#16a085}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}.badge[data-v-15b7b770]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff;background-color:#42b983}.badge.green[data-v-15b7b770],.badge.tip[data-v-15b7b770]{background-color:#16a085}.badge.error[data-v-15b7b770]{background-color:#e74c3c}.badge.warn[data-v-15b7b770],.badge.warning[data-v-15b7b770],.badge.yellow[data-v-15b7b770]{background-color:#f1c40f}.badge+.badge[data-v-15b7b770]{margin-left:5px}.theme-code-block[data-v-759a7d02]{display:none}.theme-code-block__active[data-v-759a7d02]{display:block}.theme-code-block>pre[data-v-759a7d02]{background-color:orange}.theme-code-group__nav[data-v-deefee04]{margin-bottom:-35px;background-color:#282c34;padding-bottom:22px;border-top-left-radius:6px;border-top-right-radius:6px;padding-left:10px;padding-top:10px}.theme-code-group__ul[data-v-deefee04]{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.theme-code-group__nav-tab[data-v-deefee04]{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:hsla(0,0%,100%,.9);font-weight:600}.theme-code-group__nav-tab-active[data-v-deefee04]{border-bottom:1px solid #42b983}.pre-blank[data-v-deefee04]{color:#42b983} \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/img/search.83621669.svg b/docs/.vuepress/dist/assets/img/search.83621669.svg deleted file mode 100644 index 03d8391..0000000 --- a/docs/.vuepress/dist/assets/img/search.83621669.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/.vuepress/dist/assets/js/10.412f68a1.js b/docs/.vuepress/dist/assets/js/10.412f68a1.js deleted file mode 100644 index b083ba2..0000000 --- a/docs/.vuepress/dist/assets/js/10.412f68a1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{373:function(t,e,s){"use strict";s.r(e);var r=s(26),a=Object(r.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("h1",{attrs:{id:"hello-react"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hello-react"}},[this._v("#")]),this._v(" hello react")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/11.bbd83b26.js b/docs/.vuepress/dist/assets/js/11.bbd83b26.js deleted file mode 100644 index c14ae9b..0000000 --- a/docs/.vuepress/dist/assets/js/11.bbd83b26.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{372:function(t,e,s){"use strict";s.r(e);var n=s(26),o=Object(n.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("p",[this._v("react hooks")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/12.9c4516f5.js b/docs/.vuepress/dist/assets/js/12.9c4516f5.js deleted file mode 100644 index 2c782d6..0000000 --- a/docs/.vuepress/dist/assets/js/12.9c4516f5.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{375:function(t,e,s){"use strict";s.r(e);var l=s(26),n=Object(l.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("h1",{attrs:{id:"hello-vue"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hello-vue"}},[this._v("#")]),this._v(" hello vue")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/13.5e57d5fb.js b/docs/.vuepress/dist/assets/js/13.5e57d5fb.js deleted file mode 100644 index b9fe120..0000000 --- a/docs/.vuepress/dist/assets/js/13.5e57d5fb.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{374:function(t,e,n){"use strict";n.r(e);var s=n(26),l=Object(s.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("p",[this._v("abc111111")])])}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/2.a3ac53fe.js b/docs/.vuepress/dist/assets/js/2.a3ac53fe.js deleted file mode 100644 index c37f2ea..0000000 --- a/docs/.vuepress/dist/assets/js/2.a3ac53fe.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{315:function(t,e,n){"use strict";n.d(e,"d",(function(){return i})),n.d(e,"a",(function(){return a})),n.d(e,"i",(function(){return s})),n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return c})),n.d(e,"b",(function(){return h})),n.d(e,"e",(function(){return p})),n.d(e,"k",(function(){return f})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return v})),n.d(e,"j",(function(){return m}));n(93),n(66),n(316),n(317),n(172),n(65),n(95),n(96),n(46),n(97),n(166);var i=/#.*$/,r=/\.(md|html)$/,a=/\/$/,s=/^[a-z]+:/i;function o(t){return decodeURI(t).replace(i,"").replace(r,"")}function u(t){return s.test(t)}function l(t){return/^mailto:/.test(t)}function c(t){return/^tel:/.test(t)}function h(t){if(u(t))return t;var e=t.match(i),n=e?e[0]:"",r=o(t);return a.test(r)?t:r+".html"+n}function p(t,e){var n=decodeURIComponent(t.hash),r=function(t){var e=t.match(i);if(e)return e[0]}(e);return(!r||n===r)&&o(t.path)===o(e)}function f(t,e,n){if(u(e))return{type:"external",path:e};n&&(e=function(t,e,n){var i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;var r=e.split("/");n&&r[r.length-1]||r.pop();for(var a=t.replace(/^\//,"").split("/"),s=0;s3&&void 0!==arguments[3]?arguments[3]:1;if("string"==typeof e)return f(n,e,i);if(Array.isArray(e))return Object.assign(f(n,e[0],i),{title:e[1]});var a=e.children||[];return 0===a.length&&e.path?Object.assign(f(n,e.path,i),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,initialOpenGroupIndex:e.initialOpenGroupIndex,children:a.map((function(e){return t(e,n,i,r+1)})),collapsable:!1!==e.collapsable}}(t,r,l)})):[]}return[]}function g(t){var e=v(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map((function(e){return{type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}}))}]}function v(t){var e;return(t=t.map((function(t){return Object.assign({},t)}))).forEach((function(t){2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)})),t.filter((function(t){return 2===t.level}))}function m(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},316:function(t,e,n){"use strict";var i=n(168),r=n(5),a=n(13),s=n(20),o=n(170),u=n(171);i("match",1,(function(t,e,n){return[function(e){var n=s(this),i=null==e?void 0:e[t];return void 0!==i?i.call(e,n):new RegExp(e)[t](String(n))},function(t){var i=n(e,t,this);if(i.done)return i.value;var s=r(t),l=String(this);if(!s.global)return u(s,l);var c=s.unicode;s.lastIndex=0;for(var h,p=[],f=0;null!==(h=u(s,l));){var d=String(h[0]);p[f]=d,""===d&&(s.lastIndex=o(l,a(s.lastIndex),c)),f++}return 0===f?null:p}]}))},317:function(t,e,n){"use strict";var i=n(168),r=n(167),a=n(5),s=n(20),o=n(99),u=n(170),l=n(13),c=n(171),h=n(68),p=n(2),f=[].push,d=Math.min,g=!p((function(){return!RegExp(4294967295,"y")}));i("split",2,(function(t,e,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var i=String(s(this)),a=void 0===n?4294967295:n>>>0;if(0===a)return[];if(void 0===t)return[i];if(!r(t))return e.call(i,t,a);for(var o,u,l,c=[],p=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,g=new RegExp(t.source,p+"g");(o=h.call(g,i))&&!((u=g.lastIndex)>d&&(c.push(i.slice(d,o.index)),o.length>1&&o.index=a));)g.lastIndex===o.index&&g.lastIndex++;return d===i.length?!l&&g.test("")||c.push(""):c.push(i.slice(d)),c.length>a?c.slice(0,a):c}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var r=s(this),a=null==e?void 0:e[t];return void 0!==a?a.call(e,r,n):i.call(String(r),e,n)},function(t,r){var s=n(i,t,this,r,i!==e);if(s.done)return s.value;var h=a(t),p=String(this),f=o(h,RegExp),v=h.unicode,m=(h.ignoreCase?"i":"")+(h.multiline?"m":"")+(h.unicode?"u":"")+(g?"y":"g"),b=new f(g?h:"^(?:"+h.source+")",m),k=void 0===r?4294967295:r>>>0;if(0===k)return[];if(0===p.length)return null===c(b,p)?[p]:[];for(var _=0,x=0,C=[];x-1)&&(e=e.replace(/y/g,""));var o=s(x?new m(t,e):m(t,e),i?this:b,$);return C&&n&&d(o,{sticky:n}),o},y=function(t){t in $||o($,t,{configurable:!0,get:function(){return m[t]},set:function(e){m[t]=e}})},L=u(m),w=0;L.length>w;)y(L[w++]);b.constructor=$,$.prototype=b,p(r,"RegExp",$)}g("RegExp")},321:function(t,e,n){"use strict";var i=n(14),r=n(5),a=n(2),s=n(169),o=RegExp.prototype,u=o.toString,l=a((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),c="toString"!=u.name;(l||c)&&i(RegExp.prototype,"toString",(function(){var t=r(this),e=String(t.source),n=t.flags;return"/"+e+"/"+String(void 0===n&&t instanceof RegExp&&!("flags"in o)?s.call(t):n)}),{unsafe:!0})},322:function(t,e,n){},323:function(t,e,n){},324:function(t,e,n){},325:function(t,e,n){},326:function(t,e,n){},327:function(t,e,n){},328:function(t,e){t.exports=function(t){return null==t}},329:function(t,e,n){},330:function(t,e,n){},331:function(t,e,n){},332:function(t,e,n){},333:function(t,e,n){},334:function(t,e,n){},338:function(t,e,n){"use strict";n.r(e);n(165);var i=n(315),r={name:"SidebarGroup",components:{DropdownTransition:n(339).a},props:["item","open","collapsable","depth"],beforeCreate:function(){this.$options.components.SidebarLinks=n(338).default},methods:{isActive:i.e}},a=(n(358),n(26)),s=Object(a.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?n("RouterLink",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):n("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),n("DropdownTransition",[t.open||!t.collapsable?n("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,"initial-open-group-index":t.item.initialOpenGroupIndex,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null).exports;n(359),n(65);function o(t,e,n,i,r){var a={props:{to:e,activeClass:"",exactActiveClass:""},class:{active:i,"sidebar-link":!0}};return r>2&&(a.style={"padding-left":r+"rem"}),t("RouterLink",a,n)}function u(t,e,n,r,a){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return!e||s>a?null:t("ul",{class:"sidebar-sub-headers"},e.map((function(e){var l=Object(i.e)(r,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[o(t,n+"#"+e.slug,e.title,l,e.level-1),u(t,e.children,n,r,a,s+1)])})))}var l={functional:!0,props:["item","sidebarDepth"],render:function(t,e){var n=e.parent,r=n.$page,a=(n.$site,n.$route),s=n.$themeConfig,l=n.$themeLocaleConfig,c=e.props,h=c.item,p=c.sidebarDepth,f=Object(i.e)(a,h.path),d="auto"===h.type?f||h.children.some((function(t){return Object(i.e)(a,h.basePath+"#"+t.slug)})):f,g="external"===h.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,h.path,h.title||h.path):o(t,h.path,h.title||h.path,d),v=[r.frontmatter.sidebarDepth,p,l.sidebarDepth,s.sidebarDepth,1].find((function(t){return void 0!==t})),m=l.displayAllHeaders||s.displayAllHeaders;return"auto"===h.type?[g,u(t,h.children,h.basePath,a,v)]:(d||m)&&h.headers&&!i.d.test(h.path)?[g,u(t,Object(i.c)(h.headers),h.path,a,v)]:g}};n(360);function c(t,e){if("group"===e.type){var n=e.path&&Object(i.e)(t,e.path),r=e.children.some((function(e){return"group"===e.type?c(t,e):"page"===e.type&&Object(i.e)(t,e.path)}));return n||r}return!1}var h={name:"SidebarLinks",components:{SidebarGroup:s,SidebarLink:Object(a.a)(l,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth","initialOpenGroupIndex"],data:function(){return{openGroupIndex:this.initialOpenGroupIndex||0}},watch:{$route:function(){this.refreshIndex()}},created:function(){this.refreshIndex()},methods:{refreshIndex:function(){var t=function(t,e){for(var n=0;n-1&&(this.openGroupIndex=t)},toggleGroup:function(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive:function(t){return Object(i.e)(this.$route,t.regularPath)}}},p=Object(a.a)(h,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.items.length?n("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(e,i){return n("li",{key:i},["group"===e.type?n("SidebarGroup",{attrs:{item:e,open:i===t.openGroupIndex,collapsable:e.collapsable||e.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(i)}}}):n("SidebarLink",{attrs:{"sidebar-depth":t.sidebarDepth,item:e}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=p.exports},339:function(t,e,n){"use strict";var i={name:"DropdownTransition",methods:{setHeight:function(t){t.style.height=t.scrollHeight+"px"},unsetHeight:function(t){t.style.height=""}}},r=(n(350),n(26)),a=Object(r.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.a=a.exports},340:function(t,e,n){"use strict";var i=n(0),r=n(341);i({target:"String",proto:!0,forced:n(342)("link")},{link:function(t){return r(this,"a","href",t)}})},341:function(t,e,n){var i=n(20),r=/"/g;t.exports=function(t,e,n,a){var s=String(i(t)),o="<"+e;return""!==n&&(o+=" "+n+'="'+String(a).replace(r,""")+'"'),o+">"+s+""}},342:function(t,e,n){var i=n(2);t.exports=function(t){return i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},343:function(t,e,n){"use strict";n(318)},344:function(t,e,n){var i=n(0),r=n(345);i({global:!0,forced:parseInt!=r},{parseInt:r})},345:function(t,e,n){var i=n(1),r=n(173).trim,a=n(174),s=i.parseInt,o=/^[+-]?0[Xx]/,u=8!==s(a+"08")||22!==s(a+"0x16");t.exports=u?function(t,e){var n=r(String(t));return s(n,e>>>0||(o.test(n)?16:10))}:s},346:function(t,e,n){var i=n(2),r=n(174);t.exports=function(t){return i((function(){return!!r[t]()||"​…᠎"!="​…᠎"[t]()||r[t].name!==t}))}},347:function(t,e,n){"use strict";var i,r=n(0),a=n(22).f,s=n(13),o=n(100),u=n(20),l=n(101),c=n(21),h="".endsWith,p=Math.min,f=l("endsWith");r({target:"String",proto:!0,forced:!!(c||f||(i=a(String.prototype,"endsWith"),!i||i.writable))&&!f},{endsWith:function(t){var e=String(u(this));o(t);var n=arguments.length>1?arguments[1]:void 0,i=s(e.length),r=void 0===n?i:p(s(n),i),a=String(t);return h?h.call(e,a,r):e.slice(r-a.length,r)===a}})},348:function(t,e,n){"use strict";n(322)},349:function(t,e,n){"use strict";n(323)},350:function(t,e,n){"use strict";n(324)},351:function(t,e,n){"use strict";n(325)},352:function(t,e,n){"use strict";n(326)},353:function(t,e,n){"use strict";n(327)},354:function(t,e,n){"use strict";n(329)},355:function(t,e,n){var i=n(31),r=n(15),a=n(27);t.exports=function(t){return"string"==typeof t||!r(t)&&a(t)&&"[object String]"==i(t)}},356:function(t,e,n){"use strict";n(330)},357:function(t,e,n){"use strict";n(331)},358:function(t,e,n){"use strict";n(332)},359:function(t,e,n){"use strict";var i=n(0),r=n(30).find,a=n(98),s=!0;"find"in[]&&Array(1).find((function(){s=!1})),i({target:"Array",proto:!0,forced:s},{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),a("find")},360:function(t,e,n){"use strict";n(333)},361:function(t,e,n){"use strict";n(334)},365:function(t,e,n){"use strict";n.r(e);n(340),n(165),n(94);var i=n(315),r={name:"NavLink",props:{item:{required:!0}},computed:{link:function(){return Object(i.b)(this.item.link)},exact:function(){var t=this;return this.$site.locales?Object.keys(this.$site.locales).some((function(e){return e===t.link})):"/"===this.link},isNonHttpURI:function(){return Object(i.g)(this.link)||Object(i.h)(this.link)},isBlankTarget:function(){return"_blank"===this.target},isInternal:function(){return!Object(i.f)(this.link)&&!this.isBlankTarget},target:function(){return this.isNonHttpURI?null:this.item.target?this.item.target:Object(i.f)(this.link)?"_blank":""},rel:function(){return this.isNonHttpURI||!1===this.item.rel?null:this.item.rel?this.item.rel:this.isBlankTarget?"noopener noreferrer":null}},methods:{focusoutAction:function(){this.$emit("focusout")}}},a=n(26),s=Object(a.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isInternal?n("RouterLink",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction(e)}}},[t._v("\n "+t._s(t.item.text)+"\n")]):n("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.target,rel:t.rel},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),t.isBlankTarget?n("OutboundLink"):t._e()],1)}),[],!1,null,null,null).exports,o={name:"Home",components:{NavLink:s},computed:{data:function(){return this.$page.frontmatter},actionLink:function(){return{link:this.data.actionLink,text:this.data.actionText}}}},u=(n(343),Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("main",{staticClass:"home",attrs:{"aria-labelledby":null!==t.data.heroText?"main-title":null}},[n("header",{staticClass:"hero"},[t.data.heroImage?n("img",{attrs:{src:t.$withBase(t.data.heroImage),alt:t.data.heroAlt||"hero"}}):t._e(),t._v(" "),null!==t.data.heroText?n("h1",{attrs:{id:"main-title"}},[t._v("\n "+t._s(t.data.heroText||t.$title||"Hello")+"\n ")]):t._e(),t._v(" "),null!==t.data.tagline?n("p",{staticClass:"description"},[t._v("\n "+t._s(t.data.tagline||t.$description||"Welcome to your VuePress site")+"\n ")]):t._e(),t._v(" "),t.data.actionText&&t.data.actionLink?n("p",{staticClass:"action"},[n("NavLink",{staticClass:"action-button",attrs:{item:t.actionLink}})],1):t._e()]),t._v(" "),t.data.features&&t.data.features.length?n("div",{staticClass:"features"},t._l(t.data.features,(function(e,i){return n("div",{key:i,staticClass:"feature"},[n("h2",[t._v(t._s(e.title))]),t._v(" "),n("p",[t._v(t._s(e.details))])])})),0):t._e(),t._v(" "),n("Content",{staticClass:"theme-default-content custom"}),t._v(" "),t.data.footer?n("div",{staticClass:"footer"},[t._v("\n "+t._s(t.data.footer)+"\n ")]):t._e()],1)}),[],!1,null,null,null).exports),l=(n(344),n(319),n(166),n(97),n(46),n(316),n(66),n(177),n(178),n(172),n(93),n(320),n(321),n(65),n(317),n(347),n(180)),c=n.n(l),h=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=c()(e,"title","");return c()(e,"frontmatter.tags")&&(i+=" ".concat(e.frontmatter.tags.join(" "))),n&&(i+=" ".concat(n)),p(t,i)},p=function(t,e){var n=function(t){return t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")},i=new RegExp("[^\0-]"),r=t.split(/\s+/g).map((function(t){return t.trim()})).filter((function(t){return!!t}));if(i.test(t))return r.some((function(t){return e.toLowerCase().indexOf(t)>-1}));var a=t.endsWith(" ");return new RegExp(r.map((function(t,e){return r.length!==e+1||a?"(?=.*\\b".concat(n(t),"\\b)"):"(?=.*\\b".concat(n(t),")")})).join("")+".+","gi").test(e)},f={name:"SearchBox",data:function(){return{query:"",focused:!1,focusIndex:0,placeholder:void 0}},computed:{showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length},suggestions:function(){var t=this.query.trim().toLowerCase();if(t){for(var e=this.$site.pages,n=this.$site.themeConfig.searchMaxSuggestions||5,i=this.$localePath,r=[],a=0;a=n);a++){var s=e[a];if(this.getPageLocalePath(s)===i&&this.isSearchable(s))if(h(t,s))r.push(s);else if(s.headers)for(var o=0;o=n);o++){var u=s.headers[o];u.title&&h(t,s,u.title)&&r.push(Object.assign({},s,{path:s.path+"#"+u.slug,header:u}))}}return r}},alignRight:function(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},mounted:function(){this.placeholder=this.$site.themeConfig.searchPlaceholder||"",document.addEventListener("keydown",this.onHotkey)},beforeDestroy:function(){document.removeEventListener("keydown",this.onHotkey)},methods:{getPageLocalePath:function(t){for(var e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},isSearchable:function(t){var e=null;return null===e||(e=Array.isArray(e)?e:new Array(e)).filter((function(e){return t.path.match(e)})).length>0},onHotkey:function(t){t.srcElement===document.body&&["s","/"].includes(t.key)&&(this.$refs.input.focus(),t.preventDefault())},onUp:function(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown:function(){this.showSuggestions&&(this.focusIndex "+t._s(e.header.title))]):t._e()])])})),0):t._e()])}),[],!1,null,null,null).exports),g=(n(349),Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"sidebar-button",on:{click:function(e){return t.$emit("toggle-sidebar")}}},[n("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[n("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null).exports),v=n(44),m=(n(179),n(339)),b=n(181),k=n.n(b),_={name:"DropdownLink",components:{NavLink:s,DropdownTransition:m.a},props:{item:{required:!0}},data:function(){return{open:!1}},computed:{dropdownAriaLabel:function(){return this.item.ariaLabel||this.item.text}},watch:{$route:function(){this.open=!1}},methods:{setOpen:function(t){this.open=t},isLastItemOfArray:function(t,e){return k()(e)===t},handleDropdown:function(){0===event.detail&&this.setOpen(!this.open)}}},x=(n(351),{name:"NavLinks",components:{NavLink:s,DropdownLink:Object(a.a)(_,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[n("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:t.handleDropdown}},[n("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),n("span",{staticClass:"arrow down"})]),t._v(" "),n("button",{staticClass:"mobile-dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:function(e){return t.setOpen(!t.open)}}},[n("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),n("span",{staticClass:"arrow",class:t.open?"down":"right"})]),t._v(" "),n("DropdownTransition",[n("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(e,i){return n("li",{key:e.link||i,staticClass:"dropdown-item"},["links"===e.type?n("h4",[t._v("\n "+t._s(e.text)+"\n ")]):t._e(),t._v(" "),"links"===e.type?n("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(e.items,(function(i){return n("li",{key:i.link,staticClass:"dropdown-subitem"},[n("NavLink",{attrs:{item:i},on:{focusout:function(n){t.isLastItemOfArray(i,e.items)&&t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0):n("NavLink",{attrs:{item:e},on:{focusout:function(n){t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0)])],1)}),[],!1,null,null,null).exports},computed:{userNav:function(){return this.$themeLocaleConfig.nav||this.$site.themeConfig.nav||[]},nav:function(){var t=this,e=this.$site.locales;if(e&&Object.keys(e).length>1){var n=this.$page.path,i=this.$router.options.routes,r=this.$site.themeConfig.locales||{},a={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(e).map((function(a){var s,o=e[a],u=r[a]&&r[a].label||o.lang;return o.lang===t.$lang?s=n:(s=n.replace(t.$localeConfig.path,a),i.some((function(t){return t.path===s}))||(s=a)),{text:u,link:s}}))};return[].concat(Object(v.a)(this.userNav),[a])}return this.userNav},userLinks:function(){return(this.nav||[]).map((function(t){return Object.assign(Object(i.j)(t),{items:(t.items||[]).map(i.j)})}))},repoLink:function(){var t=this.$site.themeConfig.repo;return t?/^https?:/.test(t)?t:"https://github.com/".concat(t):null},repoLabel:function(){if(this.repoLink){if(this.$site.themeConfig.repoLabel)return this.$site.themeConfig.repoLabel;for(var t=this.repoLink.match(/^https?:\/\/[^/]+/)[0],e=["GitHub","GitLab","Bitbucket"],n=0;nMath.abs(n)&&Math.abs(e)>40&&(e>0&&this.touchStart.x<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))}}}),G=Object(a.a)(W,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"theme-container",class:t.pageClasses,on:{touchstart:t.onTouchStart,touchend:t.onTouchEnd}},[t.shouldShowNavbar?n("Navbar",{on:{"toggle-sidebar":t.toggleSidebar}}):t._e(),t._v(" "),n("div",{staticClass:"sidebar-mask",on:{click:function(e){return t.toggleSidebar(!1)}}}),t._v(" "),n("Sidebar",{attrs:{items:t.sidebarItems},on:{"toggle-sidebar":t.toggleSidebar},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("sidebar-top")]},proxy:!0},{key:"bottom",fn:function(){return[t._t("sidebar-bottom")]},proxy:!0}],null,!0)}),t._v(" "),t.$page.frontmatter.home?n("Home"):n("Page",{attrs:{"sidebar-items":t.sidebarItems},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("page-top")]},proxy:!0},{key:"bottom",fn:function(){return[t._t("page-bottom")]},proxy:!0}],null,!0)})],1)}),[],!1,null,null,null);e.default=G.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/3.dba40c6f.js b/docs/.vuepress/dist/assets/js/3.dba40c6f.js deleted file mode 100644 index 4d4ead7..0000000 --- a/docs/.vuepress/dist/assets/js/3.dba40c6f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{335:function(t,e,n){},362:function(t,e,n){"use strict";n(335)},376:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(362),n(26)),p=Object(r.a)(i,void 0,void 0,!1,null,"15b7b770",null);e.default=p.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/4.bf66db01.js b/docs/.vuepress/dist/assets/js/4.bf66db01.js deleted file mode 100644 index 7863a44..0000000 --- a/docs/.vuepress/dist/assets/js/4.bf66db01.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{336:function(t,e,a){},363:function(t,e,a){"use strict";a(336)},367:function(t,e,a){"use strict";a.r(e);var n={name:"CodeBlock",props:{title:{type:String,required:!0},active:{type:Boolean,default:!1}},mounted:function(){this.$parent&&this.$parent.loadTabs&&this.$parent.loadTabs()}},i=(a(363),a(26)),s=Object(i.a)(n,(function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"theme-code-block",class:{"theme-code-block__active":this.active}},[this._t("default")],2)}),[],!1,null,"759a7d02",null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/5.e88a4e27.js b/docs/.vuepress/dist/assets/js/5.e88a4e27.js deleted file mode 100644 index 5b5c5a6..0000000 --- a/docs/.vuepress/dist/assets/js/5.e88a4e27.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{337:function(e,t,a){},364:function(e,t,a){"use strict";a(337)},368:function(e,t,a){"use strict";a.r(t);a(65),a(46),a(95),a(96);var o={name:"CodeGroup",data:function(){return{codeTabs:[],activeCodeTabIndex:-1}},watch:{activeCodeTabIndex:function(e){this.activateCodeTab(e)}},mounted:function(){this.loadTabs()},methods:{changeCodeTab:function(e){this.activeCodeTabIndex=e},loadTabs:function(){var e=this;this.codeTabs=(this.$slots.default||[]).filter((function(e){return Boolean(e.componentOptions)})).map((function(t,a){return""===t.componentOptions.propsData.active&&(e.activeCodeTabIndex=a),{title:t.componentOptions.propsData.title,elm:t.elm}})),-1===this.activeCodeTabIndex&&this.codeTabs.length>0&&(this.activeCodeTabIndex=0),this.activateCodeTab(0)},activateCodeTab:function(e){this.codeTabs.forEach((function(e){e.elm&&e.elm.classList.remove("theme-code-block__active")})),this.codeTabs[e].elm&&this.codeTabs[e].elm.classList.add("theme-code-block__active")}}},n=(a(364),a(26)),c=Object(n.a)(o,(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ClientOnly",[a("div",{staticClass:"theme-code-group"},[a("div",{staticClass:"theme-code-group__nav"},[a("ul",{staticClass:"theme-code-group__ul"},e._l(e.codeTabs,(function(t,o){return a("li",{key:t.title,staticClass:"theme-code-group__li"},[a("button",{staticClass:"theme-code-group__nav-tab",class:{"theme-code-group__nav-tab-active":o===e.activeCodeTabIndex},on:{click:function(t){return e.changeCodeTab(o)}}},[e._v("\n "+e._s(t.title)+"\n ")])])})),0)]),e._v(" "),e._t("default"),e._v(" "),e.codeTabs.length<1?a("pre",{staticClass:"pre-blank"},[e._v("// Make sure to add code blocks to your code group")]):e._e()],2)])}),[],!1,null,"deefee04",null);t.default=c.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/6.9ca53b6f.js b/docs/.vuepress/dist/assets/js/6.9ca53b6f.js deleted file mode 100644 index 55f22c8..0000000 --- a/docs/.vuepress/dist/assets/js/6.9ca53b6f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{366:function(t,e,s){"use strict";s.r(e);var n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],o={methods:{getMsg:function(){return n[Math.floor(Math.random()*n.length)]}}},i=s(26),h=Object(i.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"theme-container"},[e("div",{staticClass:"theme-default-content"},[e("h1",[this._v("404")]),this._v(" "),e("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),e("RouterLink",{attrs:{to:"/"}},[this._v("\n Take me home.\n ")])],1)])}),[],!1,null,null,null);e.default=h.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/7.c7313454.js b/docs/.vuepress/dist/assets/js/7.c7313454.js deleted file mode 100644 index 2a8c2ed..0000000 --- a/docs/.vuepress/dist/assets/js/7.c7313454.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{369:function(t,e,n){"use strict";n.r(e);var s=n(26),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/8.0a1f366f.js b/docs/.vuepress/dist/assets/js/8.0a1f366f.js deleted file mode 100644 index 26ce4a1..0000000 --- a/docs/.vuepress/dist/assets/js/8.0a1f366f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{370:function(t,e,s){"use strict";s.r(e);var i=s(26),n=Object(i.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("h3",{attrs:{id:"guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#guide"}},[this._v("#")]),this._v(" guide")])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/9.266a40d1.js b/docs/.vuepress/dist/assets/js/9.266a40d1.js deleted file mode 100644 index 329f112..0000000 --- a/docs/.vuepress/dist/assets/js/9.266a40d1.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{371:function(t,a,e){"use strict";e.r(a);var s=e(26),l=Object(s.a)({},(function(){var t=this.$createElement,a=this._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[a("h1",{attrs:{id:"hello-java"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hello-java"}},[this._v("#")]),this._v(" hello java")])])}),[],!1,null,null,null);a.default=l.exports}}]); \ No newline at end of file diff --git a/docs/.vuepress/dist/assets/js/app.34842fb5.js b/docs/.vuepress/dist/assets/js/app.34842fb5.js deleted file mode 100644 index c02ec8e..0000000 --- a/docs/.vuepress/dist/assets/js/app.34842fb5.js +++ /dev/null @@ -1,8 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,c=e[0],u=e[1],s=e[2],l=0,p=[];l=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},function(t,e,n){var r=n(51),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(1),o=n(10),i=n(8),a=n(71),c=n(76),u=n(29),s=u.get,f=u.enforce,l=String(String).split("String");(t.exports=function(t,e,n,c){var u,s=!!c&&!!c.unsafe,p=!!c&&!!c.enumerable,d=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),(u=f(n)).source||(u.source=l.join("string"==typeof e?e:""))),t!==r?(s?!d&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||c(this)}))},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){var r=n(32),o=n(20);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(1),o=n(126),i=n(102),a=n(10),c=n(3),u=c("iterator"),s=c("toStringTag"),f=i.values;for(var l in o){var p=r[l],d=p&&p.prototype;if(d){if(d[u]!==f)try{a(d,u,f)}catch(t){d[u]=f}if(d[s]||a(d,s,l),o[l])for(var h in i)if(d[h]!==i[h])try{a(d,h,i[h])}catch(t){d[h]=i[h]}}}},function(t,e,n){var r=n(136),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e,n){var r=n(104),o=n(1),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e){t.exports=!1},function(t,e,n){var r=n(6),o=n(77),i=n(34),a=n(16),c=n(33),u=n(8),s=n(103),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=a(t),e=c(e,!0),s)try{return f(t,e)}catch(t){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},function(t,e,n){var r=n(228),o=n(231);t.exports=function(t,e){var n=o(t,e);return r(n)?n:void 0}},function(t,e,n){"use strict";function r(t,e,n,r,o,i,a,c){var u,s="function"==typeof t?t.options:t;if(e&&(s.render=e,s.staticRenderFns=n,s._compiled=!0),r&&(s.functional=!0),i&&(s._scopeId="data-v-"+i),a?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},s._ssrRegister=u):o&&(u=c?function(){o.call(this,(s.functional?this.parent:this).$root.$options.shadowRoot)}:o),u)if(s.functional){s._injectStyles=u;var f=s.render;s.render=function(t,e){return u.call(e),f(t,e)}}else{var l=s.beforeCreate;s.beforeCreate=l?[].concat(l,u):[u]}return{exports:t,options:s}}n.d(e,"a",(function(){return r}))},function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},function(t,e,n){var r,o=n(5),i=n(184),a=n(75),c=n(37),u=n(108),s=n(72),f=n(52),l=f("IE_PROTO"),p=function(){},d=function(t){return" - - diff --git a/docs/.vuepress/dist/pages/guide/index.html b/docs/.vuepress/dist/pages/guide/index.html deleted file mode 100644 index 31fd644..0000000 --- a/docs/.vuepress/dist/pages/guide/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - guide | 旺仔小前端 - - - - - - - - - - - - diff --git a/docs/.vuepress/dist/pages/java/index.html b/docs/.vuepress/dist/pages/java/index.html deleted file mode 100644 index 569bf16..0000000 --- a/docs/.vuepress/dist/pages/java/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - hello java | 旺仔小前端 - - - - - - - - - - - - diff --git a/docs/.vuepress/dist/pages/react/hooks.html b/docs/.vuepress/dist/pages/react/hooks.html deleted file mode 100644 index 0b06db0..0000000 --- a/docs/.vuepress/dist/pages/react/hooks.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - 旺仔小前端 - - - - - - - - - - - - diff --git a/docs/.vuepress/dist/pages/react/index.html b/docs/.vuepress/dist/pages/react/index.html deleted file mode 100644 index 8232660..0000000 --- a/docs/.vuepress/dist/pages/react/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - hello react | 旺仔小前端 - - - - - - - - - - - - diff --git a/docs/.vuepress/dist/pages/vue/abc.html b/docs/.vuepress/dist/pages/vue/abc.html deleted file mode 100644 index 427a9b2..0000000 --- a/docs/.vuepress/dist/pages/vue/abc.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - 旺仔小前端 - - - - - - - - - - - - diff --git a/docs/.vuepress/dist/pages/vue/index.html b/docs/.vuepress/dist/pages/vue/index.html deleted file mode 100644 index 63f62e2..0000000 --- a/docs/.vuepress/dist/pages/vue/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - hello vue | 旺仔小前端 - - - - - - - - - - - - diff --git a/docs/.vuepress/public/0.png b/docs/.vuepress/public/0.png deleted file mode 100644 index 353b0f1ead9b88011774feba6048cce861b0efde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430878 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 z 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%0AFP=Iw_ap@AtJ8jx5d#NKe5N6VepdABT~>yB*L^ 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

?`gQZ)EPmU&^+7m?O-z}WlExcUE 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

QEoD3<{x~C{=76L*7PRN~vAw8X4O%@l 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

Q%%E0g0&wULJY$HC2F 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 diff --git a/docs/.vuepress/public/CNAME b/docs/.vuepress/public/CNAME deleted file mode 100644 index fa781ca..0000000 --- a/docs/.vuepress/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -imlinhe.com diff --git a/docs/.vuepress/public/README.md b/docs/.vuepress/public/README.md deleted file mode 100644 index d7c32e8..0000000 --- a/docs/.vuepress/public/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# 博客静态目录 - -[项目地址](https://imlinhe.com) diff --git a/docs/.vuepress/styles/index.styl b/docs/.vuepress/styles/index.styl deleted file mode 100644 index cb9dc6d..0000000 --- a/docs/.vuepress/styles/index.styl +++ /dev/null @@ -1,92 +0,0 @@ -// 添加额外的样式 - -// 全站变灰(哀悼日) -html, body - font-size 14px - .sidebar - font-size 14px -// filter grayscale(100%) -// -webkit-filter grayscale(100%) -// -moz-filter grayscale(100%) -// -ms-filter grayscale(100%) -// -o-filter grayscale(100%) - -.theme-container - // 头部 navbar - .navbar { - background-color $navBgColor - border-bottom-color $navBgColor - box-shadow 0 0 10px $navBgColor - /* 渐变色标题 */ - .site-name { - color #ecf0f1 - } - .logo { - border-radius 50% - } - .search-box input:focus { - border-color $textColor - } - .links { - background-color $navBgColor - color #ecf0f1 - } - .nav-links a:hover, .nav-links a.router-link-active { - color #ecf0f1 - } - } - // ??? - // .sidebar-mask {} - // 侧边栏 - .sidebar { - /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ - &::-webkit-scrollbar { - width: 0; - height: 0; - } - &:hover { - &::-webkit-scrollbar { - width: 6px; - height: 6px; - background-color: #ecf0f1; - } - /*定义滚动条轨道 内阴影+圆角*/ - &::-webkit-scrollbar-track { - background-color: #ecf0f1; - } - /*定义滑块 内阴影+圆角*/ - &::-webkit-scrollbar-thumb { - border-radius: 2px; - background: #95a5a6; - } - } - } - // 首页 - .home { - .hero img { - max-height 230px - } - .feature p { - text-align center - } - } - // 内容页 - .page { - position relative - h2 { - border none - } - .custom-block { - &.tip { - border-color: $badgeTipColor; - } - &.warning { - border-color: $badgeWarningColor; - } - &.danger { - border-color: $badgeErrorColor; - } - } - } - - diff --git a/docs/.vuepress/styles/palette.styl b/docs/.vuepress/styles/palette.styl deleted file mode 100644 index 5332ef7..0000000 --- a/docs/.vuepress/styles/palette.styl +++ /dev/null @@ -1,29 +0,0 @@ -// 改变默认值 - -// 颜色 -$navBgColor = #2c3e50 -$accentColor = #16a085 -$badgeTipColor = #16a085 -$badgeWarningColor = #f1c40f -$badgeErrorColor = #e74c3c - -// $accentColor = #3eaf7c -$textColor = #2c3e50 -$borderColor = #eaecef -$codeBgColor = #282c34 -$arrowBgColor = #ccc -// $badgeTipColor = #42b983 -// $badgeWarningColor = darken(#ffe564, 35%) -// $badgeErrorColor = #DA5961 - -// 布局 -$navbarHeight = 3.6rem -$sidebarWidth = 20rem -// $contentWidth = 740px -$contentWidth = 1000px -$homePageWidth = 960px - -// 响应式变化点 -$MQNarrow = 959px -$MQMobile = 719px -$MQMobileNarrow = 419px diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 4ee7d23..0000000 --- a/docs/README.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -home: true -heroImage: /0.png -actionText: 我的技术博客小站 -actionLink: https://blog.chenqiong.com.cn/ -features: -- title: - details: 醉后不知天在水 满船清梦压星河 -- title: - details: 小楼一夜听春雨 深巷明朝卖杏花 -- title: - details: 闲梦江南梅熟日 夜船吹笛雨潇潇 -footer: MIT Licensed | Copyright © 2021 Chen Qiong ---- \ No newline at end of file diff --git a/docs/pages/guide/README.md b/docs/pages/guide/README.md deleted file mode 100644 index b8d5b51..0000000 --- a/docs/pages/guide/README.md +++ /dev/null @@ -1 +0,0 @@ -### guide \ No newline at end of file diff --git a/docs/pages/java/README.md b/docs/pages/java/README.md deleted file mode 100644 index 00e7413..0000000 --- a/docs/pages/java/README.md +++ /dev/null @@ -1 +0,0 @@ -# hello java \ No newline at end of file diff --git a/docs/pages/react/README.md b/docs/pages/react/README.md deleted file mode 100644 index 4bd452d..0000000 --- a/docs/pages/react/README.md +++ /dev/null @@ -1 +0,0 @@ -# hello react \ No newline at end of file diff --git a/docs/pages/react/hooks.md b/docs/pages/react/hooks.md deleted file mode 100644 index 3ba22b6..0000000 --- a/docs/pages/react/hooks.md +++ /dev/null @@ -1 +0,0 @@ -react hooks \ No newline at end of file diff --git a/docs/pages/vue/README.md b/docs/pages/vue/README.md deleted file mode 100644 index 35b99e9..0000000 --- a/docs/pages/vue/README.md +++ /dev/null @@ -1 +0,0 @@ -# hello vue \ No newline at end of file diff --git a/docs/pages/vue/abc.md b/docs/pages/vue/abc.md deleted file mode 100644 index 4de3bd5..0000000 --- a/docs/pages/vue/abc.md +++ /dev/null @@ -1 +0,0 @@ -abc111111 \ No newline at end of file diff --git a/index.html b/index.html index 8373571..814c753 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,49 @@ Document -

hello world

+ +
2022-03-02
+
2022-06-01 19:23:12
+ + + + \ No newline at end of file diff --git a/static/1111.png b/static/1111.png new file mode 100644 index 0000000000000000000000000000000000000000..a54bcd78cf92ee4fd9a91f8a1af4f9f84f5969de GIT binary patch literal 446446 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%0AYCGHhBUR*r58voflT0lEm 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�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 Date: Thu, 2 Jun 2022 08:33:41 +0800 Subject: [PATCH 02/34] ahhaa --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 814c753..7c9f1f0 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Document + 漯河市场所码 -- Gitee From 91220c2e418bf912cbeec1f57713ca604f445dae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC?= <619591477@qq.com> Date: Thu, 2 Jun 2022 00:35:01 +0000 Subject: [PATCH 03/34] update index.html. --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 7c9f1f0..22b3647 100644 --- a/index.html +++ b/index.html @@ -46,7 +46,7 @@ left: 35px; } #div2 { - top: 569px; + top: 570px; color: #262323; font-size: 16px; left: 200px; -- Gitee From 04951345004d0f58bae50e800a9e7eff120cb26e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC?= <619591477@qq.com> Date: Thu, 2 Jun 2022 00:36:11 +0000 Subject: [PATCH 04/34] update index.html. --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 22b3647..a9183f0 100644 --- a/index.html +++ b/index.html @@ -48,7 +48,7 @@ #div2 { top: 570px; color: #262323; - font-size: 16px; + font-size: 17px; left: 200px; } -- Gitee From e4393f79deb1fd22c9d572f24709b8998106a5f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC?= <619591477@qq.com> Date: Thu, 2 Jun 2022 08:44:49 +0800 Subject: [PATCH 05/34] Update index.html --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 7c9f1f0..d36d87f 100644 --- a/index.html +++ b/index.html @@ -46,10 +46,10 @@ left: 35px; } #div2 { - top: 569px; + top: 571px; color: #262323; font-size: 16px; left: 200px; } - \ No newline at end of file + -- Gitee From 6ef2eef7fd05f09fbd89a0ca5c33c415aaf9e553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Thu, 2 Jun 2022 08:50:36 +0800 Subject: [PATCH 06/34] ahhaaffff --- .DS_Store | Bin 6148 -> 6148 bytes index.html | 7 ++++--- static/.DS_Store | Bin 0 -> 6148 bytes static/{1111.png => 222.png} | Bin 446446 -> 439651 bytes 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 static/.DS_Store rename static/{1111.png => 222.png} (77%) diff --git a/.DS_Store b/.DS_Store index b29cf45c06c73dcbb480b3636a8cee136a934bbb..4f166bd722ea7d65d1a77295b1113c86a97c7886 100644 GIT binary patch delta 343 zcmZoMXfc=|#>B!ku~2NHo+2a1#(>?7iw&5WChDk_vJ%i%Sd)t}`+*v#_$Ub8v8QbMSJ+2501#2bUz4lomTB z7Da=20f{9UNl*(~JXsc8l$VpAmktzXWZ104e28%~I|n}pFxWOLGJj{D T%rD}|0W^#WWWeSKku}T!qIOrm delta 67 zcmZoMXfc=|#>B)qu~2NHo+2ab#(>?7jI5h^Soj$?i*X3DOl-KlnVo~51E^%PAjfy+ V$^0UY91K9f$iTp|IYML&GXN}x4*&oF diff --git a/index.html b/index.html index 7c9f1f0..0b067fc 100644 --- a/index.html +++ b/index.html @@ -7,9 +7,9 @@ 漯河市场所码 - +

-
2022-06-01 19:23:12
+
48小时内: 2022-06-01 19:23:12
-- Gitee From 4761bb1c4e1b909de2a25115efac64443b38d1f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Sun, 5 Jun 2022 12:21:18 +0800 Subject: [PATCH 15/34] asf99 lkjlk][]][poppoopoiuiui add a --- a.html | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++ static/1.png | Bin 0 -> 913622 bytes 2 files changed, 158 insertions(+) create mode 100644 a.html create mode 100644 static/1.png diff --git a/a.html b/a.html new file mode 100644 index 0000000..a8aad57 --- /dev/null +++ b/a.html @@ -0,0 +1,158 @@ + + + + + + + 河南省疫情防控场所码 + + + +
+
+
+
+ + +
+
+
+ +
+ + + + + + diff --git a/static/1.png b/static/1.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc1fd8eeecc4864f2025638266ebe9437554dc4 GIT binary patch literal 913622 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 sT~V3cf+m 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%0DX0MMnf+aXMH`}M(9#4XK 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�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

ml z9_LF0Z3|CgO@~>T@I6vi?ISF>l7Cd%>>wNcr(~D-f_ZPX>gz|8WrGVEy~fO z+7lk2lxK0xn#M=KAy=bg&AUSwRQiQZXOB^wzzs7-wt{OSL6Ucvb~~fkmer+X zZ>(d%QoK5t-;*+Ktz(FDUeMf6&pHk@EF|~SB4v~aWKq-2ypPv`On`WnIELTV05)5` zQ==49p(Y7zyBe}hrr=LQG+%_W;RiTbn!qWMhE0|S@0Uf$1 z`YajDEaf!Ov3&VZHOIuNlj&wlubYOAzG=otu#7W?C8yeSMJQ^1yWg|ZT&Jnsjq_Pm znHuDJ<0}6~MEg}Qh?#iDrEcPzXNC36+0Jj|Qhxn$gFxS7Eq8#`%tf4fE z?h8~K1+okhsW}`*>mwc;1P|8n(nqf} zc5TfR?CZ5*(>6NsdGE^Oh0mM}s}#C_c&k1Nn>fzkxHt|nkPI?&EkHdGY9C;*kn`PH7InBk!6QABKhPHif&?5 zoNnbIYD`2Hn(&XX2C2LR1J$bZSOA1cg`wC$iXkNgXPRNIK&=_F%OT}{@umW#kLo{x30v>~ z*Yf>Fp~}uB{SdcN%X$vBde6?x^?P;atKmt!$=v!YU6LlWv4MU87!KEr%e|vQw0$2Q z8YbP!B!3m3sy96Z7!5QFT>OZAII*NU`Exyg+bBDelE3NO6h;cXzj9#hu`^XmR)8*5dB&?yfKQ zzVSZZPxeQ~$j`}MXRfuTuup7uS3ldg%YE|9g_^Xhtmt#>rQcMae*Qoh03>rY_V}J8 z)fb0HW-Hp8_wMMT)=tFk01$rK)RQXnuDv7drm4E(V)rPSr!iYNPH+@gPdS?yyL_4HnM-d~53U$48h7m%ZDS4z@%N6UDDXV^DJ zh-xm78~bXQv~;v>qqS09%++m^#;`=xZ}RU7&$whNash6Ej?#+v)pl~8cedWLQR5s< z#!@^v@|Htz)o+Y%xjC+Z69>7hLB4q@I8Vusr3U&x76xeAVl621IkOTfN8?~x2X)^f zS6D;qO`#O`M}#mP<(c#{=wjQrEhB!UVy6)+gTh>JI3;09TnJYnhd_cIbz{5OaqUQvx>rC|4!?h!IBp z1{d{_7}enE(#0n*g?YT-;@Yw}bQ=Fd4!#I>k1+mG4N#qECWeP4n5eP32a7J&^Rr3h zr&Z+?vXF6#qXkoP(qpr^+a=_aJLkIZxdYVINFK6&oghbUMKVH7Y$I}8n|ZXte0Um; z=v)b!vwTL3+Jm@__p;iuBKC6QGkp`iC=ZloiCuMuA9RROYC+NMc z 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

sZlm2vS-9fU7t?rr1k1}Mk_zhP~E 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 z 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

BmdW1N0h&y@;zdL&{NO{Vf;nP(4Wx|}9#DeGe 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 cET|J_|jkmsk*dT9{a;Pc|b+_89@W& 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

2_HGr= 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

b(|0~i?C8Q1OukasU_=*gV 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%0A`d*zuC>- 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 Mq@XUJD`)KcKa*l{IsgCw literal 0 HcmV?d00001 -- Gitee From f90e3f18ca0c96a82f34d90179e6dd23433d19e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Sun, 5 Jun 2022 12:26:10 +0800 Subject: [PATCH 16/34] asf99 lkjlk][]][poppoopoiuiui add apop --- a.html | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/a.html b/a.html index a8aad57..9f35206 100644 --- a/a.html +++ b/a.html @@ -4,7 +4,7 @@ - 河南省疫情防控场所码 + @@ -13,8 +13,7 @@

- -
+
@@ -106,16 +105,16 @@ } #user { position: absolute; - top: 88px; + top: 93px; left: 20px; } #name { font-size: 20px; - font-weight: bold; - margin-bottom: 8px; + margin-bottom: 2px; } #card { color: #555; + font-size: 15px; } svg { position: relative; -- Gitee From 4dff57d624d5f39075a46597759ecf41acfb9207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Thu, 23 Jun 2022 18:38:23 +0800 Subject: [PATCH 17/34] 098098088 --- index.html | 80 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/index.html b/index.html index e68af95..8eba1bf 100644 --- a/index.html +++ b/index.html @@ -7,40 +7,44 @@ 河南省疫情防控场所码 - -
-
-
-
-
-
    -
  • 1
  • -
  • 2
  • -
  • 3
  • -
  • 4
  • -
  • 5
  • -
  • 6
  • -
  • 7
  • -
  • 8
  • -
  • 9
  • -
  • 0
  • -
+ -
-
-
- - -
-
-
-
- 查看行程卡 -
-
- -
+ + + + + \ No newline at end of file diff --git a/static/.DS_Store b/static/.DS_Store index 4894c427434f6883b303a6acced36d9d520f41f1..f4636617fb7770a57452b94eb231413725f2f010 100644 GIT binary patch delta 81 zcmZoMXfc=|&Zs)EP*{+Wfq{XEA&a3nr8qe!DL+4FqKym-h~9Y6jeX*U)XnT10vwF0 g8xMYGp3EbkCgpIQ=|2=~O!Q?3>DkQ9!NbAWwlVQL^JIPzMNuZ8A_X8$0AfZUJ^;iF Kn;k{=GXns)gd+(6 diff --git a/static/123.jpeg b/static/123.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..de629e564721fd93bfcd1578b8b844296d51ece7 GIT binary patch literal 130883 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

=X{IDH_7^GTxX1K%^tAjZ{GP)d@sa#&Zl|i$ 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 literal 0 HcmV?d00001 diff --git a/static/js/base.js b/static/js/base.js new file mode 100644 index 0000000..0a9d102 --- /dev/null +++ b/static/js/base.js @@ -0,0 +1,155 @@ +; (function (window, QrCodeRecognition) { + "use strict"; + + if (typeof define === 'function' && define.amd) { + define(QrCodeRecognition()); + } else if (typeof exports === 'object') { + module.exports = QrCodeRecognition(); + } else { + window.QrCodeRecognition = QrCodeRecognition(); + }; + +}(typeof window !== "undefined" ? window : this, () => { + "use strict"; + return class QrCodeRecognition { + constructor(opts = {}) { + this.timer = null; + this.result = ""; + this.isAnimation = true; + this.lineWidth = opts.borderWidth || 3; + this.strokeStyle = opts.lineColor || 'red'; + this.audio = new Audio(opts.audio || './static/js/tone.mp3'); + this.video = document.createElement('video'); + this.file = document.querySelector(opts.uploadId); + this.cvsele = document.querySelector(opts.sweepId); + this.canvas = this.cvsele.getContext('2d'); + this.seuccess = opts.seuccess || Function; + this.error = opts.error || Function; + }; + + draw(begin, end) { + this.canvas.beginPath(); + this.canvas.moveTo(begin.x, begin.y); + this.canvas.lineTo(end.x, end.y); + this.canvas.lineWidth = this.lineWidth; + this.canvas.strokeStyle = this.strokeStyle; + this.canvas.stroke(); + }; + + cance() { + this.isAnimation = false; + cancelAnimationFrame(this.timer); + setTimeout(() => { + this.cvsele.style.display = "none"; + }, 1000); + }; + + untie() { + if (this.video.readyState === this.video.HAVE_ENOUGH_DATA) { + const { videoWidth, videoHeight } = this.video; + this.cvsele.width = videoWidth; + this.cvsele.height = videoHeight; + this.canvas.drawImage(this.video, 0, 0, videoWidth, videoHeight); + try { + const img = this.canvas.getImageData(0, 0, videoWidth, videoHeight); + const obj = jsQR(img.data, img.width, img.height, { inversionAttempts: 'dontInvert' }); + if (obj) { + const loc = obj.location; + this.draw(loc.topLeftCorner, loc.topRightCorner); + this.draw(loc.topRightCorner, loc.bottomRightCorner); + this.draw(loc.bottomRightCorner, loc.bottomLeftCorner); + this.draw(loc.bottomLeftCorner, loc.topLeftCorner); + if (this.result != obj.data) { + this.audio.play(); + this.cance(); + this.seuccess(obj); + } + } else { + this.error("识别失败,请检查二维码是否正确!"); + } + } catch (err) { + this.error("识别失败,请检查二维码是否正确!", err); + }; + }; + if (this.isAnimation) { + this.timer = requestAnimationFrame(() => { + this.untie(); + }); + } + }; + + sweep() { + this.isAnimation = true; + this.cvsele.style.display = "block"; + navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; + if (navigator.mediaDevices) { + navigator.mediaDevices.getUserMedia({ + video: { facingMode: "environment" } + }).then(stream => { + this.video.srcObject = stream; + this.video.setAttribute('playsinline', true); + this.video.setAttribute('webkit-playsinline', true); + this.video.addEventListener('loadedmetadata', () => { + this.video.play(); + this.untie(); + }); + }).catch(error => { + this.cance(); + alert('对不起:未识别到扫描设备!'); + // console.error(error.code + ":" + error.name + "," + error.message); + }); + } else if (navigator.getUserMedia) { + navigator.getUserMedia({ + video: { facingMode: "environment" } + }, (stream) => { + this.video.srcObject = stream; + this.video.setAttribute('playsinline', true); + this.video.setAttribute('webkit-playsinline', true); + this.video.addEventListener('loadedmetadata', () => { + this.video.play(); + this.untie(); + }); + }, (error) => { + this.cance(); + alert('对不起:未识别到扫描设备!'); + // console.error(error.code + ":" + error.name + "," + error.message); + }); + } else { + if (navigator.userAgent.toLowerCase().match(/chrome/) && location.origin.indexOf('https://') < 0) { + console.error('获取浏览器录音功能,因安全性问题,需要在localhost 或 127.0.0.1 或 https 下才能获取权限!'); + } else { + this.cance(); + alert('对不起:未识别到扫描设备!'); + } + }; + }; + + upload() { + this.cance(); + const file = this.file.files[0]; + const createObjectURL = window.createObjectURL || window.URL.createObjectURL || window.webkitURL.createObjectUR; + + const fReader = new FileReader(); + fReader.readAsDataURL(file); // Base64 8Bit字节码 + // fReader.readAsBinaryString(file); // Binary 原始二进制 + // fReader.readAsArrayBuffer(file); // ArrayBuffer 文件流 + fReader.onload = (e) => { + document.querySelector('#imgurl').src = e.target.result || createObjectURL(file); + e.target.result && Jimp.read(e.target.result).then(async (res) => { + const { data, width, height } = res.bitmap; + try { + const resolve = await jsQR(data, width, height); + this.audio.play(); + this.seuccess(resolve); + } catch (err) { + this.error("识别失败,请检查二维码是否正确!", err); + } finally { + console.info("读取到的文件:", res); + } + }).catch((err) => { + this.error("文件读取错误:", err); + }); + }; + }; + }; +})); \ No newline at end of file diff --git a/static/js/jimp.js b/static/js/jimp.js new file mode 100644 index 0000000..34f2e02 --- /dev/null +++ b/static/js/jimp.js @@ -0,0 +1,47933 @@ +/* +Jimp v0.16.0 +https://github.com/oliver-moran/jimp +Ported for the Web by Phil Seaton +MIT License + +Copyright (c) 2018 Oliver Moran + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ +if ((typeof(window)=='undefined' || !window) && (typeof(self)!='undefined')) var window = self; +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.jimp = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= toBase) { + numberMap[newlen++] = parseInt(divide / toBase, 10); + divide = divide % toBase; + } else if (newlen > 0) { + numberMap[newlen++] = 0; + } + } + length = newlen; + result = this.dstAlphabet.slice(divide, divide + 1).concat(result); + } while (newlen !== 0); + + return result; +}; + +/** + * Valid number with source alphabet + * + * @param {number} number + * + * @returns {boolean} + */ +Converter.prototype.isValid = function(number) { + var i = 0; + for (; i < number.length; ++i) { + if (this.srcAlphabet.indexOf(number[i]) === -1) { + return false; + } + } + return true; +}; + +module.exports = Converter; +},{}],25:[function(require,module,exports){ +(function (global){ +'use strict'; + +var objectAssign = require('object-assign'); + +// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js +// original notice: + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +function compare(a, b) { + if (a === b) { + return 0; + } + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; +} +function isBuffer(b) { + if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { + return global.Buffer.isBuffer(b); + } + return !!(b != null && b._isBuffer); +} + +// based on node assert, original notice: +// NB: The URL to the CommonJS spec is kept just for tradition. +// node-assert has evolved a lot since then, both in API and behavior. + +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +var util = require('util/'); +var hasOwn = Object.prototype.hasOwnProperty; +var pSlice = Array.prototype.slice; +var functionsHaveNames = (function () { + return function foo() {}.name === 'foo'; +}()); +function pToString (obj) { + return Object.prototype.toString.call(obj); +} +function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; +} +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +var regex = /\s*function\s+([^\(\s]*)\s*/; +// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js +function getName(func) { + if (!util.isFunction(func)) { + return; + } + if (functionsHaveNames) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; +} +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} +function inspect(something) { + if (functionsHaveNames || !util.isFunction(something)) { + return util.inspect(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; +} +function getMessage(self) { + return truncate(inspect(self.actual), 128) + ' ' + + self.operator + ' ' + + truncate(inspect(self.expected), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); + } +}; + +function _deepEqual(actual, expected, strict, memos) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if ((actual === null || typeof actual !== 'object') && + (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; + + // If both values are instances of typed arrays, wrap their underlying + // ArrayBuffers in a Buffer each to increase performance + // This optimization requires the arrays to have the same type as checked by + // Object.prototype.toString (aka pToString). Never perform binary + // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their + // bit patterns are not identical. + } else if (isView(actual) && isView(expected) && + pToString(actual) === pToString(expected) && + !(actual instanceof Float32Array || + actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), + new Uint8Array(expected.buffer)) === 0; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || {actual: [], expected: []}; + + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + + memos.actual.push(actual); + memos.expected.push(expected); + + return objEquiv(actual, expected, strict, memos); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +assert.notDeepStrictEqual = notDeepStrictEqual; +function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } +} + + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } + + try { + if (actual instanceof expected) { + return true; + } + } catch (e) { + // Ignore. The instanceof check doesn't work for arrow functions. + } + + if (Error.isPrototypeOf(expected)) { + return false; + } + + return expected.call({}, actual) === true; +} + +function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; + } + return error; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); + } + + if (typeof expected === 'string') { + message = expected; + expected = null; + } + + actual = _tryBlock(block); + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && util.isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; + + if ((isUnwantedException && + userProvidedMessage && + expectedException(actual, expected)) || + isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws(true, block, error, message); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { + _throws(false, block, error, message); +}; + +assert.ifError = function(err) { if (err) throw err; }; + +// Expose a strict only variant of assert +function strict(value, message) { + if (!value) fail(value, true, message, '==', strict); +} +assert.strict = objectAssign(strict, assert, { + equal: assert.strictEqual, + deepEqual: assert.deepStrictEqual, + notEqual: assert.notStrictEqual, + notDeepEqual: assert.notDeepStrictEqual +}); +assert.strict.strict = assert.strict; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"object-assign":84,"util/":28}],26:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],27:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],28:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":27,"_process":133,"inherits":26}],29:[function(require,module,exports){ +'use strict' + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk( + uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength) + )) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + +},{}],30:[function(require,module,exports){ +/** + * @author shaozilee + * + * support 1bit 4bit 8bit 24bit decode + * encode with 24bit + * + */ + +var encode = require('./lib/encoder'), + decode = require('./lib/decoder'); + +module.exports = { + encode: encode, + decode: decode +}; + +},{"./lib/decoder":31,"./lib/encoder":32}],31:[function(require,module,exports){ +(function (Buffer){ +/** + * @author shaozilee + * + * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp + * + */ + +function BmpDecoder(buffer,is_with_alpha) { + this.pos = 0; + this.buffer = buffer; + this.is_with_alpha = !!is_with_alpha; + this.bottom_up = true; + this.flag = this.buffer.toString("utf-8", 0, this.pos += 2); + if (this.flag != "BM") throw new Error("Invalid BMP File"); + this.parseHeader(); + this.parseRGBA(); +} + +BmpDecoder.prototype.parseHeader = function() { + this.fileSize = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.reserved = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.offset = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.headerSize = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.width = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.height = this.buffer.readInt32LE(this.pos); + this.pos += 4; + this.planes = this.buffer.readUInt16LE(this.pos); + this.pos += 2; + this.bitPP = this.buffer.readUInt16LE(this.pos); + this.pos += 2; + this.compress = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.rawSize = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.hr = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.vr = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.colors = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + this.importantColors = this.buffer.readUInt32LE(this.pos); + this.pos += 4; + + if(this.bitPP === 16 && this.is_with_alpha){ + this.bitPP = 15 + } + if (this.bitPP < 15) { + var len = this.colors === 0 ? 1 << this.bitPP : this.colors; + this.palette = new Array(len); + for (var i = 0; i < len; i++) { + var blue = this.buffer.readUInt8(this.pos++); + var green = this.buffer.readUInt8(this.pos++); + var red = this.buffer.readUInt8(this.pos++); + var quad = this.buffer.readUInt8(this.pos++); + this.palette[i] = { + red: red, + green: green, + blue: blue, + quad: quad + }; + } + } + if(this.height < 0) { + this.height *= -1; + this.bottom_up = false; + } + +} + +BmpDecoder.prototype.parseRGBA = function() { + var bitn = "bit" + this.bitPP; + var len = this.width * this.height * 4; + this.data = new Buffer(len); + this[bitn](); +}; + +BmpDecoder.prototype.bit1 = function() { + var xlen = Math.ceil(this.width / 8); + var mode = xlen%4; + var y = this.height >= 0 ? this.height - 1 : -this.height + for (var y = this.height - 1; y >= 0; y--) { + var line = this.bottom_up ? y : this.height - 1 - y + for (var x = 0; x < xlen; x++) { + var b = this.buffer.readUInt8(this.pos++); + var location = line * this.width * 4 + x*8*4; + for (var i = 0; i < 8; i++) { + if(x*8+i>(7-i))&0x1)]; + + this.data[location+i*4] = 0; + this.data[location+i*4 + 1] = rgb.blue; + this.data[location+i*4 + 2] = rgb.green; + this.data[location+i*4 + 3] = rgb.red; + + }else{ + break; + } + } + } + + if (mode != 0){ + this.pos+=(4 - mode); + } + } +}; + +BmpDecoder.prototype.bit4 = function() { + //RLE-4 + if(this.compress == 2){ + this.data.fill(0xff); + + var location = 0; + var lines = this.bottom_up?this.height-1:0; + var low_nibble = false;//for all count of pixel + + while(location>4); + } + + if ((i & 1) && (i+1 < b)){ + c = this.buffer.readUInt8(this.pos++); + } + + low_nibble = !low_nibble; + } + + if ((((b+1) >> 1) & 1 ) == 1){ + this.pos++ + } + } + + }else{//encoded mode + for (var i = 0; i < a; i++) { + if (low_nibble) { + setPixelData.call(this, (b & 0x0f)); + } else { + setPixelData.call(this, (b & 0xf0)>>4); + } + low_nibble = !low_nibble; + } + } + + } + + + + + function setPixelData(rgbIndex){ + var rgb = this.palette[rgbIndex]; + this.data[location] = 0; + this.data[location + 1] = rgb.blue; + this.data[location + 2] = rgb.green; + this.data[location + 3] = rgb.red; + location+=4; + } + }else{ + + var xlen = Math.ceil(this.width/2); + var mode = xlen%4; + for (var y = this.height - 1; y >= 0; y--) { + var line = this.bottom_up ? y : this.height - 1 - y + for (var x = 0; x < xlen; x++) { + var b = this.buffer.readUInt8(this.pos++); + var location = line * this.width * 4 + x*2*4; + + var before = b>>4; + var after = b&0x0F; + + var rgb = this.palette[before]; + this.data[location] = 0; + this.data[location + 1] = rgb.blue; + this.data[location + 2] = rgb.green; + this.data[location + 3] = rgb.red; + + + if(x*2+1>=this.width)break; + + rgb = this.palette[after]; + + this.data[location+4] = 0; + this.data[location+4 + 1] = rgb.blue; + this.data[location+4 + 2] = rgb.green; + this.data[location+4 + 3] = rgb.red; + + } + + if (mode != 0){ + this.pos+=(4 - mode); + } + } + + } + +}; + +BmpDecoder.prototype.bit8 = function() { + //RLE-8 + if(this.compress == 1){ + this.data.fill(0xff); + + var location = 0; + var lines = this.bottom_up?this.height-1:0; + + while(location= 0; y--) { + var line = this.bottom_up ? y : this.height - 1 - y + for (var x = 0; x < this.width; x++) { + var b = this.buffer.readUInt8(this.pos++); + var location = line * this.width * 4 + x * 4; + if (b < this.palette.length) { + var rgb = this.palette[b]; + + this.data[location] = 0; + this.data[location + 1] = rgb.blue; + this.data[location + 2] = rgb.green; + this.data[location + 3] = rgb.red; + + } else { + this.data[location] = 0; + this.data[location + 1] = 0xFF; + this.data[location + 2] = 0xFF; + this.data[location + 3] = 0xFF; + } + } + if (mode != 0) { + this.pos += (4 - mode); + } + } + } +}; + +BmpDecoder.prototype.bit15 = function() { + var dif_w =this.width % 3; + var _11111 = parseInt("11111", 2),_1_5 = _11111; + for (var y = this.height - 1; y >= 0; y--) { + var line = this.bottom_up ? y : this.height - 1 - y + for (var x = 0; x < this.width; x++) { + + var B = this.buffer.readUInt16LE(this.pos); + this.pos+=2; + var blue = (B & _1_5) / _1_5 * 255 | 0; + var green = (B >> 5 & _1_5 ) / _1_5 * 255 | 0; + var red = (B >> 10 & _1_5) / _1_5 * 255 | 0; + var alpha = (B>>15)?0xFF:0x00; + + var location = line * this.width * 4 + x * 4; + + this.data[location] = alpha; + this.data[location + 1] = blue; + this.data[location + 2] = green; + this.data[location + 3] = red; + } + //skip extra bytes + this.pos += dif_w; + } +}; + +BmpDecoder.prototype.bit16 = function() { + var dif_w =(this.width % 2)*2; + //default xrgb555 + this.maskRed = 0x7C00; + this.maskGreen = 0x3E0; + this.maskBlue =0x1F; + this.mask0 = 0; + + if(this.compress == 3){ + this.maskRed = this.buffer.readUInt32LE(this.pos); + this.pos+=4; + this.maskGreen = this.buffer.readUInt32LE(this.pos); + this.pos+=4; + this.maskBlue = this.buffer.readUInt32LE(this.pos); + this.pos+=4; + this.mask0 = this.buffer.readUInt32LE(this.pos); + this.pos+=4; + } + + + var ns=[0,0,0]; + for (var i=0;i<16;i++){ + if ((this.maskRed>>i)&0x01) ns[0]++; + if ((this.maskGreen>>i)&0x01) ns[1]++; + if ((this.maskBlue>>i)&0x01) ns[2]++; + } + ns[1]+=ns[0]; ns[2]+=ns[1]; ns[0]=8-ns[0]; ns[1]-=8; ns[2]-=8; + + for (var y = this.height - 1; y >= 0; y--) { + var line = this.bottom_up ? y : this.height - 1 - y; + for (var x = 0; x < this.width; x++) { + + var B = this.buffer.readUInt16LE(this.pos); + this.pos+=2; + + var blue = (B&this.maskBlue)<>ns[1]; + var red = (B&this.maskRed)>>ns[2]; + + var location = line * this.width * 4 + x * 4; + + this.data[location] = 0; + this.data[location + 1] = blue; + this.data[location + 2] = green; + this.data[location + 3] = red; + } + //skip extra bytes + this.pos += dif_w; + } +}; + +BmpDecoder.prototype.bit24 = function() { + for (var y = this.height - 1; y >= 0; y--) { + var line = this.bottom_up ? y : this.height - 1 - y + for (var x = 0; x < this.width; x++) { + //Little Endian rgb + var blue = this.buffer.readUInt8(this.pos++); + var green = this.buffer.readUInt8(this.pos++); + var red = this.buffer.readUInt8(this.pos++); + var location = line * this.width * 4 + x * 4; + this.data[location] = 0; + this.data[location + 1] = blue; + this.data[location + 2] = green; + this.data[location + 3] = red; + } + //skip extra bytes + this.pos += (this.width % 4); + } + +}; + +/** + * add 32bit decode func + * @author soubok + */ +BmpDecoder.prototype.bit32 = function() { + //BI_BITFIELDS + if(this.compress == 3){ + this.maskRed = this.buffer.readUInt32LE(this.pos); + this.pos+=4; + this.maskGreen = this.buffer.readUInt32LE(this.pos); + this.pos+=4; + this.maskBlue = this.buffer.readUInt32LE(this.pos); + this.pos+=4; + this.mask0 = this.buffer.readUInt32LE(this.pos); + this.pos+=4; + for (var y = this.height - 1; y >= 0; y--) { + var line = this.bottom_up ? y : this.height - 1 - y; + for (var x = 0; x < this.width; x++) { + //Little Endian rgba + var alpha = this.buffer.readUInt8(this.pos++); + var blue = this.buffer.readUInt8(this.pos++); + var green = this.buffer.readUInt8(this.pos++); + var red = this.buffer.readUInt8(this.pos++); + var location = line * this.width * 4 + x * 4; + this.data[location] = alpha; + this.data[location + 1] = blue; + this.data[location + 2] = green; + this.data[location + 3] = red; + } + } + + }else{ + for (var y = this.height - 1; y >= 0; y--) { + var line = this.bottom_up ? y : this.height - 1 - y; + for (var x = 0; x < this.width; x++) { + //Little Endian argb + var blue = this.buffer.readUInt8(this.pos++); + var green = this.buffer.readUInt8(this.pos++); + var red = this.buffer.readUInt8(this.pos++); + var alpha = this.buffer.readUInt8(this.pos++); + var location = line * this.width * 4 + x * 4; + this.data[location] = alpha; + this.data[location + 1] = blue; + this.data[location + 2] = green; + this.data[location + 3] = red; + } + } + + } + + + + +}; + +BmpDecoder.prototype.getData = function() { + return this.data; +}; + +module.exports = function(bmpData) { + var decoder = new BmpDecoder(bmpData); + return decoder; +}; + +}).call(this,require("buffer").Buffer) +},{"buffer":48}],32:[function(require,module,exports){ +(function (Buffer){ +/** + * @author shaozilee + * + * BMP format encoder,encode 24bit BMP + * Not support quality compression + * + */ + +function BmpEncoder(imgData){ + this.buffer = imgData.data; + this.width = imgData.width; + this.height = imgData.height; + this.extraBytes = this.width%4; + this.rgbSize = this.height*(3*this.width+this.extraBytes); + this.headerInfoSize = 40; + + this.data = []; + /******************header***********************/ + this.flag = "BM"; + this.reserved = 0; + this.offset = 54; + this.fileSize = this.rgbSize+this.offset; + this.planes = 1; + this.bitPP = 24; + this.compress = 0; + this.hr = 0; + this.vr = 0; + this.colors = 0; + this.importantColors = 0; +} + +BmpEncoder.prototype.encode = function() { + var tempBuffer = new Buffer(this.offset+this.rgbSize); + this.pos = 0; + tempBuffer.write(this.flag,this.pos,2);this.pos+=2; + tempBuffer.writeUInt32LE(this.fileSize,this.pos);this.pos+=4; + tempBuffer.writeUInt32LE(this.reserved,this.pos);this.pos+=4; + tempBuffer.writeUInt32LE(this.offset,this.pos);this.pos+=4; + + tempBuffer.writeUInt32LE(this.headerInfoSize,this.pos);this.pos+=4; + tempBuffer.writeUInt32LE(this.width,this.pos);this.pos+=4; + tempBuffer.writeInt32LE(-this.height,this.pos);this.pos+=4; + tempBuffer.writeUInt16LE(this.planes,this.pos);this.pos+=2; + tempBuffer.writeUInt16LE(this.bitPP,this.pos);this.pos+=2; + tempBuffer.writeUInt32LE(this.compress,this.pos);this.pos+=4; + tempBuffer.writeUInt32LE(this.rgbSize,this.pos);this.pos+=4; + tempBuffer.writeUInt32LE(this.hr,this.pos);this.pos+=4; + tempBuffer.writeUInt32LE(this.vr,this.pos);this.pos+=4; + tempBuffer.writeUInt32LE(this.colors,this.pos);this.pos+=4; + tempBuffer.writeUInt32LE(this.importantColors,this.pos);this.pos+=4; + + var i=0; + var rowBytes = 3*this.width+this.extraBytes; + + for (var y = 0; y 0){ + var fillOffset = this.pos+y*rowBytes+this.width*3; + tempBuffer.fill(0,fillOffset,fillOffset+this.extraBytes); + } + } + + return tempBuffer; +}; + +module.exports = function(imgData, quality) { + if (typeof quality === 'undefined') quality = 100; + var encoder = new BmpEncoder(imgData); + var data = encoder.encode(); + return { + data: data, + width: imgData.width, + height: imgData.height + }; +}; + +}).call(this,require("buffer").Buffer) +},{"buffer":48}],33:[function(require,module,exports){ + +},{}],34:[function(require,module,exports){ +(function (process,Buffer){ +'use strict'; +/* eslint camelcase: "off" */ + +var assert = require('assert'); + +var Zstream = require('pako/lib/zlib/zstream'); +var zlib_deflate = require('pako/lib/zlib/deflate.js'); +var zlib_inflate = require('pako/lib/zlib/inflate.js'); +var constants = require('pako/lib/zlib/constants'); + +for (var key in constants) { + exports[key] = constants[key]; +} + +// zlib modes +exports.NONE = 0; +exports.DEFLATE = 1; +exports.INFLATE = 2; +exports.GZIP = 3; +exports.GUNZIP = 4; +exports.DEFLATERAW = 5; +exports.INFLATERAW = 6; +exports.UNZIP = 7; + +var GZIP_HEADER_ID1 = 0x1f; +var GZIP_HEADER_ID2 = 0x8b; + +/** + * Emulate Node's zlib C++ layer for use by the JS layer in index.js + */ +function Zlib(mode) { + if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) { + throw new TypeError('Bad argument'); + } + + this.dictionary = null; + this.err = 0; + this.flush = 0; + this.init_done = false; + this.level = 0; + this.memLevel = 0; + this.mode = mode; + this.strategy = 0; + this.windowBits = 0; + this.write_in_progress = false; + this.pending_close = false; + this.gzip_id_bytes_read = 0; +} + +Zlib.prototype.close = function () { + if (this.write_in_progress) { + this.pending_close = true; + return; + } + + this.pending_close = false; + + assert(this.init_done, 'close before init'); + assert(this.mode <= exports.UNZIP); + + if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) { + zlib_deflate.deflateEnd(this.strm); + } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) { + zlib_inflate.inflateEnd(this.strm); + } + + this.mode = exports.NONE; + + this.dictionary = null; +}; + +Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) { + return this._write(true, flush, input, in_off, in_len, out, out_off, out_len); +}; + +Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) { + return this._write(false, flush, input, in_off, in_len, out, out_off, out_len); +}; + +Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) { + assert.equal(arguments.length, 8); + + assert(this.init_done, 'write before init'); + assert(this.mode !== exports.NONE, 'already finalized'); + assert.equal(false, this.write_in_progress, 'write already in progress'); + assert.equal(false, this.pending_close, 'close is pending'); + + this.write_in_progress = true; + + assert.equal(false, flush === undefined, 'must provide flush value'); + + this.write_in_progress = true; + + if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) { + throw new Error('Invalid flush value'); + } + + if (input == null) { + input = Buffer.alloc(0); + in_len = 0; + in_off = 0; + } + + this.strm.avail_in = in_len; + this.strm.input = input; + this.strm.next_in = in_off; + this.strm.avail_out = out_len; + this.strm.output = out; + this.strm.next_out = out_off; + this.flush = flush; + + if (!async) { + // sync version + this._process(); + + if (this._checkError()) { + return this._afterSync(); + } + return; + } + + // async version + var self = this; + process.nextTick(function () { + self._process(); + self._after(); + }); + + return this; +}; + +Zlib.prototype._afterSync = function () { + var avail_out = this.strm.avail_out; + var avail_in = this.strm.avail_in; + + this.write_in_progress = false; + + return [avail_in, avail_out]; +}; + +Zlib.prototype._process = function () { + var next_expected_header_byte = null; + + // If the avail_out is left at 0, then it means that it ran out + // of room. If there was avail_out left over, then it means + // that all of the input was consumed. + switch (this.mode) { + case exports.DEFLATE: + case exports.GZIP: + case exports.DEFLATERAW: + this.err = zlib_deflate.deflate(this.strm, this.flush); + break; + case exports.UNZIP: + if (this.strm.avail_in > 0) { + next_expected_header_byte = this.strm.next_in; + } + + switch (this.gzip_id_bytes_read) { + case 0: + if (next_expected_header_byte === null) { + break; + } + + if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) { + this.gzip_id_bytes_read = 1; + next_expected_header_byte++; + + if (this.strm.avail_in === 1) { + // The only available byte was already read. + break; + } + } else { + this.mode = exports.INFLATE; + break; + } + + // fallthrough + case 1: + if (next_expected_header_byte === null) { + break; + } + + if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) { + this.gzip_id_bytes_read = 2; + this.mode = exports.GUNZIP; + } else { + // There is no actual difference between INFLATE and INFLATERAW + // (after initialization). + this.mode = exports.INFLATE; + } + + break; + default: + throw new Error('invalid number of gzip magic number bytes read'); + } + + // fallthrough + case exports.INFLATE: + case exports.GUNZIP: + case exports.INFLATERAW: + this.err = zlib_inflate.inflate(this.strm, this.flush + + // If data was encoded with dictionary + );if (this.err === exports.Z_NEED_DICT && this.dictionary) { + // Load it + this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary); + if (this.err === exports.Z_OK) { + // And try to decode again + this.err = zlib_inflate.inflate(this.strm, this.flush); + } else if (this.err === exports.Z_DATA_ERROR) { + // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR. + // Make it possible for After() to tell a bad dictionary from bad + // input. + this.err = exports.Z_NEED_DICT; + } + } + while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) { + // Bytes remain in input buffer. Perhaps this is another compressed + // member in the same archive, or just trailing garbage. + // Trailing zero bytes are okay, though, since they are frequently + // used for padding. + + this.reset(); + this.err = zlib_inflate.inflate(this.strm, this.flush); + } + break; + default: + throw new Error('Unknown mode ' + this.mode); + } +}; + +Zlib.prototype._checkError = function () { + // Acceptable error states depend on the type of zlib stream. + switch (this.err) { + case exports.Z_OK: + case exports.Z_BUF_ERROR: + if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) { + this._error('unexpected end of file'); + return false; + } + break; + case exports.Z_STREAM_END: + // normal statuses, not fatal + break; + case exports.Z_NEED_DICT: + if (this.dictionary == null) { + this._error('Missing dictionary'); + } else { + this._error('Bad dictionary'); + } + return false; + default: + // something else. + this._error('Zlib error'); + return false; + } + + return true; +}; + +Zlib.prototype._after = function () { + if (!this._checkError()) { + return; + } + + var avail_out = this.strm.avail_out; + var avail_in = this.strm.avail_in; + + this.write_in_progress = false; + + // call the write() cb + this.callback(avail_in, avail_out); + + if (this.pending_close) { + this.close(); + } +}; + +Zlib.prototype._error = function (message) { + if (this.strm.msg) { + message = this.strm.msg; + } + this.onerror(message, this.err + + // no hope of rescue. + );this.write_in_progress = false; + if (this.pending_close) { + this.close(); + } +}; + +Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) { + assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])'); + + assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits'); + assert(level >= -1 && level <= 9, 'invalid compression level'); + + assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel'); + + assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy'); + + this._init(level, windowBits, memLevel, strategy, dictionary); + this._setDictionary(); +}; + +Zlib.prototype.params = function () { + throw new Error('deflateParams Not supported'); +}; + +Zlib.prototype.reset = function () { + this._reset(); + this._setDictionary(); +}; + +Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) { + this.level = level; + this.windowBits = windowBits; + this.memLevel = memLevel; + this.strategy = strategy; + + this.flush = exports.Z_NO_FLUSH; + + this.err = exports.Z_OK; + + if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) { + this.windowBits += 16; + } + + if (this.mode === exports.UNZIP) { + this.windowBits += 32; + } + + if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) { + this.windowBits = -1 * this.windowBits; + } + + this.strm = new Zstream(); + + switch (this.mode) { + case exports.DEFLATE: + case exports.GZIP: + case exports.DEFLATERAW: + this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy); + break; + case exports.INFLATE: + case exports.GUNZIP: + case exports.INFLATERAW: + case exports.UNZIP: + this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits); + break; + default: + throw new Error('Unknown mode ' + this.mode); + } + + if (this.err !== exports.Z_OK) { + this._error('Init error'); + } + + this.dictionary = dictionary; + + this.write_in_progress = false; + this.init_done = true; +}; + +Zlib.prototype._setDictionary = function () { + if (this.dictionary == null) { + return; + } + + this.err = exports.Z_OK; + + switch (this.mode) { + case exports.DEFLATE: + case exports.DEFLATERAW: + this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary); + break; + default: + break; + } + + if (this.err !== exports.Z_OK) { + this._error('Failed to set dictionary'); + } +}; + +Zlib.prototype._reset = function () { + this.err = exports.Z_OK; + + switch (this.mode) { + case exports.DEFLATE: + case exports.DEFLATERAW: + case exports.GZIP: + this.err = zlib_deflate.deflateReset(this.strm); + break; + case exports.INFLATE: + case exports.INFLATERAW: + case exports.GUNZIP: + this.err = zlib_inflate.inflateReset(this.strm); + break; + default: + break; + } + + if (this.err !== exports.Z_OK) { + this._error('Failed to reset stream'); + } +}; + +exports.Zlib = Zlib; +}).call(this,require('_process'),require("buffer").Buffer) +},{"_process":133,"assert":25,"buffer":48,"pako/lib/zlib/constants":38,"pako/lib/zlib/deflate.js":40,"pako/lib/zlib/inflate.js":42,"pako/lib/zlib/zstream":46}],35:[function(require,module,exports){ +(function (process){ +'use strict'; + +var Buffer = require('buffer').Buffer; +var Transform = require('stream').Transform; +var binding = require('./binding'); +var util = require('util'); +var assert = require('assert').ok; +var kMaxLength = require('buffer').kMaxLength; +var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes'; + +// zlib doesn't provide these, so kludge them in following the same +// const naming scheme zlib uses. +binding.Z_MIN_WINDOWBITS = 8; +binding.Z_MAX_WINDOWBITS = 15; +binding.Z_DEFAULT_WINDOWBITS = 15; + +// fewer than 64 bytes per chunk is stupid. +// technically it could work with as few as 8, but even 64 bytes +// is absurdly low. Usually a MB or more is best. +binding.Z_MIN_CHUNK = 64; +binding.Z_MAX_CHUNK = Infinity; +binding.Z_DEFAULT_CHUNK = 16 * 1024; + +binding.Z_MIN_MEMLEVEL = 1; +binding.Z_MAX_MEMLEVEL = 9; +binding.Z_DEFAULT_MEMLEVEL = 8; + +binding.Z_MIN_LEVEL = -1; +binding.Z_MAX_LEVEL = 9; +binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION; + +// expose all the zlib constants +var bkeys = Object.keys(binding); +for (var bk = 0; bk < bkeys.length; bk++) { + var bkey = bkeys[bk]; + if (bkey.match(/^Z/)) { + Object.defineProperty(exports, bkey, { + enumerable: true, value: binding[bkey], writable: false + }); + } +} + +// translation table for return codes. +var codes = { + Z_OK: binding.Z_OK, + Z_STREAM_END: binding.Z_STREAM_END, + Z_NEED_DICT: binding.Z_NEED_DICT, + Z_ERRNO: binding.Z_ERRNO, + Z_STREAM_ERROR: binding.Z_STREAM_ERROR, + Z_DATA_ERROR: binding.Z_DATA_ERROR, + Z_MEM_ERROR: binding.Z_MEM_ERROR, + Z_BUF_ERROR: binding.Z_BUF_ERROR, + Z_VERSION_ERROR: binding.Z_VERSION_ERROR +}; + +var ckeys = Object.keys(codes); +for (var ck = 0; ck < ckeys.length; ck++) { + var ckey = ckeys[ck]; + codes[codes[ckey]] = ckey; +} + +Object.defineProperty(exports, 'codes', { + enumerable: true, value: Object.freeze(codes), writable: false +}); + +exports.Deflate = Deflate; +exports.Inflate = Inflate; +exports.Gzip = Gzip; +exports.Gunzip = Gunzip; +exports.DeflateRaw = DeflateRaw; +exports.InflateRaw = InflateRaw; +exports.Unzip = Unzip; + +exports.createDeflate = function (o) { + return new Deflate(o); +}; + +exports.createInflate = function (o) { + return new Inflate(o); +}; + +exports.createDeflateRaw = function (o) { + return new DeflateRaw(o); +}; + +exports.createInflateRaw = function (o) { + return new InflateRaw(o); +}; + +exports.createGzip = function (o) { + return new Gzip(o); +}; + +exports.createGunzip = function (o) { + return new Gunzip(o); +}; + +exports.createUnzip = function (o) { + return new Unzip(o); +}; + +// Convenience methods. +// compress/decompress a string or buffer in one step. +exports.deflate = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new Deflate(opts), buffer, callback); +}; + +exports.deflateSync = function (buffer, opts) { + return zlibBufferSync(new Deflate(opts), buffer); +}; + +exports.gzip = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new Gzip(opts), buffer, callback); +}; + +exports.gzipSync = function (buffer, opts) { + return zlibBufferSync(new Gzip(opts), buffer); +}; + +exports.deflateRaw = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new DeflateRaw(opts), buffer, callback); +}; + +exports.deflateRawSync = function (buffer, opts) { + return zlibBufferSync(new DeflateRaw(opts), buffer); +}; + +exports.unzip = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new Unzip(opts), buffer, callback); +}; + +exports.unzipSync = function (buffer, opts) { + return zlibBufferSync(new Unzip(opts), buffer); +}; + +exports.inflate = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new Inflate(opts), buffer, callback); +}; + +exports.inflateSync = function (buffer, opts) { + return zlibBufferSync(new Inflate(opts), buffer); +}; + +exports.gunzip = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new Gunzip(opts), buffer, callback); +}; + +exports.gunzipSync = function (buffer, opts) { + return zlibBufferSync(new Gunzip(opts), buffer); +}; + +exports.inflateRaw = function (buffer, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return zlibBuffer(new InflateRaw(opts), buffer, callback); +}; + +exports.inflateRawSync = function (buffer, opts) { + return zlibBufferSync(new InflateRaw(opts), buffer); +}; + +function zlibBuffer(engine, buffer, callback) { + var buffers = []; + var nread = 0; + + engine.on('error', onError); + engine.on('end', onEnd); + + engine.end(buffer); + flow(); + + function flow() { + var chunk; + while (null !== (chunk = engine.read())) { + buffers.push(chunk); + nread += chunk.length; + } + engine.once('readable', flow); + } + + function onError(err) { + engine.removeListener('end', onEnd); + engine.removeListener('readable', flow); + callback(err); + } + + function onEnd() { + var buf; + var err = null; + + if (nread >= kMaxLength) { + err = new RangeError(kRangeErrorMessage); + } else { + buf = Buffer.concat(buffers, nread); + } + + buffers = []; + engine.close(); + callback(err, buf); + } +} + +function zlibBufferSync(engine, buffer) { + if (typeof buffer === 'string') buffer = Buffer.from(buffer); + + if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer'); + + var flushFlag = engine._finishFlushFlag; + + return engine._processChunk(buffer, flushFlag); +} + +// generic zlib +// minimal 2-byte header +function Deflate(opts) { + if (!(this instanceof Deflate)) return new Deflate(opts); + Zlib.call(this, opts, binding.DEFLATE); +} + +function Inflate(opts) { + if (!(this instanceof Inflate)) return new Inflate(opts); + Zlib.call(this, opts, binding.INFLATE); +} + +// gzip - bigger header, same deflate compression +function Gzip(opts) { + if (!(this instanceof Gzip)) return new Gzip(opts); + Zlib.call(this, opts, binding.GZIP); +} + +function Gunzip(opts) { + if (!(this instanceof Gunzip)) return new Gunzip(opts); + Zlib.call(this, opts, binding.GUNZIP); +} + +// raw - no header +function DeflateRaw(opts) { + if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts); + Zlib.call(this, opts, binding.DEFLATERAW); +} + +function InflateRaw(opts) { + if (!(this instanceof InflateRaw)) return new InflateRaw(opts); + Zlib.call(this, opts, binding.INFLATERAW); +} + +// auto-detect header. +function Unzip(opts) { + if (!(this instanceof Unzip)) return new Unzip(opts); + Zlib.call(this, opts, binding.UNZIP); +} + +function isValidFlushFlag(flag) { + return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK; +} + +// the Zlib class they all inherit from +// This thing manages the queue of requests, and returns +// true or false if there is anything in the queue when +// you call the .write() method. + +function Zlib(opts, mode) { + var _this = this; + + this._opts = opts = opts || {}; + this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK; + + Transform.call(this, opts); + + if (opts.flush && !isValidFlushFlag(opts.flush)) { + throw new Error('Invalid flush flag: ' + opts.flush); + } + if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) { + throw new Error('Invalid flush flag: ' + opts.finishFlush); + } + + this._flushFlag = opts.flush || binding.Z_NO_FLUSH; + this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH; + + if (opts.chunkSize) { + if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) { + throw new Error('Invalid chunk size: ' + opts.chunkSize); + } + } + + if (opts.windowBits) { + if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) { + throw new Error('Invalid windowBits: ' + opts.windowBits); + } + } + + if (opts.level) { + if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) { + throw new Error('Invalid compression level: ' + opts.level); + } + } + + if (opts.memLevel) { + if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) { + throw new Error('Invalid memLevel: ' + opts.memLevel); + } + } + + if (opts.strategy) { + if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) { + throw new Error('Invalid strategy: ' + opts.strategy); + } + } + + if (opts.dictionary) { + if (!Buffer.isBuffer(opts.dictionary)) { + throw new Error('Invalid dictionary: it should be a Buffer instance'); + } + } + + this._handle = new binding.Zlib(mode); + + var self = this; + this._hadError = false; + this._handle.onerror = function (message, errno) { + // there is no way to cleanly recover. + // continuing only obscures problems. + _close(self); + self._hadError = true; + + var error = new Error(message); + error.errno = errno; + error.code = exports.codes[errno]; + self.emit('error', error); + }; + + var level = exports.Z_DEFAULT_COMPRESSION; + if (typeof opts.level === 'number') level = opts.level; + + var strategy = exports.Z_DEFAULT_STRATEGY; + if (typeof opts.strategy === 'number') strategy = opts.strategy; + + this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary); + + this._buffer = Buffer.allocUnsafe(this._chunkSize); + this._offset = 0; + this._level = level; + this._strategy = strategy; + + this.once('end', this.close); + + Object.defineProperty(this, '_closed', { + get: function () { + return !_this._handle; + }, + configurable: true, + enumerable: true + }); +} + +util.inherits(Zlib, Transform); + +Zlib.prototype.params = function (level, strategy, callback) { + if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) { + throw new RangeError('Invalid compression level: ' + level); + } + if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) { + throw new TypeError('Invalid strategy: ' + strategy); + } + + if (this._level !== level || this._strategy !== strategy) { + var self = this; + this.flush(binding.Z_SYNC_FLUSH, function () { + assert(self._handle, 'zlib binding closed'); + self._handle.params(level, strategy); + if (!self._hadError) { + self._level = level; + self._strategy = strategy; + if (callback) callback(); + } + }); + } else { + process.nextTick(callback); + } +}; + +Zlib.prototype.reset = function () { + assert(this._handle, 'zlib binding closed'); + return this._handle.reset(); +}; + +// This is the _flush function called by the transform class, +// internally, when the last chunk has been written. +Zlib.prototype._flush = function (callback) { + this._transform(Buffer.alloc(0), '', callback); +}; + +Zlib.prototype.flush = function (kind, callback) { + var _this2 = this; + + var ws = this._writableState; + + if (typeof kind === 'function' || kind === undefined && !callback) { + callback = kind; + kind = binding.Z_FULL_FLUSH; + } + + if (ws.ended) { + if (callback) process.nextTick(callback); + } else if (ws.ending) { + if (callback) this.once('end', callback); + } else if (ws.needDrain) { + if (callback) { + this.once('drain', function () { + return _this2.flush(kind, callback); + }); + } + } else { + this._flushFlag = kind; + this.write(Buffer.alloc(0), '', callback); + } +}; + +Zlib.prototype.close = function (callback) { + _close(this, callback); + process.nextTick(emitCloseNT, this); +}; + +function _close(engine, callback) { + if (callback) process.nextTick(callback); + + // Caller may invoke .close after a zlib error (which will null _handle). + if (!engine._handle) return; + + engine._handle.close(); + engine._handle = null; +} + +function emitCloseNT(self) { + self.emit('close'); +} + +Zlib.prototype._transform = function (chunk, encoding, cb) { + var flushFlag; + var ws = this._writableState; + var ending = ws.ending || ws.ended; + var last = ending && (!chunk || ws.length === chunk.length); + + if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input')); + + if (!this._handle) return cb(new Error('zlib binding closed')); + + // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag + // (or whatever flag was provided using opts.finishFlush). + // If it's explicitly flushing at some other time, then we use + // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression + // goodness. + if (last) flushFlag = this._finishFlushFlag;else { + flushFlag = this._flushFlag; + // once we've flushed the last of the queue, stop flushing and + // go back to the normal behavior. + if (chunk.length >= ws.length) { + this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH; + } + } + + this._processChunk(chunk, flushFlag, cb); +}; + +Zlib.prototype._processChunk = function (chunk, flushFlag, cb) { + var availInBefore = chunk && chunk.length; + var availOutBefore = this._chunkSize - this._offset; + var inOff = 0; + + var self = this; + + var async = typeof cb === 'function'; + + if (!async) { + var buffers = []; + var nread = 0; + + var error; + this.on('error', function (er) { + error = er; + }); + + assert(this._handle, 'zlib binding closed'); + do { + var res = this._handle.writeSync(flushFlag, chunk, // in + inOff, // in_off + availInBefore, // in_len + this._buffer, // out + this._offset, //out_off + availOutBefore); // out_len + } while (!this._hadError && callback(res[0], res[1])); + + if (this._hadError) { + throw error; + } + + if (nread >= kMaxLength) { + _close(this); + throw new RangeError(kRangeErrorMessage); + } + + var buf = Buffer.concat(buffers, nread); + _close(this); + + return buf; + } + + assert(this._handle, 'zlib binding closed'); + var req = this._handle.write(flushFlag, chunk, // in + inOff, // in_off + availInBefore, // in_len + this._buffer, // out + this._offset, //out_off + availOutBefore); // out_len + + req.buffer = chunk; + req.callback = callback; + + function callback(availInAfter, availOutAfter) { + // When the callback is used in an async write, the callback's + // context is the `req` object that was created. The req object + // is === this._handle, and that's why it's important to null + // out the values after they are done being used. `this._handle` + // can stay in memory longer than the callback and buffer are needed. + if (this) { + this.buffer = null; + this.callback = null; + } + + if (self._hadError) return; + + var have = availOutBefore - availOutAfter; + assert(have >= 0, 'have should not go down'); + + if (have > 0) { + var out = self._buffer.slice(self._offset, self._offset + have); + self._offset += have; + // serve some output to the consumer. + if (async) { + self.push(out); + } else { + buffers.push(out); + nread += out.length; + } + } + + // exhausted the output buffer, or used all the input create a new one. + if (availOutAfter === 0 || self._offset >= self._chunkSize) { + availOutBefore = self._chunkSize; + self._offset = 0; + self._buffer = Buffer.allocUnsafe(self._chunkSize); + } + + if (availOutAfter === 0) { + // Not actually done. Need to reprocess. + // Also, update the availInBefore to the availInAfter value, + // so that if we have to hit it a third (fourth, etc.) time, + // it'll have the correct byte counts. + inOff += availInBefore - availInAfter; + availInBefore = availInAfter; + + if (!async) return true; + + var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize); + newReq.callback = callback; // this same function + newReq.buffer = chunk; + return; + } + + if (!async) return false; + + // finished with the chunk. + cb(); + } +}; + +util.inherits(Deflate, Zlib); +util.inherits(Inflate, Zlib); +util.inherits(Gzip, Zlib); +util.inherits(Gunzip, Zlib); +util.inherits(DeflateRaw, Zlib); +util.inherits(InflateRaw, Zlib); +util.inherits(Unzip, Zlib); +}).call(this,require('_process')) +},{"./binding":34,"_process":133,"assert":25,"buffer":48,"stream":155,"util":186}],36:[function(require,module,exports){ +'use strict'; + + +var TYPED_OK = (typeof Uint8Array !== 'undefined') && + (typeof Uint16Array !== 'undefined') && + (typeof Int32Array !== 'undefined'); + +function _has(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + +exports.assign = function (obj /*from1, from2, from3, ...*/) { + var sources = Array.prototype.slice.call(arguments, 1); + while (sources.length) { + var source = sources.shift(); + if (!source) { continue; } + + if (typeof source !== 'object') { + throw new TypeError(source + 'must be non-object'); + } + + for (var p in source) { + if (_has(source, p)) { + obj[p] = source[p]; + } + } + } + + return obj; +}; + + +// reduce buffer size, avoiding mem copy +exports.shrinkBuf = function (buf, size) { + if (buf.length === size) { return buf; } + if (buf.subarray) { return buf.subarray(0, size); } + buf.length = size; + return buf; +}; + + +var fnTyped = { + arraySet: function (dest, src, src_offs, len, dest_offs) { + if (src.subarray && dest.subarray) { + dest.set(src.subarray(src_offs, src_offs + len), dest_offs); + return; + } + // Fallback to ordinary array + for (var i = 0; i < len; i++) { + dest[dest_offs + i] = src[src_offs + i]; + } + }, + // Join array of chunks to single array. + flattenChunks: function (chunks) { + var i, l, len, pos, chunk, result; + + // calculate data length + len = 0; + for (i = 0, l = chunks.length; i < l; i++) { + len += chunks[i].length; + } + + // join chunks + result = new Uint8Array(len); + pos = 0; + for (i = 0, l = chunks.length; i < l; i++) { + chunk = chunks[i]; + result.set(chunk, pos); + pos += chunk.length; + } + + return result; + } +}; + +var fnUntyped = { + arraySet: function (dest, src, src_offs, len, dest_offs) { + for (var i = 0; i < len; i++) { + dest[dest_offs + i] = src[src_offs + i]; + } + }, + // Join array of chunks to single array. + flattenChunks: function (chunks) { + return [].concat.apply([], chunks); + } +}; + + +// Enable/Disable typed arrays use, for testing +// +exports.setTyped = function (on) { + if (on) { + exports.Buf8 = Uint8Array; + exports.Buf16 = Uint16Array; + exports.Buf32 = Int32Array; + exports.assign(exports, fnTyped); + } else { + exports.Buf8 = Array; + exports.Buf16 = Array; + exports.Buf32 = Array; + exports.assign(exports, fnUntyped); + } +}; + +exports.setTyped(TYPED_OK); + +},{}],37:[function(require,module,exports){ +'use strict'; + +// Note: adler32 takes 12% for level 0 and 2% for level 6. +// It isn't worth it to make additional optimizations as in original. +// Small size is preferable. + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +function adler32(adler, buf, len, pos) { + var s1 = (adler & 0xffff) |0, + s2 = ((adler >>> 16) & 0xffff) |0, + n = 0; + + while (len !== 0) { + // Set limit ~ twice less than 5552, to keep + // s2 in 31-bits, because we force signed ints. + // in other case %= will fail. + n = len > 2000 ? 2000 : len; + len -= n; + + do { + s1 = (s1 + buf[pos++]) |0; + s2 = (s2 + s1) |0; + } while (--n); + + s1 %= 65521; + s2 %= 65521; + } + + return (s1 | (s2 << 16)) |0; +} + + +module.exports = adler32; + +},{}],38:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +module.exports = { + + /* Allowed flush values; see deflate() and inflate() below for details */ + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_TREES: 6, + + /* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + //Z_MEM_ERROR: -4, + Z_BUF_ERROR: -5, + //Z_VERSION_ERROR: -6, + + /* compression levels */ + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, + + + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, + + /* Possible values of the data_type field (though see inflate()) */ + Z_BINARY: 0, + Z_TEXT: 1, + //Z_ASCII: 1, // = Z_TEXT (deprecated) + Z_UNKNOWN: 2, + + /* The deflate compression method */ + Z_DEFLATED: 8 + //Z_NULL: null // Use -1 or null inline, depending on var type +}; + +},{}],39:[function(require,module,exports){ +'use strict'; + +// Note: we can't get significant speed boost here. +// So write code to minimize size - no pregenerated tables +// and array tools dependencies. + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +// Use ordinary array, since untyped makes no boost here +function makeTable() { + var c, table = []; + + for (var n = 0; n < 256; n++) { + c = n; + for (var k = 0; k < 8; k++) { + c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); + } + table[n] = c; + } + + return table; +} + +// Create table on load. Just 255 signed longs. Not a problem. +var crcTable = makeTable(); + + +function crc32(crc, buf, len, pos) { + var t = crcTable, + end = pos + len; + + crc ^= -1; + + for (var i = pos; i < end; i++) { + crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; + } + + return (crc ^ (-1)); // >>> 0; +} + + +module.exports = crc32; + +},{}],40:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +var utils = require('../utils/common'); +var trees = require('./trees'); +var adler32 = require('./adler32'); +var crc32 = require('./crc32'); +var msg = require('./messages'); + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +/* Allowed flush values; see deflate() and inflate() below for details */ +var Z_NO_FLUSH = 0; +var Z_PARTIAL_FLUSH = 1; +//var Z_SYNC_FLUSH = 2; +var Z_FULL_FLUSH = 3; +var Z_FINISH = 4; +var Z_BLOCK = 5; +//var Z_TREES = 6; + + +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ +var Z_OK = 0; +var Z_STREAM_END = 1; +//var Z_NEED_DICT = 2; +//var Z_ERRNO = -1; +var Z_STREAM_ERROR = -2; +var Z_DATA_ERROR = -3; +//var Z_MEM_ERROR = -4; +var Z_BUF_ERROR = -5; +//var Z_VERSION_ERROR = -6; + + +/* compression levels */ +//var Z_NO_COMPRESSION = 0; +//var Z_BEST_SPEED = 1; +//var Z_BEST_COMPRESSION = 9; +var Z_DEFAULT_COMPRESSION = -1; + + +var Z_FILTERED = 1; +var Z_HUFFMAN_ONLY = 2; +var Z_RLE = 3; +var Z_FIXED = 4; +var Z_DEFAULT_STRATEGY = 0; + +/* Possible values of the data_type field (though see inflate()) */ +//var Z_BINARY = 0; +//var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; + + +/* The deflate compression method */ +var Z_DEFLATED = 8; + +/*============================================================================*/ + + +var MAX_MEM_LEVEL = 9; +/* Maximum value for memLevel in deflateInit2 */ +var MAX_WBITS = 15; +/* 32K LZ77 window */ +var DEF_MEM_LEVEL = 8; + + +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ +var LITERALS = 256; +/* number of literal bytes 0..255 */ +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ +var D_CODES = 30; +/* number of distance codes */ +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ + +var MIN_MATCH = 3; +var MAX_MATCH = 258; +var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1); + +var PRESET_DICT = 0x20; + +var INIT_STATE = 42; +var EXTRA_STATE = 69; +var NAME_STATE = 73; +var COMMENT_STATE = 91; +var HCRC_STATE = 103; +var BUSY_STATE = 113; +var FINISH_STATE = 666; + +var BS_NEED_MORE = 1; /* block not completed, need more input or more output */ +var BS_BLOCK_DONE = 2; /* block flush performed */ +var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */ +var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */ + +var OS_CODE = 0x03; // Unix :) . Don't detect, use this default. + +function err(strm, errorCode) { + strm.msg = msg[errorCode]; + return errorCode; +} + +function rank(f) { + return ((f) << 1) - ((f) > 4 ? 9 : 0); +} + +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } + + +/* ========================================================================= + * Flush as much pending output as possible. All deflate() output goes + * through this function so some applications may wish to modify it + * to avoid allocating a large strm->output buffer and copying into it. + * (See also read_buf()). + */ +function flush_pending(strm) { + var s = strm.state; + + //_tr_flush_bits(s); + var len = s.pending; + if (len > strm.avail_out) { + len = strm.avail_out; + } + if (len === 0) { return; } + + utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out); + strm.next_out += len; + s.pending_out += len; + strm.total_out += len; + strm.avail_out -= len; + s.pending -= len; + if (s.pending === 0) { + s.pending_out = 0; + } +} + + +function flush_block_only(s, last) { + trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last); + s.block_start = s.strstart; + flush_pending(s.strm); +} + + +function put_byte(s, b) { + s.pending_buf[s.pending++] = b; +} + + +/* ========================================================================= + * Put a short in the pending buffer. The 16-bit value is put in MSB order. + * IN assertion: the stream state is correct and there is enough room in + * pending_buf. + */ +function putShortMSB(s, b) { +// put_byte(s, (Byte)(b >> 8)); +// put_byte(s, (Byte)(b & 0xff)); + s.pending_buf[s.pending++] = (b >>> 8) & 0xff; + s.pending_buf[s.pending++] = b & 0xff; +} + + +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->input buffer and copying from it. + * (See also flush_pending()). + */ +function read_buf(strm, buf, start, size) { + var len = strm.avail_in; + + if (len > size) { len = size; } + if (len === 0) { return 0; } + + strm.avail_in -= len; + + // zmemcpy(buf, strm->next_in, len); + utils.arraySet(buf, strm.input, strm.next_in, len, start); + if (strm.state.wrap === 1) { + strm.adler = adler32(strm.adler, buf, len, start); + } + + else if (strm.state.wrap === 2) { + strm.adler = crc32(strm.adler, buf, len, start); + } + + strm.next_in += len; + strm.total_in += len; + + return len; +} + + +/* =========================================================================== + * Set match_start to the longest match starting at the given string and + * return its length. Matches shorter or equal to prev_length are discarded, + * in which case the result is equal to prev_length and match_start is + * garbage. + * IN assertions: cur_match is the head of the hash chain for the current + * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 + * OUT assertion: the match length is not greater than s->lookahead. + */ +function longest_match(s, cur_match) { + var chain_length = s.max_chain_length; /* max hash chain length */ + var scan = s.strstart; /* current string */ + var match; /* matched string */ + var len; /* length of current match */ + var best_len = s.prev_length; /* best match length so far */ + var nice_match = s.nice_match; /* stop if match long enough */ + var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ? + s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/; + + var _win = s.window; // shortcut + + var wmask = s.w_mask; + var prev = s.prev; + + /* Stop when cur_match becomes <= limit. To simplify the code, + * we prevent matches with the string of window index 0. + */ + + var strend = s.strstart + MAX_MATCH; + var scan_end1 = _win[scan + best_len - 1]; + var scan_end = _win[scan + best_len]; + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + /* Do not waste too much time if we already have a good match: */ + if (s.prev_length >= s.good_match) { + chain_length >>= 2; + } + /* Do not look for matches beyond the end of the input. This is necessary + * to make deflate deterministic. + */ + if (nice_match > s.lookahead) { nice_match = s.lookahead; } + + // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + do { + // Assert(cur_match < s->strstart, "no future"); + match = cur_match; + + /* Skip to next match if the match length cannot increase + * or if the match length is less than 2. Note that the checks below + * for insufficient lookahead only occur occasionally for performance + * reasons. Therefore uninitialized memory will be accessed, and + * conditional jumps will be made that depend on those values. + * However the length of the match is limited to the lookahead, so + * the output of deflate is not affected by the uninitialized values. + */ + + if (_win[match + best_len] !== scan_end || + _win[match + best_len - 1] !== scan_end1 || + _win[match] !== _win[scan] || + _win[++match] !== _win[scan + 1]) { + continue; + } + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2; + match++; + // Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + /*jshint noempty:false*/ + } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + scan < strend); + + // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (strend - scan); + scan = strend - MAX_MATCH; + + if (len > best_len) { + s.match_start = cur_match; + best_len = len; + if (len >= nice_match) { + break; + } + scan_end1 = _win[scan + best_len - 1]; + scan_end = _win[scan + best_len]; + } + } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); + + if (best_len <= s.lookahead) { + return best_len; + } + return s.lookahead; +} + + +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +function fill_window(s) { + var _w_size = s.w_size; + var p, n, m, more, str; + + //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); + + do { + more = s.window_size - s.lookahead - s.strstart; + + // JS ints have 32 bit, block below not needed + /* Deal with !@#$% 64K limit: */ + //if (sizeof(int) <= 2) { + // if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + // more = wsize; + // + // } else if (more == (unsigned)(-1)) { + // /* Very unlikely, but possible on 16 bit machine if + // * strstart == 0 && lookahead == 1 (input done a byte at time) + // */ + // more--; + // } + //} + + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { + + utils.arraySet(s.window, s.window, _w_size, _w_size, 0); + s.match_start -= _w_size; + s.strstart -= _w_size; + /* we now have strstart >= MAX_DIST */ + s.block_start -= _w_size; + + /* Slide the hash table (could be avoided with 32 bit values + at the expense of memory usage). We slide even when level == 0 + to keep the hash table consistent if we switch back to level > 0 + later. (Using level 0 permanently is not an optimal usage of + zlib, so we don't care about this pathological case.) + */ + + n = s.hash_size; + p = n; + do { + m = s.head[--p]; + s.head[p] = (m >= _w_size ? m - _w_size : 0); + } while (--n); + + n = _w_size; + p = n; + do { + m = s.prev[--p]; + s.prev[p] = (m >= _w_size ? m - _w_size : 0); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); + + more += _w_size; + } + if (s.strm.avail_in === 0) { + break; + } + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + //Assert(more >= 2, "more < 2"); + n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); + s.lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s.lookahead + s.insert >= MIN_MATCH) { + str = s.strstart - s.insert; + s.ins_h = s.window[str]; + + /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask; +//#if MIN_MATCH != 3 +// Call update_hash() MIN_MATCH-3 more times +//#endif + while (s.insert) { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = str; + str++; + s.insert--; + if (s.lookahead + s.insert < MIN_MATCH) { + break; + } + } + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ +// if (s.high_water < s.window_size) { +// var curr = s.strstart + s.lookahead; +// var init = 0; +// +// if (s.high_water < curr) { +// /* Previous high water mark below current data -- zero WIN_INIT +// * bytes or up to end of window, whichever is less. +// */ +// init = s.window_size - curr; +// if (init > WIN_INIT) +// init = WIN_INIT; +// zmemzero(s->window + curr, (unsigned)init); +// s->high_water = curr + init; +// } +// else if (s->high_water < (ulg)curr + WIN_INIT) { +// /* High water mark at or above current data, but below current data +// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up +// * to end of window, whichever is less. +// */ +// init = (ulg)curr + WIN_INIT - s->high_water; +// if (init > s->window_size - s->high_water) +// init = s->window_size - s->high_water; +// zmemzero(s->window + s->high_water, (unsigned)init); +// s->high_water += init; +// } +// } +// +// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, +// "not enough room for search"); +} + +/* =========================================================================== + * Copy without compression as much as possible from the input stream, return + * the current block state. + * This function does not insert new strings in the dictionary since + * uncompressible data is probably not useful. This function is used + * only for the level=0 compression option. + * NOTE: this function should be optimized to avoid extra copying from + * window to pending_buf. + */ +function deflate_stored(s, flush) { + /* Stored blocks are limited to 0xffff bytes, pending_buf is limited + * to pending_buf_size, and each stored block has a 5 byte header: + */ + var max_block_size = 0xffff; + + if (max_block_size > s.pending_buf_size - 5) { + max_block_size = s.pending_buf_size - 5; + } + + /* Copy as much as possible from input to output: */ + for (;;) { + /* Fill the window as much as possible: */ + if (s.lookahead <= 1) { + + //Assert(s->strstart < s->w_size+MAX_DIST(s) || + // s->block_start >= (long)s->w_size, "slide too late"); +// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) || +// s.block_start >= s.w_size)) { +// throw new Error("slide too late"); +// } + + fill_window(s); + if (s.lookahead === 0 && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + + if (s.lookahead === 0) { + break; + } + /* flush the current block */ + } + //Assert(s->block_start >= 0L, "block gone"); +// if (s.block_start < 0) throw new Error("block gone"); + + s.strstart += s.lookahead; + s.lookahead = 0; + + /* Emit a stored block if pending_buf will be full: */ + var max_start = s.block_start + max_block_size; + + if (s.strstart === 0 || s.strstart >= max_start) { + /* strstart == 0 is possible when wraparound on 16-bit machine */ + s.lookahead = s.strstart - max_start; + s.strstart = max_start; + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + + + } + /* Flush if we may have to slide, otherwise block_start may become + * negative and the data will be gone: + */ + if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + + s.insert = 0; + + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + + if (s.strstart > s.block_start) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_NEED_MORE; +} + +/* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. + */ +function deflate_fast(s, flush) { + var hash_head; /* head of the hash chain */ + var bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; /* flush the current block */ + } + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + } + if (s.match_length >= MIN_MATCH) { + // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only + + /*** _tr_tally_dist(s, s.strstart - s.match_start, + s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ + if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) { + s.match_length--; /* string at strstart already in table */ + do { + s.strstart++; + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s.match_length !== 0); + s.strstart++; + } else + { + s.strstart += s.match_length; + s.match_length = 0; + s.ins_h = s.window[s.strstart]; + /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask; + +//#if MIN_MATCH != 3 +// Call UPDATE_HASH() MIN_MATCH-3 more times +//#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s.window[s.strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1); + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ +function deflate_slow(s, flush) { + var hash_head; /* head of hash chain */ + var bflush; /* set if current block must be flushed */ + + var max_insert; + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + */ + s.prev_length = s.match_length; + s.prev_match = s.match_start; + s.match_length = MIN_MATCH - 1; + + if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match && + s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + + if (s.match_length <= 5 && + (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) { + + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s.match_length = MIN_MATCH - 1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { + max_insert = s.strstart + s.lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ + + //check_match(s, s.strstart-1, s.prev_match, s.prev_length); + + /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, + s.prev_length - MIN_MATCH, bflush);***/ + bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s.lookahead -= s.prev_length - 1; + s.prev_length -= 2; + do { + if (++s.strstart <= max_insert) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + } while (--s.prev_length !== 0); + s.match_available = 0; + s.match_length = MIN_MATCH - 1; + s.strstart++; + + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + } else if (s.match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + if (bflush) { + /*** FLUSH_BLOCK_ONLY(s, 0) ***/ + flush_block_only(s, false); + /***/ + } + s.strstart++; + s.lookahead--; + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s.match_available = 1; + s.strstart++; + s.lookahead--; + } + } + //Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s.match_available) { + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + s.match_available = 0; + } + s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_BLOCK_DONE; +} + + +/* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ +function deflate_rle(s, flush) { + var bflush; /* set if current block must be flushed */ + var prev; /* byte at distance one to match */ + var scan, strend; /* scan goes up to strend for length of run */ + + var _win = s.window; + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest run, plus one for the unrolled loop. + */ + if (s.lookahead <= MAX_MATCH) { + fill_window(s); + if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* See how many times the previous byte repeats */ + s.match_length = 0; + if (s.lookahead >= MIN_MATCH && s.strstart > 0) { + scan = s.strstart - 1; + prev = _win[scan]; + if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { + strend = s.strstart + MAX_MATCH; + do { + /*jshint noempty:false*/ + } while (prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + scan < strend); + s.match_length = MAX_MATCH - (strend - scan); + if (s.match_length > s.lookahead) { + s.match_length = s.lookahead; + } + } + //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + } + + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (s.match_length >= MIN_MATCH) { + //check_match(s, s.strstart, s.strstart - 1, s.match_length); + + /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + s.strstart += s.match_length; + s.match_length = 0; + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* =========================================================================== + * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. + * (It will be regenerated if this run of deflate switches away from Huffman.) + */ +function deflate_huff(s, flush) { + var bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we have a literal to write. */ + if (s.lookahead === 0) { + fill_window(s); + if (s.lookahead === 0) { + if (flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + break; /* flush the current block */ + } + } + + /* Output a literal byte */ + s.match_length = 0; + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ +function Config(good_length, max_lazy, nice_length, max_chain, func) { + this.good_length = good_length; + this.max_lazy = max_lazy; + this.nice_length = nice_length; + this.max_chain = max_chain; + this.func = func; +} + +var configuration_table; + +configuration_table = [ + /* good lazy nice chain */ + new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ + new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ + new Config(4, 5, 16, 8, deflate_fast), /* 2 */ + new Config(4, 6, 32, 32, deflate_fast), /* 3 */ + + new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ + new Config(8, 16, 32, 32, deflate_slow), /* 5 */ + new Config(8, 16, 128, 128, deflate_slow), /* 6 */ + new Config(8, 32, 128, 256, deflate_slow), /* 7 */ + new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ + new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ +]; + + +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +function lm_init(s) { + s.window_size = 2 * s.w_size; + + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + + /* Set the default configuration parameters: + */ + s.max_lazy_match = configuration_table[s.level].max_lazy; + s.good_match = configuration_table[s.level].good_length; + s.nice_match = configuration_table[s.level].nice_length; + s.max_chain_length = configuration_table[s.level].max_chain; + + s.strstart = 0; + s.block_start = 0; + s.lookahead = 0; + s.insert = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + s.ins_h = 0; +} + + +function DeflateState() { + this.strm = null; /* pointer back to this zlib stream */ + this.status = 0; /* as the name implies */ + this.pending_buf = null; /* output still pending */ + this.pending_buf_size = 0; /* size of pending_buf */ + this.pending_out = 0; /* next pending byte to output to the stream */ + this.pending = 0; /* nb of bytes in the pending buffer */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.gzhead = null; /* gzip header information to write */ + this.gzindex = 0; /* where in extra, name, or comment */ + this.method = Z_DEFLATED; /* can only be DEFLATED */ + this.last_flush = -1; /* value of flush param for previous deflate call */ + + this.w_size = 0; /* LZ77 window size (32K by default) */ + this.w_bits = 0; /* log2(w_size) (8..16) */ + this.w_mask = 0; /* w_size - 1 */ + + this.window = null; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. + */ + + this.window_size = 0; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ + + this.prev = null; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ + + this.head = null; /* Heads of the hash chains or NIL. */ + + this.ins_h = 0; /* hash index of string to be inserted */ + this.hash_size = 0; /* number of elements in hash table */ + this.hash_bits = 0; /* log2(hash_size) */ + this.hash_mask = 0; /* hash_size-1 */ + + this.hash_shift = 0; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ + + this.block_start = 0; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ + + this.match_length = 0; /* length of best match */ + this.prev_match = 0; /* previous match */ + this.match_available = 0; /* set if previous match exists */ + this.strstart = 0; /* start of string to insert */ + this.match_start = 0; /* start of matching string */ + this.lookahead = 0; /* number of valid bytes ahead in window */ + + this.prev_length = 0; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ + + this.max_chain_length = 0; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ + + this.max_lazy_match = 0; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ + // That's alias to max_lazy_match, don't use directly + //this.max_insert_length = 0; + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ + + this.level = 0; /* compression level (1..9) */ + this.strategy = 0; /* favor or force Huffman coding*/ + + this.good_match = 0; + /* Use a faster search when the previous match is longer than this */ + + this.nice_match = 0; /* Stop searching when current match exceeds this */ + + /* used by trees.c: */ + + /* Didn't use ct_data typedef below to suppress compiler warning */ + + // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ + + // Use flat array of DOUBLE size, with interleaved fata, + // because JS does not support effective + this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2); + this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2); + this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2); + zero(this.dyn_ltree); + zero(this.dyn_dtree); + zero(this.bl_tree); + + this.l_desc = null; /* desc. for literal tree */ + this.d_desc = null; /* desc. for distance tree */ + this.bl_desc = null; /* desc. for bit length tree */ + + //ush bl_count[MAX_BITS+1]; + this.bl_count = new utils.Buf16(MAX_BITS + 1); + /* number of codes at each bit length for an optimal tree */ + + //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */ + zero(this.heap); + + this.heap_len = 0; /* number of elements in the heap */ + this.heap_max = 0; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ + + this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; + zero(this.depth); + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ + + this.l_buf = 0; /* buffer index for literals or lengths */ + + this.lit_bufsize = 0; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ + + this.last_lit = 0; /* running index in l_buf */ + + this.d_buf = 0; + /* Buffer index for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ + + this.opt_len = 0; /* bit length of current block with optimal trees */ + this.static_len = 0; /* bit length of current block with static trees */ + this.matches = 0; /* number of string matches in current block */ + this.insert = 0; /* bytes at end of window left to insert */ + + + this.bi_buf = 0; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + this.bi_valid = 0; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ + + // Used for window memory init. We safely ignore it for JS. That makes + // sense only for pointers and memory check tools. + //this.high_water = 0; + /* High water mark offset in window for initialized bytes -- bytes above + * this are set to zero in order to avoid memory check warnings when + * longest match routines access bytes past the input. This is then + * updated to the new high water mark. + */ +} + + +function deflateResetKeep(strm) { + var s; + + if (!strm || !strm.state) { + return err(strm, Z_STREAM_ERROR); + } + + strm.total_in = strm.total_out = 0; + strm.data_type = Z_UNKNOWN; + + s = strm.state; + s.pending = 0; + s.pending_out = 0; + + if (s.wrap < 0) { + s.wrap = -s.wrap; + /* was made negative by deflate(..., Z_FINISH); */ + } + s.status = (s.wrap ? INIT_STATE : BUSY_STATE); + strm.adler = (s.wrap === 2) ? + 0 // crc32(0, Z_NULL, 0) + : + 1; // adler32(0, Z_NULL, 0) + s.last_flush = Z_NO_FLUSH; + trees._tr_init(s); + return Z_OK; +} + + +function deflateReset(strm) { + var ret = deflateResetKeep(strm); + if (ret === Z_OK) { + lm_init(strm.state); + } + return ret; +} + + +function deflateSetHeader(strm, head) { + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; } + strm.state.gzhead = head; + return Z_OK; +} + + +function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { + if (!strm) { // === Z_NULL + return Z_STREAM_ERROR; + } + var wrap = 1; + + if (level === Z_DEFAULT_COMPRESSION) { + level = 6; + } + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } + + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } + + + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || + windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || + strategy < 0 || strategy > Z_FIXED) { + return err(strm, Z_STREAM_ERROR); + } + + + if (windowBits === 8) { + windowBits = 9; + } + /* until 256-byte window bug fixed */ + + var s = new DeflateState(); + + strm.state = s; + s.strm = strm; + + s.wrap = wrap; + s.gzhead = null; + s.w_bits = windowBits; + s.w_size = 1 << s.w_bits; + s.w_mask = s.w_size - 1; + + s.hash_bits = memLevel + 7; + s.hash_size = 1 << s.hash_bits; + s.hash_mask = s.hash_size - 1; + s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); + + s.window = new utils.Buf8(s.w_size * 2); + s.head = new utils.Buf16(s.hash_size); + s.prev = new utils.Buf16(s.w_size); + + // Don't need mem init magic for JS. + //s.high_water = 0; /* nothing written to s->window yet */ + + s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ + + s.pending_buf_size = s.lit_bufsize * 4; + + //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + //s->pending_buf = (uchf *) overlay; + s.pending_buf = new utils.Buf8(s.pending_buf_size); + + // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) + //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s.d_buf = 1 * s.lit_bufsize; + + //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + s.l_buf = (1 + 2) * s.lit_bufsize; + + s.level = level; + s.strategy = strategy; + s.method = method; + + return deflateReset(strm); +} + +function deflateInit(strm, level) { + return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); +} + + +function deflate(strm, flush) { + var old_flush, s; + var beg, val; // for gzip header write only + + if (!strm || !strm.state || + flush > Z_BLOCK || flush < 0) { + return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; + } + + s = strm.state; + + if (!strm.output || + (!strm.input && strm.avail_in !== 0) || + (s.status === FINISH_STATE && flush !== Z_FINISH)) { + return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR); + } + + s.strm = strm; /* just in case */ + old_flush = s.last_flush; + s.last_flush = flush; + + /* Write the header */ + if (s.status === INIT_STATE) { + + if (s.wrap === 2) { // GZIP header + strm.adler = 0; //crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (!s.gzhead) { // s->gzhead == Z_NULL + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s.status = BUSY_STATE; + } + else { + put_byte(s, (s.gzhead.text ? 1 : 0) + + (s.gzhead.hcrc ? 2 : 0) + + (!s.gzhead.extra ? 0 : 4) + + (!s.gzhead.name ? 0 : 8) + + (!s.gzhead.comment ? 0 : 16) + ); + put_byte(s, s.gzhead.time & 0xff); + put_byte(s, (s.gzhead.time >> 8) & 0xff); + put_byte(s, (s.gzhead.time >> 16) & 0xff); + put_byte(s, (s.gzhead.time >> 24) & 0xff); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, s.gzhead.os & 0xff); + if (s.gzhead.extra && s.gzhead.extra.length) { + put_byte(s, s.gzhead.extra.length & 0xff); + put_byte(s, (s.gzhead.extra.length >> 8) & 0xff); + } + if (s.gzhead.hcrc) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); + } + s.gzindex = 0; + s.status = EXTRA_STATE; + } + } + else // DEFLATE header + { + var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8; + var level_flags = -1; + + if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { + level_flags = 0; + } else if (s.level < 6) { + level_flags = 1; + } else if (s.level === 6) { + level_flags = 2; + } else { + level_flags = 3; + } + header |= (level_flags << 6); + if (s.strstart !== 0) { header |= PRESET_DICT; } + header += 31 - (header % 31); + + s.status = BUSY_STATE; + putShortMSB(s, header); + + /* Save the adler32 of the preset dictionary: */ + if (s.strstart !== 0) { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + strm.adler = 1; // adler32(0L, Z_NULL, 0); + } + } + +//#ifdef GZIP + if (s.status === EXTRA_STATE) { + if (s.gzhead.extra/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + + while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + break; + } + } + put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); + s.gzindex++; + } + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (s.gzindex === s.gzhead.extra.length) { + s.gzindex = 0; + s.status = NAME_STATE; + } + } + else { + s.status = NAME_STATE; + } + } + if (s.status === NAME_STATE) { + if (s.gzhead.name/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.name.length) { + val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.gzindex = 0; + s.status = COMMENT_STATE; + } + } + else { + s.status = COMMENT_STATE; + } + } + if (s.status === COMMENT_STATE) { + if (s.gzhead.comment/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.comment.length) { + val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.status = HCRC_STATE; + } + } + else { + s.status = HCRC_STATE; + } + } + if (s.status === HCRC_STATE) { + if (s.gzhead.hcrc) { + if (s.pending + 2 > s.pending_buf_size) { + flush_pending(strm); + } + if (s.pending + 2 <= s.pending_buf_size) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + strm.adler = 0; //crc32(0L, Z_NULL, 0); + s.status = BUSY_STATE; + } + } + else { + s.status = BUSY_STATE; + } + } +//#endif + + /* Flush as much pending output as possible */ + if (s.pending !== 0) { + flush_pending(strm); + if (strm.avail_out === 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s.last_flush = -1; + return Z_OK; + } + + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && + flush !== Z_FINISH) { + return err(strm, Z_BUF_ERROR); + } + + /* User must not provide more input after the first FINISH: */ + if (s.status === FINISH_STATE && strm.avail_in !== 0) { + return err(strm, Z_BUF_ERROR); + } + + /* Start a new block or continue the current one. + */ + if (strm.avail_in !== 0 || s.lookahead !== 0 || + (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) { + var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) : + (s.strategy === Z_RLE ? deflate_rle(s, flush) : + configuration_table[s.level].func(s, flush)); + + if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { + s.status = FINISH_STATE; + } + if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { + if (strm.avail_out === 0) { + s.last_flush = -1; + /* avoid BUF_ERROR next call, see above */ + } + return Z_OK; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate === BS_BLOCK_DONE) { + if (flush === Z_PARTIAL_FLUSH) { + trees._tr_align(s); + } + else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ + + trees._tr_stored_block(s, 0, 0, false); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush === Z_FULL_FLUSH) { + /*** CLEAR_HASH(s); ***/ /* forget history */ + zero(s.head); // Fill with NIL (= 0); + + if (s.lookahead === 0) { + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + } + } + flush_pending(strm); + if (strm.avail_out === 0) { + s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK; + } + } + } + //Assert(strm->avail_out > 0, "bug2"); + //if (strm.avail_out <= 0) { throw new Error("bug2");} + + if (flush !== Z_FINISH) { return Z_OK; } + if (s.wrap <= 0) { return Z_STREAM_END; } + + /* Write the trailer */ + if (s.wrap === 2) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + put_byte(s, (strm.adler >> 16) & 0xff); + put_byte(s, (strm.adler >> 24) & 0xff); + put_byte(s, strm.total_in & 0xff); + put_byte(s, (strm.total_in >> 8) & 0xff); + put_byte(s, (strm.total_in >> 16) & 0xff); + put_byte(s, (strm.total_in >> 24) & 0xff); + } + else + { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s.wrap > 0) { s.wrap = -s.wrap; } + /* write the trailer only once! */ + return s.pending !== 0 ? Z_OK : Z_STREAM_END; +} + +function deflateEnd(strm) { + var status; + + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; + } + + status = strm.state.status; + if (status !== INIT_STATE && + status !== EXTRA_STATE && + status !== NAME_STATE && + status !== COMMENT_STATE && + status !== HCRC_STATE && + status !== BUSY_STATE && + status !== FINISH_STATE + ) { + return err(strm, Z_STREAM_ERROR); + } + + strm.state = null; + + return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; +} + + +/* ========================================================================= + * Initializes the compression dictionary from the given byte + * sequence without producing any compressed output. + */ +function deflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; + + var s; + var str, n; + var wrap; + var avail; + var next; + var input; + var tmpDict; + + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; + } + + s = strm.state; + wrap = s.wrap; + + if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { + return Z_STREAM_ERROR; + } + + /* when using zlib wrappers, compute Adler-32 for provided dictionary */ + if (wrap === 1) { + /* adler32(strm->adler, dictionary, dictLength); */ + strm.adler = adler32(strm.adler, dictionary, dictLength, 0); + } + + s.wrap = 0; /* avoid computing Adler-32 in read_buf */ + + /* if dictionary would fill window, just replace the history */ + if (dictLength >= s.w_size) { + if (wrap === 0) { /* already empty otherwise */ + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + /* use the tail */ + // dictionary = dictionary.slice(dictLength - s.w_size); + tmpDict = new utils.Buf8(s.w_size); + utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); + dictionary = tmpDict; + dictLength = s.w_size; + } + /* insert dictionary into window and hash */ + avail = strm.avail_in; + next = strm.next_in; + input = strm.input; + strm.avail_in = dictLength; + strm.next_in = 0; + strm.input = dictionary; + fill_window(s); + while (s.lookahead >= MIN_MATCH) { + str = s.strstart; + n = s.lookahead - (MIN_MATCH - 1); + do { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + + s.head[s.ins_h] = str; + str++; + } while (--n); + s.strstart = str; + s.lookahead = MIN_MATCH - 1; + fill_window(s); + } + s.strstart += s.lookahead; + s.block_start = s.strstart; + s.insert = s.lookahead; + s.lookahead = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + strm.next_in = next; + strm.input = input; + strm.avail_in = avail; + s.wrap = wrap; + return Z_OK; +} + + +exports.deflateInit = deflateInit; +exports.deflateInit2 = deflateInit2; +exports.deflateReset = deflateReset; +exports.deflateResetKeep = deflateResetKeep; +exports.deflateSetHeader = deflateSetHeader; +exports.deflate = deflate; +exports.deflateEnd = deflateEnd; +exports.deflateSetDictionary = deflateSetDictionary; +exports.deflateInfo = 'pako deflate (from Nodeca project)'; + +/* Not implemented +exports.deflateBound = deflateBound; +exports.deflateCopy = deflateCopy; +exports.deflateParams = deflateParams; +exports.deflatePending = deflatePending; +exports.deflatePrime = deflatePrime; +exports.deflateTune = deflateTune; +*/ + +},{"../utils/common":36,"./adler32":37,"./crc32":39,"./messages":44,"./trees":45}],41:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +// See state defs from inflate.js +var BAD = 30; /* got a data error -- remain here until reset */ +var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ + +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate execution time is spent in this routine. + + Entry assumptions: + + state.mode === LEN + strm.avail_in >= 6 + strm.avail_out >= 258 + start >= strm.avail_out + state.bits < 8 + + On return, state.mode is one of: + + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data + + Notes: + + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm.avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. + + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm.avail_out >= 258 for each loop to avoid checking for + output space. + */ +module.exports = function inflate_fast(strm, start) { + var state; + var _in; /* local strm.input */ + var last; /* have enough input while in < last */ + var _out; /* local strm.output */ + var beg; /* inflate()'s initial strm.output */ + var end; /* while out < end, enough space available */ +//#ifdef INFLATE_STRICT + var dmax; /* maximum distance from zlib header */ +//#endif + var wsize; /* window size or zero if not using window */ + var whave; /* valid bytes in the window */ + var wnext; /* window write index */ + // Use `s_window` instead `window`, avoid conflict with instrumentation tools + var s_window; /* allocated sliding window, if wsize != 0 */ + var hold; /* local strm.hold */ + var bits; /* local strm.bits */ + var lcode; /* local strm.lencode */ + var dcode; /* local strm.distcode */ + var lmask; /* mask for first level of length codes */ + var dmask; /* mask for first level of distance codes */ + var here; /* retrieved table entry */ + var op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + var len; /* match length, unused bytes */ + var dist; /* match distance */ + var from; /* where to copy match from */ + var from_source; + + + var input, output; // JS specific, because we have no pointers + + /* copy state to local variables */ + state = strm.state; + //here = state.here; + _in = strm.next_in; + input = strm.input; + last = _in + (strm.avail_in - 5); + _out = strm.next_out; + output = strm.output; + beg = _out - (start - strm.avail_out); + end = _out + (strm.avail_out - 257); +//#ifdef INFLATE_STRICT + dmax = state.dmax; +//#endif + wsize = state.wsize; + whave = state.whave; + wnext = state.wnext; + s_window = state.window; + hold = state.hold; + bits = state.bits; + lcode = state.lencode; + dcode = state.distcode; + lmask = (1 << state.lenbits) - 1; + dmask = (1 << state.distbits) - 1; + + + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ + + top: + do { + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + + here = lcode[hold & lmask]; + + dolen: + for (;;) { // Goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; + if (op === 0) { /* literal */ + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + output[_out++] = here & 0xffff/*here.val*/; + } + else if (op & 16) { /* length base */ + len = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (op) { + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + len += hold & ((1 << op) - 1); + hold >>>= op; + bits -= op; + } + //Tracevv((stderr, "inflate: length %u\n", len)); + if (bits < 15) { + hold += input[_in++] << bits; + bits += 8; + hold += input[_in++] << bits; + bits += 8; + } + here = dcode[hold & dmask]; + + dodist: + for (;;) { // goto emulation + op = here >>> 24/*here.bits*/; + hold >>>= op; + bits -= op; + op = (here >>> 16) & 0xff/*here.op*/; + + if (op & 16) { /* distance base */ + dist = here & 0xffff/*here.val*/; + op &= 15; /* number of extra bits */ + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + if (bits < op) { + hold += input[_in++] << bits; + bits += 8; + } + } + dist += hold & ((1 << op) - 1); +//#ifdef INFLATE_STRICT + if (dist > dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break top; + } +//#endif + hold >>>= op; + bits -= op; + //Tracevv((stderr, "inflate: distance %u\n", dist)); + op = _out - beg; /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break top; + } + +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility +//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR +// if (len <= op - whave) { +// do { +// output[_out++] = 0; +// } while (--len); +// continue top; +// } +// len -= op - whave; +// do { +// output[_out++] = 0; +// } while (--op > whave); +// if (op === 0) { +// from = _out - dist; +// do { +// output[_out++] = output[from++]; +// } while (--len); +// continue top; +// } +//#endif + } + from = 0; // window index + from_source = s_window; + if (wnext === 0) { /* very common case */ + from += wsize - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + else if (wnext < op) { /* wrap around window */ + from += wsize + wnext - op; + op -= wnext; + if (op < len) { /* some from end of window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = 0; + if (wnext < len) { /* some from start of window */ + op = wnext; + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + } + else { /* contiguous in window */ + from += wnext - op; + if (op < len) { /* some from window */ + len -= op; + do { + output[_out++] = s_window[from++]; + } while (--op); + from = _out - dist; /* rest from output */ + from_source = output; + } + } + while (len > 2) { + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + output[_out++] = from_source[from++]; + len -= 3; + } + if (len) { + output[_out++] = from_source[from++]; + if (len > 1) { + output[_out++] = from_source[from++]; + } + } + } + else { + from = _out - dist; /* copy direct from output */ + do { /* minimum length is three */ + output[_out++] = output[from++]; + output[_out++] = output[from++]; + output[_out++] = output[from++]; + len -= 3; + } while (len > 2); + if (len) { + output[_out++] = output[from++]; + if (len > 1) { + output[_out++] = output[from++]; + } + } + } + } + else if ((op & 64) === 0) { /* 2nd level distance code */ + here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dodist; + } + else { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break top; + } + + break; // need to emulate goto via "continue" + } + } + else if ((op & 64) === 0) { /* 2nd level length code */ + here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; + continue dolen; + } + else if (op & 32) { /* end-of-block */ + //Tracevv((stderr, "inflate: end of block\n")); + state.mode = TYPE; + break top; + } + else { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break top; + } + + break; // need to emulate goto via "continue" + } + } while (_in < last && _out < end); + + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + _in -= len; + bits -= len << 3; + hold &= (1 << bits) - 1; + + /* update state and return */ + strm.next_in = _in; + strm.next_out = _out; + strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); + strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); + state.hold = hold; + state.bits = bits; + return; +}; + +},{}],42:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +var utils = require('../utils/common'); +var adler32 = require('./adler32'); +var crc32 = require('./crc32'); +var inflate_fast = require('./inffast'); +var inflate_table = require('./inftrees'); + +var CODES = 0; +var LENS = 1; +var DISTS = 2; + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +/* Allowed flush values; see deflate() and inflate() below for details */ +//var Z_NO_FLUSH = 0; +//var Z_PARTIAL_FLUSH = 1; +//var Z_SYNC_FLUSH = 2; +//var Z_FULL_FLUSH = 3; +var Z_FINISH = 4; +var Z_BLOCK = 5; +var Z_TREES = 6; + + +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ +var Z_OK = 0; +var Z_STREAM_END = 1; +var Z_NEED_DICT = 2; +//var Z_ERRNO = -1; +var Z_STREAM_ERROR = -2; +var Z_DATA_ERROR = -3; +var Z_MEM_ERROR = -4; +var Z_BUF_ERROR = -5; +//var Z_VERSION_ERROR = -6; + +/* The deflate compression method */ +var Z_DEFLATED = 8; + + +/* STATES ====================================================================*/ +/* ===========================================================================*/ + + +var HEAD = 1; /* i: waiting for magic header */ +var FLAGS = 2; /* i: waiting for method and flags (gzip) */ +var TIME = 3; /* i: waiting for modification time (gzip) */ +var OS = 4; /* i: waiting for extra flags and operating system (gzip) */ +var EXLEN = 5; /* i: waiting for extra length (gzip) */ +var EXTRA = 6; /* i: waiting for extra bytes (gzip) */ +var NAME = 7; /* i: waiting for end of file name (gzip) */ +var COMMENT = 8; /* i: waiting for end of comment (gzip) */ +var HCRC = 9; /* i: waiting for header crc (gzip) */ +var DICTID = 10; /* i: waiting for dictionary check value */ +var DICT = 11; /* waiting for inflateSetDictionary() call */ +var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ +var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */ +var STORED = 14; /* i: waiting for stored size (length and complement) */ +var COPY_ = 15; /* i/o: same as COPY below, but only first time in */ +var COPY = 16; /* i/o: waiting for input or output to copy stored block */ +var TABLE = 17; /* i: waiting for dynamic block table lengths */ +var LENLENS = 18; /* i: waiting for code length code lengths */ +var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */ +var LEN_ = 20; /* i: same as LEN below, but only first time in */ +var LEN = 21; /* i: waiting for length/lit/eob code */ +var LENEXT = 22; /* i: waiting for length extra bits */ +var DIST = 23; /* i: waiting for distance code */ +var DISTEXT = 24; /* i: waiting for distance extra bits */ +var MATCH = 25; /* o: waiting for output space to copy string */ +var LIT = 26; /* o: waiting for output space to write literal */ +var CHECK = 27; /* i: waiting for 32-bit check value */ +var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */ +var DONE = 29; /* finished check, done -- remain here until reset */ +var BAD = 30; /* got a data error -- remain here until reset */ +var MEM = 31; /* got an inflate() memory error -- remain here until reset */ +var SYNC = 32; /* looking for synchronization bytes to restart inflate() */ + +/* ===========================================================================*/ + + + +var ENOUGH_LENS = 852; +var ENOUGH_DISTS = 592; +//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); + +var MAX_WBITS = 15; +/* 32K LZ77 window */ +var DEF_WBITS = MAX_WBITS; + + +function zswap32(q) { + return (((q >>> 24) & 0xff) + + ((q >>> 8) & 0xff00) + + ((q & 0xff00) << 8) + + ((q & 0xff) << 24)); +} + + +function InflateState() { + this.mode = 0; /* current inflate mode */ + this.last = false; /* true if processing last block */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.havedict = false; /* true if dictionary provided */ + this.flags = 0; /* gzip header method and flags (0 if zlib) */ + this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */ + this.check = 0; /* protected copy of check value */ + this.total = 0; /* protected copy of output count */ + // TODO: may be {} + this.head = null; /* where to save gzip header information */ + + /* sliding window */ + this.wbits = 0; /* log base 2 of requested window size */ + this.wsize = 0; /* window size or zero if not using window */ + this.whave = 0; /* valid bytes in the window */ + this.wnext = 0; /* window write index */ + this.window = null; /* allocated sliding window, if needed */ + + /* bit accumulator */ + this.hold = 0; /* input bit accumulator */ + this.bits = 0; /* number of bits in "in" */ + + /* for string and stored block copying */ + this.length = 0; /* literal or length of data to copy */ + this.offset = 0; /* distance back to copy string from */ + + /* for table and code decoding */ + this.extra = 0; /* extra bits needed */ + + /* fixed and dynamic code tables */ + this.lencode = null; /* starting table for length/literal codes */ + this.distcode = null; /* starting table for distance codes */ + this.lenbits = 0; /* index bits for lencode */ + this.distbits = 0; /* index bits for distcode */ + + /* dynamic table building */ + this.ncode = 0; /* number of code length code lengths */ + this.nlen = 0; /* number of length code lengths */ + this.ndist = 0; /* number of distance code lengths */ + this.have = 0; /* number of code lengths in lens[] */ + this.next = null; /* next available space in codes[] */ + + this.lens = new utils.Buf16(320); /* temporary storage for code lengths */ + this.work = new utils.Buf16(288); /* work area for code table building */ + + /* + because we don't have pointers in js, we use lencode and distcode directly + as buffers so we don't need codes + */ + //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */ + this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */ + this.distdyn = null; /* dynamic table for distance codes (JS specific) */ + this.sane = 0; /* if false, allow invalid distance too far */ + this.back = 0; /* bits back of last unprocessed length/lit */ + this.was = 0; /* initial length of match */ +} + +function inflateResetKeep(strm) { + var state; + + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + strm.total_in = strm.total_out = state.total = 0; + strm.msg = ''; /*Z_NULL*/ + if (state.wrap) { /* to support ill-conceived Java test suite */ + strm.adler = state.wrap & 1; + } + state.mode = HEAD; + state.last = 0; + state.havedict = 0; + state.dmax = 32768; + state.head = null/*Z_NULL*/; + state.hold = 0; + state.bits = 0; + //state.lencode = state.distcode = state.next = state.codes; + state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); + state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); + + state.sane = 1; + state.back = -1; + //Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} + +function inflateReset(strm) { + var state; + + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + state.wsize = 0; + state.whave = 0; + state.wnext = 0; + return inflateResetKeep(strm); + +} + +function inflateReset2(strm, windowBits) { + var wrap; + var state; + + /* get the state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; + } + else { + wrap = (windowBits >> 4) + 1; + if (windowBits < 48) { + windowBits &= 15; + } + } + + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) { + return Z_STREAM_ERROR; + } + if (state.window !== null && state.wbits !== windowBits) { + state.window = null; + } + + /* update state and reset the rest of it */ + state.wrap = wrap; + state.wbits = windowBits; + return inflateReset(strm); +} + +function inflateInit2(strm, windowBits) { + var ret; + var state; + + if (!strm) { return Z_STREAM_ERROR; } + //strm.msg = Z_NULL; /* in case we return an error */ + + state = new InflateState(); + + //if (state === Z_NULL) return Z_MEM_ERROR; + //Tracev((stderr, "inflate: allocated\n")); + strm.state = state; + state.window = null/*Z_NULL*/; + ret = inflateReset2(strm, windowBits); + if (ret !== Z_OK) { + strm.state = null/*Z_NULL*/; + } + return ret; +} + +function inflateInit(strm) { + return inflateInit2(strm, DEF_WBITS); +} + + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +var virgin = true; + +var lenfix, distfix; // We have no pointers in JS, so keep tables separate + +function fixedtables(state) { + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + var sym; + + lenfix = new utils.Buf32(512); + distfix = new utils.Buf32(32); + + /* literal/length table */ + sym = 0; + while (sym < 144) { state.lens[sym++] = 8; } + while (sym < 256) { state.lens[sym++] = 9; } + while (sym < 280) { state.lens[sym++] = 7; } + while (sym < 288) { state.lens[sym++] = 8; } + + inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); + + /* distance table */ + sym = 0; + while (sym < 32) { state.lens[sym++] = 5; } + + inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); + + /* do this just once */ + virgin = false; + } + + state.lencode = lenfix; + state.lenbits = 9; + state.distcode = distfix; + state.distbits = 5; +} + + +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. + + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ +function updatewindow(strm, src, end, copy) { + var dist; + var state = strm.state; + + /* if it hasn't been done already, allocate space for the window */ + if (state.window === null) { + state.wsize = 1 << state.wbits; + state.wnext = 0; + state.whave = 0; + + state.window = new utils.Buf8(state.wsize); + } + + /* copy state->wsize or less output bytes into the circular window */ + if (copy >= state.wsize) { + utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0); + state.wnext = 0; + state.whave = state.wsize; + } + else { + dist = state.wsize - state.wnext; + if (dist > copy) { + dist = copy; + } + //zmemcpy(state->window + state->wnext, end - copy, dist); + utils.arraySet(state.window, src, end - copy, dist, state.wnext); + copy -= dist; + if (copy) { + //zmemcpy(state->window, end - copy, copy); + utils.arraySet(state.window, src, end - copy, copy, 0); + state.wnext = copy; + state.whave = state.wsize; + } + else { + state.wnext += dist; + if (state.wnext === state.wsize) { state.wnext = 0; } + if (state.whave < state.wsize) { state.whave += dist; } + } + } + return 0; +} + +function inflate(strm, flush) { + var state; + var input, output; // input/output buffers + var next; /* next input INDEX */ + var put; /* next output INDEX */ + var have, left; /* available input and output */ + var hold; /* bit buffer */ + var bits; /* bits in bit buffer */ + var _in, _out; /* save starting available input and output */ + var copy; /* number of stored or match bytes to copy */ + var from; /* where to copy match bytes from */ + var from_source; + var here = 0; /* current decoding table entry */ + var here_bits, here_op, here_val; // paked "here" denormalized (JS specific) + //var last; /* parent table entry */ + var last_bits, last_op, last_val; // paked "last" denormalized (JS specific) + var len; /* length to copy for repeats, bits to drop */ + var ret; /* return code */ + var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */ + var opts; + + var n; // temporary var for NEED_BITS + + var order = /* permutation of code lengths */ + [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; + + + if (!strm || !strm.state || !strm.output || + (!strm.input && strm.avail_in !== 0)) { + return Z_STREAM_ERROR; + } + + state = strm.state; + if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */ + + + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- + + _in = have; + _out = left; + ret = Z_OK; + + inf_leave: // goto emulation + for (;;) { + switch (state.mode) { + case HEAD: + if (state.wrap === 0) { + state.mode = TYPEDO; + break; + } + //=== NEEDBITS(16); + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */ + state.check = 0/*crc32(0L, Z_NULL, 0)*/; + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = FLAGS; + break; + } + state.flags = 0; /* expect zlib header */ + if (state.head) { + state.head.done = false; + } + if (!(state.wrap & 1) || /* check if zlib header allowed */ + (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) { + strm.msg = 'incorrect header check'; + state.mode = BAD; + break; + } + if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// + len = (hold & 0x0f)/*BITS(4)*/ + 8; + if (state.wbits === 0) { + state.wbits = len; + } + else if (len > state.wbits) { + strm.msg = 'invalid window size'; + state.mode = BAD; + break; + } + state.dmax = 1 << len; + //Tracev((stderr, "inflate: zlib header ok\n")); + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = hold & 0x200 ? DICTID : TYPE; + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + break; + case FLAGS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.flags = hold; + if ((state.flags & 0xff) !== Z_DEFLATED) { + strm.msg = 'unknown compression method'; + state.mode = BAD; + break; + } + if (state.flags & 0xe000) { + strm.msg = 'unknown header flags set'; + state.mode = BAD; + break; + } + if (state.head) { + state.head.text = ((hold >> 8) & 1); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = TIME; + /* falls through */ + case TIME: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.time = hold; + } + if (state.flags & 0x0200) { + //=== CRC4(state.check, hold) + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + hbuf[2] = (hold >>> 16) & 0xff; + hbuf[3] = (hold >>> 24) & 0xff; + state.check = crc32(state.check, hbuf, 4, 0); + //=== + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = OS; + /* falls through */ + case OS: + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (state.head) { + state.head.xflags = (hold & 0xff); + state.head.os = (hold >> 8); + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = EXLEN; + /* falls through */ + case EXLEN: + if (state.flags & 0x0400) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length = hold; + if (state.head) { + state.head.extra_len = hold; + } + if (state.flags & 0x0200) { + //=== CRC2(state.check, hold); + hbuf[0] = hold & 0xff; + hbuf[1] = (hold >>> 8) & 0xff; + state.check = crc32(state.check, hbuf, 2, 0); + //===// + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + else if (state.head) { + state.head.extra = null/*Z_NULL*/; + } + state.mode = EXTRA; + /* falls through */ + case EXTRA: + if (state.flags & 0x0400) { + copy = state.length; + if (copy > have) { copy = have; } + if (copy) { + if (state.head) { + len = state.head.extra_len - state.length; + if (!state.head.extra) { + // Use untyped array for more convenient processing later + state.head.extra = new Array(state.head.extra_len); + } + utils.arraySet( + state.head.extra, + input, + next, + // extra field is limited to 65536 bytes + // - no need for additional size check + copy, + /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ + len + ); + //zmemcpy(state.head.extra + len, next, + // len + copy > state.head.extra_max ? + // state.head.extra_max - len : copy); + } + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + state.length -= copy; + } + if (state.length) { break inf_leave; } + } + state.length = 0; + state.mode = NAME; + /* falls through */ + case NAME: + if (state.flags & 0x0800) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + // TODO: 2 or 1 bytes? + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.name_max*/)) { + state.head.name += String.fromCharCode(len); + } + } while (len && copy < have); + + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.name = null; + } + state.length = 0; + state.mode = COMMENT; + /* falls through */ + case COMMENT: + if (state.flags & 0x1000) { + if (have === 0) { break inf_leave; } + copy = 0; + do { + len = input[next + copy++]; + /* use constant limit because in js we should not preallocate memory */ + if (state.head && len && + (state.length < 65536 /*state.head.comm_max*/)) { + state.head.comment += String.fromCharCode(len); + } + } while (len && copy < have); + if (state.flags & 0x0200) { + state.check = crc32(state.check, input, copy, next); + } + have -= copy; + next += copy; + if (len) { break inf_leave; } + } + else if (state.head) { + state.head.comment = null; + } + state.mode = HCRC; + /* falls through */ + case HCRC: + if (state.flags & 0x0200) { + //=== NEEDBITS(16); */ + while (bits < 16) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.check & 0xffff)) { + strm.msg = 'header crc mismatch'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + } + if (state.head) { + state.head.hcrc = ((state.flags >> 9) & 1); + state.head.done = true; + } + strm.adler = state.check = 0; + state.mode = TYPE; + break; + case DICTID: + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + strm.adler = state.check = zswap32(hold); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = DICT; + /* falls through */ + case DICT: + if (state.havedict === 0) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + return Z_NEED_DICT; + } + strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; + state.mode = TYPE; + /* falls through */ + case TYPE: + if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } + /* falls through */ + case TYPEDO: + if (state.last) { + //--- BYTEBITS() ---// + hold >>>= bits & 7; + bits -= bits & 7; + //---// + state.mode = CHECK; + break; + } + //=== NEEDBITS(3); */ + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.last = (hold & 0x01)/*BITS(1)*/; + //--- DROPBITS(1) ---// + hold >>>= 1; + bits -= 1; + //---// + + switch ((hold & 0x03)/*BITS(2)*/) { + case 0: /* stored block */ + //Tracev((stderr, "inflate: stored block%s\n", + // state.last ? " (last)" : "")); + state.mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + //Tracev((stderr, "inflate: fixed codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = LEN_; /* decode codes */ + if (flush === Z_TREES) { + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break inf_leave; + } + break; + case 2: /* dynamic block */ + //Tracev((stderr, "inflate: dynamic codes block%s\n", + // state.last ? " (last)" : "")); + state.mode = TABLE; + break; + case 3: + strm.msg = 'invalid block type'; + state.mode = BAD; + } + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + break; + case STORED: + //--- BYTEBITS() ---// /* go to byte boundary */ + hold >>>= bits & 7; + bits -= bits & 7; + //---// + //=== NEEDBITS(32); */ + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) { + strm.msg = 'invalid stored block lengths'; + state.mode = BAD; + break; + } + state.length = hold & 0xffff; + //Tracev((stderr, "inflate: stored length %u\n", + // state.length)); + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + state.mode = COPY_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case COPY_: + state.mode = COPY; + /* falls through */ + case COPY: + copy = state.length; + if (copy) { + if (copy > have) { copy = have; } + if (copy > left) { copy = left; } + if (copy === 0) { break inf_leave; } + //--- zmemcpy(put, next, copy); --- + utils.arraySet(output, input, next, copy, put); + //---// + have -= copy; + next += copy; + left -= copy; + put += copy; + state.length -= copy; + break; + } + //Tracev((stderr, "inflate: stored end\n")); + state.mode = TYPE; + break; + case TABLE: + //=== NEEDBITS(14); */ + while (bits < 14) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1; + //--- DROPBITS(5) ---// + hold >>>= 5; + bits -= 5; + //---// + state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4; + //--- DROPBITS(4) ---// + hold >>>= 4; + bits -= 4; + //---// +//#ifndef PKZIP_BUG_WORKAROUND + if (state.nlen > 286 || state.ndist > 30) { + strm.msg = 'too many length or distance symbols'; + state.mode = BAD; + break; + } +//#endif + //Tracev((stderr, "inflate: table sizes ok\n")); + state.have = 0; + state.mode = LENLENS; + /* falls through */ + case LENLENS: + while (state.have < state.ncode) { + //=== NEEDBITS(3); + while (bits < 3) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.lens[order[state.have++]] = (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + while (state.have < 19) { + state.lens[order[state.have++]] = 0; + } + // We have separate tables & no pointers. 2 commented lines below not needed. + //state.next = state.codes; + //state.lencode = state.next; + // Switch to use dynamic table + state.lencode = state.lendyn; + state.lenbits = 7; + + opts = { bits: state.lenbits }; + ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); + state.lenbits = opts.bits; + + if (ret) { + strm.msg = 'invalid code lengths set'; + state.mode = BAD; + break; + } + //Tracev((stderr, "inflate: code lengths ok\n")); + state.have = 0; + state.mode = CODELENS; + /* falls through */ + case CODELENS: + while (state.have < state.nlen + state.ndist) { + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_val < 16) { + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.lens[state.have++] = here_val; + } + else { + if (here_val === 16) { + //=== NEEDBITS(here.bits + 2); + n = here_bits + 2; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + if (state.have === 0) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + len = state.lens[state.have - 1]; + copy = 3 + (hold & 0x03);//BITS(2); + //--- DROPBITS(2) ---// + hold >>>= 2; + bits -= 2; + //---// + } + else if (here_val === 17) { + //=== NEEDBITS(here.bits + 3); + n = here_bits + 3; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 3 + (hold & 0x07);//BITS(3); + //--- DROPBITS(3) ---// + hold >>>= 3; + bits -= 3; + //---// + } + else { + //=== NEEDBITS(here.bits + 7); + n = here_bits + 7; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + len = 0; + copy = 11 + (hold & 0x7f);//BITS(7); + //--- DROPBITS(7) ---// + hold >>>= 7; + bits -= 7; + //---// + } + if (state.have + copy > state.nlen + state.ndist) { + strm.msg = 'invalid bit length repeat'; + state.mode = BAD; + break; + } + while (copy--) { + state.lens[state.have++] = len; + } + } + } + + /* handle error breaks in while */ + if (state.mode === BAD) { break; } + + /* check for end-of-block code (better have one) */ + if (state.lens[256] === 0) { + strm.msg = 'invalid code -- missing end-of-block'; + state.mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state.lenbits = 9; + + opts = { bits: state.lenbits }; + ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.lenbits = opts.bits; + // state.lencode = state.next; + + if (ret) { + strm.msg = 'invalid literal/lengths set'; + state.mode = BAD; + break; + } + + state.distbits = 6; + //state.distcode.copy(state.codes); + // Switch to use dynamic table + state.distcode = state.distdyn; + opts = { bits: state.distbits }; + ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); + // We have separate tables & no pointers. 2 commented lines below not needed. + // state.next_index = opts.table_index; + state.distbits = opts.bits; + // state.distcode = state.next; + + if (ret) { + strm.msg = 'invalid distances set'; + state.mode = BAD; + break; + } + //Tracev((stderr, 'inflate: codes ok\n')); + state.mode = LEN_; + if (flush === Z_TREES) { break inf_leave; } + /* falls through */ + case LEN_: + state.mode = LEN; + /* falls through */ + case LEN: + if (have >= 6 && left >= 258) { + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + inflate_fast(strm, _out); + //--- LOAD() --- + put = strm.next_out; + output = strm.output; + left = strm.avail_out; + next = strm.next_in; + input = strm.input; + have = strm.avail_in; + hold = state.hold; + bits = state.bits; + //--- + + if (state.mode === TYPE) { + state.back = -1; + } + break; + } + state.back = 0; + for (;;) { + here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if (here_bits <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if (here_op && (here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.lencode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + state.length = here_val; + if (here_op === 0) { + //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + // "inflate: literal '%c'\n" : + // "inflate: literal 0x%02x\n", here.val)); + state.mode = LIT; + break; + } + if (here_op & 32) { + //Tracevv((stderr, "inflate: end of block\n")); + state.back = -1; + state.mode = TYPE; + break; + } + if (here_op & 64) { + strm.msg = 'invalid literal/length code'; + state.mode = BAD; + break; + } + state.extra = here_op & 15; + state.mode = LENEXT; + /* falls through */ + case LENEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } + //Tracevv((stderr, "inflate: length %u\n", state.length)); + state.was = state.length; + state.mode = DIST; + /* falls through */ + case DIST: + for (;;) { + here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/ + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + if ((here_op & 0xf0) === 0) { + last_bits = here_bits; + last_op = here_op; + last_val = here_val; + for (;;) { + here = state.distcode[last_val + + ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; + here_bits = here >>> 24; + here_op = (here >>> 16) & 0xff; + here_val = here & 0xffff; + + if ((last_bits + here_bits) <= bits) { break; } + //--- PULLBYTE() ---// + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + //---// + } + //--- DROPBITS(last.bits) ---// + hold >>>= last_bits; + bits -= last_bits; + //---// + state.back += last_bits; + } + //--- DROPBITS(here.bits) ---// + hold >>>= here_bits; + bits -= here_bits; + //---// + state.back += here_bits; + if (here_op & 64) { + strm.msg = 'invalid distance code'; + state.mode = BAD; + break; + } + state.offset = here_val; + state.extra = (here_op) & 15; + state.mode = DISTEXT; + /* falls through */ + case DISTEXT: + if (state.extra) { + //=== NEEDBITS(state.extra); + n = state.extra; + while (bits < n) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; + //--- DROPBITS(state.extra) ---// + hold >>>= state.extra; + bits -= state.extra; + //---// + state.back += state.extra; + } +//#ifdef INFLATE_STRICT + if (state.offset > state.dmax) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } +//#endif + //Tracevv((stderr, "inflate: distance %u\n", state.offset)); + state.mode = MATCH; + /* falls through */ + case MATCH: + if (left === 0) { break inf_leave; } + copy = _out - left; + if (state.offset > copy) { /* copy from window */ + copy = state.offset - copy; + if (copy > state.whave) { + if (state.sane) { + strm.msg = 'invalid distance too far back'; + state.mode = BAD; + break; + } +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility +//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR +// Trace((stderr, "inflate.c too far\n")); +// copy -= state.whave; +// if (copy > state.length) { copy = state.length; } +// if (copy > left) { copy = left; } +// left -= copy; +// state.length -= copy; +// do { +// output[put++] = 0; +// } while (--copy); +// if (state.length === 0) { state.mode = LEN; } +// break; +//#endif + } + if (copy > state.wnext) { + copy -= state.wnext; + from = state.wsize - copy; + } + else { + from = state.wnext - copy; + } + if (copy > state.length) { copy = state.length; } + from_source = state.window; + } + else { /* copy from output */ + from_source = output; + from = put - state.offset; + copy = state.length; + } + if (copy > left) { copy = left; } + left -= copy; + state.length -= copy; + do { + output[put++] = from_source[from++]; + } while (--copy); + if (state.length === 0) { state.mode = LEN; } + break; + case LIT: + if (left === 0) { break inf_leave; } + output[put++] = state.length; + left--; + state.mode = LEN; + break; + case CHECK: + if (state.wrap) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + // Use '|' instead of '+' to make sure that result is signed + hold |= input[next++] << bits; + bits += 8; + } + //===// + _out -= left; + strm.total_out += _out; + state.total += _out; + if (_out) { + strm.adler = state.check = + /*UPDATE(state.check, put - _out, _out);*/ + (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out)); + + } + _out = left; + // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too + if ((state.flags ? hold : zswap32(hold)) !== state.check) { + strm.msg = 'incorrect data check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: check matches trailer\n")); + } + state.mode = LENGTH; + /* falls through */ + case LENGTH: + if (state.wrap && state.flags) { + //=== NEEDBITS(32); + while (bits < 32) { + if (have === 0) { break inf_leave; } + have--; + hold += input[next++] << bits; + bits += 8; + } + //===// + if (hold !== (state.total & 0xffffffff)) { + strm.msg = 'incorrect length check'; + state.mode = BAD; + break; + } + //=== INITBITS(); + hold = 0; + bits = 0; + //===// + //Tracev((stderr, "inflate: length matches trailer\n")); + } + state.mode = DONE; + /* falls through */ + case DONE: + ret = Z_STREAM_END; + break inf_leave; + case BAD: + ret = Z_DATA_ERROR; + break inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + /* falls through */ + default: + return Z_STREAM_ERROR; + } + } + + // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" + + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ + + //--- RESTORE() --- + strm.next_out = put; + strm.avail_out = left; + strm.next_in = next; + strm.avail_in = have; + state.hold = hold; + state.bits = bits; + //--- + + if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && + (state.mode < CHECK || flush !== Z_FINISH))) { + if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { + state.mode = MEM; + return Z_MEM_ERROR; + } + } + _in -= strm.avail_in; + _out -= strm.avail_out; + strm.total_in += _in; + strm.total_out += _out; + state.total += _out; + if (state.wrap && _out) { + strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ + (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out)); + } + strm.data_type = state.bits + (state.last ? 64 : 0) + + (state.mode === TYPE ? 128 : 0) + + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); + if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) { + ret = Z_BUF_ERROR; + } + return ret; +} + +function inflateEnd(strm) { + + if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) { + return Z_STREAM_ERROR; + } + + var state = strm.state; + if (state.window) { + state.window = null; + } + strm.state = null; + return Z_OK; +} + +function inflateGetHeader(strm, head) { + var state; + + /* check state */ + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + state = strm.state; + if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; } + + /* save header structure */ + state.head = head; + head.done = false; + return Z_OK; +} + +function inflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; + + var state; + var dictid; + var ret; + + /* check state */ + if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; } + state = strm.state; + + if (state.wrap !== 0 && state.mode !== DICT) { + return Z_STREAM_ERROR; + } + + /* check for correct dictionary identifier */ + if (state.mode === DICT) { + dictid = 1; /* adler32(0, null, 0)*/ + /* dictid = adler32(dictid, dictionary, dictLength); */ + dictid = adler32(dictid, dictionary, dictLength, 0); + if (dictid !== state.check) { + return Z_DATA_ERROR; + } + } + /* copy dictionary to window using updatewindow(), which will amend the + existing dictionary if appropriate */ + ret = updatewindow(strm, dictionary, dictLength, dictLength); + if (ret) { + state.mode = MEM; + return Z_MEM_ERROR; + } + state.havedict = 1; + // Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} + +exports.inflateReset = inflateReset; +exports.inflateReset2 = inflateReset2; +exports.inflateResetKeep = inflateResetKeep; +exports.inflateInit = inflateInit; +exports.inflateInit2 = inflateInit2; +exports.inflate = inflate; +exports.inflateEnd = inflateEnd; +exports.inflateGetHeader = inflateGetHeader; +exports.inflateSetDictionary = inflateSetDictionary; +exports.inflateInfo = 'pako inflate (from Nodeca project)'; + +/* Not implemented +exports.inflateCopy = inflateCopy; +exports.inflateGetDictionary = inflateGetDictionary; +exports.inflateMark = inflateMark; +exports.inflatePrime = inflatePrime; +exports.inflateSync = inflateSync; +exports.inflateSyncPoint = inflateSyncPoint; +exports.inflateUndermine = inflateUndermine; +*/ + +},{"../utils/common":36,"./adler32":37,"./crc32":39,"./inffast":41,"./inftrees":43}],43:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +var utils = require('../utils/common'); + +var MAXBITS = 15; +var ENOUGH_LENS = 852; +var ENOUGH_DISTS = 592; +//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); + +var CODES = 0; +var LENS = 1; +var DISTS = 2; + +var lbase = [ /* Length codes 257..285 base */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 +]; + +var lext = [ /* Length codes 257..285 extra */ + 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 +]; + +var dbase = [ /* Distance codes 0..29 base */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577, 0, 0 +]; + +var dext = [ /* Distance codes 0..29 extra */ + 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, + 28, 28, 29, 29, 64, 64 +]; + +module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) +{ + var bits = opts.bits; + //here = opts.here; /* table entry for duplication */ + + var len = 0; /* a code's length in bits */ + var sym = 0; /* index of code symbols */ + var min = 0, max = 0; /* minimum and maximum code lengths */ + var root = 0; /* number of index bits for root table */ + var curr = 0; /* number of index bits for current table */ + var drop = 0; /* code bits to drop for sub-table */ + var left = 0; /* number of prefix codes available */ + var used = 0; /* code entries in table used */ + var huff = 0; /* Huffman code */ + var incr; /* for incrementing code, index */ + var fill; /* index for replicating entries */ + var low; /* low bits for current root entry */ + var mask; /* mask for low root bits */ + var next; /* next available space in table */ + var base = null; /* base value table to use */ + var base_index = 0; +// var shoextra; /* extra bits table to use */ + var end; /* use base and extra for symbol > end */ + var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */ + var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */ + var extra = null; + var extra_index = 0; + + var here_bits, here_op, here_val; + + /* + Process a set of code lengths to create a canonical Huffman code. The + code lengths are lens[0..codes-1]. Each length corresponds to the + symbols 0..codes-1. The Huffman code is generated by first sorting the + symbols by length from short to long, and retaining the symbol order + for codes with equal lengths. Then the code starts with all zero bits + for the first code of the shortest length, and the codes are integer + increments for the same length, and zeros are appended as the length + increases. For the deflate format, these bits are stored backwards + from their more natural integer increment ordering, and so when the + decoding tables are built in the large loop below, the integer codes + are incremented backwards. + + This routine assumes, but does not check, that all of the entries in + lens[] are in the range 0..MAXBITS. The caller must assure this. + 1..MAXBITS is interpreted as that code length. zero means that that + symbol does not occur in this code. + + The codes are sorted by computing a count of codes for each length, + creating from that a table of starting indices for each length in the + sorted table, and then entering the symbols in order in the sorted + table. The sorted table is work[], with that space being provided by + the caller. + + The length counts are used for other purposes as well, i.e. finding + the minimum and maximum length codes, determining if there are any + codes at all, checking for a valid set of lengths, and looking ahead + at length counts to determine sub-table sizes when building the + decoding tables. + */ + + /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ + for (len = 0; len <= MAXBITS; len++) { + count[len] = 0; + } + for (sym = 0; sym < codes; sym++) { + count[lens[lens_index + sym]]++; + } + + /* bound code lengths, force root to be within code lengths */ + root = bits; + for (max = MAXBITS; max >= 1; max--) { + if (count[max] !== 0) { break; } + } + if (root > max) { + root = max; + } + if (max === 0) { /* no symbols to code at all */ + //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ + //table.bits[opts.table_index] = 1; //here.bits = (var char)1; + //table.val[opts.table_index++] = 0; //here.val = (var short)0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; + + + //table.op[opts.table_index] = 64; + //table.bits[opts.table_index] = 1; + //table.val[opts.table_index++] = 0; + table[table_index++] = (1 << 24) | (64 << 16) | 0; + + opts.bits = 1; + return 0; /* no symbols, but wait for decoding to report error */ + } + for (min = 1; min < max; min++) { + if (count[min] !== 0) { break; } + } + if (root < min) { + root = min; + } + + /* check for an over-subscribed or incomplete set of lengths */ + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) { + return -1; + } /* over-subscribed */ + } + if (left > 0 && (type === CODES || max !== 1)) { + return -1; /* incomplete set */ + } + + /* generate offsets into symbol table for each length for sorting */ + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) { + offs[len + 1] = offs[len] + count[len]; + } + + /* sort symbols by length, by symbol order within each length */ + for (sym = 0; sym < codes; sym++) { + if (lens[lens_index + sym] !== 0) { + work[offs[lens[lens_index + sym]]++] = sym; + } + } + + /* + Create and fill in decoding tables. In this loop, the table being + filled is at next and has curr index bits. The code being used is huff + with length len. That code is converted to an index by dropping drop + bits off of the bottom. For codes where len is less than drop + curr, + those top drop + curr - len bits are incremented through all values to + fill the table with replicated entries. + + root is the number of index bits for the root table. When len exceeds + root, sub-tables are created pointed to by the root entry with an index + of the low root bits of huff. This is saved in low to check for when a + new sub-table should be started. drop is zero when the root table is + being filled, and drop is root when sub-tables are being filled. + + When a new sub-table is needed, it is necessary to look ahead in the + code lengths to determine what size sub-table is needed. The length + counts are used for this, and so count[] is decremented as codes are + entered in the tables. + + used keeps track of how many table entries have been allocated from the + provided *table space. It is checked for LENS and DIST tables against + the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in + the initial root table size constants. See the comments in inftrees.h + for more information. + + sym increments through all symbols, and the loop terminates when + all codes of length max, i.e. all codes, have been processed. This + routine permits incomplete codes, so another loop after this one fills + in the rest of the decoding tables with invalid code markers. + */ + + /* set up for code type */ + // poor man optimization - use if-else instead of switch, + // to avoid deopts in old v8 + if (type === CODES) { + base = extra = work; /* dummy value--not used */ + end = 19; + + } else if (type === LENS) { + base = lbase; + base_index -= 257; + extra = lext; + extra_index -= 257; + end = 256; + + } else { /* DISTS */ + base = dbase; + extra = dext; + end = -1; + } + + /* initialize opts for loop */ + huff = 0; /* starting code */ + sym = 0; /* starting code symbol */ + len = min; /* starting code length */ + next = table_index; /* current table to fill in */ + curr = root; /* current table index bits */ + drop = 0; /* current bits to drop from code for index */ + low = -1; /* trigger new sub-table when len > root */ + used = 1 << root; /* use root table entries */ + mask = used - 1; /* mask for comparing low */ + + /* check available table space */ + if ((type === LENS && used > ENOUGH_LENS) || + (type === DISTS && used > ENOUGH_DISTS)) { + return 1; + } + + /* process all codes and make table entries */ + for (;;) { + /* create table entry */ + here_bits = len - drop; + if (work[sym] < end) { + here_op = 0; + here_val = work[sym]; + } + else if (work[sym] > end) { + here_op = extra[extra_index + work[sym]]; + here_val = base[base_index + work[sym]]; + } + else { + here_op = 32 + 64; /* end of block */ + here_val = 0; + } + + /* replicate for those indices with low len bits equal to huff */ + incr = 1 << (len - drop); + fill = 1 << curr; + min = fill; /* save offset to next table */ + do { + fill -= incr; + table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; + } while (fill !== 0); + + /* backwards increment the len-bit code huff */ + incr = 1 << (len - 1); + while (huff & incr) { + incr >>= 1; + } + if (incr !== 0) { + huff &= incr - 1; + huff += incr; + } else { + huff = 0; + } + + /* go to next symbol, update count, len */ + sym++; + if (--count[len] === 0) { + if (len === max) { break; } + len = lens[lens_index + work[sym]]; + } + + /* create new sub-table if needed */ + if (len > root && (huff & mask) !== low) { + /* if first time, transition to sub-tables */ + if (drop === 0) { + drop = root; + } + + /* increment past last table */ + next += min; /* here min is 1 << curr */ + + /* determine length of next table */ + curr = len - drop; + left = 1 << curr; + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) { break; } + curr++; + left <<= 1; + } + + /* check for enough space */ + used += 1 << curr; + if ((type === LENS && used > ENOUGH_LENS) || + (type === DISTS && used > ENOUGH_DISTS)) { + return 1; + } + + /* point entry in root table to sub-table */ + low = huff & mask; + /*table.op[low] = curr; + table.bits[low] = root; + table.val[low] = next - opts.table_index;*/ + table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; + } + } + + /* fill in remaining table entry if code is incomplete (guaranteed to have + at most one remaining entry, since if the code is incomplete, the + maximum code length that was allowed to get this far is one bit) */ + if (huff !== 0) { + //table.op[next + huff] = 64; /* invalid code marker */ + //table.bits[next + huff] = len - drop; + //table.val[next + huff] = 0; + table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; + } + + /* set return parameters */ + //opts.table_index += used; + opts.bits = root; + return 0; +}; + +},{"../utils/common":36}],44:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +module.exports = { + 2: 'need dictionary', /* Z_NEED_DICT 2 */ + 1: 'stream end', /* Z_STREAM_END 1 */ + 0: '', /* Z_OK 0 */ + '-1': 'file error', /* Z_ERRNO (-1) */ + '-2': 'stream error', /* Z_STREAM_ERROR (-2) */ + '-3': 'data error', /* Z_DATA_ERROR (-3) */ + '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */ + '-5': 'buffer error', /* Z_BUF_ERROR (-5) */ + '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ +}; + +},{}],45:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +/* eslint-disable space-unary-ops */ + +var utils = require('../utils/common'); + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +//var Z_FILTERED = 1; +//var Z_HUFFMAN_ONLY = 2; +//var Z_RLE = 3; +var Z_FIXED = 4; +//var Z_DEFAULT_STRATEGY = 0; + +/* Possible values of the data_type field (though see inflate()) */ +var Z_BINARY = 0; +var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; + +/*============================================================================*/ + + +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } + +// From zutil.h + +var STORED_BLOCK = 0; +var STATIC_TREES = 1; +var DYN_TREES = 2; +/* The three kinds of block type */ + +var MIN_MATCH = 3; +var MAX_MATCH = 258; +/* The minimum and maximum match lengths */ + +// From deflate.h +/* =========================================================================== + * Internal compression state. + */ + +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ + +var LITERALS = 256; +/* number of literal bytes 0..255 */ + +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ + +var D_CODES = 30; +/* number of distance codes */ + +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ + +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ + +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ + +var Buf_size = 16; +/* size of bit buffer in bi_buf */ + + +/* =========================================================================== + * Constants + */ + +var MAX_BL_BITS = 7; +/* Bit length codes must not exceed MAX_BL_BITS bits */ + +var END_BLOCK = 256; +/* end of block literal code */ + +var REP_3_6 = 16; +/* repeat previous bit length 3-6 times (2 bits of repeat count) */ + +var REPZ_3_10 = 17; +/* repeat a zero length 3-10 times (3 bits of repeat count) */ + +var REPZ_11_138 = 18; +/* repeat a zero length 11-138 times (7 bits of repeat count) */ + +/* eslint-disable comma-spacing,array-bracket-spacing */ +var extra_lbits = /* extra bits for each length code */ + [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]; + +var extra_dbits = /* extra bits for each distance code */ + [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]; + +var extra_blbits = /* extra bits for each bit length code */ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]; + +var bl_order = + [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]; +/* eslint-enable comma-spacing,array-bracket-spacing */ + +/* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ + +/* =========================================================================== + * Local data. These are initialized only once. + */ + +// We pre-fill arrays with 0 to avoid uninitialized gaps + +var DIST_CODE_LEN = 512; /* see definition of array dist_code below */ + +// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 +var static_ltree = new Array((L_CODES + 2) * 2); +zero(static_ltree); +/* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ + +var static_dtree = new Array(D_CODES * 2); +zero(static_dtree); +/* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) + */ + +var _dist_code = new Array(DIST_CODE_LEN); +zero(_dist_code); +/* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ + +var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); +zero(_length_code); +/* length code for each normalized match length (0 == MIN_MATCH) */ + +var base_length = new Array(LENGTH_CODES); +zero(base_length); +/* First normalized length for each code (0 = MIN_MATCH) */ + +var base_dist = new Array(D_CODES); +zero(base_dist); +/* First normalized distance for each code (0 = distance of 1) */ + + +function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { + + this.static_tree = static_tree; /* static tree or NULL */ + this.extra_bits = extra_bits; /* extra bits for each code or NULL */ + this.extra_base = extra_base; /* base index for extra_bits */ + this.elems = elems; /* max number of elements in the tree */ + this.max_length = max_length; /* max bit length for the codes */ + + // show if `static_tree` has data or dummy - needed for monomorphic objects + this.has_stree = static_tree && static_tree.length; +} + + +var static_l_desc; +var static_d_desc; +var static_bl_desc; + + +function TreeDesc(dyn_tree, stat_desc) { + this.dyn_tree = dyn_tree; /* the dynamic tree */ + this.max_code = 0; /* largest code with non zero frequency */ + this.stat_desc = stat_desc; /* the corresponding static tree */ +} + + + +function d_code(dist) { + return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; +} + + +/* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +function put_short(s, w) { +// put_byte(s, (uch)((w) & 0xff)); +// put_byte(s, (uch)((ush)(w) >> 8)); + s.pending_buf[s.pending++] = (w) & 0xff; + s.pending_buf[s.pending++] = (w >>> 8) & 0xff; +} + + +/* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ +function send_bits(s, value, length) { + if (s.bi_valid > (Buf_size - length)) { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + put_short(s, s.bi_buf); + s.bi_buf = value >> (Buf_size - s.bi_valid); + s.bi_valid += length - Buf_size; + } else { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + s.bi_valid += length; + } +} + + +function send_code(s, c, tree) { + send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/); +} + + +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +function bi_reverse(code, len) { + var res = 0; + do { + res |= code & 1; + code >>>= 1; + res <<= 1; + } while (--len > 0); + return res >>> 1; +} + + +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +function bi_flush(s) { + if (s.bi_valid === 16) { + put_short(s, s.bi_buf); + s.bi_buf = 0; + s.bi_valid = 0; + + } else if (s.bi_valid >= 8) { + s.pending_buf[s.pending++] = s.bi_buf & 0xff; + s.bi_buf >>= 8; + s.bi_valid -= 8; + } +} + + +/* =========================================================================== + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. + */ +function gen_bitlen(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var max_code = desc.max_code; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var extra = desc.stat_desc.extra_bits; + var base = desc.stat_desc.extra_base; + var max_length = desc.stat_desc.max_length; + var h; /* heap index */ + var n, m; /* iterate over the tree elements */ + var bits; /* bit length */ + var xbits; /* extra bits */ + var f; /* frequency */ + var overflow = 0; /* number of elements with bit length too large */ + + for (bits = 0; bits <= MAX_BITS; bits++) { + s.bl_count[bits] = 0; + } + + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). + */ + tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */ + + for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { + n = s.heap[h]; + bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1; + if (bits > max_length) { + bits = max_length; + overflow++; + } + tree[n * 2 + 1]/*.Len*/ = bits; + /* We overwrite tree[n].Dad which is no longer needed */ + + if (n > max_code) { continue; } /* not a leaf node */ + + s.bl_count[bits]++; + xbits = 0; + if (n >= base) { + xbits = extra[n - base]; + } + f = tree[n * 2]/*.Freq*/; + s.opt_len += f * (bits + xbits); + if (has_stree) { + s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits); + } + } + if (overflow === 0) { return; } + + // Trace((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length - 1; + while (s.bl_count[bits] === 0) { bits--; } + s.bl_count[bits]--; /* move one leaf down the tree */ + s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */ + s.bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); + + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits !== 0; bits--) { + n = s.bl_count[bits]; + while (n !== 0) { + m = s.heap[--h]; + if (m > max_code) { continue; } + if (tree[m * 2 + 1]/*.Len*/ !== bits) { + // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/; + tree[m * 2 + 1]/*.Len*/ = bits; + } + n--; + } + } +} + + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +function gen_codes(tree, max_code, bl_count) +// ct_data *tree; /* the tree to decorate */ +// int max_code; /* largest code with non zero frequency */ +// ushf *bl_count; /* number of codes at each bit length */ +{ + var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */ + var code = 0; /* running code value */ + var bits; /* bit index */ + var n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + next_code[bits] = code = (code + bl_count[bits - 1]) << 1; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES - 1; code++) { + base_length[code] = length; + for (n = 0; n < (1 << extra_lbits[code]); n++) { + _length_code[length++] = code; + } + } + //Assert (length == 256, "tr_static_init: length != 256"); + /* Note that the length 255 (match length 258) can be represented + * in two different ways: code 284 + 5 bits or code 285, so we + * overwrite length_code[255] to use the best encoding: + */ + _length_code[length - 1] = code; + + /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ + dist = 0; + for (code = 0; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1 << extra_dbits[code]); n++) { + _dist_code[dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: dist != 256"); + dist >>= 7; /* from now on, all distances are divided by 128 */ + for (; code < D_CODES; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { + _dist_code[256 + dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: 256+dist != 512"); + + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS; bits++) { + bl_count[bits] = 0; + } + + n = 0; + while (n <= 143) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + while (n <= 255) { + static_ltree[n * 2 + 1]/*.Len*/ = 9; + n++; + bl_count[9]++; + } + while (n <= 279) { + static_ltree[n * 2 + 1]/*.Len*/ = 7; + n++; + bl_count[7]++; + } + while (n <= 287) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes(static_ltree, L_CODES + 1, bl_count); + + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES; n++) { + static_dtree[n * 2 + 1]/*.Len*/ = 5; + static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5); + } + + // Now data ready and we can init static trees + static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); + static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); + static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); + + //static_init_done = true; +} + + +/* =========================================================================== + * Initialize a new block. + */ +function init_block(s) { + var n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; } + + s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1; + s.opt_len = s.static_len = 0; + s.last_lit = s.matches = 0; +} + + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +function bi_windup(s) +{ + if (s.bi_valid > 8) { + put_short(s, s.bi_buf); + } else if (s.bi_valid > 0) { + //put_byte(s, (Byte)s->bi_buf); + s.pending_buf[s.pending++] = s.bi_buf; + } + s.bi_buf = 0; + s.bi_valid = 0; +} + +/* =========================================================================== + * Copy a stored block, storing first the length and its + * one's complement if requested. + */ +function copy_block(s, buf, len, header) +//DeflateState *s; +//charf *buf; /* the input data */ +//unsigned len; /* its length */ +//int header; /* true if block header must be written */ +{ + bi_windup(s); /* align on byte boundary */ + + if (header) { + put_short(s, len); + put_short(s, ~len); + } +// while (len--) { +// put_byte(s, *buf++); +// } + utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); + s.pending += len; +} + +/* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ +function smaller(tree, n, m, depth) { + var _n2 = n * 2; + var _m2 = m * 2; + return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ || + (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m])); +} + +/* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ +function pqdownheap(s, tree, k) +// deflate_state *s; +// ct_data *tree; /* the tree to restore */ +// int k; /* node to move down */ +{ + var v = s.heap[k]; + var j = k << 1; /* left son of k */ + while (j <= s.heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s.heap_len && + smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s.heap[j], s.depth)) { break; } + + /* Exchange v with the smallest son */ + s.heap[k] = s.heap[j]; + k = j; + + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s.heap[k] = v; +} + + +// inlined manually +// var SMALLEST = 1; + +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +function compress_block(s, ltree, dtree) +// deflate_state *s; +// const ct_data *ltree; /* literal tree */ +// const ct_data *dtree; /* distance tree */ +{ + var dist; /* distance of matched string */ + var lc; /* match length or unmatched char (if dist == 0) */ + var lx = 0; /* running index in l_buf */ + var code; /* the code to send */ + var extra; /* number of extra bits to send */ + + if (s.last_lit !== 0) { + do { + dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]); + lc = s.pending_buf[s.l_buf + lx]; + lx++; + + if (dist === 0) { + send_code(s, lc, ltree); /* send a literal byte */ + //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code + LITERALS + 1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra !== 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + //Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra !== 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + // "pendingBuf overflow"); + + } while (lx < s.last_lit); + } + + send_code(s, END_BLOCK, ltree); +} + + +/* =========================================================================== + * Construct one Huffman tree and assigns the code bit strings and lengths. + * Update the total bit length for the current block. + * IN assertion: the field freq is set for all tree elements. + * OUT assertions: the fields len and code are set to the optimal bit length + * and corresponding code. The length opt_len is updated; static_len is + * also updated if stree is not null. The field max_code is set. + */ +function build_tree(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var elems = desc.stat_desc.elems; + var n, m; /* iterate over heap elements */ + var max_code = -1; /* largest code with non zero frequency */ + var node; /* new node being created */ + + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s.heap_len = 0; + s.heap_max = HEAP_SIZE; + + for (n = 0; n < elems; n++) { + if (tree[n * 2]/*.Freq*/ !== 0) { + s.heap[++s.heap_len] = max_code = n; + s.depth[n] = 0; + + } else { + tree[n * 2 + 1]/*.Len*/ = 0; + } + } + + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s.heap_len < 2) { + node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); + tree[node * 2]/*.Freq*/ = 1; + s.depth[node] = 0; + s.opt_len--; + + if (has_stree) { + s.static_len -= stree[node * 2 + 1]/*.Len*/; + } + /* node is 0 or 1 so it does not have extra bits */ + } + desc.max_code = max_code; + + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); } + + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + //pqremove(s, tree, n); /* n = node of least frequency */ + /*** pqremove ***/ + n = s.heap[1/*SMALLEST*/]; + s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--]; + pqdownheap(s, tree, 1/*SMALLEST*/); + /***/ + + m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */ + + s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */ + s.heap[--s.heap_max] = m; + + /* Create a new node father of n and m */ + tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/; + s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; + tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node; + + /* and insert the new node in the heap */ + s.heap[1/*SMALLEST*/] = node++; + pqdownheap(s, tree, 1/*SMALLEST*/); + + } while (s.heap_len >= 2); + + s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/]; + + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, desc); + + /* The field len is now set, we can generate the bit codes */ + gen_codes(tree, max_code, s.bl_count); +} + + +/* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ +function scan_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ + + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ + + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ + + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */ + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; + + if (++count < max_count && curlen === nextlen) { + continue; + + } else if (count < min_count) { + s.bl_tree[curlen * 2]/*.Freq*/ += count; + + } else if (curlen !== 0) { + + if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; } + s.bl_tree[REP_3_6 * 2]/*.Freq*/++; + + } else if (count <= 10) { + s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++; + + } else { + s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++; + } + + count = 0; + prevlen = curlen; + + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } +} + + +/* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ +function send_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ + + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ + + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ + + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; + + if (++count < max_count && curlen === nextlen) { + continue; + + } else if (count < min_count) { + do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); + + } else if (curlen !== 0) { + if (curlen !== prevlen) { + send_code(s, curlen, s.bl_tree); + count--; + } + //Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s.bl_tree); + send_bits(s, count - 3, 2); + + } else if (count <= 10) { + send_code(s, REPZ_3_10, s.bl_tree); + send_bits(s, count - 3, 3); + + } else { + send_code(s, REPZ_11_138, s.bl_tree); + send_bits(s, count - 11, 7); + } + + count = 0; + prevlen = curlen; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } +} + + +/* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. + */ +function build_bl_tree(s) { + var max_blindex; /* index of last bit length code of non zero freq */ + + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, s.dyn_ltree, s.l_desc.max_code); + scan_tree(s, s.dyn_dtree, s.d_desc.max_code); + + /* Build the bit length tree: */ + build_tree(s, s.bl_desc); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ + + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { + if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) { + break; + } + } + /* Update opt_len to include the bit length tree and counts */ + s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; + //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + // s->opt_len, s->static_len)); + + return max_blindex; +} + + +/* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + */ +function send_all_trees(s, lcodes, dcodes, blcodes) +// deflate_state *s; +// int lcodes, dcodes, blcodes; /* number of codes for each tree */ +{ + var rank; /* index in bl_order */ + + //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + // "too many codes"); + //Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); + } + //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ + //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ + //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); +} + + +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "black list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +function detect_data_type(s) { + /* black_mask is the bit mask of black-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + var black_mask = 0xf3ffc07f; + var n; + + /* Check for non-textual ("black-listed") bytes. */ + for (n = 0; n <= 31; n++, black_mask >>>= 1) { + if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) { + return Z_BINARY; + } + } + + /* Check for textual ("white-listed") bytes. */ + if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 || + s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + for (n = 32; n < LITERALS; n++) { + if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + } + + /* There are no "black-listed" or "white-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} + + +var static_init_done = false; + +/* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ +function _tr_init(s) +{ + + if (!static_init_done) { + tr_static_init(); + static_init_done = true; + } + + s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); + s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); + s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); + + s.bi_buf = 0; + s.bi_valid = 0; + + /* Initialize the first block of the first file: */ + init_block(s); +} + + +/* =========================================================================== + * Send a stored block + */ +function _tr_stored_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */ + copy_block(s, buf, stored_len, true); /* with header */ +} + + +/* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + */ +function _tr_align(s) { + send_bits(s, STATIC_TREES << 1, 3); + send_code(s, END_BLOCK, static_ltree); + bi_flush(s); +} + + +/* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and output the encoded block to the zip file. + */ +function _tr_flush_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block, or NULL if too old */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + var opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + var max_blindex = 0; /* index of last bit length code of non zero freq */ + + /* Build the Huffman trees unless a stored block is forced */ + if (s.level > 0) { + + /* Check if the file is binary or text */ + if (s.strm.data_type === Z_UNKNOWN) { + s.strm.data_type = detect_data_type(s); + } + + /* Construct the literal and distance trees */ + build_tree(s, s.l_desc); + // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + + build_tree(s, s.d_desc); + // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ + + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); + + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s.opt_len + 3 + 7) >>> 3; + static_lenb = (s.static_len + 3 + 7) >>> 3; + + // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + // s->last_lit)); + + if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } + + } else { + // Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + } + + if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) { + /* 4: two words for the lengths */ + + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block(s, buf, stored_len, last); + + } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { + + send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); + compress_block(s, static_ltree, static_dtree); + + } else { + send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); + send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); + compress_block(s, s.dyn_ltree, s.dyn_dtree); + } + // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); + + if (last) { + bi_windup(s); + } + // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + // s->compressed_len-7*last)); +} + +/* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ +function _tr_tally(s, dist, lc) +// deflate_state *s; +// unsigned dist; /* distance of matched string */ +// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ +{ + //var out_length, in_length, dcode; + + s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff; + s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; + + s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; + s.last_lit++; + + if (dist === 0) { + /* lc is the unmatched char */ + s.dyn_ltree[lc * 2]/*.Freq*/++; + } else { + s.matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + //Assert((ush)dist < (ush)MAX_DIST(s) && + // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); + + s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++; + s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++; + } + +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility + +//#ifdef TRUNCATE_BLOCK +// /* Try to guess if it is profitable to stop the current block here */ +// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { +// /* Compute an upper bound for the compressed length */ +// out_length = s.last_lit*8; +// in_length = s.strstart - s.block_start; +// +// for (dcode = 0; dcode < D_CODES; dcode++) { +// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); +// } +// out_length >>>= 3; +// //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", +// // s->last_lit, in_length, out_length, +// // 100L - out_length*100L/in_length)); +// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { +// return true; +// } +// } +//#endif + + return (s.last_lit === s.lit_bufsize - 1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ +} + +exports._tr_init = _tr_init; +exports._tr_stored_block = _tr_stored_block; +exports._tr_flush_block = _tr_flush_block; +exports._tr_tally = _tr_tally; +exports._tr_align = _tr_align; + +},{"../utils/common":36}],46:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +function ZStream() { + /* next input byte */ + this.input = null; // JS specific, because we have no pointers + this.next_in = 0; + /* number of bytes available at input */ + this.avail_in = 0; + /* total number of input bytes read so far */ + this.total_in = 0; + /* next output byte should be put there */ + this.output = null; // JS specific, because we have no pointers + this.next_out = 0; + /* remaining free space at output */ + this.avail_out = 0; + /* total number of bytes output so far */ + this.total_out = 0; + /* last error message, NULL if no error */ + this.msg = ''/*Z_NULL*/; + /* not visible by applications */ + this.state = null; + /* best guess about the data type: binary or text */ + this.data_type = 2/*Z_UNKNOWN*/; + /* adler32 value of the uncompressed data */ + this.adler = 0; +} + +module.exports = ZStream; + +},{}],47:[function(require,module,exports){ +arguments[4][33][0].apply(exports,arguments) +},{"dup":33}],48:[function(require,module,exports){ +(function (Buffer){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') +var customInspectSymbol = + (typeof Symbol === 'function' && typeof Symbol.for === 'function') + ? Symbol.for('nodejs.util.inspect.custom') + : null + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +var K_MAX_LENGTH = 0x7fffffff +exports.kMaxLength = K_MAX_LENGTH + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Print warning and recommend using `buffer` v4.x which has an Object + * implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * We report that the browser does not support typed arrays if the are not subclassable + * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` + * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support + * for __proto__ and has a buggy typed array implementation. + */ +Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport() + +if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && + typeof console.error === 'function') { + console.error( + 'This browser lacks typed array (Uint8Array) support which is required by ' + + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.' + ) +} + +function typedArraySupport () { + // Can typed array instances can be augmented? + try { + var arr = new Uint8Array(1) + var proto = { foo: function () { return 42 } } + Object.setPrototypeOf(proto, Uint8Array.prototype) + Object.setPrototypeOf(arr, proto) + return arr.foo() === 42 + } catch (e) { + return false + } +} + +Object.defineProperty(Buffer.prototype, 'parent', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.buffer + } +}) + +Object.defineProperty(Buffer.prototype, 'offset', { + enumerable: true, + get: function () { + if (!Buffer.isBuffer(this)) return undefined + return this.byteOffset + } +}) + +function createBuffer (length) { + if (length > K_MAX_LENGTH) { + throw new RangeError('The value "' + length + '" is invalid for option "size"') + } + // Return an augmented `Uint8Array` instance + var buf = new Uint8Array(length) + Object.setPrototypeOf(buf, Buffer.prototype) + return buf +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new TypeError( + 'The "string" argument must be of type string. Received type number' + ) + } + return allocUnsafe(arg) + } + return from(arg, encodingOrOffset, length) +} + +// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 +if (typeof Symbol !== 'undefined' && Symbol.species != null && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true, + enumerable: false, + writable: false + }) +} + +Buffer.poolSize = 8192 // not used by this implementation + +function from (value, encodingOrOffset, length) { + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + if (ArrayBuffer.isView(value)) { + return fromArrayLike(value) + } + + if (value == null) { + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) + } + + if (isInstance(value, ArrayBuffer) || + (value && isInstance(value.buffer, ArrayBuffer))) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'number') { + throw new TypeError( + 'The "value" argument must not be of type number. Received type number' + ) + } + + var valueOf = value.valueOf && value.valueOf() + if (valueOf != null && valueOf !== value) { + return Buffer.from(valueOf, encodingOrOffset, length) + } + + var b = fromObject(value) + if (b) return b + + if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && + typeof value[Symbol.toPrimitive] === 'function') { + return Buffer.from( + value[Symbol.toPrimitive]('string'), encodingOrOffset, length + ) + } + + throw new TypeError( + 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + + 'or Array-like Object. Received type ' + (typeof value) + ) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(value, encodingOrOffset, length) +} + +// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: +// https://github.com/feross/buffer/pull/148 +Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype) +Object.setPrototypeOf(Buffer, Uint8Array) + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be of type number') + } else if (size < 0) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } +} + +function alloc (size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(size).fill(fill, encoding) + : createBuffer(size).fill(fill) + } + return createBuffer(size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(size, fill, encoding) +} + +function allocUnsafe (size) { + assertSize(size) + return createBuffer(size < 0 ? 0 : checked(size) | 0) +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(size) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + + var length = byteLength(string, encoding) | 0 + var buf = createBuffer(length) + + var actual = buf.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + buf = buf.slice(0, actual) + } + + return buf +} + +function fromArrayLike (array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + var buf = createBuffer(length) + for (var i = 0; i < length; i += 1) { + buf[i] = array[i] & 255 + } + return buf +} + +function fromArrayBuffer (array, byteOffset, length) { + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('"offset" is outside of buffer bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('"length" is outside of buffer bounds') + } + + var buf + if (byteOffset === undefined && length === undefined) { + buf = new Uint8Array(array) + } else if (length === undefined) { + buf = new Uint8Array(array, byteOffset) + } else { + buf = new Uint8Array(array, byteOffset, length) + } + + // Return an augmented `Uint8Array` instance + Object.setPrototypeOf(buf, Buffer.prototype) + + return buf +} + +function fromObject (obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + var buf = createBuffer(len) + + if (buf.length === 0) { + return buf + } + + obj.copy(buf, 0, 0, len) + return buf + } + + if (obj.length !== undefined) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { + return createBuffer(0) + } + return fromArrayLike(obj) + } + + if (obj.type === 'Buffer' && Array.isArray(obj.data)) { + return fromArrayLike(obj.data) + } +} + +function checked (length) { + // Note: cannot use `length < K_MAX_LENGTH` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= K_MAX_LENGTH) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return b != null && b._isBuffer === true && + b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false +} + +Buffer.compare = function compare (a, b) { + if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength) + if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength) + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError( + 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' + ) + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!Array.isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (isInstance(buf, Uint8Array)) { + buf = Buffer.from(buf) + } + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + throw new TypeError( + 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + + 'Received type ' + typeof string + ) + } + + var len = string.length + var mustMatch = (arguments.length > 2 && arguments[2] === true) + if (!mustMatch && len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) { + return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8 + } + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) +// to detect a Buffer instance. It's not possible to use `instanceof Buffer` +// reliably in a browserify context because there could be multiple different +// copies of the 'buffer' package in use. This method works even for Buffer +// instances that were created from another copy of the `buffer` package. +// See: https://github.com/feross/buffer/issues/154 +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.toLocaleString = Buffer.prototype.toString + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim() + if (this.length > max) str += ' ... ' + return '' +} +if (customInspectSymbol) { + Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (isInstance(target, Uint8Array)) { + target = Buffer.from(target, target.offset, target.byteLength) + } + if (!Buffer.isBuffer(target)) { + throw new TypeError( + 'The "target" argument must be one of type Buffer or Uint8Array. ' + + 'Received type ' + (typeof target) + ) + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (numberIsNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [val], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (numberIsNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset >>> 0 + if (isFinite(length)) { + length = length >>> 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += hexSliceLookupTable[buf[i]] + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256)) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf = this.subarray(start, end) + // Return an augmented `Uint8Array` instance + Object.setPrototypeOf(newBuf, Buffer.prototype) + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + offset = offset >>> 0 + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + byteLength = byteLength >>> 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + var limit = Math.pow(2, (8 * byteLength) - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + value = +value + offset = offset >>> 0 + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer') + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('Index out of range') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + + if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { + // Use built-in when available, missing from IE11 + this.copyWithin(targetStart, start, end) + } else if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (var i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, end), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if ((encoding === 'utf8' && code < 128) || + encoding === 'latin1') { + // Fast path: If `val` fits into a single byte, use that numeric value. + val = code + } + } + } else if (typeof val === 'number') { + val = val & 255 + } else if (typeof val === 'boolean') { + val = Number(val) + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : Buffer.from(val, encoding) + var len = bytes.length + if (len === 0) { + throw new TypeError('The value "' + val + + '" is invalid for argument "value"') + } + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node takes equal signs as end of the Base64 encoding + str = str.split('=')[0] + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = str.trim().replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass +// the `instanceof` check but they should be treated as of that type. +// See: https://github.com/feross/buffer/issues/166 +function isInstance (obj, type) { + return obj instanceof type || + (obj != null && obj.constructor != null && obj.constructor.name != null && + obj.constructor.name === type.name) +} +function numberIsNaN (obj) { + // For IE11 support + return obj !== obj // eslint-disable-line no-self-compare +} + +// Create lookup table for `toString('hex')` +// See: https://github.com/feross/buffer/issues/219 +var hexSliceLookupTable = (function () { + var alphabet = '0123456789abcdef' + var table = new Array(256) + for (var i = 0; i < 16; ++i) { + var i16 = i * 16 + for (var j = 0; j < 16; ++j) { + table[i16 + j] = alphabet[i] + alphabet[j] + } + } + return table +})() + +}).call(this,require("buffer").Buffer) +},{"base64-js":29,"buffer":48,"ieee754":73}],49:[function(require,module,exports){ +var Buffer = require('buffer').Buffer; // for use with browserify + +module.exports = function (a, b) { + if (!Buffer.isBuffer(a)) return undefined; + if (!Buffer.isBuffer(b)) return undefined; + if (typeof a.equals === 'function') return a.equals(b); + if (a.length !== b.length) return false; + + for (var i = 0; i < a.length; i++) { + if (a[i] !== b[i]) return false; + } + + return true; +}; + +},{"buffer":48}],50:[function(require,module,exports){ +module.exports = { + "100": "Continue", + "101": "Switching Protocols", + "102": "Processing", + "200": "OK", + "201": "Created", + "202": "Accepted", + "203": "Non-Authoritative Information", + "204": "No Content", + "205": "Reset Content", + "206": "Partial Content", + "207": "Multi-Status", + "208": "Already Reported", + "226": "IM Used", + "300": "Multiple Choices", + "301": "Moved Permanently", + "302": "Found", + "303": "See Other", + "304": "Not Modified", + "305": "Use Proxy", + "307": "Temporary Redirect", + "308": "Permanent Redirect", + "400": "Bad Request", + "401": "Unauthorized", + "402": "Payment Required", + "403": "Forbidden", + "404": "Not Found", + "405": "Method Not Allowed", + "406": "Not Acceptable", + "407": "Proxy Authentication Required", + "408": "Request Timeout", + "409": "Conflict", + "410": "Gone", + "411": "Length Required", + "412": "Precondition Failed", + "413": "Payload Too Large", + "414": "URI Too Long", + "415": "Unsupported Media Type", + "416": "Range Not Satisfiable", + "417": "Expectation Failed", + "418": "I'm a teapot", + "421": "Misdirected Request", + "422": "Unprocessable Entity", + "423": "Locked", + "424": "Failed Dependency", + "425": "Unordered Collection", + "426": "Upgrade Required", + "428": "Precondition Required", + "429": "Too Many Requests", + "431": "Request Header Fields Too Large", + "451": "Unavailable For Legal Reasons", + "500": "Internal Server Error", + "501": "Not Implemented", + "502": "Bad Gateway", + "503": "Service Unavailable", + "504": "Gateway Timeout", + "505": "HTTP Version Not Supported", + "506": "Variant Also Negotiates", + "507": "Insufficient Storage", + "508": "Loop Detected", + "509": "Bandwidth Limit Exceeded", + "510": "Not Extended", + "511": "Network Authentication Required" +} + +},{}],51:[function(require,module,exports){ +(function (Buffer){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) +},{"../../is-buffer/index.js":76}],52:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var objectCreate = Object.create || objectCreatePolyfill +var objectKeys = Object.keys || objectKeysPolyfill +var bind = Function.prototype.bind || functionBindPolyfill + +function EventEmitter() { + if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) { + this._events = objectCreate(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +var hasDefineProperty; +try { + var o = {}; + if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 }); + hasDefineProperty = o.x === 0; +} catch (err) { hasDefineProperty = false } +if (hasDefineProperty) { + Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + // check whether the input is a positive number (whose value is zero or + // greater and not a NaN). + if (typeof arg !== 'number' || arg < 0 || arg !== arg) + throw new TypeError('"defaultMaxListeners" must be a positive number'); + defaultMaxListeners = arg; + } + }); +} else { + EventEmitter.defaultMaxListeners = defaultMaxListeners; +} + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || isNaN(n)) + throw new TypeError('"n" argument must be a positive number'); + this._maxListeners = n; + return this; +}; + +function $getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return $getMaxListeners(this); +}; + +// These standalone emit* functions are used to optimize calling of event +// handlers for fast cases because emit() itself often has a variable number of +// arguments and can be deoptimized because of that. These functions always have +// the same number of arguments and thus do not get deoptimized, so the code +// inside them can execute faster. +function emitNone(handler, isFn, self) { + if (isFn) + handler.call(self); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self); + } +} +function emitOne(handler, isFn, self, arg1) { + if (isFn) + handler.call(self, arg1); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1); + } +} +function emitTwo(handler, isFn, self, arg1, arg2) { + if (isFn) + handler.call(self, arg1, arg2); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1, arg2); + } +} +function emitThree(handler, isFn, self, arg1, arg2, arg3) { + if (isFn) + handler.call(self, arg1, arg2, arg3); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].call(self, arg1, arg2, arg3); + } +} + +function emitMany(handler, isFn, self, args) { + if (isFn) + handler.apply(self, args); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + listeners[i].apply(self, args); + } +} + +EventEmitter.prototype.emit = function emit(type) { + var er, handler, len, args, i, events; + var doError = (type === 'error'); + + events = this._events; + if (events) + doError = (doError && events.error == null); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + if (arguments.length > 1) + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Unhandled "error" event. (' + er + ')'); + err.context = er; + throw err; + } + return false; + } + + handler = events[type]; + + if (!handler) + return false; + + var isFn = typeof handler === 'function'; + len = arguments.length; + switch (len) { + // fast cases + case 1: + emitNone(handler, isFn, this); + break; + case 2: + emitOne(handler, isFn, this, arguments[1]); + break; + case 3: + emitTwo(handler, isFn, this, arguments[1], arguments[2]); + break; + case 4: + emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); + break; + // slower + default: + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + emitMany(handler, isFn, this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + + events = target._events; + if (!events) { + events = target._events = objectCreate(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (!existing) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + } else { + // If we've already got an array, just append. + if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + } + + // Check for listener leak + if (!existing.warned) { + m = $getMaxListeners(target); + if (m && m > 0 && existing.length > m) { + existing.warned = true; + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' "' + String(type) + '" listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit.'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + if (typeof console === 'object' && console.warn) { + console.warn('%s: %s', w.name, w.message); + } + } + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + switch (arguments.length) { + case 0: + return this.listener.call(this.target); + case 1: + return this.listener.call(this.target, arguments[0]); + case 2: + return this.listener.call(this.target, arguments[0], arguments[1]); + case 3: + return this.listener.call(this.target, arguments[0], arguments[1], + arguments[2]); + default: + var args = new Array(arguments.length); + for (var i = 0; i < args.length; ++i) + args[i] = arguments[i]; + this.listener.apply(this.target, args); + } + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = bind.call(onceWrapper, state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + if (typeof listener !== 'function') + throw new TypeError('"listener" argument must be a function'); + + events = this._events; + if (!events) + return this; + + list = events[type]; + if (!list) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = objectCreate(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else + spliceOne(list, position); + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (!events) + return this; + + // not listening for removeListener, no need to emit + if (!events.removeListener) { + if (arguments.length === 0) { + this._events = objectCreate(null); + this._eventsCount = 0; + } else if (events[type]) { + if (--this._eventsCount === 0) + this._events = objectCreate(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = objectKeys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = objectCreate(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (!events) + return []; + + var evlistener = events[type]; + if (!evlistener) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; +}; + +// About 1.5x faster than the two-arg version of Array#splice(). +function spliceOne(list, index) { + for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) + list[i] = list[k]; + list.pop(); +} + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function objectCreatePolyfill(proto) { + var F = function() {}; + F.prototype = proto; + return new F; +} +function objectKeysPolyfill(obj) { + var keys = []; + for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) { + keys.push(k); + } + return k; +} +function functionBindPolyfill(context) { + var fn = this; + return function () { + return fn.apply(context, arguments); + }; +} + +},{}],53:[function(require,module,exports){ +var Parser = require('./lib/parser'); + +function getGlobal() { + return (1,eval)('this'); +} + +module.exports = { + create: function(buffer, global) { + global = global || getGlobal(); + if(buffer instanceof global.ArrayBuffer) { + var DOMBufferStream = require('./lib/dom-bufferstream'); + return new Parser(new DOMBufferStream(buffer, 0, buffer.byteLength, true, global)); + } else { + var NodeBufferStream = require('./lib/bufferstream'); + return new Parser(new NodeBufferStream(buffer, 0, buffer.length, true)); + } + } +}; + +},{"./lib/bufferstream":54,"./lib/dom-bufferstream":56,"./lib/parser":60}],54:[function(require,module,exports){ +function BufferStream(buffer, offset, length, bigEndian) { + this.buffer = buffer; + this.offset = offset || 0; + length = typeof length === 'number' ? length : buffer.length; + this.endPosition = this.offset + length; + this.setBigEndian(bigEndian); +} + +BufferStream.prototype = { + setBigEndian: function(bigEndian) { + this.bigEndian = !!bigEndian; + }, + nextUInt8: function() { + var value = this.buffer.readUInt8(this.offset); + this.offset += 1; + return value; + }, + nextInt8: function() { + var value = this.buffer.readInt8(this.offset); + this.offset += 1; + return value; + }, + nextUInt16: function() { + var value = this.bigEndian ? this.buffer.readUInt16BE(this.offset) : this.buffer.readUInt16LE(this.offset); + this.offset += 2; + return value; + }, + nextUInt32: function() { + var value = this.bigEndian ? this.buffer.readUInt32BE(this.offset) : this.buffer.readUInt32LE(this.offset); + this.offset += 4; + return value; + }, + nextInt16: function() { + var value = this.bigEndian ? this.buffer.readInt16BE(this.offset) : this.buffer.readInt16LE(this.offset); + this.offset += 2; + return value; + }, + nextInt32: function() { + var value = this.bigEndian ? this.buffer.readInt32BE(this.offset) : this.buffer.readInt32LE(this.offset); + this.offset += 4; + return value; + }, + nextFloat: function() { + var value = this.bigEndian ? this.buffer.readFloatBE(this.offset) : this.buffer.readFloatLE(this.offset); + this.offset += 4; + return value; + }, + nextDouble: function() { + var value = this.bigEndian ? this.buffer.readDoubleBE(this.offset) : this.buffer.readDoubleLE(this.offset); + this.offset += 8; + return value; + }, + nextBuffer: function(length) { + var value = this.buffer.slice(this.offset, this.offset + length); + this.offset += length; + return value; + }, + remainingLength: function() { + return this.endPosition - this.offset; + }, + nextString: function(length) { + var value = this.buffer.toString('utf8', this.offset, this.offset + length); + this.offset += length; + return value; + }, + mark: function() { + var self = this; + return { + openWithOffset: function(offset) { + offset = (offset || 0) + this.offset; + return new BufferStream(self.buffer, offset, self.endPosition - offset, self.bigEndian); + }, + offset: this.offset + }; + }, + offsetFrom: function(marker) { + return this.offset - marker.offset; + }, + skip: function(amount) { + this.offset += amount; + }, + branch: function(offset, length) { + length = typeof length === 'number' ? length : this.endPosition - (this.offset + offset); + return new BufferStream(this.buffer, this.offset + offset, length, this.bigEndian); + } +}; + +module.exports = BufferStream; + +},{}],55:[function(require,module,exports){ +function parseNumber(s) { + return parseInt(s, 10); +} + +//in seconds +var hours = 3600; +var minutes = 60; + +//take date (year, month, day) and time (hour, minutes, seconds) digits in UTC +//and return a timestamp in seconds +function parseDateTimeParts(dateParts, timeParts) { + dateParts = dateParts.map(parseNumber); + timeParts = timeParts.map(parseNumber); + var year = dateParts[0]; + var month = dateParts[1] - 1; + var day = dateParts[2]; + var hours = timeParts[0]; + var minutes = timeParts[1]; + var seconds = timeParts[2]; + var date = Date.UTC(year, month, day, hours, minutes, seconds, 0); + var timestamp = date / 1000; + return timestamp; +} + +//parse date with "2004-09-04T23:39:06-08:00" format, +//one of the formats supported by ISO 8601, and +//convert to utc timestamp in seconds +function parseDateWithTimezoneFormat(dateTimeStr) { + + var dateParts = dateTimeStr.substr(0, 10).split('-'); + var timeParts = dateTimeStr.substr(11, 8).split(':'); + var timezoneStr = dateTimeStr.substr(19, 6); + var timezoneParts = timezoneStr.split(':').map(parseNumber); + var timezoneOffset = (timezoneParts[0] * hours) + + (timezoneParts[1] * minutes); + + var timestamp = parseDateTimeParts(dateParts, timeParts); + //minus because the timezoneOffset describes + //how much the described time is ahead of UTC + timestamp -= timezoneOffset; + + if(typeof timestamp === 'number' && !isNaN(timestamp)) { + return timestamp; + } +} + +//parse date with "YYYY:MM:DD hh:mm:ss" format, convert to utc timestamp in seconds +function parseDateWithSpecFormat(dateTimeStr) { + var parts = dateTimeStr.split(' '), + dateParts = parts[0].split(':'), + timeParts = parts[1].split(':'); + + var timestamp = parseDateTimeParts(dateParts, timeParts); + + if(typeof timestamp === 'number' && !isNaN(timestamp)) { + return timestamp; + } +} + +function parseExifDate(dateTimeStr) { + //some easy checks to determine two common date formats + + //is the date in the standard "YYYY:MM:DD hh:mm:ss" format? + var isSpecFormat = dateTimeStr.length === 19 && + dateTimeStr.charAt(4) === ':'; + //is the date in the non-standard format, + //"2004-09-04T23:39:06-08:00" to include a timezone? + var isTimezoneFormat = dateTimeStr.length === 25 && + dateTimeStr.charAt(10) === 'T'; + var timestamp; + + if(isTimezoneFormat) { + return parseDateWithTimezoneFormat(dateTimeStr); + } + else if(isSpecFormat) { + return parseDateWithSpecFormat(dateTimeStr); + } +} + +module.exports = { + parseDateWithSpecFormat: parseDateWithSpecFormat, + parseDateWithTimezoneFormat: parseDateWithTimezoneFormat, + parseExifDate: parseExifDate +}; + +},{}],56:[function(require,module,exports){ +/*jslint browser: true, devel: true, bitwise: false, debug: true, eqeq: false, es5: true, evil: false, forin: false, newcap: false, nomen: true, plusplus: true, regexp: false, unparam: false, sloppy: true, stupid: false, sub: false, todo: true, vars: true, white: true */ + +function DOMBufferStream(arrayBuffer, offset, length, bigEndian, global, parentOffset) { + this.global = global; + offset = offset || 0; + length = length || (arrayBuffer.byteLength - offset); + this.arrayBuffer = arrayBuffer.slice(offset, offset + length); + this.view = new global.DataView(this.arrayBuffer, 0, this.arrayBuffer.byteLength); + this.setBigEndian(bigEndian); + this.offset = 0; + this.parentOffset = (parentOffset || 0) + offset; +} + +DOMBufferStream.prototype = { + setBigEndian: function(bigEndian) { + this.littleEndian = !bigEndian; + }, + nextUInt8: function() { + var value = this.view.getUint8(this.offset); + this.offset += 1; + return value; + }, + nextInt8: function() { + var value = this.view.getInt8(this.offset); + this.offset += 1; + return value; + }, + nextUInt16: function() { + var value = this.view.getUint16(this.offset, this.littleEndian); + this.offset += 2; + return value; + }, + nextUInt32: function() { + var value = this.view.getUint32(this.offset, this.littleEndian); + this.offset += 4; + return value; + }, + nextInt16: function() { + var value = this.view.getInt16(this.offset, this.littleEndian); + this.offset += 2; + return value; + }, + nextInt32: function() { + var value = this.view.getInt32(this.offset, this.littleEndian); + this.offset += 4; + return value; + }, + nextFloat: function() { + var value = this.view.getFloat32(this.offset, this.littleEndian); + this.offset += 4; + return value; + }, + nextDouble: function() { + var value = this.view.getFloat64(this.offset, this.littleEndian); + this.offset += 8; + return value; + }, + nextBuffer: function(length) { + //this won't work in IE10 + var value = this.arrayBuffer.slice(this.offset, this.offset + length); + this.offset += length; + return value; + }, + remainingLength: function() { + return this.arrayBuffer.byteLength - this.offset; + }, + nextString: function(length) { + var value = this.arrayBuffer.slice(this.offset, this.offset + length); + value = String.fromCharCode.apply(null, new this.global.Uint8Array(value)); + this.offset += length; + return value; + }, + mark: function() { + var self = this; + return { + openWithOffset: function(offset) { + offset = (offset || 0) + this.offset; + return new DOMBufferStream(self.arrayBuffer, offset, self.arrayBuffer.byteLength - offset, !self.littleEndian, self.global, self.parentOffset); + }, + offset: this.offset, + getParentOffset: function() { + return self.parentOffset; + } + }; + }, + offsetFrom: function(marker) { + return this.parentOffset + this.offset - (marker.offset + marker.getParentOffset()); + }, + skip: function(amount) { + this.offset += amount; + }, + branch: function(offset, length) { + length = typeof length === 'number' ? length : this.arrayBuffer.byteLength - (this.offset + offset); + return new DOMBufferStream(this.arrayBuffer, this.offset + offset, length, !this.littleEndian, this.global, this.parentOffset); + } +}; + +module.exports = DOMBufferStream; + +},{}],57:[function(require,module,exports){ +module.exports = { + exif : { + 0x0001 : "InteropIndex", + 0x0002 : "InteropVersion", + 0x000B : "ProcessingSoftware", + 0x00FE : "SubfileType", + 0x00FF : "OldSubfileType", + 0x0100 : "ImageWidth", + 0x0101 : "ImageHeight", + 0x0102 : "BitsPerSample", + 0x0103 : "Compression", + 0x0106 : "PhotometricInterpretation", + 0x0107 : "Thresholding", + 0x0108 : "CellWidth", + 0x0109 : "CellLength", + 0x010A : "FillOrder", + 0x010D : "DocumentName", + 0x010E : "ImageDescription", + 0x010F : "Make", + 0x0110 : "Model", + 0x0111 : "StripOffsets", + 0x0112 : "Orientation", + 0x0115 : "SamplesPerPixel", + 0x0116 : "RowsPerStrip", + 0x0117 : "StripByteCounts", + 0x0118 : "MinSampleValue", + 0x0119 : "MaxSampleValue", + 0x011A : "XResolution", + 0x011B : "YResolution", + 0x011C : "PlanarConfiguration", + 0x011D : "PageName", + 0x011E : "XPosition", + 0x011F : "YPosition", + 0x0120 : "FreeOffsets", + 0x0121 : "FreeByteCounts", + 0x0122 : "GrayResponseUnit", + 0x0123 : "GrayResponseCurve", + 0x0124 : "T4Options", + 0x0125 : "T6Options", + 0x0128 : "ResolutionUnit", + 0x0129 : "PageNumber", + 0x012C : "ColorResponseUnit", + 0x012D : "TransferFunction", + 0x0131 : "Software", + 0x0132 : "ModifyDate", + 0x013B : "Artist", + 0x013C : "HostComputer", + 0x013D : "Predictor", + 0x013E : "WhitePoint", + 0x013F : "PrimaryChromaticities", + 0x0140 : "ColorMap", + 0x0141 : "HalftoneHints", + 0x0142 : "TileWidth", + 0x0143 : "TileLength", + 0x0144 : "TileOffsets", + 0x0145 : "TileByteCounts", + 0x0146 : "BadFaxLines", + 0x0147 : "CleanFaxData", + 0x0148 : "ConsecutiveBadFaxLines", + 0x014A : "SubIFD", + 0x014C : "InkSet", + 0x014D : "InkNames", + 0x014E : "NumberofInks", + 0x0150 : "DotRange", + 0x0151 : "TargetPrinter", + 0x0152 : "ExtraSamples", + 0x0153 : "SampleFormat", + 0x0154 : "SMinSampleValue", + 0x0155 : "SMaxSampleValue", + 0x0156 : "TransferRange", + 0x0157 : "ClipPath", + 0x0158 : "XClipPathUnits", + 0x0159 : "YClipPathUnits", + 0x015A : "Indexed", + 0x015B : "JPEGTables", + 0x015F : "OPIProxy", + 0x0190 : "GlobalParametersIFD", + 0x0191 : "ProfileType", + 0x0192 : "FaxProfile", + 0x0193 : "CodingMethods", + 0x0194 : "VersionYear", + 0x0195 : "ModeNumber", + 0x01B1 : "Decode", + 0x01B2 : "DefaultImageColor", + 0x01B3 : "T82Options", + 0x01B5 : "JPEGTables", + 0x0200 : "JPEGProc", + 0x0201 : "ThumbnailOffset", + 0x0202 : "ThumbnailLength", + 0x0203 : "JPEGRestartInterval", + 0x0205 : "JPEGLosslessPredictors", + 0x0206 : "JPEGPointTransforms", + 0x0207 : "JPEGQTables", + 0x0208 : "JPEGDCTables", + 0x0209 : "JPEGACTables", + 0x0211 : "YCbCrCoefficients", + 0x0212 : "YCbCrSubSampling", + 0x0213 : "YCbCrPositioning", + 0x0214 : "ReferenceBlackWhite", + 0x022F : "StripRowCounts", + 0x02BC : "ApplicationNotes", + 0x03E7 : "USPTOMiscellaneous", + 0x1000 : "RelatedImageFileFormat", + 0x1001 : "RelatedImageWidth", + 0x1002 : "RelatedImageHeight", + 0x4746 : "Rating", + 0x4747 : "XP_DIP_XML", + 0x4748 : "StitchInfo", + 0x4749 : "RatingPercent", + 0x800D : "ImageID", + 0x80A3 : "WangTag1", + 0x80A4 : "WangAnnotation", + 0x80A5 : "WangTag3", + 0x80A6 : "WangTag4", + 0x80E3 : "Matteing", + 0x80E4 : "DataType", + 0x80E5 : "ImageDepth", + 0x80E6 : "TileDepth", + 0x827D : "Model2", + 0x828D : "CFARepeatPatternDim", + 0x828E : "CFAPattern2", + 0x828F : "BatteryLevel", + 0x8290 : "KodakIFD", + 0x8298 : "Copyright", + 0x829A : "ExposureTime", + 0x829D : "FNumber", + 0x82A5 : "MDFileTag", + 0x82A6 : "MDScalePixel", + 0x82A7 : "MDColorTable", + 0x82A8 : "MDLabName", + 0x82A9 : "MDSampleInfo", + 0x82AA : "MDPrepDate", + 0x82AB : "MDPrepTime", + 0x82AC : "MDFileUnits", + 0x830E : "PixelScale", + 0x8335 : "AdventScale", + 0x8336 : "AdventRevision", + 0x835C : "UIC1Tag", + 0x835D : "UIC2Tag", + 0x835E : "UIC3Tag", + 0x835F : "UIC4Tag", + 0x83BB : "IPTC-NAA", + 0x847E : "IntergraphPacketData", + 0x847F : "IntergraphFlagRegisters", + 0x8480 : "IntergraphMatrix", + 0x8481 : "INGRReserved", + 0x8482 : "ModelTiePoint", + 0x84E0 : "Site", + 0x84E1 : "ColorSequence", + 0x84E2 : "IT8Header", + 0x84E3 : "RasterPadding", + 0x84E4 : "BitsPerRunLength", + 0x84E5 : "BitsPerExtendedRunLength", + 0x84E6 : "ColorTable", + 0x84E7 : "ImageColorIndicator", + 0x84E8 : "BackgroundColorIndicator", + 0x84E9 : "ImageColorValue", + 0x84EA : "BackgroundColorValue", + 0x84EB : "PixelIntensityRange", + 0x84EC : "TransparencyIndicator", + 0x84ED : "ColorCharacterization", + 0x84EE : "HCUsage", + 0x84EF : "TrapIndicator", + 0x84F0 : "CMYKEquivalent", + 0x8546 : "SEMInfo", + 0x8568 : "AFCP_IPTC", + 0x85B8 : "PixelMagicJBIGOptions", + 0x85D8 : "ModelTransform", + 0x8602 : "WB_GRGBLevels", + 0x8606 : "LeafData", + 0x8649 : "PhotoshopSettings", + 0x8769 : "ExifOffset", + 0x8773 : "ICC_Profile", + 0x877F : "TIFF_FXExtensions", + 0x8780 : "MultiProfiles", + 0x8781 : "SharedData", + 0x8782 : "T88Options", + 0x87AC : "ImageLayer", + 0x87AF : "GeoTiffDirectory", + 0x87B0 : "GeoTiffDoubleParams", + 0x87B1 : "GeoTiffAsciiParams", + 0x8822 : "ExposureProgram", + 0x8824 : "SpectralSensitivity", + 0x8825 : "GPSInfo", + 0x8827 : "ISO", + 0x8828 : "Opto-ElectricConvFactor", + 0x8829 : "Interlace", + 0x882A : "TimeZoneOffset", + 0x882B : "SelfTimerMode", + 0x8830 : "SensitivityType", + 0x8831 : "StandardOutputSensitivity", + 0x8832 : "RecommendedExposureIndex", + 0x8833 : "ISOSpeed", + 0x8834 : "ISOSpeedLatitudeyyy", + 0x8835 : "ISOSpeedLatitudezzz", + 0x885C : "FaxRecvParams", + 0x885D : "FaxSubAddress", + 0x885E : "FaxRecvTime", + 0x888A : "LeafSubIFD", + 0x9000 : "ExifVersion", + 0x9003 : "DateTimeOriginal", + 0x9004 : "CreateDate", + 0x9101 : "ComponentsConfiguration", + 0x9102 : "CompressedBitsPerPixel", + 0x9201 : "ShutterSpeedValue", + 0x9202 : "ApertureValue", + 0x9203 : "BrightnessValue", + 0x9204 : "ExposureCompensation", + 0x9205 : "MaxApertureValue", + 0x9206 : "SubjectDistance", + 0x9207 : "MeteringMode", + 0x9208 : "LightSource", + 0x9209 : "Flash", + 0x920A : "FocalLength", + 0x920B : "FlashEnergy", + 0x920C : "SpatialFrequencyResponse", + 0x920D : "Noise", + 0x920E : "FocalPlaneXResolution", + 0x920F : "FocalPlaneYResolution", + 0x9210 : "FocalPlaneResolutionUnit", + 0x9211 : "ImageNumber", + 0x9212 : "SecurityClassification", + 0x9213 : "ImageHistory", + 0x9214 : "SubjectArea", + 0x9215 : "ExposureIndex", + 0x9216 : "TIFF-EPStandardID", + 0x9217 : "SensingMethod", + 0x923A : "CIP3DataFile", + 0x923B : "CIP3Sheet", + 0x923C : "CIP3Side", + 0x923F : "StoNits", + 0x927C : "MakerNote", + 0x9286 : "UserComment", + 0x9290 : "SubSecTime", + 0x9291 : "SubSecTimeOriginal", + 0x9292 : "SubSecTimeDigitized", + 0x932F : "MSDocumentText", + 0x9330 : "MSPropertySetStorage", + 0x9331 : "MSDocumentTextPosition", + 0x935C : "ImageSourceData", + 0x9C9B : "XPTitle", + 0x9C9C : "XPComment", + 0x9C9D : "XPAuthor", + 0x9C9E : "XPKeywords", + 0x9C9F : "XPSubject", + 0xA000 : "FlashpixVersion", + 0xA001 : "ColorSpace", + 0xA002 : "ExifImageWidth", + 0xA003 : "ExifImageHeight", + 0xA004 : "RelatedSoundFile", + 0xA005 : "InteropOffset", + 0xA20B : "FlashEnergy", + 0xA20C : "SpatialFrequencyResponse", + 0xA20D : "Noise", + 0xA20E : "FocalPlaneXResolution", + 0xA20F : "FocalPlaneYResolution", + 0xA210 : "FocalPlaneResolutionUnit", + 0xA211 : "ImageNumber", + 0xA212 : "SecurityClassification", + 0xA213 : "ImageHistory", + 0xA214 : "SubjectLocation", + 0xA215 : "ExposureIndex", + 0xA216 : "TIFF-EPStandardID", + 0xA217 : "SensingMethod", + 0xA300 : "FileSource", + 0xA301 : "SceneType", + 0xA302 : "CFAPattern", + 0xA401 : "CustomRendered", + 0xA402 : "ExposureMode", + 0xA403 : "WhiteBalance", + 0xA404 : "DigitalZoomRatio", + 0xA405 : "FocalLengthIn35mmFormat", + 0xA406 : "SceneCaptureType", + 0xA407 : "GainControl", + 0xA408 : "Contrast", + 0xA409 : "Saturation", + 0xA40A : "Sharpness", + 0xA40B : "DeviceSettingDescription", + 0xA40C : "SubjectDistanceRange", + 0xA420 : "ImageUniqueID", + 0xA430 : "OwnerName", + 0xA431 : "SerialNumber", + 0xA432 : "LensInfo", + 0xA433 : "LensMake", + 0xA434 : "LensModel", + 0xA435 : "LensSerialNumber", + 0xA480 : "GDALMetadata", + 0xA481 : "GDALNoData", + 0xA500 : "Gamma", + 0xAFC0 : "ExpandSoftware", + 0xAFC1 : "ExpandLens", + 0xAFC2 : "ExpandFilm", + 0xAFC3 : "ExpandFilterLens", + 0xAFC4 : "ExpandScanner", + 0xAFC5 : "ExpandFlashLamp", + 0xBC01 : "PixelFormat", + 0xBC02 : "Transformation", + 0xBC03 : "Uncompressed", + 0xBC04 : "ImageType", + 0xBC80 : "ImageWidth", + 0xBC81 : "ImageHeight", + 0xBC82 : "WidthResolution", + 0xBC83 : "HeightResolution", + 0xBCC0 : "ImageOffset", + 0xBCC1 : "ImageByteCount", + 0xBCC2 : "AlphaOffset", + 0xBCC3 : "AlphaByteCount", + 0xBCC4 : "ImageDataDiscard", + 0xBCC5 : "AlphaDataDiscard", + 0xC427 : "OceScanjobDesc", + 0xC428 : "OceApplicationSelector", + 0xC429 : "OceIDNumber", + 0xC42A : "OceImageLogic", + 0xC44F : "Annotations", + 0xC4A5 : "PrintIM", + 0xC580 : "USPTOOriginalContentType", + 0xC612 : "DNGVersion", + 0xC613 : "DNGBackwardVersion", + 0xC614 : "UniqueCameraModel", + 0xC615 : "LocalizedCameraModel", + 0xC616 : "CFAPlaneColor", + 0xC617 : "CFALayout", + 0xC618 : "LinearizationTable", + 0xC619 : "BlackLevelRepeatDim", + 0xC61A : "BlackLevel", + 0xC61B : "BlackLevelDeltaH", + 0xC61C : "BlackLevelDeltaV", + 0xC61D : "WhiteLevel", + 0xC61E : "DefaultScale", + 0xC61F : "DefaultCropOrigin", + 0xC620 : "DefaultCropSize", + 0xC621 : "ColorMatrix1", + 0xC622 : "ColorMatrix2", + 0xC623 : "CameraCalibration1", + 0xC624 : "CameraCalibration2", + 0xC625 : "ReductionMatrix1", + 0xC626 : "ReductionMatrix2", + 0xC627 : "AnalogBalance", + 0xC628 : "AsShotNeutral", + 0xC629 : "AsShotWhiteXY", + 0xC62A : "BaselineExposure", + 0xC62B : "BaselineNoise", + 0xC62C : "BaselineSharpness", + 0xC62D : "BayerGreenSplit", + 0xC62E : "LinearResponseLimit", + 0xC62F : "CameraSerialNumber", + 0xC630 : "DNGLensInfo", + 0xC631 : "ChromaBlurRadius", + 0xC632 : "AntiAliasStrength", + 0xC633 : "ShadowScale", + 0xC634 : "DNGPrivateData", + 0xC635 : "MakerNoteSafety", + 0xC640 : "RawImageSegmentation", + 0xC65A : "CalibrationIlluminant1", + 0xC65B : "CalibrationIlluminant2", + 0xC65C : "BestQualityScale", + 0xC65D : "RawDataUniqueID", + 0xC660 : "AliasLayerMetadata", + 0xC68B : "OriginalRawFileName", + 0xC68C : "OriginalRawFileData", + 0xC68D : "ActiveArea", + 0xC68E : "MaskedAreas", + 0xC68F : "AsShotICCProfile", + 0xC690 : "AsShotPreProfileMatrix", + 0xC691 : "CurrentICCProfile", + 0xC692 : "CurrentPreProfileMatrix", + 0xC6BF : "ColorimetricReference", + 0xC6D2 : "PanasonicTitle", + 0xC6D3 : "PanasonicTitle2", + 0xC6F3 : "CameraCalibrationSig", + 0xC6F4 : "ProfileCalibrationSig", + 0xC6F5 : "ProfileIFD", + 0xC6F6 : "AsShotProfileName", + 0xC6F7 : "NoiseReductionApplied", + 0xC6F8 : "ProfileName", + 0xC6F9 : "ProfileHueSatMapDims", + 0xC6FA : "ProfileHueSatMapData1", + 0xC6FB : "ProfileHueSatMapData2", + 0xC6FC : "ProfileToneCurve", + 0xC6FD : "ProfileEmbedPolicy", + 0xC6FE : "ProfileCopyright", + 0xC714 : "ForwardMatrix1", + 0xC715 : "ForwardMatrix2", + 0xC716 : "PreviewApplicationName", + 0xC717 : "PreviewApplicationVersion", + 0xC718 : "PreviewSettingsName", + 0xC719 : "PreviewSettingsDigest", + 0xC71A : "PreviewColorSpace", + 0xC71B : "PreviewDateTime", + 0xC71C : "RawImageDigest", + 0xC71D : "OriginalRawFileDigest", + 0xC71E : "SubTileBlockSize", + 0xC71F : "RowInterleaveFactor", + 0xC725 : "ProfileLookTableDims", + 0xC726 : "ProfileLookTableData", + 0xC740 : "OpcodeList1", + 0xC741 : "OpcodeList2", + 0xC74E : "OpcodeList3", + 0xC761 : "NoiseProfile", + 0xC763 : "TimeCodes", + 0xC764 : "FrameRate", + 0xC772 : "TStop", + 0xC789 : "ReelName", + 0xC791 : "OriginalDefaultFinalSize", + 0xC792 : "OriginalBestQualitySize", + 0xC793 : "OriginalDefaultCropSize", + 0xC7A1 : "CameraLabel", + 0xC7A3 : "ProfileHueSatMapEncoding", + 0xC7A4 : "ProfileLookTableEncoding", + 0xC7A5 : "BaselineExposureOffset", + 0xC7A6 : "DefaultBlackRender", + 0xC7A7 : "NewRawImageDigest", + 0xC7A8 : "RawToPreviewGain", + 0xC7B5 : "DefaultUserCrop", + 0xEA1C : "Padding", + 0xEA1D : "OffsetSchema", + 0xFDE8 : "OwnerName", + 0xFDE9 : "SerialNumber", + 0xFDEA : "Lens", + 0xFE00 : "KDC_IFD", + 0xFE4C : "RawFile", + 0xFE4D : "Converter", + 0xFE4E : "WhiteBalance", + 0xFE51 : "Exposure", + 0xFE52 : "Shadows", + 0xFE53 : "Brightness", + 0xFE54 : "Contrast", + 0xFE55 : "Saturation", + 0xFE56 : "Sharpness", + 0xFE57 : "Smoothness", + 0xFE58 : "MoireFilter" + + }, + gps : { + 0x0000 : 'GPSVersionID', + 0x0001 : 'GPSLatitudeRef', + 0x0002 : 'GPSLatitude', + 0x0003 : 'GPSLongitudeRef', + 0x0004 : 'GPSLongitude', + 0x0005 : 'GPSAltitudeRef', + 0x0006 : 'GPSAltitude', + 0x0007 : 'GPSTimeStamp', + 0x0008 : 'GPSSatellites', + 0x0009 : 'GPSStatus', + 0x000A : 'GPSMeasureMode', + 0x000B : 'GPSDOP', + 0x000C : 'GPSSpeedRef', + 0x000D : 'GPSSpeed', + 0x000E : 'GPSTrackRef', + 0x000F : 'GPSTrack', + 0x0010 : 'GPSImgDirectionRef', + 0x0011 : 'GPSImgDirection', + 0x0012 : 'GPSMapDatum', + 0x0013 : 'GPSDestLatitudeRef', + 0x0014 : 'GPSDestLatitude', + 0x0015 : 'GPSDestLongitudeRef', + 0x0016 : 'GPSDestLongitude', + 0x0017 : 'GPSDestBearingRef', + 0x0018 : 'GPSDestBearing', + 0x0019 : 'GPSDestDistanceRef', + 0x001A : 'GPSDestDistance', + 0x001B : 'GPSProcessingMethod', + 0x001C : 'GPSAreaInformation', + 0x001D : 'GPSDateStamp', + 0x001E : 'GPSDifferential', + 0x001F : 'GPSHPositioningError' + } +}; +},{}],58:[function(require,module,exports){ +/*jslint browser: true, devel: true, bitwise: false, debug: true, eqeq: false, es5: true, evil: false, forin: false, newcap: false, nomen: true, plusplus: true, regexp: false, unparam: false, sloppy: true, stupid: false, sub: false, todo: true, vars: true, white: true */ + +function readExifValue(format, stream) { + switch(format) { + case 1: return stream.nextUInt8(); + case 3: return stream.nextUInt16(); + case 4: return stream.nextUInt32(); + case 5: return [stream.nextUInt32(), stream.nextUInt32()]; + case 6: return stream.nextInt8(); + case 8: return stream.nextUInt16(); + case 9: return stream.nextUInt32(); + case 10: return [stream.nextInt32(), stream.nextInt32()]; + case 11: return stream.nextFloat(); + case 12: return stream.nextDouble(); + default: throw new Error('Invalid format while decoding: ' + format); + } +} + +function getBytesPerComponent(format) { + switch(format) { + case 1: + case 2: + case 6: + case 7: + return 1; + case 3: + case 8: + return 2; + case 4: + case 9: + case 11: + return 4; + case 5: + case 10: + case 12: + return 8; + default: + return 0; + } +} + +function readExifTag(tiffMarker, stream) { + var tagType = stream.nextUInt16(), + format = stream.nextUInt16(), + bytesPerComponent = getBytesPerComponent(format), + components = stream.nextUInt32(), + valueBytes = bytesPerComponent * components, + values, + value, + c; + + /* if the value is bigger then 4 bytes, the value is in the data section of the IFD + and the value present in the tag is the offset starting from the tiff header. So we replace the stream + with a stream that is located at the given offset in the data section. s*/ + if(valueBytes > 4) { + stream = tiffMarker.openWithOffset(stream.nextUInt32()); + } + //we don't want to read strings as arrays + if(format === 2) { + values = stream.nextString(components); + //cut off \0 characters + var lastNull = values.indexOf('\0'); + if(lastNull !== -1) { + values = values.substr(0, lastNull); + } + } + else if(format === 7) { + values = stream.nextBuffer(components); + } + else if(format !== 0) { + values = []; + for(c = 0; c < components; ++c) { + values.push(readExifValue(format, stream)); + } + } + //since our stream is a stateful object, we need to skip remaining bytes + //so our offset stays correct + if(valueBytes < 4) { + stream.skip(4 - valueBytes); + } + + return [tagType, values, format]; +} + +function readIFDSection(tiffMarker, stream, iterator) { + var numberOfEntries = stream.nextUInt16(), tag, i; + for(i = 0; i < numberOfEntries; ++i) { + tag = readExifTag(tiffMarker, stream); + iterator(tag[0], tag[1], tag[2]); + } +} + +function readHeader(stream) { + var exifHeader = stream.nextString(6); + if(exifHeader !== 'Exif\0\0') { + throw new Error('Invalid EXIF header'); + } + + var tiffMarker = stream.mark(); + var tiffHeader = stream.nextUInt16(); + if(tiffHeader === 0x4949) { + stream.setBigEndian(false); + } else if(tiffHeader === 0x4D4D) { + stream.setBigEndian(true); + } else { + throw new Error('Invalid TIFF header'); + } + if(stream.nextUInt16() !== 0x002A) { + throw new Error('Invalid TIFF data'); + } + return tiffMarker; +} + +module.exports = { + IFD0: 1, + IFD1: 2, + GPSIFD: 3, + SubIFD: 4, + InteropIFD: 5, + parseTags: function(stream, iterator) { + var tiffMarker; + try { + tiffMarker = readHeader(stream); + } catch(e) { + return false; //ignore APP1 sections with invalid headers + } + var subIfdOffset, gpsOffset, interopOffset; + var ifd0Stream = tiffMarker.openWithOffset(stream.nextUInt32()), + IFD0 = this.IFD0; + readIFDSection(tiffMarker, ifd0Stream, function(tagType, value, format) { + switch(tagType) { + case 0x8825: gpsOffset = value[0]; break; + case 0x8769: subIfdOffset = value[0]; break; + default: iterator(IFD0, tagType, value, format); break; + } + }); + var ifd1Offset = ifd0Stream.nextUInt32(); + if(ifd1Offset !== 0) { + var ifd1Stream = tiffMarker.openWithOffset(ifd1Offset); + readIFDSection(tiffMarker, ifd1Stream, iterator.bind(null, this.IFD1)); + } + + if(gpsOffset) { + var gpsStream = tiffMarker.openWithOffset(gpsOffset); + readIFDSection(tiffMarker, gpsStream, iterator.bind(null, this.GPSIFD)); + } + + if(subIfdOffset) { + var subIfdStream = tiffMarker.openWithOffset(subIfdOffset), InteropIFD = this.InteropIFD; + readIFDSection(tiffMarker, subIfdStream, function(tagType, value, format) { + if(tagType === 0xA005) { + interopOffset = value[0]; + } else { + iterator(InteropIFD, tagType, value, format); + } + }); + } + + if(interopOffset) { + var interopStream = tiffMarker.openWithOffset(interopOffset); + readIFDSection(tiffMarker, interopStream, iterator.bind(null, this.InteropIFD)); + } + return true; + } +}; +},{}],59:[function(require,module,exports){ +/*jslint browser: true, devel: true, bitwise: false, debug: true, eqeq: false, es5: true, evil: false, forin: false, newcap: false, nomen: true, plusplus: true, regexp: false, unparam: false, sloppy: true, stupid: false, sub: false, todo: true, vars: true, white: true */ + +module.exports = { + parseSections: function(stream, iterator) { + var len, markerType; + stream.setBigEndian(true); + //stop reading the stream at the SOS (Start of Stream) marker, + //because its length is not stored in the header so we can't + //know where to jump to. The only marker after that is just EOI (End Of Image) anyway + while(stream.remainingLength() > 0 && markerType !== 0xDA) { + if(stream.nextUInt8() !== 0xFF) { + throw new Error('Invalid JPEG section offset'); + } + markerType = stream.nextUInt8(); + //don't read size from markers that have no datas + if((markerType >= 0xD0 && markerType <= 0xD9) || markerType === 0xDA) { + len = 0; + } else { + len = stream.nextUInt16() - 2; + } + iterator(markerType, stream.branch(0, len)); + stream.skip(len); + } + }, + //stream should be located after SOF section size and in big endian mode, like passed to parseSections iterator + getSizeFromSOFSection: function(stream) { + stream.skip(1); + return { + height: stream.nextUInt16(), + width: stream.nextUInt16() + }; + }, + getSectionName: function(markerType) { + var name, index; + switch(markerType) { + case 0xD8: name = 'SOI'; break; + case 0xC4: name = 'DHT'; break; + case 0xDB: name = 'DQT'; break; + case 0xDD: name = 'DRI'; break; + case 0xDA: name = 'SOS'; break; + case 0xFE: name = 'COM'; break; + case 0xD9: name = 'EOI'; break; + default: + if(markerType >= 0xE0 && markerType <= 0xEF) { + name = 'APP'; + index = markerType - 0xE0; + } + else if(markerType >= 0xC0 && markerType <= 0xCF && markerType !== 0xC4 && markerType !== 0xC8 && markerType !== 0xCC) { + name = 'SOF'; + index = markerType - 0xC0; + } + else if(markerType >= 0xD0 && markerType <= 0xD7) { + name = 'RST'; + index = markerType - 0xD0; + } + break; + } + var nameStruct = { + name: name + }; + if(typeof index === 'number') { + nameStruct.index = index; + } + return nameStruct; + } +}; +},{}],60:[function(require,module,exports){ +/*jslint browser: true, devel: true, bitwise: false, debug: true, eqeq: false, es5: true, evil: false, forin: false, newcap: false, nomen: true, plusplus: true, regexp: false, unparam: false, sloppy: true, stupid: false, sub: false, todo: true, vars: true, white: true */ + +var jpeg = require('./jpeg'), + exif = require('./exif'), + simplify = require('./simplify'); + +function ExifResult(startMarker, tags, imageSize, thumbnailOffset, thumbnailLength, thumbnailType, app1Offset) { + this.startMarker = startMarker; + this.tags = tags; + this.imageSize = imageSize; + this.thumbnailOffset = thumbnailOffset; + this.thumbnailLength = thumbnailLength; + this.thumbnailType = thumbnailType; + this.app1Offset = app1Offset; +} + +ExifResult.prototype = { + hasThumbnail: function(mime) { + if(!this.thumbnailOffset || !this.thumbnailLength) { + return false; + } + if(typeof mime !== 'string') { + return true; + } + if(mime.toLowerCase().trim() === 'image/jpeg') { + return this.thumbnailType === 6; + } + if(mime.toLowerCase().trim() === 'image/tiff') { + return this.thumbnailType === 1; + } + return false; + }, + getThumbnailOffset: function() { + return this.app1Offset + 6 + this.thumbnailOffset; + }, + getThumbnailLength: function() { + return this.thumbnailLength; + }, + getThumbnailBuffer: function() { + return this._getThumbnailStream().nextBuffer(this.thumbnailLength); + }, + _getThumbnailStream: function() { + return this.startMarker.openWithOffset(this.getThumbnailOffset()); + }, + getImageSize: function() { + return this.imageSize; + }, + getThumbnailSize: function() { + var stream = this._getThumbnailStream(), size; + jpeg.parseSections(stream, function(sectionType, sectionStream) { + if(jpeg.getSectionName(sectionType).name === 'SOF') { + size = jpeg.getSizeFromSOFSection(sectionStream); + } + }); + return size; + } +}; + +function Parser(stream) { + this.stream = stream; + this.flags = { + readBinaryTags: false, + resolveTagNames: true, + simplifyValues: true, + imageSize: true, + hidePointers: true, + returnTags: true + }; +} + +Parser.prototype = { + enableBinaryFields: function(enable) { + this.flags.readBinaryTags = !!enable; + return this; + }, + enablePointers: function(enable) { + this.flags.hidePointers = !enable; + return this; + }, + enableTagNames: function(enable) { + this.flags.resolveTagNames = !!enable; + return this; + }, + enableImageSize: function(enable) { + this.flags.imageSize = !!enable; + return this; + }, + enableReturnTags: function(enable) { + this.flags.returnTags = !!enable; + return this; + }, + enableSimpleValues: function(enable) { + this.flags.simplifyValues = !!enable; + return this; + }, + parse: function() { + var start = this.stream.mark(), + stream = start.openWithOffset(0), + flags = this.flags, + tags, + imageSize, + thumbnailOffset, + thumbnailLength, + thumbnailType, + app1Offset, + tagNames, + getTagValue, setTagValue; + if(flags.resolveTagNames) { + tagNames = require('./exif-tags'); + } + if(flags.resolveTagNames) { + tags = {}; + getTagValue = function(t) { + return tags[t.name]; + }; + setTagValue = function(t, value) { + tags[t.name] = value; + }; + } else { + tags = []; + getTagValue = function(t) { + var i; + for(i = 0; i < tags.length; ++i) { + if(tags[i].type === t.type && tags[i].section === t.section) { + return tags.value; + } + } + }; + setTagValue = function(t, value) { + var i; + for(i = 0; i < tags.length; ++i) { + if(tags[i].type === t.type && tags[i].section === t.section) { + tags.value = value; + return; + } + } + }; + } + + jpeg.parseSections(stream, function(sectionType, sectionStream) { + var validExifHeaders, sectionOffset = sectionStream.offsetFrom(start); + if(sectionType === 0xE1) { + validExifHeaders = exif.parseTags(sectionStream, function(ifdSection, tagType, value, format) { + //ignore binary fields if disabled + if(!flags.readBinaryTags && format === 7) { + return; + } + + if(tagType === 0x0201) { + thumbnailOffset = value[0]; + if(flags.hidePointers) {return;} + } else if(tagType === 0x0202) { + thumbnailLength = value[0]; + if(flags.hidePointers) {return;} + } else if(tagType === 0x0103) { + thumbnailType = value[0]; + if(flags.hidePointers) {return;} + } + //if flag is set to not store tags, return here after storing pointers + if(!flags.returnTags) { + return; + } + + if(flags.simplifyValues) { + value = simplify.simplifyValue(value, format); + } + if(flags.resolveTagNames) { + var sectionTagNames = ifdSection === exif.GPSIFD ? tagNames.gps : tagNames.exif; + var name = sectionTagNames[tagType]; + if(!name) { + name = tagNames.exif[tagType]; + } + if (!tags.hasOwnProperty(name)) { + tags[name] = value; + } + } else { + tags.push({ + section: ifdSection, + type: tagType, + value: value + }); + } + }); + if(validExifHeaders) { + app1Offset = sectionOffset; + } + } + else if(flags.imageSize && jpeg.getSectionName(sectionType).name === 'SOF') { + imageSize = jpeg.getSizeFromSOFSection(sectionStream); + } + }); + + if(flags.simplifyValues) { + simplify.castDegreeValues(getTagValue, setTagValue); + simplify.castDateValues(getTagValue, setTagValue); + } + + return new ExifResult(start, tags, imageSize, thumbnailOffset, thumbnailLength, thumbnailType, app1Offset); + } +}; + + + +module.exports = Parser; + +},{"./exif":58,"./exif-tags":57,"./jpeg":59,"./simplify":61}],61:[function(require,module,exports){ +var exif = require('./exif'); +var date = require('./date'); + +var degreeTags = [{ + section: exif.GPSIFD, + type: 0x0002, + name: 'GPSLatitude', + refType: 0x0001, + refName: 'GPSLatitudeRef', + posVal: 'N' +}, +{ + section: exif.GPSIFD, + type: 0x0004, + name: 'GPSLongitude', + refType: 0x0003, + refName: 'GPSLongitudeRef', + posVal: 'E' +}]; +var dateTags = [{ + section: exif.SubIFD, + type: 0x0132, + name: 'ModifyDate' +}, +{ + section: exif.SubIFD, + type: 0x9003, + name: 'DateTimeOriginal' +}, +{ + section: exif.SubIFD, + type: 0x9004, + name: 'CreateDate' +}, +{ + section: exif.SubIFD, + type: 0x0132, + name : 'ModifyDate', +}]; + +module.exports = { + castDegreeValues: function(getTagValue, setTagValue) { + degreeTags.forEach(function(t) { + var degreeVal = getTagValue(t); + if(degreeVal) { + var degreeRef = getTagValue({section: t.section, type: t.refType, name: t.refName}); + var degreeNumRef = degreeRef === t.posVal ? 1 : -1; + var degree = (degreeVal[0] + (degreeVal[1] / 60) + (degreeVal[2] / 3600)) * degreeNumRef; + setTagValue(t, degree); + } + }); + }, + castDateValues: function(getTagValue, setTagValue) { + dateTags.forEach(function(t) { + var dateStrVal = getTagValue(t); + if(dateStrVal) { + //some easy checks to determine two common date formats + var timestamp = date.parseExifDate(dateStrVal); + if(typeof timestamp !== 'undefined') { + setTagValue(t, timestamp); + } + } + }); + }, + simplifyValue: function(values, format) { + if(Array.isArray(values)) { + values = values.map(function(value) { + if(format === 10 || format === 5) { + return value[0] / value[1]; + } + return value; + }); + if(values.length === 1) { + values = values[0]; + } + } + return values; + } +}; + +},{"./date":55,"./exif":58}],62:[function(require,module,exports){ +'use strict'; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); + +var toBytes = function toBytes(s) { + return (0, _toConsumableArray2["default"])(s).map(function (c) { + return c.charCodeAt(0); + }); +}; + +var xpiZipFilename = toBytes('META-INF/mozilla.rsa'); +var oxmlContentTypes = toBytes('[Content_Types].xml'); +var oxmlRels = toBytes('_rels/.rels'); + +module.exports = function (input) { + var buf = input instanceof Uint8Array ? input : new Uint8Array(input); + + if (!(buf && buf.length > 1)) { + return null; + } + + var check = function check(header, options) { + options = Object.assign({ + offset: 0 + }, options); + + for (var i = 0; i < header.length; i++) { + // If a bitmask is set + if (options.mask) { + // If header doesn't equal `buf` with bits masked off + if (header[i] !== (options.mask[i] & buf[i + options.offset])) { + return false; + } + } else if (header[i] !== buf[i + options.offset]) { + return false; + } + } + + return true; + }; + + var checkString = function checkString(header, options) { + return check(toBytes(header), options); + }; + + if (check([0xFF, 0xD8, 0xFF])) { + return { + ext: 'jpg', + mime: 'image/jpeg' + }; + } + + if (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) { + return { + ext: 'png', + mime: 'image/png' + }; + } + + if (check([0x47, 0x49, 0x46])) { + return { + ext: 'gif', + mime: 'image/gif' + }; + } + + if (check([0x57, 0x45, 0x42, 0x50], { + offset: 8 + })) { + return { + ext: 'webp', + mime: 'image/webp' + }; + } + + if (check([0x46, 0x4C, 0x49, 0x46])) { + return { + ext: 'flif', + mime: 'image/flif' + }; + } // Needs to be before `tif` check + + + if ((check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) && check([0x43, 0x52], { + offset: 8 + })) { + return { + ext: 'cr2', + mime: 'image/x-canon-cr2' + }; + } + + if (check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) { + return { + ext: 'tif', + mime: 'image/tiff' + }; + } + + if (check([0x42, 0x4D])) { + return { + ext: 'bmp', + mime: 'image/bmp' + }; + } + + if (check([0x49, 0x49, 0xBC])) { + return { + ext: 'jxr', + mime: 'image/vnd.ms-photo' + }; + } + + if (check([0x38, 0x42, 0x50, 0x53])) { + return { + ext: 'psd', + mime: 'image/vnd.adobe.photoshop' + }; + } // Zip-based file formats + // Need to be before the `zip` check + + + if (check([0x50, 0x4B, 0x3, 0x4])) { + if (check([0x6D, 0x69, 0x6D, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x65, 0x70, 0x75, 0x62, 0x2B, 0x7A, 0x69, 0x70], { + offset: 30 + })) { + return { + ext: 'epub', + mime: 'application/epub+zip' + }; + } // Assumes signed `.xpi` from addons.mozilla.org + + + if (check(xpiZipFilename, { + offset: 30 + })) { + return { + ext: 'xpi', + mime: 'application/x-xpinstall' + }; + } + + if (checkString('mimetypeapplication/vnd.oasis.opendocument.text', { + offset: 30 + })) { + return { + ext: 'odt', + mime: 'application/vnd.oasis.opendocument.text' + }; + } + + if (checkString('mimetypeapplication/vnd.oasis.opendocument.spreadsheet', { + offset: 30 + })) { + return { + ext: 'ods', + mime: 'application/vnd.oasis.opendocument.spreadsheet' + }; + } + + if (checkString('mimetypeapplication/vnd.oasis.opendocument.presentation', { + offset: 30 + })) { + return { + ext: 'odp', + mime: 'application/vnd.oasis.opendocument.presentation' + }; + } // The docx, xlsx and pptx file types extend the Office Open XML file format: + // https://en.wikipedia.org/wiki/Office_Open_XML_file_formats + // We look for: + // - one entry named '[Content_Types].xml' or '_rels/.rels', + // - one entry indicating specific type of file. + // MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it. + + + var findNextZipHeaderIndex = function findNextZipHeaderIndex(arr) { + var startAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + return arr.findIndex(function (el, i, arr) { + return i >= startAt && arr[i] === 0x50 && arr[i + 1] === 0x4B && arr[i + 2] === 0x3 && arr[i + 3] === 0x4; + }); + }; + + var zipHeaderIndex = 0; // The first zip header was already found at index 0 + + var oxmlFound = false; + var type = null; + + do { + var offset = zipHeaderIndex + 30; + + if (!oxmlFound) { + oxmlFound = check(oxmlContentTypes, { + offset: offset + }) || check(oxmlRels, { + offset: offset + }); + } + + if (!type) { + if (checkString('word/', { + offset: offset + })) { + type = { + ext: 'docx', + mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' + }; + } else if (checkString('ppt/', { + offset: offset + })) { + type = { + ext: 'pptx', + mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' + }; + } else if (checkString('xl/', { + offset: offset + })) { + type = { + ext: 'xlsx', + mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + }; + } + } + + if (oxmlFound && type) { + return type; + } + + zipHeaderIndex = findNextZipHeaderIndex(buf, offset); + } while (zipHeaderIndex >= 0); // No more zip parts available in the buffer, but maybe we are almost certain about the type? + + + if (type) { + return type; + } + } + + if (check([0x50, 0x4B]) && (buf[2] === 0x3 || buf[2] === 0x5 || buf[2] === 0x7) && (buf[3] === 0x4 || buf[3] === 0x6 || buf[3] === 0x8)) { + return { + ext: 'zip', + mime: 'application/zip' + }; + } + + if (check([0x75, 0x73, 0x74, 0x61, 0x72], { + offset: 257 + })) { + return { + ext: 'tar', + mime: 'application/x-tar' + }; + } + + if (check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) && (buf[6] === 0x0 || buf[6] === 0x1)) { + return { + ext: 'rar', + mime: 'application/x-rar-compressed' + }; + } + + if (check([0x1F, 0x8B, 0x8])) { + return { + ext: 'gz', + mime: 'application/gzip' + }; + } + + if (check([0x42, 0x5A, 0x68])) { + return { + ext: 'bz2', + mime: 'application/x-bzip2' + }; + } + + if (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) { + return { + ext: '7z', + mime: 'application/x-7z-compressed' + }; + } + + if (check([0x78, 0x01])) { + return { + ext: 'dmg', + mime: 'application/x-apple-diskimage' + }; + } + + if (check([0x33, 0x67, 0x70, 0x35]) || // 3gp5 + check([0x0, 0x0, 0x0]) && check([0x66, 0x74, 0x79, 0x70], { + offset: 4 + }) && (check([0x6D, 0x70, 0x34, 0x31], { + offset: 8 + }) || // MP41 + check([0x6D, 0x70, 0x34, 0x32], { + offset: 8 + }) || // MP42 + check([0x69, 0x73, 0x6F, 0x6D], { + offset: 8 + }) || // ISOM + check([0x69, 0x73, 0x6F, 0x32], { + offset: 8 + }) || // ISO2 + check([0x6D, 0x6D, 0x70, 0x34], { + offset: 8 + }) || // MMP4 + check([0x4D, 0x34, 0x56], { + offset: 8 + }) || // M4V + check([0x64, 0x61, 0x73, 0x68], { + offset: 8 + }) // DASH + )) { + return { + ext: 'mp4', + mime: 'video/mp4' + }; + } + + if (check([0x4D, 0x54, 0x68, 0x64])) { + return { + ext: 'mid', + mime: 'audio/midi' + }; + } // https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska + + + if (check([0x1A, 0x45, 0xDF, 0xA3])) { + var sliced = buf.subarray(4, 4 + 4096); + var idPos = sliced.findIndex(function (el, i, arr) { + return arr[i] === 0x42 && arr[i + 1] === 0x82; + }); + + if (idPos !== -1) { + var docTypePos = idPos + 3; + + var findDocType = function findDocType(type) { + return (0, _toConsumableArray2["default"])(type).every(function (c, i) { + return sliced[docTypePos + i] === c.charCodeAt(0); + }); + }; + + if (findDocType('matroska')) { + return { + ext: 'mkv', + mime: 'video/x-matroska' + }; + } + + if (findDocType('webm')) { + return { + ext: 'webm', + mime: 'video/webm' + }; + } + } + } + + if (check([0x0, 0x0, 0x0, 0x14, 0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20]) || check([0x66, 0x72, 0x65, 0x65], { + offset: 4 + }) || check([0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20], { + offset: 4 + }) || check([0x6D, 0x64, 0x61, 0x74], { + offset: 4 + }) || // MJPEG + check([0x77, 0x69, 0x64, 0x65], { + offset: 4 + })) { + return { + ext: 'mov', + mime: 'video/quicktime' + }; + } // RIFF file format which might be AVI, WAV, QCP, etc + + + if (check([0x52, 0x49, 0x46, 0x46])) { + if (check([0x41, 0x56, 0x49], { + offset: 8 + })) { + return { + ext: 'avi', + mime: 'video/vnd.avi' + }; + } + + if (check([0x57, 0x41, 0x56, 0x45], { + offset: 8 + })) { + return { + ext: 'wav', + mime: 'audio/vnd.wave' + }; + } // QLCM, QCP file + + + if (check([0x51, 0x4C, 0x43, 0x4D], { + offset: 8 + })) { + return { + ext: 'qcp', + mime: 'audio/qcelp' + }; + } + } + + if (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) { + return { + ext: 'wmv', + mime: 'video/x-ms-wmv' + }; + } + + if (check([0x0, 0x0, 0x1, 0xBA]) || check([0x0, 0x0, 0x1, 0xB3])) { + return { + ext: 'mpg', + mime: 'video/mpeg' + }; + } + + if (check([0x66, 0x74, 0x79, 0x70, 0x33, 0x67], { + offset: 4 + })) { + return { + ext: '3gp', + mime: 'video/3gpp' + }; + } // Check for MPEG header at different starting offsets + + + for (var start = 0; start < 2 && start < buf.length - 16; start++) { + if (check([0x49, 0x44, 0x33], { + offset: start + }) || // ID3 header + check([0xFF, 0xE2], { + offset: start, + mask: [0xFF, 0xE2] + }) // MPEG 1 or 2 Layer 3 header + ) { + return { + ext: 'mp3', + mime: 'audio/mpeg' + }; + } + + if (check([0xFF, 0xE4], { + offset: start, + mask: [0xFF, 0xE4] + }) // MPEG 1 or 2 Layer 2 header + ) { + return { + ext: 'mp2', + mime: 'audio/mpeg' + }; + } + + if (check([0xFF, 0xF8], { + offset: start, + mask: [0xFF, 0xFC] + }) // MPEG 2 layer 0 using ADTS + ) { + return { + ext: 'mp2', + mime: 'audio/mpeg' + }; + } + + if (check([0xFF, 0xF0], { + offset: start, + mask: [0xFF, 0xFC] + }) // MPEG 4 layer 0 using ADTS + ) { + return { + ext: 'mp4', + mime: 'audio/mpeg' + }; + } + } + + if (check([0x66, 0x74, 0x79, 0x70, 0x4D, 0x34, 0x41], { + offset: 4 + }) || check([0x4D, 0x34, 0x41, 0x20])) { + return { + // MPEG-4 layer 3 (audio) + ext: 'm4a', + mime: 'audio/mp4' // RFC 4337 + + }; + } // Needs to be before `ogg` check + + + if (check([0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64], { + offset: 28 + })) { + return { + ext: 'opus', + mime: 'audio/opus' + }; + } // If 'OggS' in first bytes, then OGG container + + + if (check([0x4F, 0x67, 0x67, 0x53])) { + // This is a OGG container + // If ' theora' in header. + if (check([0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61], { + offset: 28 + })) { + return { + ext: 'ogv', + mime: 'video/ogg' + }; + } // If '\x01video' in header. + + + if (check([0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00], { + offset: 28 + })) { + return { + ext: 'ogm', + mime: 'video/ogg' + }; + } // If ' FLAC' in header https://xiph.org/flac/faq.html + + + if (check([0x7F, 0x46, 0x4C, 0x41, 0x43], { + offset: 28 + })) { + return { + ext: 'oga', + mime: 'audio/ogg' + }; + } // 'Speex ' in header https://en.wikipedia.org/wiki/Speex + + + if (check([0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20], { + offset: 28 + })) { + return { + ext: 'spx', + mime: 'audio/ogg' + }; + } // If '\x01vorbis' in header + + + if (check([0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73], { + offset: 28 + })) { + return { + ext: 'ogg', + mime: 'audio/ogg' + }; + } // Default OGG container https://www.iana.org/assignments/media-types/application/ogg + + + return { + ext: 'ogx', + mime: 'application/ogg' + }; + } + + if (check([0x66, 0x4C, 0x61, 0x43])) { + return { + ext: 'flac', + mime: 'audio/x-flac' + }; + } + + if (check([0x4D, 0x41, 0x43, 0x20])) { + // 'MAC ' + return { + ext: 'ape', + mime: 'audio/ape' + }; + } + + if (check([0x77, 0x76, 0x70, 0x6B])) { + // 'wvpk' + return { + ext: 'wv', + mime: 'audio/wavpack' + }; + } + + if (check([0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A])) { + return { + ext: 'amr', + mime: 'audio/amr' + }; + } + + if (check([0x25, 0x50, 0x44, 0x46])) { + return { + ext: 'pdf', + mime: 'application/pdf' + }; + } + + if (check([0x4D, 0x5A])) { + return { + ext: 'exe', + mime: 'application/x-msdownload' + }; + } + + if ((buf[0] === 0x43 || buf[0] === 0x46) && check([0x57, 0x53], { + offset: 1 + })) { + return { + ext: 'swf', + mime: 'application/x-shockwave-flash' + }; + } + + if (check([0x7B, 0x5C, 0x72, 0x74, 0x66])) { + return { + ext: 'rtf', + mime: 'application/rtf' + }; + } + + if (check([0x00, 0x61, 0x73, 0x6D])) { + return { + ext: 'wasm', + mime: 'application/wasm' + }; + } + + if (check([0x77, 0x4F, 0x46, 0x46]) && (check([0x00, 0x01, 0x00, 0x00], { + offset: 4 + }) || check([0x4F, 0x54, 0x54, 0x4F], { + offset: 4 + }))) { + return { + ext: 'woff', + mime: 'font/woff' + }; + } + + if (check([0x77, 0x4F, 0x46, 0x32]) && (check([0x00, 0x01, 0x00, 0x00], { + offset: 4 + }) || check([0x4F, 0x54, 0x54, 0x4F], { + offset: 4 + }))) { + return { + ext: 'woff2', + mime: 'font/woff2' + }; + } + + if (check([0x4C, 0x50], { + offset: 34 + }) && (check([0x00, 0x00, 0x01], { + offset: 8 + }) || check([0x01, 0x00, 0x02], { + offset: 8 + }) || check([0x02, 0x00, 0x02], { + offset: 8 + }))) { + return { + ext: 'eot', + mime: 'application/vnd.ms-fontobject' + }; + } + + if (check([0x00, 0x01, 0x00, 0x00, 0x00])) { + return { + ext: 'ttf', + mime: 'font/ttf' + }; + } + + if (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) { + return { + ext: 'otf', + mime: 'font/otf' + }; + } + + if (check([0x00, 0x00, 0x01, 0x00])) { + return { + ext: 'ico', + mime: 'image/x-icon' + }; + } + + if (check([0x00, 0x00, 0x02, 0x00])) { + return { + ext: 'cur', + mime: 'image/x-icon' + }; + } + + if (check([0x46, 0x4C, 0x56, 0x01])) { + return { + ext: 'flv', + mime: 'video/x-flv' + }; + } + + if (check([0x25, 0x21])) { + return { + ext: 'ps', + mime: 'application/postscript' + }; + } + + if (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) { + return { + ext: 'xz', + mime: 'application/x-xz' + }; + } + + if (check([0x53, 0x51, 0x4C, 0x69])) { + return { + ext: 'sqlite', + mime: 'application/x-sqlite3' + }; + } + + if (check([0x4E, 0x45, 0x53, 0x1A])) { + return { + ext: 'nes', + mime: 'application/x-nintendo-nes-rom' + }; + } + + if (check([0x43, 0x72, 0x32, 0x34])) { + return { + ext: 'crx', + mime: 'application/x-google-chrome-extension' + }; + } + + if (check([0x4D, 0x53, 0x43, 0x46]) || check([0x49, 0x53, 0x63, 0x28])) { + return { + ext: 'cab', + mime: 'application/vnd.ms-cab-compressed' + }; + } // Needs to be before `ar` check + + + if (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E, 0x0A, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79])) { + return { + ext: 'deb', + mime: 'application/x-deb' + }; + } + + if (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E])) { + return { + ext: 'ar', + mime: 'application/x-unix-archive' + }; + } + + if (check([0xED, 0xAB, 0xEE, 0xDB])) { + return { + ext: 'rpm', + mime: 'application/x-rpm' + }; + } + + if (check([0x1F, 0xA0]) || check([0x1F, 0x9D])) { + return { + ext: 'Z', + mime: 'application/x-compress' + }; + } + + if (check([0x4C, 0x5A, 0x49, 0x50])) { + return { + ext: 'lz', + mime: 'application/x-lzip' + }; + } + + if (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) { + return { + ext: 'msi', + mime: 'application/x-msi' + }; + } + + if (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) { + return { + ext: 'mxf', + mime: 'application/mxf' + }; + } + + if (check([0x47], { + offset: 4 + }) && (check([0x47], { + offset: 192 + }) || check([0x47], { + offset: 196 + }))) { + return { + ext: 'mts', + mime: 'video/mp2t' + }; + } + + if (check([0x42, 0x4C, 0x45, 0x4E, 0x44, 0x45, 0x52])) { + return { + ext: 'blend', + mime: 'application/x-blender' + }; + } + + if (check([0x42, 0x50, 0x47, 0xFB])) { + return { + ext: 'bpg', + mime: 'image/bpg' + }; + } + + if (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) { + // JPEG-2000 family + if (check([0x6A, 0x70, 0x32, 0x20], { + offset: 20 + })) { + return { + ext: 'jp2', + mime: 'image/jp2' + }; + } + + if (check([0x6A, 0x70, 0x78, 0x20], { + offset: 20 + })) { + return { + ext: 'jpx', + mime: 'image/jpx' + }; + } + + if (check([0x6A, 0x70, 0x6D, 0x20], { + offset: 20 + })) { + return { + ext: 'jpm', + mime: 'image/jpm' + }; + } + + if (check([0x6D, 0x6A, 0x70, 0x32], { + offset: 20 + })) { + return { + ext: 'mj2', + mime: 'image/mj2' + }; + } + } + + if (check([0x46, 0x4F, 0x52, 0x4D, 0x00])) { + return { + ext: 'aif', + mime: 'audio/aiff' + }; + } + + if (checkString('= 3) { + receiver = thisArg; + } + + if (toStr.call(list) === '[object Array]') { + forEachArray(list, iterator, receiver); + } else if (typeof list === 'string') { + forEachString(list, iterator, receiver); + } else { + forEachObject(list, iterator, receiver); + } +}; + +module.exports = forEach; + +},{"is-callable":77}],64:[function(require,module,exports){ +// (c) Dean McNamee , 2013. +// +// https://github.com/deanm/omggif +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +// IN THE SOFTWARE. +// +// omggif is a JavaScript implementation of a GIF 89a encoder and decoder, +// including animation and compression. It does not rely on any specific +// underlying system, so should run in the browser, Node, or Plask. + +"use strict"; + +function GifWriter(buf, width, height, gopts) { + var p = 0; + + var gopts = gopts === undefined ? { } : gopts; + var loop_count = gopts.loop === undefined ? null : gopts.loop; + var global_palette = gopts.palette === undefined ? null : gopts.palette; + + if (width <= 0 || height <= 0 || width > 65535 || height > 65535) + throw new Error("Width/Height invalid."); + + function check_palette_and_num_colors(palette) { + var num_colors = palette.length; + if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors-1)) { + throw new Error( + "Invalid code/color length, must be power of 2 and 2 .. 256."); + } + return num_colors; + } + + // - Header. + buf[p++] = 0x47; buf[p++] = 0x49; buf[p++] = 0x46; // GIF + buf[p++] = 0x38; buf[p++] = 0x39; buf[p++] = 0x61; // 89a + + // Handling of Global Color Table (palette) and background index. + var gp_num_colors_pow2 = 0; + var background = 0; + if (global_palette !== null) { + var gp_num_colors = check_palette_and_num_colors(global_palette); + while (gp_num_colors >>= 1) ++gp_num_colors_pow2; + gp_num_colors = 1 << gp_num_colors_pow2; + --gp_num_colors_pow2; + if (gopts.background !== undefined) { + background = gopts.background; + if (background >= gp_num_colors) + throw new Error("Background index out of range."); + // The GIF spec states that a background index of 0 should be ignored, so + // this is probably a mistake and you really want to set it to another + // slot in the palette. But actually in the end most browsers, etc end + // up ignoring this almost completely (including for dispose background). + if (background === 0) + throw new Error("Background index explicitly passed as 0."); + } + } + + // - Logical Screen Descriptor. + // NOTE(deanm): w/h apparently ignored by implementations, but set anyway. + buf[p++] = width & 0xff; buf[p++] = width >> 8 & 0xff; + buf[p++] = height & 0xff; buf[p++] = height >> 8 & 0xff; + // NOTE: Indicates 0-bpp original color resolution (unused?). + buf[p++] = (global_palette !== null ? 0x80 : 0) | // Global Color Table Flag. + gp_num_colors_pow2; // NOTE: No sort flag (unused?). + buf[p++] = background; // Background Color Index. + buf[p++] = 0; // Pixel aspect ratio (unused?). + + // - Global Color Table + if (global_palette !== null) { + for (var i = 0, il = global_palette.length; i < il; ++i) { + var rgb = global_palette[i]; + buf[p++] = rgb >> 16 & 0xff; + buf[p++] = rgb >> 8 & 0xff; + buf[p++] = rgb & 0xff; + } + } + + if (loop_count !== null) { // Netscape block for looping. + if (loop_count < 0 || loop_count > 65535) + throw new Error("Loop count invalid.") + // Extension code, label, and length. + buf[p++] = 0x21; buf[p++] = 0xff; buf[p++] = 0x0b; + // NETSCAPE2.0 + buf[p++] = 0x4e; buf[p++] = 0x45; buf[p++] = 0x54; buf[p++] = 0x53; + buf[p++] = 0x43; buf[p++] = 0x41; buf[p++] = 0x50; buf[p++] = 0x45; + buf[p++] = 0x32; buf[p++] = 0x2e; buf[p++] = 0x30; + // Sub-block + buf[p++] = 0x03; buf[p++] = 0x01; + buf[p++] = loop_count & 0xff; buf[p++] = loop_count >> 8 & 0xff; + buf[p++] = 0x00; // Terminator. + } + + + var ended = false; + + this.addFrame = function(x, y, w, h, indexed_pixels, opts) { + if (ended === true) { --p; ended = false; } // Un-end. + + opts = opts === undefined ? { } : opts; + + // TODO(deanm): Bounds check x, y. Do they need to be within the virtual + // canvas width/height, I imagine? + if (x < 0 || y < 0 || x > 65535 || y > 65535) + throw new Error("x/y invalid.") + + if (w <= 0 || h <= 0 || w > 65535 || h > 65535) + throw new Error("Width/Height invalid.") + + if (indexed_pixels.length < w * h) + throw new Error("Not enough pixels for the frame size."); + + var using_local_palette = true; + var palette = opts.palette; + if (palette === undefined || palette === null) { + using_local_palette = false; + palette = global_palette; + } + + if (palette === undefined || palette === null) + throw new Error("Must supply either a local or global palette."); + + var num_colors = check_palette_and_num_colors(palette); + + // Compute the min_code_size (power of 2), destroying num_colors. + var min_code_size = 0; + while (num_colors >>= 1) ++min_code_size; + num_colors = 1 << min_code_size; // Now we can easily get it back. + + var delay = opts.delay === undefined ? 0 : opts.delay; + + // From the spec: + // 0 - No disposal specified. The decoder is + // not required to take any action. + // 1 - Do not dispose. The graphic is to be left + // in place. + // 2 - Restore to background color. The area used by the + // graphic must be restored to the background color. + // 3 - Restore to previous. The decoder is required to + // restore the area overwritten by the graphic with + // what was there prior to rendering the graphic. + // 4-7 - To be defined. + // NOTE(deanm): Dispose background doesn't really work, apparently most + // browsers ignore the background palette index and clear to transparency. + var disposal = opts.disposal === undefined ? 0 : opts.disposal; + if (disposal < 0 || disposal > 3) // 4-7 is reserved. + throw new Error("Disposal out of range."); + + var use_transparency = false; + var transparent_index = 0; + if (opts.transparent !== undefined && opts.transparent !== null) { + use_transparency = true; + transparent_index = opts.transparent; + if (transparent_index < 0 || transparent_index >= num_colors) + throw new Error("Transparent color index."); + } + + if (disposal !== 0 || use_transparency || delay !== 0) { + // - Graphics Control Extension + buf[p++] = 0x21; buf[p++] = 0xf9; // Extension / Label. + buf[p++] = 4; // Byte size. + + buf[p++] = disposal << 2 | (use_transparency === true ? 1 : 0); + buf[p++] = delay & 0xff; buf[p++] = delay >> 8 & 0xff; + buf[p++] = transparent_index; // Transparent color index. + buf[p++] = 0; // Block Terminator. + } + + // - Image Descriptor + buf[p++] = 0x2c; // Image Seperator. + buf[p++] = x & 0xff; buf[p++] = x >> 8 & 0xff; // Left. + buf[p++] = y & 0xff; buf[p++] = y >> 8 & 0xff; // Top. + buf[p++] = w & 0xff; buf[p++] = w >> 8 & 0xff; + buf[p++] = h & 0xff; buf[p++] = h >> 8 & 0xff; + // NOTE: No sort flag (unused?). + // TODO(deanm): Support interlace. + buf[p++] = using_local_palette === true ? (0x80 | (min_code_size-1)) : 0; + + // - Local Color Table + if (using_local_palette === true) { + for (var i = 0, il = palette.length; i < il; ++i) { + var rgb = palette[i]; + buf[p++] = rgb >> 16 & 0xff; + buf[p++] = rgb >> 8 & 0xff; + buf[p++] = rgb & 0xff; + } + } + + p = GifWriterOutputLZWCodeStream( + buf, p, min_code_size < 2 ? 2 : min_code_size, indexed_pixels); + + return p; + }; + + this.end = function() { + if (ended === false) { + buf[p++] = 0x3b; // Trailer. + ended = true; + } + return p; + }; + + this.getOutputBuffer = function() { return buf; }; + this.setOutputBuffer = function(v) { buf = v; }; + this.getOutputBufferPosition = function() { return p; }; + this.setOutputBufferPosition = function(v) { p = v; }; +} + +// Main compression routine, palette indexes -> LZW code stream. +// |index_stream| must have at least one entry. +function GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) { + buf[p++] = min_code_size; + var cur_subblock = p++; // Pointing at the length field. + + var clear_code = 1 << min_code_size; + var code_mask = clear_code - 1; + var eoi_code = clear_code + 1; + var next_code = eoi_code + 1; + + var cur_code_size = min_code_size + 1; // Number of bits per code. + var cur_shift = 0; + // We have at most 12-bit codes, so we should have to hold a max of 19 + // bits here (and then we would write out). + var cur = 0; + + function emit_bytes_to_buffer(bit_block_size) { + while (cur_shift >= bit_block_size) { + buf[p++] = cur & 0xff; + cur >>= 8; cur_shift -= 8; + if (p === cur_subblock + 256) { // Finished a subblock. + buf[cur_subblock] = 255; + cur_subblock = p++; + } + } + } + + function emit_code(c) { + cur |= c << cur_shift; + cur_shift += cur_code_size; + emit_bytes_to_buffer(8); + } + + // I am not an expert on the topic, and I don't want to write a thesis. + // However, it is good to outline here the basic algorithm and the few data + // structures and optimizations here that make this implementation fast. + // The basic idea behind LZW is to build a table of previously seen runs + // addressed by a short id (herein called output code). All data is + // referenced by a code, which represents one or more values from the + // original input stream. All input bytes can be referenced as the same + // value as an output code. So if you didn't want any compression, you + // could more or less just output the original bytes as codes (there are + // some details to this, but it is the idea). In order to achieve + // compression, values greater then the input range (codes can be up to + // 12-bit while input only 8-bit) represent a sequence of previously seen + // inputs. The decompressor is able to build the same mapping while + // decoding, so there is always a shared common knowledge between the + // encoding and decoder, which is also important for "timing" aspects like + // how to handle variable bit width code encoding. + // + // One obvious but very important consequence of the table system is there + // is always a unique id (at most 12-bits) to map the runs. 'A' might be + // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc. This relationship + // can be used for an effecient lookup strategy for the code mapping. We + // need to know if a run has been seen before, and be able to map that run + // to the output code. Since we start with known unique ids (input bytes), + // and then from those build more unique ids (table entries), we can + // continue this chain (almost like a linked list) to always have small + // integer values that represent the current byte chains in the encoder. + // This means instead of tracking the input bytes (AAAABCD) to know our + // current state, we can track the table entry for AAAABC (it is guaranteed + // to exist by the nature of the algorithm) and the next character D. + // Therefor the tuple of (table_entry, byte) is guaranteed to also be + // unique. This allows us to create a simple lookup key for mapping input + // sequences to codes (table indices) without having to store or search + // any of the code sequences. So if 'AAAA' has a table entry of 12, the + // tuple of ('AAAA', K) for any input byte K will be unique, and can be our + // key. This leads to a integer value at most 20-bits, which can always + // fit in an SMI value and be used as a fast sparse array / object key. + + // Output code for the current contents of the index buffer. + var ib_code = index_stream[0] & code_mask; // Load first input index. + var code_table = { }; // Key'd on our 20-bit "tuple". + + emit_code(clear_code); // Spec says first code should be a clear code. + + // First index already loaded, process the rest of the stream. + for (var i = 1, il = index_stream.length; i < il; ++i) { + var k = index_stream[i] & code_mask; + var cur_key = ib_code << 8 | k; // (prev, k) unique tuple. + var cur_code = code_table[cur_key]; // buffer + k. + + // Check if we have to create a new code table entry. + if (cur_code === undefined) { // We don't have buffer + k. + // Emit index buffer (without k). + // This is an inline version of emit_code, because this is the core + // writing routine of the compressor (and V8 cannot inline emit_code + // because it is a closure here in a different context). Additionally + // we can call emit_byte_to_buffer less often, because we can have + // 30-bits (from our 31-bit signed SMI), and we know our codes will only + // be 12-bits, so can safely have 18-bits there without overflow. + // emit_code(ib_code); + cur |= ib_code << cur_shift; + cur_shift += cur_code_size; + while (cur_shift >= 8) { + buf[p++] = cur & 0xff; + cur >>= 8; cur_shift -= 8; + if (p === cur_subblock + 256) { // Finished a subblock. + buf[cur_subblock] = 255; + cur_subblock = p++; + } + } + + if (next_code === 4096) { // Table full, need a clear. + emit_code(clear_code); + next_code = eoi_code + 1; + cur_code_size = min_code_size + 1; + code_table = { }; + } else { // Table not full, insert a new entry. + // Increase our variable bit code sizes if necessary. This is a bit + // tricky as it is based on "timing" between the encoding and + // decoder. From the encoders perspective this should happen after + // we've already emitted the index buffer and are about to create the + // first table entry that would overflow our current code bit size. + if (next_code >= (1 << cur_code_size)) ++cur_code_size; + code_table[cur_key] = next_code++; // Insert into code table. + } + + ib_code = k; // Index buffer to single input k. + } else { + ib_code = cur_code; // Index buffer to sequence in code table. + } + } + + emit_code(ib_code); // There will still be something in the index buffer. + emit_code(eoi_code); // End Of Information. + + // Flush / finalize the sub-blocks stream to the buffer. + emit_bytes_to_buffer(1); + + // Finish the sub-blocks, writing out any unfinished lengths and + // terminating with a sub-block of length 0. If we have already started + // but not yet used a sub-block it can just become the terminator. + if (cur_subblock + 1 === p) { // Started but unused. + buf[cur_subblock] = 0; + } else { // Started and used, write length and additional terminator block. + buf[cur_subblock] = p - cur_subblock - 1; + buf[p++] = 0; + } + return p; +} + +function GifReader(buf) { + var p = 0; + + // - Header (GIF87a or GIF89a). + if (buf[p++] !== 0x47 || buf[p++] !== 0x49 || buf[p++] !== 0x46 || + buf[p++] !== 0x38 || (buf[p++]+1 & 0xfd) !== 0x38 || buf[p++] !== 0x61) { + throw new Error("Invalid GIF 87a/89a header."); + } + + // - Logical Screen Descriptor. + var width = buf[p++] | buf[p++] << 8; + var height = buf[p++] | buf[p++] << 8; + var pf0 = buf[p++]; // . + var global_palette_flag = pf0 >> 7; + var num_global_colors_pow2 = pf0 & 0x7; + var num_global_colors = 1 << (num_global_colors_pow2 + 1); + var background = buf[p++]; + buf[p++]; // Pixel aspect ratio (unused?). + + var global_palette_offset = null; + var global_palette_size = null; + + if (global_palette_flag) { + global_palette_offset = p; + global_palette_size = num_global_colors; + p += num_global_colors * 3; // Seek past palette. + } + + var no_eof = true; + + var frames = [ ]; + + var delay = 0; + var transparent_index = null; + var disposal = 0; // 0 - No disposal specified. + var loop_count = null; + + this.width = width; + this.height = height; + + while (no_eof && p < buf.length) { + switch (buf[p++]) { + case 0x21: // Graphics Control Extension Block + switch (buf[p++]) { + case 0xff: // Application specific block + // Try if it's a Netscape block (with animation loop counter). + if (buf[p ] !== 0x0b || // 21 FF already read, check block size. + // NETSCAPE2.0 + buf[p+1 ] == 0x4e && buf[p+2 ] == 0x45 && buf[p+3 ] == 0x54 && + buf[p+4 ] == 0x53 && buf[p+5 ] == 0x43 && buf[p+6 ] == 0x41 && + buf[p+7 ] == 0x50 && buf[p+8 ] == 0x45 && buf[p+9 ] == 0x32 && + buf[p+10] == 0x2e && buf[p+11] == 0x30 && + // Sub-block + buf[p+12] == 0x03 && buf[p+13] == 0x01 && buf[p+16] == 0) { + p += 14; + loop_count = buf[p++] | buf[p++] << 8; + p++; // Skip terminator. + } else { // We don't know what it is, just try to get past it. + p += 12; + while (true) { // Seek through subblocks. + var block_size = buf[p++]; + // Bad block size (ex: undefined from an out of bounds read). + if (!(block_size >= 0)) throw Error("Invalid block size"); + if (block_size === 0) break; // 0 size is terminator + p += block_size; + } + } + break; + + case 0xf9: // Graphics Control Extension + if (buf[p++] !== 0x4 || buf[p+4] !== 0) + throw new Error("Invalid graphics extension block."); + var pf1 = buf[p++]; + delay = buf[p++] | buf[p++] << 8; + transparent_index = buf[p++]; + if ((pf1 & 1) === 0) transparent_index = null; + disposal = pf1 >> 2 & 0x7; + p++; // Skip terminator. + break; + + case 0xfe: // Comment Extension. + while (true) { // Seek through subblocks. + var block_size = buf[p++]; + // Bad block size (ex: undefined from an out of bounds read). + if (!(block_size >= 0)) throw Error("Invalid block size"); + if (block_size === 0) break; // 0 size is terminator + // console.log(buf.slice(p, p+block_size).toString('ascii')); + p += block_size; + } + break; + + default: + throw new Error( + "Unknown graphic control label: 0x" + buf[p-1].toString(16)); + } + break; + + case 0x2c: // Image Descriptor. + var x = buf[p++] | buf[p++] << 8; + var y = buf[p++] | buf[p++] << 8; + var w = buf[p++] | buf[p++] << 8; + var h = buf[p++] | buf[p++] << 8; + var pf2 = buf[p++]; + var local_palette_flag = pf2 >> 7; + var interlace_flag = pf2 >> 6 & 1; + var num_local_colors_pow2 = pf2 & 0x7; + var num_local_colors = 1 << (num_local_colors_pow2 + 1); + var palette_offset = global_palette_offset; + var palette_size = global_palette_size; + var has_local_palette = false; + if (local_palette_flag) { + var has_local_palette = true; + palette_offset = p; // Override with local palette. + palette_size = num_local_colors; + p += num_local_colors * 3; // Seek past palette. + } + + var data_offset = p; + + p++; // codesize + while (true) { + var block_size = buf[p++]; + // Bad block size (ex: undefined from an out of bounds read). + if (!(block_size >= 0)) throw Error("Invalid block size"); + if (block_size === 0) break; // 0 size is terminator + p += block_size; + } + + frames.push({x: x, y: y, width: w, height: h, + has_local_palette: has_local_palette, + palette_offset: palette_offset, + palette_size: palette_size, + data_offset: data_offset, + data_length: p - data_offset, + transparent_index: transparent_index, + interlaced: !!interlace_flag, + delay: delay, + disposal: disposal}); + break; + + case 0x3b: // Trailer Marker (end of file). + no_eof = false; + break; + + default: + throw new Error("Unknown gif block: 0x" + buf[p-1].toString(16)); + break; + } + } + + this.numFrames = function() { + return frames.length; + }; + + this.loopCount = function() { + return loop_count; + }; + + this.frameInfo = function(frame_num) { + if (frame_num < 0 || frame_num >= frames.length) + throw new Error("Frame index out of range."); + return frames[frame_num]; + } + + this.decodeAndBlitFrameBGRA = function(frame_num, pixels) { + var frame = this.frameInfo(frame_num); + var num_pixels = frame.width * frame.height; + var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices. + GifReaderLZWOutputIndexStream( + buf, frame.data_offset, index_stream, num_pixels); + var palette_offset = frame.palette_offset; + + // NOTE(deanm): It seems to be much faster to compare index to 256 than + // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in + // the profile, not sure if it's related to using a Uint8Array. + var trans = frame.transparent_index; + if (trans === null) trans = 256; + + // We are possibly just blitting to a portion of the entire frame. + // That is a subrect within the framerect, so the additional pixels + // must be skipped over after we finished a scanline. + var framewidth = frame.width; + var framestride = width - framewidth; + var xleft = framewidth; // Number of subrect pixels left in scanline. + + // Output indicies of the top left and bottom right corners of the subrect. + var opbeg = ((frame.y * width) + frame.x) * 4; + var opend = ((frame.y + frame.height) * width + frame.x) * 4; + var op = opbeg; + + var scanstride = framestride * 4; + + // Use scanstride to skip past the rows when interlacing. This is skipping + // 7 rows for the first two passes, then 3 then 1. + if (frame.interlaced === true) { + scanstride += width * 4 * 7; // Pass 1. + } + + var interlaceskip = 8; // Tracking the row interval in the current pass. + + for (var i = 0, il = index_stream.length; i < il; ++i) { + var index = index_stream[i]; + + if (xleft === 0) { // Beginning of new scan line + op += scanstride; + xleft = framewidth; + if (op >= opend) { // Catch the wrap to switch passes when interlacing. + scanstride = framestride * 4 + width * 4 * (interlaceskip-1); + // interlaceskip / 2 * 4 is interlaceskip << 1. + op = opbeg + (framewidth + framestride) * (interlaceskip << 1); + interlaceskip >>= 1; + } + } + + if (index === trans) { + op += 4; + } else { + var r = buf[palette_offset + index * 3]; + var g = buf[palette_offset + index * 3 + 1]; + var b = buf[palette_offset + index * 3 + 2]; + pixels[op++] = b; + pixels[op++] = g; + pixels[op++] = r; + pixels[op++] = 255; + } + --xleft; + } + }; + + // I will go to copy and paste hell one day... + this.decodeAndBlitFrameRGBA = function(frame_num, pixels) { + var frame = this.frameInfo(frame_num); + var num_pixels = frame.width * frame.height; + var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices. + GifReaderLZWOutputIndexStream( + buf, frame.data_offset, index_stream, num_pixels); + var palette_offset = frame.palette_offset; + + // NOTE(deanm): It seems to be much faster to compare index to 256 than + // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in + // the profile, not sure if it's related to using a Uint8Array. + var trans = frame.transparent_index; + if (trans === null) trans = 256; + + // We are possibly just blitting to a portion of the entire frame. + // That is a subrect within the framerect, so the additional pixels + // must be skipped over after we finished a scanline. + var framewidth = frame.width; + var framestride = width - framewidth; + var xleft = framewidth; // Number of subrect pixels left in scanline. + + // Output indicies of the top left and bottom right corners of the subrect. + var opbeg = ((frame.y * width) + frame.x) * 4; + var opend = ((frame.y + frame.height) * width + frame.x) * 4; + var op = opbeg; + + var scanstride = framestride * 4; + + // Use scanstride to skip past the rows when interlacing. This is skipping + // 7 rows for the first two passes, then 3 then 1. + if (frame.interlaced === true) { + scanstride += width * 4 * 7; // Pass 1. + } + + var interlaceskip = 8; // Tracking the row interval in the current pass. + + for (var i = 0, il = index_stream.length; i < il; ++i) { + var index = index_stream[i]; + + if (xleft === 0) { // Beginning of new scan line + op += scanstride; + xleft = framewidth; + if (op >= opend) { // Catch the wrap to switch passes when interlacing. + scanstride = framestride * 4 + width * 4 * (interlaceskip-1); + // interlaceskip / 2 * 4 is interlaceskip << 1. + op = opbeg + (framewidth + framestride) * (interlaceskip << 1); + interlaceskip >>= 1; + } + } + + if (index === trans) { + op += 4; + } else { + var r = buf[palette_offset + index * 3]; + var g = buf[palette_offset + index * 3 + 1]; + var b = buf[palette_offset + index * 3 + 2]; + pixels[op++] = r; + pixels[op++] = g; + pixels[op++] = b; + pixels[op++] = 255; + } + --xleft; + } + }; +} + +function GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) { + var min_code_size = code_stream[p++]; + + var clear_code = 1 << min_code_size; + var eoi_code = clear_code + 1; + var next_code = eoi_code + 1; + + var cur_code_size = min_code_size + 1; // Number of bits per code. + // NOTE: This shares the same name as the encoder, but has a different + // meaning here. Here this masks each code coming from the code stream. + var code_mask = (1 << cur_code_size) - 1; + var cur_shift = 0; + var cur = 0; + + var op = 0; // Output pointer. + + var subblock_size = code_stream[p++]; + + // TODO(deanm): Would using a TypedArray be any faster? At least it would + // solve the fast mode / backing store uncertainty. + // var code_table = Array(4096); + var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits. + + var prev_code = null; // Track code-1. + + while (true) { + // Read up to two bytes, making sure we always 12-bits for max sized code. + while (cur_shift < 16) { + if (subblock_size === 0) break; // No more data to be read. + + cur |= code_stream[p++] << cur_shift; + cur_shift += 8; + + if (subblock_size === 1) { // Never let it get to 0 to hold logic above. + subblock_size = code_stream[p++]; // Next subblock. + } else { + --subblock_size; + } + } + + // TODO(deanm): We should never really get here, we should have received + // and EOI. + if (cur_shift < cur_code_size) + break; + + var code = cur & code_mask; + cur >>= cur_code_size; + cur_shift -= cur_code_size; + + // TODO(deanm): Maybe should check that the first code was a clear code, + // at least this is what you're supposed to do. But actually our encoder + // now doesn't emit a clear code first anyway. + if (code === clear_code) { + // We don't actually have to clear the table. This could be a good idea + // for greater error checking, but we don't really do any anyway. We + // will just track it with next_code and overwrite old entries. + + next_code = eoi_code + 1; + cur_code_size = min_code_size + 1; + code_mask = (1 << cur_code_size) - 1; + + // Don't update prev_code ? + prev_code = null; + continue; + } else if (code === eoi_code) { + break; + } + + // We have a similar situation as the decoder, where we want to store + // variable length entries (code table entries), but we want to do in a + // faster manner than an array of arrays. The code below stores sort of a + // linked list within the code table, and then "chases" through it to + // construct the dictionary entries. When a new entry is created, just the + // last byte is stored, and the rest (prefix) of the entry is only + // referenced by its table entry. Then the code chases through the + // prefixes until it reaches a single byte code. We have to chase twice, + // first to compute the length, and then to actually copy the data to the + // output (backwards, since we know the length). The alternative would be + // storing something in an intermediate stack, but that doesn't make any + // more sense. I implemented an approach where it also stored the length + // in the code table, although it's a bit tricky because you run out of + // bits (12 + 12 + 8), but I didn't measure much improvements (the table + // entries are generally not the long). Even when I created benchmarks for + // very long table entries the complexity did not seem worth it. + // The code table stores the prefix entry in 12 bits and then the suffix + // byte in 8 bits, so each entry is 20 bits. + + var chase_code = code < next_code ? code : prev_code; + + // Chase what we will output, either {CODE} or {CODE-1}. + var chase_length = 0; + var chase = chase_code; + while (chase > clear_code) { + chase = code_table[chase] >> 8; + ++chase_length; + } + + var k = chase; + + var op_end = op + chase_length + (chase_code !== code ? 1 : 0); + if (op_end > output_length) { + console.log("Warning, gif stream longer than expected."); + return; + } + + // Already have the first byte from the chase, might as well write it fast. + output[op++] = k; + + op += chase_length; + var b = op; // Track pointer, writing backwards. + + if (chase_code !== code) // The case of emitting {CODE-1} + k. + output[op++] = k; + + chase = chase_code; + while (chase_length--) { + chase = code_table[chase]; + output[--b] = chase & 0xff; // Write backwards. + chase >>= 8; // Pull down to the prefix code. + } + + if (prev_code !== null && next_code < 4096) { + code_table[next_code++] = prev_code << 8 | k; + // TODO(deanm): Figure out this clearing vs code growth logic better. I + // have an feeling that it should just happen somewhere else, for now it + // is awkward between when we grow past the max and then hit a clear code. + // For now just check if we hit the max 12-bits (then a clear code should + // follow, also of course encoded in 12-bits). + if (next_code >= code_mask+1 && cur_code_size < 12) { + ++cur_code_size; + code_mask = code_mask << 1 | 1; + } + } + + prev_code = code; + } + + if (op !== output_length) { + console.log("Warning, gif stream shorter than expected."); + } + + return output; +} + +// CommonJS. +try { exports.GifWriter = GifWriter; exports.GifReader = GifReader } catch(e) {} + +},{}],65:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +/** @class BitmapImage */ + +class BitmapImage { + + /** + * BitmapImage is a class that hold an RGBA (red, green, blue, alpha) representation of an image. It's shape is borrowed from the Jimp package to make it easy to transfer GIF image frames into Jimp and Jimp images into GIF image frames. Each instance has a `bitmap` property having the following properties: + * + * Property | Description + * --- | --- + * bitmap.width | width of image in pixels + * bitmap.height | height of image in pixels + * bitmap.data | a Buffer whose every four bytes represents a pixel, each sequential byte of a pixel corresponding to the red, green, blue, and alpha values of the pixel + * + * Its constructor supports the following signatures: + * + * * new BitmapImage(bitmap: { width: number, height: number, data: Buffer }) + * * new BitmapImage(bitmapImage: BitmapImage) + * * new BitmapImage(width: number, height: number, buffer: Buffer) + * * new BitmapImage(width: number, height: number, backgroundRGBA?: number) + * + * When a `BitmapImage` is provided, the constructed `BitmapImage` is a deep clone of the provided one, so that each image's pixel data can subsequently be modified without affecting each other. + * + * `backgroundRGBA` is an optional parameter representing a pixel as a single number. In hex, the number is as follows: 0xRRGGBBAA, where RR is the red byte, GG the green byte, BB, the blue byte, and AA the alpha value. An AA of 0x00 is considered transparent, and all non-zero AA values are treated as opaque. + */ + + constructor(...args) { + // don't confirm the number of args, because a subclass may have + // additional args and pass them all to the superclass + if (args.length === 0) { + throw new Error("constructor requires parameters"); + } + const firstArg = args[0]; + if (firstArg !== null && typeof firstArg === 'object') { + if (firstArg instanceof BitmapImage) { + // copy a provided BitmapImage + const sourceBitmap = firstArg.bitmap; + this.bitmap = { + width: sourceBitmap.width, + height: sourceBitmap.height, + data: new Buffer(sourceBitmap.width * sourceBitmap.height * 4) + }; + sourceBitmap.data.copy(this.bitmap.data); + } + else if (firstArg.width && firstArg.height && firstArg.data) { + // share a provided bitmap + this.bitmap = firstArg; + } + else { + throw new Error("unrecognized constructor parameters"); + } + } + else if (typeof firstArg === 'number' && typeof args[1] === 'number') + { + const width = firstArg; + const height = args[1]; + const thirdArg = args[2]; + this.bitmap = { width, height }; + + if (Buffer.isBuffer(thirdArg)) { + this.bitmap.data = thirdArg; + } + else { + this.bitmap.data = new Buffer(width * height * 4); + if (typeof thirdArg === 'number') { + this.fillRGBA(thirdArg); + } + } + } + else { + throw new Error("unrecognized constructor parameters"); + } + } + + /** + * Copy a square portion of this image into another image. + * + * @param {BitmapImage} toImage Image into which to copy the square + * @param {number} toX x-coord in toImage of upper-left corner of receiving square + * @param {number} toY y-coord in toImage of upper-left corner of receiving square + * @param {number} fromX x-coord in this image of upper-left corner of source square + * @param {number} fromY y-coord in this image of upper-left corner of source square + * @return {BitmapImage} The present image to allow for chaining. + */ + + blit(toImage, toX, toY, fromX, fromY, fromWidth, fromHeight) { + if (fromX + fromWidth > this.bitmap.width) { + throw new Error("copy exceeds width of source bitmap"); + } + if (toX + fromWidth > toImage.bitmap.width) { + throw new Error("copy exceeds width of target bitmap"); + } + if (fromY + fromHeight > this.bitmap.height) { + throw new Error("copy exceeds height of source bitmap"); + } + if (toY + fromHeight > toImage.bitmap.height) { + throw new Erro("copy exceeds height of target bitmap"); + } + + const sourceBuf = this.bitmap.data; + const targetBuf = toImage.bitmap.data; + const sourceByteWidth = this.bitmap.width * 4; + const targetByteWidth = toImage.bitmap.width * 4; + const copyByteWidth = fromWidth * 4; + let si = fromY * sourceByteWidth + fromX * 4; + let ti = toY * targetByteWidth + toX * 4; + + while (--fromHeight >= 0) { + sourceBuf.copy(targetBuf, ti, si, si + copyByteWidth); + si += sourceByteWidth; + ti += targetByteWidth; + } + return this; + } + + /** + * Fills the image with a single color. + * + * @param {number} rgba Color with which to fill image, expressed as a singlenumber in the form 0xRRGGBBAA, where AA is 0x00 for transparent and any other value for opaque. + * @return {BitmapImage} The present image to allow for chaining. + */ + + fillRGBA(rgba) { + const buf = this.bitmap.data; + const bufByteWidth = this.bitmap.height * 4; + + let bi = 0; + while (bi < bufByteWidth) { + buf.writeUInt32BE(rgba, bi); + bi += 4; + } + while (bi < buf.length) { + buf.copy(buf, bi, 0, bufByteWidth); + bi += bufByteWidth; + } + return this; + } + + /** + * Gets the RGBA number of the pixel at the given coordinate in the form 0xRRGGBBAA, where AA is the alpha value, with alpha 0x00 encoding to transparency in GIFs. + * + * @param {number} x x-coord of pixel + * @param {number} y y-coord of pixel + * @return {number} RGBA of pixel in 0xRRGGBBAA form + */ + + getRGBA(x, y) { + const bi = (y * this.bitmap.width + x) * 4; + return this.bitmap.data.readUInt32BE(bi); + } + + /** + * Gets a set of all RGBA colors found within the image. + * + * @return {Set} Set of all RGBA colors that the image contains. + */ + + getRGBASet() { + const rgbaSet = new Set(); + const buf = this.bitmap.data; + for (let bi = 0; bi < buf.length; bi += 4) { + rgbaSet.add(buf.readUInt32BE(bi, true)); + } + return rgbaSet; + } + + /** + * Converts the image to greyscale using inferred Adobe metrics. + * + * @return {BitmapImage} The present image to allow for chaining. + */ + + greyscale() { + const buf = this.bitmap.data; + this.scan(0, 0, this.bitmap.width, this.bitmap.height, (x, y, idx) => { + const grey = Math.round( + 0.299 * buf[idx] + + 0.587 * buf[idx + 1] + + 0.114 * buf[idx + 2] + ); + buf[idx] = grey; + buf[idx + 1] = grey; + buf[idx + 2] = grey; + }); + return this; + } + + /** + * Reframes the image as if placing a frame around the original image and replacing the original image with the newly framed image. When the new frame is strictly within the boundaries of the original image, this method crops the image. When any of the new boundaries exceed those of the original image, the `fillRGBA` must be provided to indicate the color with which to fill the extra space added to the image. + * + * @param {number} xOffset The x-coord offset of the upper-left pixel of the desired image relative to the present image. + * @param {number} yOffset The y-coord offset of the upper-left pixel of the desired image relative to the present image. + * @param {number} width The width of the new image after reframing + * @param {number} height The height of the new image after reframing + * @param {number} fillRGBA The color with which to fill space added to the image as a result of the reframing, in 0xRRGGBBAA format, where AA is 0x00 to indicate transparent and a non-zero value to indicate opaque. This parameter is only required when the reframing exceeds the original boundaries (i.e. does not simply perform a crop). + * @return {BitmapImage} The present image to allow for chaining. + */ + + reframe(xOffset, yOffset, width, height, fillRGBA) { + const cropX = (xOffset < 0 ? 0 : xOffset); + const cropY = (yOffset < 0 ? 0 : yOffset); + const cropWidth = (width + cropX > this.bitmap.width ? + this.bitmap.width - cropX : width); + const cropHeight = (height + cropY > this.bitmap.height ? + this.bitmap.height - cropY : height); + const newX = (xOffset < 0 ? -xOffset : 0); + const newY = (yOffset < 0 ? -yOffset : 0); + + let image; + if (fillRGBA === undefined) { + if (cropX !== xOffset || cropY != yOffset || + cropWidth !== width || cropHeight !== height) + { + throw new GifError(`fillRGBA required for this reframing`); + } + image = new BitmapImage(width, height); + } + else { + image = new BitmapImage(width, height, fillRGBA); + } + this.blit(image, newX, newY, cropX, cropY, cropWidth, cropHeight); + this.bitmap = image.bitmap; + return this; + } + + /** + * Scales the image size up by an integer factor. Each pixel of the original image becomes a square of the same color in the new image having a size of `factor` x `factor` pixels. + * + * @param {number} factor The factor by which to scale up the image. Must be an integer >= 1. + * @return {BitmapImage} The present image to allow for chaining. + */ + + scale(factor) { + if (factor === 1) { + return; + } + if (!Number.isInteger(factor) || factor < 1) { + throw new Error("the scale must be an integer >= 1"); + } + const sourceWidth = this.bitmap.width; + const sourceHeight = this.bitmap.height; + const destByteWidth = sourceWidth * factor * 4; + const sourceBuf = this.bitmap.data; + const destBuf = new Buffer(sourceHeight * destByteWidth * factor); + let sourceIndex = 0; + let priorDestRowIndex; + let destIndex = 0; + for (let y = 0; y < sourceHeight; ++y) { + priorDestRowIndex = destIndex; + for (let x = 0; x < sourceWidth; ++x) { + const color = sourceBuf.readUInt32BE(sourceIndex, true); + for (let cx = 0; cx < factor; ++cx) { + destBuf.writeUInt32BE(color, destIndex); + destIndex += 4; + } + sourceIndex += 4; + } + for (let cy = 1; cy < factor; ++cy) { + destBuf.copy(destBuf, destIndex, priorDestRowIndex, destIndex); + destIndex += destByteWidth; + priorDestRowIndex += destByteWidth; + } + } + this.bitmap = { + width: sourceWidth * factor, + height: sourceHeight * factor, + data: destBuf + }; + return this; + } + + /** + * Scans all coordinates of the image, handing each in turn to the provided handler function. + * + * @param {function} scanHandler A function(x: number, y: number, bi: number) to be called for each pixel of the image with that pixel's x-coord, y-coord, and index into the `data` buffer. The function accesses the pixel at this coordinate by accessing the `this.data` at index `bi`. + * @see scanAllIndexes + */ + + scanAllCoords(scanHandler) { + const width = this.bitmap.width; + const bufferLength = this.bitmap.data.length; + let x = 0; + let y = 0; + + for (let bi = 0; bi < bufferLength; bi += 4) { + scanHandler(x, y, bi); + if (++x === width) { + x = 0; + ++y; + } + } + } + + /** + * Scans all pixels of the image, handing the index of each in turn to the provided handler function. Runs a bit faster than `scanAllCoords()`, should the handler not need pixel coordinates. + * + * @param {function} scanHandler A function(bi: number) to be called for each pixel of the image with that pixel's index into the `data` buffer. The pixels is found at index 'bi' within `this.data`. + * @see scanAllCoords + */ + + scanAllIndexes(scanHandler) { + const bufferLength = this.bitmap.data.length; + for (let bi = 0; bi < bufferLength; bi += 4) { + scanHandler(bi); + } + } +} + +module.exports = BitmapImage; + +}).call(this,require("buffer").Buffer) +},{"buffer":48}],66:[function(require,module,exports){ +'use strict'; + +/** @class Gif */ + +class Gif { + + // width - width of GIF in pixels + // height - height of GIF in pixels + // loops - 0 = unending; (n > 0) = iterate n times + // usesTransparency - whether any frames have transparent pixels + // colorScope - scope of color tables in GIF + // frames - array of frames + // buffer - GIF-formatted data + + /** + * Gif is a class representing an encoded GIF. It is intended to be a read-only representation of a byte-encoded GIF. Only encoders and decoders should be creating instances of this class. + * + * Property | Description + * --- | --- + * width | width of the GIF at its widest + * height | height of the GIF at its highest + * loops | the number of times the GIF should loop before stopping; 0 => loop indefinately + * usesTransparency | boolean indicating whether at least one frame contains at least one transparent pixel + * colorScope | the scope of the color tables as encoded within the GIF; either Gif.GlobalColorsOnly (== 1) or Gif.LocalColorsOnly (== 2). + * frames | a array of GifFrame instances, one for each frame of the GIF + * buffer | a Buffer holding the encoding's byte data + * + * Its constructor should only ever be called by the GIF encoder or decoder. + * + * @param {Buffer} buffer A Buffer containing the encoded bytes + * @param {GifFrame[]} frames Array of frames found in the encoding + * @param {object} spec Properties of the encoding as listed above + */ + + constructor(buffer, frames, spec) { + this.width = spec.width; + this.height = spec.height; + this.loops = spec.loops; + this.usesTransparency = spec.usesTransparency; + this.colorScope = spec.colorScope; + this.frames = frames; + this.buffer = buffer; + } +} + +Gif.GlobalColorsPreferred = 0; +Gif.GlobalColorsOnly = 1; +Gif.LocalColorsOnly = 2; + +/** @class GifError */ + +class GifError extends Error { + + /** + * GifError is a class representing a GIF-related error + * + * @param {string|Error} messageOrError + */ + + constructor(messageOrError) { + super(messageOrError); + if (messageOrError instanceof Error) { + this.stack = 'Gif' + messageOrError.stack; + } + } +} + +exports.Gif = Gif; +exports.GifError = GifError; + +},{}],67:[function(require,module,exports){ +(function (process,Buffer){ +'use strict'; + +const Omggif = require('omggif'); +const { Gif, GifError } = require('./gif'); +let GifUtil; // allow circular dependency with GifUtil +process.nextTick(() => { + GifUtil = require('./gifutil'); +}); + +const { GifFrame } = require('./gifframe'); + +const PER_GIF_OVERHEAD = 200; // these are guesses at upper limits +const PER_FRAME_OVERHEAD = 100; + +// Note: I experimented with accepting a global color table when encoding and returning the global color table when decoding. Doing this properly greatly increased the complexity of the code and the amount of clock cycles required. The main issue is that each frame can specify any color of the global color table to be transparent within the frame, while this GIF library strives to hide GIF formatting details from its clients. E.g. it's possible to have 256 colors in the global color table and different transparencies in each frame, requiring clients to either provide per-frame transparency indexes, or for arcane reasons that won't be apparent to client developers, encode some GIFs with local color tables that previously decoded with global tables. + +/** @class GifCodec */ + +class GifCodec +{ + // _transparentRGBA - RGB given to transparent pixels (alpha=0) on decode; defaults to null indicating 0x000000, which is fastest + + /** + * GifCodec is a class that both encodes and decodes GIFs. It implements both the `encode()` method expected of an encoder and the `decode()` method expected of a decoder, and it wraps the `omggif` GIF encoder/decoder package. GifCodec serves as this library's default encoder and decoder, but it's possible to wrap other GIF encoders and decoders for use by `gifwrap` as well. GifCodec will not encode GIFs with interlacing. + * + * Instances of this class are stateless and can be shared across multiple encodings and decodings. + * + * Its constructor takes one option argument: + * + * @param {object} options Optionally takes an objection whose only possible property is `transparentRGB`. Images are internally represented in RGBA format, where A is the alpha value of a pixel. When `transparentRGB` is provided, this RGB value (excluding alpha) is assigned to transparent pixels, which are also given alpha value 0x00. (All opaque pixels are given alpha value 0xFF). The RGB color of transparent pixels shouldn't matter for most applications. Defaults to 0x000000. + */ + + constructor(options = {}) { + this._transparentRGB = null; // 0x000000 + if (typeof options.transparentRGB === 'number' && + options.transparentRGB !== 0) + { + this._transparentRGBA = options.transparentRGB * 256; + } + this._testInitialBufferSize = 0; // assume no buffer scaling test + } + + /** + * Decodes a GIF from a Buffer to yield an instance of Gif. Transparent pixels of the GIF are given alpha values of 0x00, and opaque pixels are given alpha values of 0xFF. The RGB values of transparent pixels default to 0x000000 but can be overridden by the constructor's `transparentRGB` option. + * + * @param {Buffer} buffer Bytes of an encoded GIF to decode. + * @return {Promise} A Promise that resolves to an instance of the Gif class, representing the encoded GIF. + * @throws {GifError} Error upon encountered an encoding-related problem with a GIF, so that the caller can distinguish between software errors and problems with GIFs. + */ + + decodeGif(buffer) { + try { + let reader; + try { + reader = new Omggif.GifReader(buffer); + } + catch (err) { + throw new GifError(err); + } + const frameCount = reader.numFrames(); + const frames = []; + const spec = { + width: reader.width, + height: reader.height, + loops: reader.loopCount() + }; + + spec.usesTransparency = false; + for (let i = 0; i < frameCount; ++i) { + const frameInfo = + this._decodeFrame(reader, i, spec.usesTransparency); + frames.push(frameInfo.frame); + if (frameInfo.usesTransparency) { + spec.usesTransparency = true; + } + } + return Promise.resolve(new Gif(buffer, frames, spec)); + } + catch (err) { + return Promise.reject(err); + } + } + + /** + * Encodes a GIF from provided frames. Each pixel having an alpha value of 0x00 renders as transparent within the encoding, while all pixels of non-zero alpha value render as opaque. + * + * @param {GifFrame[]} frames Array of frames to encode + * @param {object} spec An optional object that may provide values for `loops` and `colorScope`, as defined for the Gif class. However, `colorSpace` may also take the value Gif.GlobalColorsPreferred (== 0) to indicate that the encoder should attempt to create only a global color table. `loop` defaults to 0, looping indefinitely, and `colorScope` defaults to Gif.GlobalColorsPreferred. + * @return {Promise} A Promise that resolves to an instance of the Gif class, representing the encoded GIF. + * @throws {GifError} Error upon encountered an encoding-related problem with a GIF, so that the caller can distinguish between software errors and problems with GIFs. + */ + + encodeGif(frames, spec = {}) { + try { + if (frames === null || frames.length === 0) { + throw new GifError("there are no frames"); + } + const dims = GifUtil.getMaxDimensions(frames); + + spec = Object.assign({}, spec); // don't munge caller's spec + spec.width = dims.maxWidth; + spec.height = dims.maxHeight; + spec.loops = spec.loops || 0; + spec.colorScope = spec.colorScope || Gif.GlobalColorsPreferred; + + return Promise.resolve(this._encodeGif(frames, spec)); + } + catch (err) { + return Promise.reject(err); + } + } + + _decodeFrame(reader, frameIndex, alreadyUsedTransparency) { + let info, buffer; + try { + info = reader.frameInfo(frameIndex); + buffer = new Buffer(reader.width * reader.height * 4); + reader.decodeAndBlitFrameRGBA(frameIndex, buffer); + if (info.width !== reader.width || info.height !== reader.height) { + if (info.y) { + // skip unused rows + buffer = buffer.slice(info.y * reader.width * 4); + } + if (reader.width > info.width) { + // skip scanstride + for (let ii = 0; ii < info.height; ++ii) { + buffer.copy(buffer, ii * info.width * 4, + (info.x + ii * reader.width) * 4, + (info.x + ii * reader.width) * 4 + info.width * 4); + } + } + // trim buffer to size + buffer = buffer.slice(0, info.width * info.height * 4); + } + } + catch (err) { + throw new GifError(err); + } + + let usesTransparency = false; + if (this._transparentRGBA === null) { + if (!alreadyUsedTransparency) { + for (let i = 3; i < buffer.length; i += 4) { + if (buffer[i] === 0) { + usesTransparency = true; + i = buffer.length; + } + } + } + } + else { + for (let i = 3; i < buffer.length; i += 4) { + if (buffer[i] === 0) { + buffer.writeUInt32BE(this._transparentRGBA, i - 3); + usesTransparency = true; // GIF might encode unused index + } + } + } + + const frame = new GifFrame(info.width, info.height, buffer, { + xOffset: info.x, + yOffset: info.y, + disposalMethod: info.disposal, + interlaced: info.interlaced, + delayCentisecs: info.delay + }); + return { frame, usesTransparency }; + } + + _encodeGif(frames, spec) { + let colorInfo; + if (spec.colorScope === Gif.LocalColorsOnly) { + colorInfo = GifUtil.getColorInfo(frames, 0); + } + else { + colorInfo = GifUtil.getColorInfo(frames, 256); + if (!colorInfo.colors) { // if global palette impossible + if (spec.colorScope === Gif.GlobalColorsOnly) { + throw new GifError( + "Too many color indexes for global color table"); + } + spec.colorScope = Gif.LocalColorsOnly + } + } + spec.usesTransparency = colorInfo.usesTransparency; + + const localPalettes = colorInfo.palettes; + if (spec.colorScope === Gif.LocalColorsOnly) { + const localSizeEst = 2000; //this._getSizeEstimateLocal(localPalettes, frames); + return _encodeLocal(frames, spec, localSizeEst, localPalettes); + } + + const globalSizeEst = 2000; //this._getSizeEstimateGlobal(colorInfo, frames); + return _encodeGlobal(frames, spec, globalSizeEst, colorInfo); + } + + _getSizeEstimateGlobal(globalPalette, frames) { + if (this._testInitialBufferSize > 0) { + return this._testInitialBufferSize; + } + let sizeEst = PER_GIF_OVERHEAD + 3*256 /* max palette size*/; + const pixelBitWidth = _getPixelBitWidth(globalPalette); + frames.forEach(frame => { + sizeEst += _getFrameSizeEst(frame, pixelBitWidth); + }); + return sizeEst; // should be the upper limit + } + + _getSizeEstimateLocal(palettes, frames) { + if (this._testInitialBufferSize > 0) { + return this._testInitialBufferSize; + } + let sizeEst = PER_GIF_OVERHEAD; + for (let i = 0; i < frames.length; ++i ) { + const palette = palettes[i]; + const pixelBitWidth = _getPixelBitWidth(palette); + sizeEst += _getFrameSizeEst(frames[i], pixelBitWidth); + } + return sizeEst; // should be the upper limit + } +} +exports.GifCodec = GifCodec; + +function _colorLookupLinear(colors, color) { + const index = colors.indexOf(color); + return (index === -1 ? null : index); +} + +function _colorLookupBinary(colors, color) { + // adapted from https://stackoverflow.com/a/10264318/650894 + var lo = 0, hi = colors.length - 1, mid; + while (lo <= hi) { + mid = Math.floor((lo + hi)/2); + if (colors[mid] > color) + hi = mid - 1; + else if (colors[mid] < color) + lo = mid + 1; + else + return mid; + } + return null; +} + +function _encodeGlobal(frames, spec, bufferSizeEst, globalPalette) { + // would be inefficient for frames to lookup colors in extended palette + const extendedGlobalPalette = { + colors: globalPalette.colors.slice(), + usesTransparency: globalPalette.usesTransparency + }; + _extendPaletteToPowerOf2(extendedGlobalPalette); + const options = { + palette: extendedGlobalPalette.colors, + loop: spec.loops + }; + let buffer = new Buffer(bufferSizeEst); + let gifWriter; + try { + gifWriter = new Omggif.GifWriter(buffer, spec.width, spec.height, + options); + } + catch (err) { + throw new GifError(err); + } + for (let i = 0; i < frames.length; ++i) { + buffer = _writeFrame(gifWriter, i, frames[i], globalPalette, false); + } + return new Gif(buffer.slice(0, gifWriter.end()), frames, spec); +} + +function _encodeLocal(frames, spec, bufferSizeEst, localPalettes) { + const options = { + loop: spec.loops + }; + let buffer = new Buffer(bufferSizeEst); + let gifWriter; + try { + gifWriter = new Omggif.GifWriter(buffer, spec.width, spec.height, + options); + } + catch (err) { + throw new GifError(err); + } + for (let i = 0; i < frames.length; ++i) { + buffer = _writeFrame(gifWriter, i, frames[i], localPalettes[i], true); + } + return new Gif(buffer.slice(0, gifWriter.end()), frames, spec); +} + +function _extendPaletteToPowerOf2(palette) { + const colors = palette.colors; + if (palette.usesTransparency) { + colors.push(0); + } + const colorCount = colors.length; + let powerOf2 = 2; + while (colorCount > powerOf2) { + powerOf2 <<= 1; + } + colors.length = powerOf2; + colors.fill(0, colorCount); +} + +function _getFrameSizeEst(frame, pixelBitWidth) { + let byteLength = frame.bitmap.width * frame.bitmap.height; + byteLength = Math.ceil(byteLength * pixelBitWidth / 8); + byteLength += Math.ceil(byteLength / 255); // add block size bytes + // assume maximum palete size because it might get extended for power of 2 + return (PER_FRAME_OVERHEAD + byteLength + 3 * 256 /* largest palette */); +} + +function _getIndexedImage(frameIndex, frame, palette) { + const colors = palette.colors; + const colorToIndexFunc = (colors.length <= 8 ? // guess at the break-even + _colorLookupLinear : _colorLookupBinary); + const colorBuffer = frame.bitmap.data; + const indexBuffer = new Buffer(colorBuffer.length/4); + let transparentIndex = colors.length; + let i = 0, j = 0; + + while (i < colorBuffer.length) { + if (colorBuffer[i + 3] !== 0) { + const color = (colorBuffer.readUInt32BE(i, true) >> 8) & 0xFFFFFF; + // caller guarantees that the color will be in the palette + indexBuffer[j] = colorToIndexFunc(colors, color); + } + else { + indexBuffer[j] = transparentIndex; + } + i += 4; // skip alpha + ++j; + } + + if (palette.usesTransparency) { + if (transparentIndex === 256) { + throw new GifError(`Frame ${frameIndex} already has 256 colors` + + `and so can't use transparency`); + } + } + else { + transparentIndex = null; + } + + return { buffer: indexBuffer, transparentIndex }; +} + +function _getPixelBitWidth(palette) { + let indexCount = palette.indexCount; + let pixelBitWidth = 0; + --indexCount; // start at maximum index + while (indexCount) { + ++pixelBitWidth; + indexCount >>= 1; + } + return (pixelBitWidth > 0 ? pixelBitWidth : 1); +} + +function _writeFrame(gifWriter, frameIndex, frame, palette, isLocalPalette) { + if (frame.interlaced) { + throw new GifError("writing interlaced GIFs is not supported"); + } + const frameInfo = _getIndexedImage(frameIndex, frame, palette); + const options = { + delay: frame.delayCentisecs, + disposal: frame.disposalMethod, + transparent: frameInfo.transparentIndex + }; + if (isLocalPalette) { + _extendPaletteToPowerOf2(palette); // ok 'cause palette never used again + options.palette = palette.colors; + } + try { + let buffer = gifWriter.getOutputBuffer(); + let startOfFrame = gifWriter.getOutputBufferPosition(); + let endOfFrame; + let tryAgain = true; + + while (tryAgain) { + endOfFrame = gifWriter.addFrame(frame.xOffset, frame.yOffset, + frame.bitmap.width, frame.bitmap.height, frameInfo.buffer, options); + tryAgain = false; + if (endOfFrame >= buffer.length - 1) { + const biggerBuffer = new Buffer(buffer.length * 1.5); + buffer.copy(biggerBuffer); + gifWriter.setOutputBuffer(biggerBuffer); + gifWriter.setOutputBufferPosition(startOfFrame); + buffer = biggerBuffer; + tryAgain = true; + } + } + return buffer; + } + catch (err) { + throw new GifError(err); + } +} + +}).call(this,require('_process'),require("buffer").Buffer) +},{"./gif":66,"./gifframe":68,"./gifutil":69,"_process":133,"buffer":48,"omggif":64}],68:[function(require,module,exports){ +'use strict'; + +const BitmapImage = require('./bitmapimage'); +const { GifError } = require('./gif'); + +/** @class GifFrame */ + +class GifFrame extends BitmapImage { + + // xOffset - x offset of bitmap on GIF (defaults to 0) + // yOffset - y offset of bitmap on GIF (defaults to 0) + // disposalMethod - pixel disposal method when handling partial images + // delayCentisecs - duration of frame in hundredths of a second + // interlaced - whether the image is interlaced (defaults to false) + + /** + * GifFrame is a class representing an image frame of a GIF. GIFs contain one or more instances of GifFrame. + * + * Property | Description + * --- | --- + * xOffset | x-coord of position within GIF at which to render the image (defaults to 0) + * yOffset | y-coord of position within GIF at which to render the image (defaults to 0) + * disposalMethod | GIF disposal method; only relevant when the frames aren't all the same size (defaults to 2, disposing to background color) + * delayCentisecs | duration of the frame in hundreths of a second + * interlaced | boolean indicating whether the frame renders interlaced + * + * Its constructor supports the following signatures: + * + * * new GifFrame(bitmap: {width: number, height: number, data: Buffer}, options?) + * * new GifFrame(bitmapImage: BitmapImage, options?) + * * new GifFrame(width: number, height: number, buffer: Buffer, options?) + * * new GifFrame(width: number, height: number, backgroundRGBA?: number, options?) + * * new GifFrame(frame: GifFrame) + * + * See the base class BitmapImage for a discussion of all parameters but `options` and `frame`. `options` is an optional argument providing initial values for the above-listed GifFrame properties. Each property within option is itself optional. + * + * Provide a `frame` to the constructor to create a clone of the provided frame. The new frame includes a copy of the provided frame's pixel data so that each can subsequently be modified without affecting each other. + */ + + constructor(...args) { + super(...args); + if (args[0] instanceof GifFrame) { + // copy a provided GifFrame + const source = args[0]; + this.xOffset = source.xOffset; + this.yOffset = source.yOffset; + this.disposalMethod = source.disposalMethod; + this.delayCentisecs = source.delayCentisecs; + this.interlaced = source.interlaced; + } + else { + const lastArg = args[args.length - 1]; + let options = {}; + if (typeof lastArg === 'object' && !(lastArg instanceof BitmapImage)) { + options = lastArg; + } + this.xOffset = options.xOffset || 0; + this.yOffset = options.yOffset || 0; + this.disposalMethod = (options.disposalMethod !== undefined ? + options.disposalMethod : GifFrame.DisposeToBackgroundColor); + this.delayCentisecs = options.delayCentisecs || 8; + this.interlaced = options.interlaced || false; + } + } + + /** + * Get a summary of the colors found within the frame. The return value is an object of the following form: + * + * Property | Description + * --- | --- + * colors | An array of all the opaque colors found within the frame. Each color is given as an RGB number of the form 0xRRGGBB. The array is sorted by increasing number. Will be an empty array when the image is completely transparent. + * usesTransparency | boolean indicating whether there are any transparent pixels within the frame. A pixel is considered transparent if its alpha value is 0x00. + * indexCount | The number of color indexes required to represent this palette of colors. It is equal to the number of opaque colors plus one if the image includes transparency. + * + * @return {object} An object representing a color palette as described above. + */ + + getPalette() { + // returns with colors sorted low to high + const colorSet = new Set(); + const buf = this.bitmap.data; + let i = 0; + let usesTransparency = false; + while (i < buf.length) { + if (buf[i + 3] === 0) { + usesTransparency = true; + } + else { + // can eliminate the bitshift by starting one byte prior + const color = (buf.readUInt32BE(i, true) >> 8) & 0xFFFFFF; + colorSet.add(color); + } + i += 4; // skip alpha + } + const colors = new Array(colorSet.size); + const iter = colorSet.values(); + for (i = 0; i < colors.length; ++i) { + colors[i] = iter.next().value; + } + colors.sort((a, b) => (a - b)); + let indexCount = colors.length; + if (usesTransparency) { + ++indexCount; + } + return { colors, usesTransparency, indexCount }; + } +} + +GifFrame.DisposeToAnything = 0; +GifFrame.DisposeNothing = 1; +GifFrame.DisposeToBackgroundColor = 2; +GifFrame.DisposeToPrevious = 3; + +exports.GifFrame = GifFrame; + +},{"./bitmapimage":65,"./gif":66}],69:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +/** @namespace GifUtil */ + +const fs = require('fs'); +const ImageQ = require('image-q'); + +const BitmapImage = require('./bitmapimage'); +const { GifFrame } = require('./gifframe'); +const { GifError } = require('./gif'); +const { GifCodec } = require('./gifcodec'); + +const INVALID_SUFFIXES = ['.jpg', '.jpeg', '.png', '.bmp']; + +const defaultCodec = new GifCodec(); + +/** + * cloneFrames() clones provided frames. It's a utility method for cloning an entire array of frames at once. + * + * @function cloneFrames + * @memberof GifUtil + * @param {GifFrame[]} frames An array of GifFrame instances to clone + * @return {GifFrame[]} An array of GifFrame clones of the provided frames. + */ + +exports.cloneFrames = function (frames) { + let clones = []; + frames.forEach(frame => { + + clones.push(new GifFrame(frame)); + }); + return clones; +} + +/** + * getColorInfo() gets information about the colors used in the provided frames. The method is able to return an array of all colors found across all frames. + * + * `maxGlobalIndex` controls whether the computation short-circuits to avoid doing work that the caller doesn't need. The method only returns `colors` and `indexCount` for the colors across all frames when the number of indexes required to store the colors and transparency in a GIF (which is the value of `indexCount`) is less than or equal to `maxGlobalIndex`. Such short-circuiting is useful when the caller just needs to determine whether any frame includes transparency. + * + * @function getColorInfo + * @memberof GifUtil + * @param {GifFrame[]} frames Frames to examine for color and transparency. + * @param {number} maxGlobalIndex Maximum number of color indexes (including one for transparency) allowed among the returned compilation of colors. `colors` and `indexCount` are not returned if the number of color indexes required to accommodate all frames exceeds this number. Returns `colors` and `indexCount` by default. + * @returns {object} Object containing at least `palettes` and `usesTransparency`. `palettes` is an array of all the palettes returned by GifFrame#getPalette(). `usesTransparency` indicates whether at least one frame uses transparency. If `maxGlobalIndex` is not exceeded, the object also contains `colors`, an array of all colors (RGB) found across all palettes, sorted by increasing value, and `indexCount` indicating the number of indexes required to store the colors and the transparency in a GIF. + * @throws {GifError} When any frame requires more than 256 color indexes. + */ + +exports.getColorInfo = function (frames, maxGlobalIndex) { + let usesTransparency = false; + const palettes = []; + for (let i = 0; i < frames.length; ++i) { + let palette = frames[i].getPalette(); + if (palette.usesTransparency) { + usesTransparency = true; + } + if (palette.indexCount > 256) { + throw new GifError(`Frame ${i} uses more than 256 color indexes`); + } + palettes.push(palette); + } + if (maxGlobalIndex === 0) { + return { usesTransparency, palettes }; + } + + const globalColorSet = new Set(); + palettes.forEach(palette => { + + palette.colors.forEach(color => { + + globalColorSet.add(color); + }); + }); + let indexCount = globalColorSet.size; + if (usesTransparency) { + // odd that GIF requires a color table entry at transparent index + ++indexCount; + } + if (maxGlobalIndex && indexCount > maxGlobalIndex) { + return { usesTransparency, palettes }; + } + + const colors = new Array(globalColorSet.size); + const iter = globalColorSet.values(); + for (let i = 0; i < colors.length; ++i) { + colors[i] = iter.next().value; + } + colors.sort((a, b) => (a - b)); + return { colors, indexCount, usesTransparency, palettes }; +}; + +/** + * copyAsJimp() returns a Jimp that contains a copy of the provided bitmap image (which may be either a BitmapImage or a GifFrame). Modifying the Jimp does not affect the provided bitmap image. This method serves as a macro for simplifying working with Jimp. + * + * @function copyAsJimp + * @memberof GifUtil + * @param {object} Reference to the Jimp package, keeping this library from being dependent on Jimp. + * @param {bitmapImageToCopy} Instance of BitmapImage (may be a GifUtil) with which to source the Jimp. + * @return {object} An new instance of Jimp containing a copy of the image in bitmapImageToCopy. + */ + +exports.copyAsJimp = function (jimp, bitmapImageToCopy) { + return exports.shareAsJimp(jimp, new BitmapImage(bitmapImageToCopy)); +}; + +/** + * getMaxDimensions() returns the pixel width and height required to accommodate all of the provided frames, according to the offsets and dimensions of each frame. + * + * @function getMaxDimensions + * @memberof GifUtil + * @param {GifFrame[]} frames Frames to measure for their aggregate maximum dimensions. + * @return {object} An object of the form {maxWidth, maxHeight} indicating the maximum width and height required to accommodate all frames. + */ + +exports.getMaxDimensions = function (frames) { + let maxWidth = 0, maxHeight = 0; + frames.forEach(frame => { + const width = frame.xOffset + frame.bitmap.width; + if (width > maxWidth) { + maxWidth = width; + } + const height = frame.yOffset + frame.bitmap.height; + if (height > maxHeight) { + maxHeight = height; + } + }); + return { maxWidth, maxHeight }; +}; + +/** + * Quantizes colors so that there are at most a given number of color indexes (including transparency) across all provided images. Uses an algorithm by Anthony Dekker. + * + * The method treats different RGBA combinations as different colors, so if the frame has multiple alpha values or multiple RGB values for an alpha value, the caller may first want to normalize them by converting all transparent pixels to the same RGBA values. + * + * The method may increase the number of colors if there are fewer than the provided maximum. + * + * @function quantizeDekker + * @memberof GifUtil + * @param {BitmapImage|BitmapImage[]} imageOrImages Image or array of images (such as GifFrame instances) to be color-quantized. Quantizing across multiple images ensures color consistency from frame to frame. + * @param {number} maxColorIndexes The maximum number of color indexes that will exist in the palette after completing quantization. Defaults to 256. + * @param {object} dither (optional) An object configuring the dithering to apply. The properties are as followings, imported from the [`image-q` package](https://github.com/ibezkrovnyi/image-quantization) without explanation: { `ditherAlgorithm`: One of 'FloydSteinberg', 'FalseFloydSteinberg', 'Stucki', 'Atkinson', 'Jarvis', 'Burkes', 'Sierra', 'TwoSierra', 'SierraLite'; `minimumColorDistanceToDither`: (optional) A number defaulting to 0; `serpentine`: (optional) A boolean defaulting to true; `calculateErrorLikeGIMP`: (optional) A boolean defaulting to false. } + */ + +exports.quantizeDekker = function (imageOrImages, maxColorIndexes, dither) { + maxColorIndexes = maxColorIndexes || 256; + _quantize(imageOrImages, 'NeuQuantFloat', maxColorIndexes, 0, dither); +} + +/** + * Quantizes colors so that there are at most a given number of color indexes (including transparency) across all provided images. Uses an algorithm by Leon Sorokin. This quantization method differs from the other two by likely never increasing the number of colors, should there be fewer than the provided maximum. + * + * The method treats different RGBA combinations as different colors, so if the frame has multiple alpha values or multiple RGB values for an alpha value, the caller may first want to normalize them by converting all transparent pixels to the same RGBA values. + * + * @function quantizeSorokin + * @memberof GifUtil + * @param {BitmapImage|BitmapImage[]} imageOrImages Image or array of images (such as GifFrame instances) to be color-quantized. Quantizing across multiple images ensures color consistency from frame to frame. + * @param {number} maxColorIndexes The maximum number of color indexes that will exist in the palette after completing quantization. Defaults to 256. + * @param {string} histogram (optional) Histogram method: 'top-pop' for global top-population, 'min-pop' for minimum-population threshhold within subregions. Defaults to 'min-pop'. + * @param {object} dither (optional) An object configuring the dithering to apply, as explained for `quantizeDekker()`. + */ + +exports.quantizeSorokin = function (imageOrImages, maxColorIndexes, histogram, dither) { + maxColorIndexes = maxColorIndexes || 256; + histogram = histogram || 'min-pop'; + let histogramID; + switch (histogram) { + case 'min-pop': + histogramID = 2; + break; + + case 'top-pop': + histogramID = 1; + break + + default: + throw new Error(`Invalid quantizeSorokin histogram '${histogram}'`); + } + _quantize(imageOrImages, 'RGBQuant', maxColorIndexes, histogramID, dither); +} + +/** + * Quantizes colors so that there are at most a given number of color indexes (including transparency) across all provided images. Uses an algorithm by Xiaolin Wu. + * + * The method treats different RGBA combinations as different colors, so if the frame has multiple alpha values or multiple RGB values for an alpha value, the caller may first want to normalize them by converting all transparent pixels to the same RGBA values. + * + * The method may increase the number of colors if there are fewer than the provided maximum. + * + * @function quantizeWu + * @memberof GifUtil + * @param {BitmapImage|BitmapImage[]} imageOrImages Image or array of images (such as GifFrame instances) to be color-quantized. Quantizing across multiple images ensures color consistency from frame to frame. + * @param {number} maxColorIndexes The maximum number of color indexes that will exist in the palette after completing quantization. Defaults to 256. + * @param {number} significantBits (optional) This is the number of significant high bits in each RGB color channel. Takes integer values from 1 through 8. Higher values correspond to higher quality. Defaults to 5. + * @param {object} dither (optional) An object configuring the dithering to apply, as explained for `quantizeDekker()`. + */ + +exports.quantizeWu = function (imageOrImages, maxColorIndexes, significantBits, dither) { + maxColorIndexes = maxColorIndexes || 256; + significantBits = significantBits || 5; + if (significantBits < 1 || significantBits > 8) { + throw new Error("Invalid quantization quality"); + } + _quantize(imageOrImages, 'WuQuant', maxColorIndexes, significantBits, dither); +} + +/** + * read() decodes an encoded GIF, whether provided as a filename or as a byte buffer. + * + * @function read + * @memberof GifUtil + * @param {string|Buffer} source Source to decode. When a string, it's the GIF filename to load and parse. When a Buffer, it's an encoded GIF to parse. + * @param {object} decoder An optional GIF decoder object implementing the `decode` method of class GifCodec. When provided, the method decodes the GIF using this decoder. When not provided, the method uses GifCodec. + * @return {Promise} A Promise that resolves to an instance of the Gif class, representing the decoded GIF. + */ + +exports.read = function (source, decoder) { + decoder = decoder || defaultCodec; + if (Buffer.isBuffer(source)) { + return decoder.decodeGif(source); + } + return _readBinary(source) + .then(buffer => { + + return decoder.decodeGif(buffer); + }); +}; + +/** + * shareAsJimp() returns a Jimp that shares a bitmap with the provided bitmap image (which may be either a BitmapImage or a GifFrame). Modifying the image in either the Jimp or the BitmapImage affects the other objects. This method serves as a macro for simplifying working with Jimp. + * + * @function shareAsJimp + * @memberof GifUtil + * @param {object} Reference to the Jimp package, keeping this library from being dependent on Jimp. + * @param {bitmapImageToShare} Instance of BitmapImage (may be a GifUtil) with which to source the Jimp. + * @return {object} An new instance of Jimp that shares the image in bitmapImageToShare. + */ + +exports.shareAsJimp = function (jimp, bitmapImageToShare) { + const jimpImage = new jimp(bitmapImageToShare.bitmap.width, + bitmapImageToShare.bitmap.height, 0); + jimpImage.bitmap.data = bitmapImageToShare.bitmap.data; + return jimpImage; +}; + +/** + * write() encodes a GIF and saves it as a file. + * + * @function write + * @memberof GifUtil + * @param {string} path Filename to write GIF out as. Will overwrite an existing file. + * @param {GifFrame[]} frames Array of frames to be written into GIF. + * @param {object} spec An optional object that may provide values for `loops` and `colorScope`, as defined for the Gif class. However, `colorSpace` may also take the value Gif.GlobalColorsPreferred (== 0) to indicate that the encoder should attempt to create only a global color table. `loop` defaults to 0, looping indefinitely, and `colorScope` defaults to Gif.GlobalColorsPreferred. + * @param {object} encoder An optional GIF encoder object implementing the `encode` method of class GifCodec. When provided, the method encodes the GIF using this encoder. When not provided, the method uses GifCodec. + * @return {Promise} A Promise that resolves to an instance of the Gif class, representing the encoded GIF. + */ + +exports.write = function (path, frames, spec, encoder) { + encoder = encoder || defaultCodec; + const matches = path.match(/\.[a-zA-Z]+$/); // prevent accidents + if (matches !== null && + INVALID_SUFFIXES.includes(matches[0].toLowerCase())) + { + throw new Error(`GIF '${path}' has an unexpected suffix`); + } + + return encoder.encodeGif(frames, spec) + .then(gif => { + + return _writeBinary(path, gif.buffer) + .then(() => { + + return gif; + }); + }); +}; + +function _quantize(imageOrImages, method, maxColorIndexes, modifier, dither) { + const images = Array.isArray(imageOrImages) ? imageOrImages : [imageOrImages]; + const ditherAlgs = [ + 'FloydSteinberg', + 'FalseFloydSteinberg', + 'Stucki', + 'Atkinson', + 'Jarvis', + 'Burkes', + 'Sierra', + 'TwoSierra', + 'SierraLite' + ]; + + if (dither) { + if (ditherAlgs.indexOf(dither.ditherAlgorithm) < 0) { + throw new Error(`Invalid ditherAlgorithm '${dither.ditherAlgorithm}'`); + } + if (dither.serpentine === undefined) { + dither.serpentine = true; + } + if (dither.minimumColorDistanceToDither === undefined) { + dither.minimumColorDistanceToDither = 0; + } + if (dither.calculateErrorLikeGIMP === undefined) { + dither.calculateErrorLikeGIMP = false; + } + } + + const distCalculator = new ImageQ.distance.Euclidean(); + const quantizer = new ImageQ.palette[method](distCalculator, maxColorIndexes, modifier); + let imageMaker; + if (dither) { + imageMaker = new ImageQ.image.ErrorDiffusionArray( + distCalculator, + ImageQ.image.ErrorDiffusionArrayKernel[dither.ditherAlgorithm], + dither.serpentine, + dither.minimumColorDistanceToDither, + dither.calculateErrorLikeGIMP + ); + } + else { + imageMaker = new ImageQ.image.NearestColor(distCalculator); + } + + const inputContainers = []; + images.forEach(image => { + + const imageBuf = image.bitmap.data; + const inputBuf = new ArrayBuffer(imageBuf.length); + const inputArray = new Uint32Array(inputBuf); + for (let bi = 0, ai = 0; bi < imageBuf.length; bi += 4, ++ai) { + inputArray[ai] = imageBuf.readUInt32LE(bi, true); + } + const inputContainer = ImageQ.utils.PointContainer.fromUint32Array( + inputArray, image.bitmap.width, image.bitmap.height); + quantizer.sample(inputContainer); + inputContainers.push(inputContainer); + }); + + const limitedPalette = quantizer.quantize(); + + for (let i = 0; i < images.length; ++i) { + const imageBuf = images[i].bitmap.data; + const outputContainer = imageMaker.quantize(inputContainers[i], limitedPalette); + const outputArray = outputContainer.toUint32Array(); + for (let bi = 0, ai = 0; bi < imageBuf.length; bi += 4, ++ai) { + imageBuf.writeUInt32LE(outputArray[ai], bi); + } + } +} + +function _readBinary(path) { + // TBD: add support for URLs + return new Promise((resolve, reject) => { + + fs.readFile(path, (err, buffer) => { + + if (err) { + return reject(err); + } + return resolve(buffer); + }); + }); +} + +function _writeBinary(path, buffer) { + // TBD: add support for URLs + return new Promise((resolve, reject) => { + + fs.writeFile(path, buffer, err => { + + if (err) { + return reject(err); + } + return resolve(); + }); + }); +} + +}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) +},{"../../is-buffer/index.js":76,"./bitmapimage":65,"./gif":66,"./gifcodec":67,"./gifframe":68,"fs":47,"image-q":74}],70:[function(require,module,exports){ +'use strict'; + +const BitmapImage = require('./bitmapimage'); +const { Gif, GifError } = require('./gif'); +const { GifCodec } = require('./gifcodec'); +const { GifFrame } = require('./gifframe'); +const GifUtil = require('./gifutil'); + +module.exports = { + BitmapImage, + Gif, + GifCodec, + GifFrame, + GifUtil, + GifError +}; + +},{"./bitmapimage":65,"./gif":66,"./gifcodec":67,"./gifframe":68,"./gifutil":69}],71:[function(require,module,exports){ +(function (global){ +var win; + +if (typeof window !== "undefined") { + win = window; +} else if (typeof global !== "undefined") { + win = global; +} else if (typeof self !== "undefined"){ + win = self; +} else { + win = {}; +} + +module.exports = win; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],72:[function(require,module,exports){ +var http = require('http') +var url = require('url') + +var https = module.exports + +for (var key in http) { + if (http.hasOwnProperty(key)) https[key] = http[key] +} + +https.request = function (params, cb) { + params = validateParams(params) + return http.request.call(this, params, cb) +} + +https.get = function (params, cb) { + params = validateParams(params) + return http.get.call(this, params, cb) +} + +function validateParams (params) { + if (typeof params === 'string') { + params = url.parse(params) + } + if (!params.protocol) { + params.protocol = 'https:' + } + if (params.protocol !== 'https:') { + throw new Error('Protocol "' + params.protocol + '" not supported. Expected "https:"') + } + return params +} + +},{"http":156,"url":180}],73:[function(require,module,exports){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],74:[function(require,module,exports){ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("iq", [], factory); + else if(typeof exports === 'object') + exports["iq"] = factory(); + else + root["iq"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * iq.ts - Image Quantization Library + */ + var constants = __webpack_require__(1); + exports.constants = constants; + var conversion = __webpack_require__(3); + exports.conversion = conversion; + var distance = __webpack_require__(12); + exports.distance = distance; + var palette = __webpack_require__(20); + exports.palette = palette; + var image = __webpack_require__(30); + exports.image = image; + var quality = __webpack_require__(35); + exports.quality = quality; + var utils = __webpack_require__(37); + exports.utils = utils; + + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * constants.ts - part of Image Quantization Library + */ + var bt709 = __webpack_require__(2); + exports.bt709 = bt709; + + +/***/ }, +/* 2 */ +/***/ function(module, exports) { + + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * constants.ts - part of Image Quantization Library + */ + "use strict"; + /** + * sRGB (based on ITU-R Recommendation BT.709) + * http://en.wikipedia.org/wiki/SRGB + */ + var Y; + (function (Y) { + Y[Y["RED"] = 0.2126] = "RED"; + Y[Y["GREEN"] = 0.7152] = "GREEN"; + Y[Y["BLUE"] = 0.0722] = "BLUE"; + Y[Y["WHITE"] = 1] = "WHITE"; + })(Y || (Y = {})); + exports.Y = Y; + var x; + (function (x) { + x[x["RED"] = 0.64] = "RED"; + x[x["GREEN"] = 0.3] = "GREEN"; + x[x["BLUE"] = 0.15] = "BLUE"; + x[x["WHITE"] = 0.3127] = "WHITE"; + })(x || (x = {})); + exports.x = x; + var y; + (function (y) { + y[y["RED"] = 0.33] = "RED"; + y[y["GREEN"] = 0.6] = "GREEN"; + y[y["BLUE"] = 0.06] = "BLUE"; + y[y["WHITE"] = 0.329] = "WHITE"; + })(y || (y = {})); + exports.y = y; + + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * iq.ts - Image Quantization Library + */ + var rgb2xyz_1 = __webpack_require__(4); + exports.rgb2xyz = rgb2xyz_1.rgb2xyz; + var rgb2hsl_1 = __webpack_require__(5); + exports.rgb2hsl = rgb2hsl_1.rgb2hsl; + var rgb2lab_1 = __webpack_require__(7); + exports.rgb2lab = rgb2lab_1.rgb2lab; + var lab2xyz_1 = __webpack_require__(9); + exports.lab2xyz = lab2xyz_1.lab2xyz; + var lab2rgb_1 = __webpack_require__(10); + exports.lab2rgb = lab2rgb_1.lab2rgb; + var xyz2lab_1 = __webpack_require__(8); + exports.xyz2lab = xyz2lab_1.xyz2lab; + var xyz2rgb_1 = __webpack_require__(11); + exports.xyz2rgb = xyz2rgb_1.xyz2rgb; + + +/***/ }, +/* 4 */ +/***/ function(module, exports) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * rgb2xyz.ts - part of Image Quantization Library + */ + function correctGamma(n) { + return n > 0.04045 ? Math.pow((n + 0.055) / 1.055, 2.4) : n / 12.92; + } + function rgb2xyz(r, g, b) { + // gamma correction, see https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation + r = correctGamma(r / 255); + g = correctGamma(g / 255); + b = correctGamma(b / 255); + // Observer. = 2°, Illuminant = D65 + return { + x: r * 0.4124 + g * 0.3576 + b * 0.1805, + y: r * 0.2126 + g * 0.7152 + b * 0.0722, + z: r * 0.0193 + g * 0.1192 + b * 0.9505 + }; + } + exports.rgb2xyz = rgb2xyz; + + +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * rgb2hsl.ts - part of Image Quantization Library + */ + var arithmetic_1 = __webpack_require__(6); + /** + * Calculate HSL from RGB + * Hue is in degrees [0..360] + * Lightness: [0..1] + * Saturation: [0..1] + * http://web.archive.org/web/20060914040436/http://local.wasp.uwa.edu.au/~pbourke/colour/hsl/ + */ + function rgb2hsl(r, g, b) { + var min = arithmetic_1.min3(r, g, b), max = arithmetic_1.max3(r, g, b), delta = max - min, l = (min + max) / 510; + var s = 0; + if (l > 0 && l < 1) + s = delta / (l < 0.5 ? (max + min) : (510 - max - min)); + var h = 0; + if (delta > 0) { + if (max === r) { + h = (g - b) / delta; + } + else if (max === g) { + h = (2 + (b - r) / delta); + } + else { + h = (4 + (r - g) / delta); + } + h *= 60; + if (h < 0) + h += 360; + } + return { h: h, s: s, l: l }; + } + exports.rgb2hsl = rgb2hsl; + + +/***/ }, +/* 6 */ +/***/ function(module, exports) { + + "use strict"; + function degrees2radians(n) { + return n * (Math.PI / 180); + } + exports.degrees2radians = degrees2radians; + function max3(a, b, c) { + var m = a; + (m < b) && (m = b); + (m < c) && (m = c); + return m; + } + exports.max3 = max3; + function min3(a, b, c) { + var m = a; + (m > b) && (m = b); + (m > c) && (m = c); + return m; + } + exports.min3 = min3; + function intInRange(value, low, high) { + if (value > high) + value = high; + if (value < low) + value = low; + return value | 0; + } + exports.intInRange = intInRange; + function inRange0to255Rounded(n) { + n = Math.round(n); + if (n > 255) + n = 255; + else if (n < 0) + n = 0; + return n; + } + exports.inRange0to255Rounded = inRange0to255Rounded; + function inRange0to255(n) { + if (n > 255) + n = 255; + else if (n < 0) + n = 0; + return n; + } + exports.inRange0to255 = inRange0to255; + function stableSort(arrayToSort, callback) { + var type = typeof arrayToSort[0]; + var sorted; + if (type === "number" || type === "string") { + var ord_1 = Object.create(null); + for (var i = 0, l = arrayToSort.length; i < l; i++) { + var val = arrayToSort[i]; + if (ord_1[val] || ord_1[val] === 0) + continue; + ord_1[val] = i; + } + sorted = arrayToSort.sort(function (a, b) { + return callback(a, b) || ord_1[a] - ord_1[b]; + }); + } + else { + var ord2_1 = arrayToSort.slice(0); + sorted = arrayToSort.sort(function (a, b) { + return callback(a, b) || ord2_1.indexOf(a) - ord2_1.indexOf(b); + }); + } + return sorted; + } + exports.stableSort = stableSort; + + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * rgb2lab.ts - part of Image Quantization Library + */ + var rgb2xyz_1 = __webpack_require__(4); + var xyz2lab_1 = __webpack_require__(8); + function rgb2lab(r, g, b) { + var xyz = rgb2xyz_1.rgb2xyz(r, g, b); + return xyz2lab_1.xyz2lab(xyz.x, xyz.y, xyz.z); + } + exports.rgb2lab = rgb2lab; + + +/***/ }, +/* 8 */ +/***/ function(module, exports) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * xyz2lab.ts - part of Image Quantization Library + */ + var refX = 0.95047, //ref_X = 95.047 Observer= 2°, Illuminant= D65 + refY = 1.00000, //ref_Y = 100.000 + refZ = 1.08883; //ref_Z = 108.883 + function pivot(n) { + return n > 0.008856 ? Math.pow(n, 1 / 3) : (7.787 * n + 16 / 116); + } + function xyz2lab(x, y, z) { + x = pivot(x / refX); + y = pivot(y / refY); + z = pivot(z / refZ); + if ((116 * y) - 16 < 0) + throw new Error("xxx"); + return { + L: Math.max(0, (116 * y) - 16), + a: 500 * (x - y), + b: 200 * (y - z) + }; + } + exports.xyz2lab = xyz2lab; + + +/***/ }, +/* 9 */ +/***/ function(module, exports) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * lab2xyz.ts - part of Image Quantization Library + */ + var refX = 0.95047, //ref_X = 95.047 Observer= 2°, Illuminant = D65 + refY = 1.00000, //ref_Y = 100.000 + refZ = 1.08883; //ref_Z = 108.883 + function pivot(n) { + return n > 0.206893034 ? Math.pow(n, 3) : (n - 16 / 116) / 7.787; + } + function lab2xyz(L, a, b) { + var y = (L + 16) / 116, x = a / 500 + y, z = y - b / 200; + return { + x: refX * pivot(x), + y: refY * pivot(y), + z: refZ * pivot(z) + }; + } + exports.lab2xyz = lab2xyz; + + +/***/ }, +/* 10 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * lab2rgb.ts - part of Image Quantization Library + */ + var lab2xyz_1 = __webpack_require__(9); + var xyz2rgb_1 = __webpack_require__(11); + function lab2rgb(L, a, b) { + var xyz = lab2xyz_1.lab2xyz(L, a, b); + return xyz2rgb_1.xyz2rgb(xyz.x, xyz.y, xyz.z); + } + exports.lab2rgb = lab2rgb; + + +/***/ }, +/* 11 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * xyz2rgb.ts - part of Image Quantization Library + */ + var arithmetic_1 = __webpack_require__(6); + // gamma correction, see https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation + function correctGamma(n) { + return n > 0.0031308 ? 1.055 * Math.pow(n, 1 / 2.4) - 0.055 : 12.92 * n; + } + function xyz2rgb(x, y, z) { + // Observer. = 2°, Illuminant = D65 + var r = correctGamma(x * 3.2406 + y * -1.5372 + z * -0.4986), g = correctGamma(x * -0.9689 + y * 1.8758 + z * 0.0415), b = correctGamma(x * 0.0557 + y * -0.2040 + z * 1.0570); + return { + r: arithmetic_1.inRange0to255Rounded(r * 255), + g: arithmetic_1.inRange0to255Rounded(g * 255), + b: arithmetic_1.inRange0to255Rounded(b * 255) + }; + } + exports.xyz2rgb = xyz2rgb; + + +/***/ }, +/* 12 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * iq.ts - Image Quantization Library + */ + var abstractDistanceCalculator_1 = __webpack_require__(13); + exports.AbstractDistanceCalculator = abstractDistanceCalculator_1.AbstractDistanceCalculator; + var cie94_1 = __webpack_require__(14); + exports.CIE94Textiles = cie94_1.CIE94Textiles; + exports.CIE94GraphicArts = cie94_1.CIE94GraphicArts; + var ciede2000_1 = __webpack_require__(15); + exports.CIEDE2000 = ciede2000_1.CIEDE2000; + var cmetric_1 = __webpack_require__(16); + exports.CMETRIC = cmetric_1.CMETRIC; + var euclidean_1 = __webpack_require__(17); + exports.AbstractEuclidean = euclidean_1.AbstractEuclidean; + exports.Euclidean = euclidean_1.Euclidean; + exports.EuclideanRgbQuantWOAlpha = euclidean_1.EuclideanRgbQuantWOAlpha; + exports.EuclideanRgbQuantWithAlpha = euclidean_1.EuclideanRgbQuantWithAlpha; + var manhattan_1 = __webpack_require__(18); + exports.AbstractManhattan = manhattan_1.AbstractManhattan; + exports.Manhattan = manhattan_1.Manhattan; + exports.ManhattanSRGB = manhattan_1.ManhattanSRGB; + exports.ManhattanNommyde = manhattan_1.ManhattanNommyde; + var pngQuant_1 = __webpack_require__(19); + exports.PNGQUANT = pngQuant_1.PNGQUANT; + + +/***/ }, +/* 13 */ +/***/ function(module, exports) { + + "use strict"; + var AbstractDistanceCalculator = (function () { + function AbstractDistanceCalculator() { + this._setDefaults(); + // set default maximal color component deltas (255 - 0 = 255) + this.setWhitePoint(255, 255, 255, 255); + } + AbstractDistanceCalculator.prototype.setWhitePoint = function (r, g, b, a) { + this._whitePoint = { + r: (r > 0) ? 255 / r : 0, + g: (g > 0) ? 255 / g : 0, + b: (b > 0) ? 255 / b : 0, + a: (a > 0) ? 255 / a : 0 + }; + this._maxDistance = this.calculateRaw(r, g, b, a, 0, 0, 0, 0); + }; + AbstractDistanceCalculator.prototype.calculateNormalized = function (colorA, colorB) { + return this.calculateRaw(colorA.r, colorA.g, colorA.b, colorA.a, colorB.r, colorB.g, colorB.b, colorB.a) / this._maxDistance; + }; + AbstractDistanceCalculator.prototype._setDefaults = function () { + }; + return AbstractDistanceCalculator; + }()); + exports.AbstractDistanceCalculator = AbstractDistanceCalculator; + + +/***/ }, +/* 14 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * cie94.ts - part of Image Quantization Library + */ + var abstractDistanceCalculator_1 = __webpack_require__(13); + var rgb2lab_1 = __webpack_require__(7); + var arithmetic_1 = __webpack_require__(6); + /** + * CIE94 method of delta-e + * http://en.wikipedia.org/wiki/Color_difference#CIE94 + */ + var AbstractCIE94 = (function (_super) { + __extends(AbstractCIE94, _super); + function AbstractCIE94() { + _super.apply(this, arguments); + } + AbstractCIE94.prototype.calculateRaw = function (r1, g1, b1, a1, r2, g2, b2, a2) { + var lab1 = rgb2lab_1.rgb2lab(arithmetic_1.inRange0to255(r1 * this._whitePoint.r), arithmetic_1.inRange0to255(g1 * this._whitePoint.g), arithmetic_1.inRange0to255(b1 * this._whitePoint.b)), lab2 = rgb2lab_1.rgb2lab(arithmetic_1.inRange0to255(r2 * this._whitePoint.r), arithmetic_1.inRange0to255(g2 * this._whitePoint.g), arithmetic_1.inRange0to255(b2 * this._whitePoint.b)); + var dL = lab1.L - lab2.L, dA = lab1.a - lab2.a, dB = lab1.b - lab2.b, c1 = Math.sqrt(lab1.a * lab1.a + lab1.b * lab1.b), c2 = Math.sqrt(lab2.a * lab2.a + lab2.b * lab2.b), dC = c1 - c2; + var deltaH = dA * dA + dB * dB - dC * dC; + deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH); + var dAlpha = (a2 - a1) * this._whitePoint.a * this._kA; + // TODO: add alpha channel support + return Math.sqrt(Math.pow(dL / this._Kl, 2) + + Math.pow(dC / (1.0 + this._K1 * c1), 2) + + Math.pow(deltaH / (1.0 + this._K2 * c1), 2) + + Math.pow(dAlpha, 2)); + }; + return AbstractCIE94; + }(abstractDistanceCalculator_1.AbstractDistanceCalculator)); + exports.AbstractCIE94 = AbstractCIE94; + var CIE94Textiles = (function (_super) { + __extends(CIE94Textiles, _super); + function CIE94Textiles() { + _super.apply(this, arguments); + } + CIE94Textiles.prototype._setDefaults = function () { + this._Kl = 2.0; + this._K1 = 0.048; + this._K2 = 0.014; + this._kA = 0.25 * 50 / 255; + }; + return CIE94Textiles; + }(AbstractCIE94)); + exports.CIE94Textiles = CIE94Textiles; + var CIE94GraphicArts = (function (_super) { + __extends(CIE94GraphicArts, _super); + function CIE94GraphicArts() { + _super.apply(this, arguments); + } + CIE94GraphicArts.prototype._setDefaults = function () { + this._Kl = 1.0; + this._K1 = 0.045; + this._K2 = 0.015; + this._kA = 0.25 * 100 / 255; + }; + return CIE94GraphicArts; + }(AbstractCIE94)); + exports.CIE94GraphicArts = CIE94GraphicArts; + + +/***/ }, +/* 15 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * ciede2000.ts - part of Image Quantization Library + */ + var abstractDistanceCalculator_1 = __webpack_require__(13); + var rgb2lab_1 = __webpack_require__(7); + var arithmetic_1 = __webpack_require__(6); + /** + * CIEDE2000 algorithm - Adapted from Sharma et al's MATLAB implementation at + * http://www.ece.rochester.edu/~gsharma/ciede2000/ + */ + var CIEDE2000 = (function (_super) { + __extends(CIEDE2000, _super); + function CIEDE2000() { + _super.apply(this, arguments); + } + CIEDE2000.prototype.calculateRaw = function (r1, g1, b1, a1, r2, g2, b2, a2) { + var lab1 = rgb2lab_1.rgb2lab(arithmetic_1.inRange0to255(r1 * this._whitePoint.r), arithmetic_1.inRange0to255(g1 * this._whitePoint.g), arithmetic_1.inRange0to255(b1 * this._whitePoint.b)), lab2 = rgb2lab_1.rgb2lab(arithmetic_1.inRange0to255(r2 * this._whitePoint.r), arithmetic_1.inRange0to255(g2 * this._whitePoint.g), arithmetic_1.inRange0to255(b2 * this._whitePoint.b)), dA = (a2 - a1) * this._whitePoint.a * CIEDE2000._kA, dE2 = this.calculateRawInLab(lab1, lab2); + return Math.sqrt(dE2 + dA * dA); + }; + CIEDE2000.prototype.calculateRawInLab = function (Lab1, Lab2) { + // Get L,a,b values for color 1 + var L1 = Lab1.L, a1 = Lab1.a, b1 = Lab1.b; + // Get L,a,b values for color 2 + var L2 = Lab2.L, a2 = Lab2.a, b2 = Lab2.b; + // Calculate Cprime1, Cprime2, Cabbar + var C1 = Math.sqrt(a1 * a1 + b1 * b1), C2 = Math.sqrt(a2 * a2 + b2 * b2), pow_a_C1_C2_to_7 = Math.pow((C1 + C2) / 2.0, 7.0), G = 0.5 * (1.0 - Math.sqrt(pow_a_C1_C2_to_7 / (pow_a_C1_C2_to_7 + CIEDE2000._pow25to7))), //25^7 + a1p = (1.0 + G) * a1, a2p = (1.0 + G) * a2, C1p = Math.sqrt(a1p * a1p + b1 * b1), C2p = Math.sqrt(a2p * a2p + b2 * b2), C1pC2p = C1p * C2p, + // Angles in Degree. + h1p = CIEDE2000._calculatehp(b1, a1p), h2p = CIEDE2000._calculatehp(b2, a2p), h_bar = Math.abs(h1p - h2p), dLp = L2 - L1, dCp = C2p - C1p, dHp = CIEDE2000._calculate_dHp(C1pC2p, h_bar, h2p, h1p), ahp = CIEDE2000._calculate_ahp(C1pC2p, h_bar, h1p, h2p), T = CIEDE2000._calculateT(ahp), aCp = (C1p + C2p) / 2.0, aLp_minus_50_square = Math.pow((L1 + L2) / 2.0 - 50.0, 2.0), S_L = 1.0 + (.015 * aLp_minus_50_square) / Math.sqrt(20.0 + aLp_minus_50_square), S_C = 1.0 + .045 * aCp, S_H = 1.0 + .015 * T * aCp, R_T = CIEDE2000._calculateRT(ahp, aCp), dLpSL = dLp / S_L, // S_L * kL, where kL is 1.0 + dCpSC = dCp / S_C, // S_C * kC, where kC is 1.0 + dHpSH = dHp / S_H; // S_H * kH, where kH is 1.0 + return Math.pow(dLpSL, 2) + Math.pow(dCpSC, 2) + Math.pow(dHpSH, 2) + R_T * dCpSC * dHpSH; + }; + CIEDE2000._calculatehp = function (b, ap) { + var hp = Math.atan2(b, ap); + if (hp >= 0) + return hp; + return hp + CIEDE2000._deg360InRad; + }; + CIEDE2000._calculateRT = function (ahp, aCp) { + var aCp_to_7 = Math.pow(aCp, 7.0), R_C = 2.0 * Math.sqrt(aCp_to_7 / (aCp_to_7 + CIEDE2000._pow25to7)), // 25^7 + delta_theta = CIEDE2000._deg30InRad * Math.exp(-Math.pow((ahp - CIEDE2000._deg275InRad) / CIEDE2000._deg25InRad, 2.0)); + return -Math.sin(2.0 * delta_theta) * R_C; + }; + CIEDE2000._calculateT = function (ahp) { + return 1.0 - .17 * Math.cos(ahp - CIEDE2000._deg30InRad) + .24 * Math.cos(ahp * 2.0) + .32 * Math.cos(ahp * 3.0 + CIEDE2000._deg6InRad) - .2 * Math.cos(ahp * 4.0 - CIEDE2000._deg63InRad); + }; + CIEDE2000._calculate_ahp = function (C1pC2p, h_bar, h1p, h2p) { + var hpSum = h1p + h2p; + if (C1pC2p == 0) + return hpSum; + if (h_bar <= CIEDE2000._deg180InRad) + return hpSum / 2.0; + if (hpSum < CIEDE2000._deg360InRad) + return (hpSum + CIEDE2000._deg360InRad) / 2.0; + return (hpSum - CIEDE2000._deg360InRad) / 2.0; + }; + CIEDE2000._calculate_dHp = function (C1pC2p, h_bar, h2p, h1p) { + var dhp; + if (C1pC2p == 0) { + dhp = 0; + } + else if (h_bar <= CIEDE2000._deg180InRad) { + dhp = h2p - h1p; + } + else if (h2p <= h1p) { + dhp = h2p - h1p + CIEDE2000._deg360InRad; + } + else { + dhp = h2p - h1p - CIEDE2000._deg360InRad; + } + return 2.0 * Math.sqrt(C1pC2p) * Math.sin(dhp / 2.0); + }; + /** + * Weight in distance: 0.25 + * Max DeltaE: 100 + * Max DeltaA: 255 + */ + CIEDE2000._kA = 0.25 * 100 / 255; + CIEDE2000._pow25to7 = Math.pow(25, 7); + CIEDE2000._deg360InRad = arithmetic_1.degrees2radians(360); + CIEDE2000._deg180InRad = arithmetic_1.degrees2radians(180); + CIEDE2000._deg30InRad = arithmetic_1.degrees2radians(30); + CIEDE2000._deg6InRad = arithmetic_1.degrees2radians(6); + CIEDE2000._deg63InRad = arithmetic_1.degrees2radians(63); + CIEDE2000._deg275InRad = arithmetic_1.degrees2radians(275); + CIEDE2000._deg25InRad = arithmetic_1.degrees2radians(25); + return CIEDE2000; + }(abstractDistanceCalculator_1.AbstractDistanceCalculator)); + exports.CIEDE2000 = CIEDE2000; + + +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * cmetric.ts - part of Image Quantization Library + */ + var abstractDistanceCalculator_1 = __webpack_require__(13); + /** + * TODO: Name it: http://www.compuphase.com/cmetric.htm + */ + var CMETRIC = (function (_super) { + __extends(CMETRIC, _super); + function CMETRIC() { + _super.apply(this, arguments); + } + CMETRIC.prototype.calculateRaw = function (r1, g1, b1, a1, r2, g2, b2, a2) { + var rmean = (r1 + r2) / 2 * this._whitePoint.r, r = (r1 - r2) * this._whitePoint.r, g = (g1 - g2) * this._whitePoint.g, b = (b1 - b2) * this._whitePoint.b, dE = ((((512 + rmean) * r * r) >> 8) + 4 * g * g + (((767 - rmean) * b * b) >> 8)), dA = (a2 - a1) * this._whitePoint.a; + return Math.sqrt(dE + dA * dA); + }; + return CMETRIC; + }(abstractDistanceCalculator_1.AbstractDistanceCalculator)); + exports.CMETRIC = CMETRIC; + + +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * euclidean.ts - part of Image Quantization Library + */ + var abstractDistanceCalculator_1 = __webpack_require__(13); + var bt709_1 = __webpack_require__(2); + /** + * Euclidean color distance + */ + var AbstractEuclidean = (function (_super) { + __extends(AbstractEuclidean, _super); + function AbstractEuclidean() { + _super.apply(this, arguments); + } + AbstractEuclidean.prototype.calculateRaw = function (r1, g1, b1, a1, r2, g2, b2, a2) { + var dR = r2 - r1, dG = g2 - g1, dB = b2 - b1, dA = a2 - a1; + return Math.sqrt(this._kR * dR * dR + this._kG * dG * dG + this._kB * dB * dB + this._kA * dA * dA); + }; + return AbstractEuclidean; + }(abstractDistanceCalculator_1.AbstractDistanceCalculator)); + exports.AbstractEuclidean = AbstractEuclidean; + var Euclidean = (function (_super) { + __extends(Euclidean, _super); + function Euclidean() { + _super.apply(this, arguments); + } + Euclidean.prototype._setDefaults = function () { + this._kR = 1; + this._kG = 1; + this._kB = 1; + this._kA = 1; + }; + return Euclidean; + }(AbstractEuclidean)); + exports.Euclidean = Euclidean; + /** + * Euclidean color distance (RgbQuant modification w Alpha) + */ + var EuclideanRgbQuantWithAlpha = (function (_super) { + __extends(EuclideanRgbQuantWithAlpha, _super); + function EuclideanRgbQuantWithAlpha() { + _super.apply(this, arguments); + } + EuclideanRgbQuantWithAlpha.prototype._setDefaults = function () { + this._kR = bt709_1.Y.RED; + this._kG = bt709_1.Y.GREEN; + this._kB = bt709_1.Y.BLUE; + // TODO: what is the best coefficient below? + this._kA = 1; + }; + return EuclideanRgbQuantWithAlpha; + }(AbstractEuclidean)); + exports.EuclideanRgbQuantWithAlpha = EuclideanRgbQuantWithAlpha; + /** + * Euclidean color distance (RgbQuant modification w/o Alpha) + */ + var EuclideanRgbQuantWOAlpha = (function (_super) { + __extends(EuclideanRgbQuantWOAlpha, _super); + function EuclideanRgbQuantWOAlpha() { + _super.apply(this, arguments); + } + EuclideanRgbQuantWOAlpha.prototype._setDefaults = function () { + this._kR = bt709_1.Y.RED; + this._kG = bt709_1.Y.GREEN; + this._kB = bt709_1.Y.BLUE; + this._kA = 0; + }; + return EuclideanRgbQuantWOAlpha; + }(AbstractEuclidean)); + exports.EuclideanRgbQuantWOAlpha = EuclideanRgbQuantWOAlpha; + + +/***/ }, +/* 18 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * manhattanNeuQuant.ts - part of Image Quantization Library + */ + var abstractDistanceCalculator_1 = __webpack_require__(13); + var bt709_1 = __webpack_require__(2); + /** + * Manhattan distance (NeuQuant modification) - w/o sRGB coefficients + */ + var AbstractManhattan = (function (_super) { + __extends(AbstractManhattan, _super); + function AbstractManhattan() { + _super.apply(this, arguments); + } + AbstractManhattan.prototype.calculateRaw = function (r1, g1, b1, a1, r2, g2, b2, a2) { + var dR = r2 - r1, dG = g2 - g1, dB = b2 - b1, dA = a2 - a1; + if (dR < 0) + dR = 0 - dR; + if (dG < 0) + dG = 0 - dG; + if (dB < 0) + dB = 0 - dB; + if (dA < 0) + dA = 0 - dA; + return this._kR * dR + this._kG * dG + this._kB * dB + this._kA * dA; + }; + return AbstractManhattan; + }(abstractDistanceCalculator_1.AbstractDistanceCalculator)); + exports.AbstractManhattan = AbstractManhattan; + var Manhattan = (function (_super) { + __extends(Manhattan, _super); + function Manhattan() { + _super.apply(this, arguments); + } + Manhattan.prototype._setDefaults = function () { + this._kR = 1; + this._kG = 1; + this._kB = 1; + this._kA = 1; + }; + return Manhattan; + }(AbstractManhattan)); + exports.Manhattan = Manhattan; + /** + * Manhattan distance (Nommyde modification) + * https://github.com/igor-bezkrovny/image-quantization/issues/4#issuecomment-235155320 + */ + var ManhattanNommyde = (function (_super) { + __extends(ManhattanNommyde, _super); + function ManhattanNommyde() { + _super.apply(this, arguments); + } + ManhattanNommyde.prototype._setDefaults = function () { + this._kR = 0.4984; + this._kG = 0.8625; + this._kB = 0.2979; + // TODO: what is the best coefficient below? + this._kA = 1; + }; + return ManhattanNommyde; + }(AbstractManhattan)); + exports.ManhattanNommyde = ManhattanNommyde; + /** + * Manhattan distance (sRGB coefficients) + */ + var ManhattanSRGB = (function (_super) { + __extends(ManhattanSRGB, _super); + function ManhattanSRGB() { + _super.apply(this, arguments); + } + ManhattanSRGB.prototype._setDefaults = function () { + this._kR = bt709_1.Y.RED; + this._kG = bt709_1.Y.GREEN; + this._kB = bt709_1.Y.BLUE; + // TODO: what is the best coefficient below? + this._kA = 1; + }; + return ManhattanSRGB; + }(AbstractManhattan)); + exports.ManhattanSRGB = ManhattanSRGB; + + +/***/ }, +/* 19 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * pngQuant.ts - part of Image Quantization Library + */ + var abstractDistanceCalculator_1 = __webpack_require__(13); + /** + * TODO: check quality of this distance equation + * TODO: ask author for usage rights + * taken from: + * {@link http://stackoverflow.com/questions/4754506/color-similarity-distance-in-rgba-color-space/8796867#8796867} + * {@link https://github.com/pornel/pngquant/blob/cc39b47799a7ff2ef17b529f9415ff6e6b213b8f/lib/pam.h#L148} + */ + var PNGQUANT = (function (_super) { + __extends(PNGQUANT, _super); + function PNGQUANT() { + _super.apply(this, arguments); + } + /** + * Author's comments + * px_b.rgb = px.rgb + 0*(1-px.a) // blend px on black + * px_b.a = px.a + 1*(1-px.a) + * px_w.rgb = px.rgb + 1*(1-px.a) // blend px on white + * px_w.a = px.a + 1*(1-px.a) + + * px_b.rgb = px.rgb // difference same as in opaque RGB + * px_b.a = 1 + * px_w.rgb = px.rgb - px.a // difference simplifies to formula below + * px_w.a = 1 + + * (px.rgb - px.a) - (py.rgb - py.a) + * (px.rgb - py.rgb) + (py.a - px.a) + * + */ + PNGQUANT.prototype.calculateRaw = function (r1, g1, b1, a1, r2, g2, b2, a2) { + var alphas = (a2 - a1) * this._whitePoint.a; + return this._colordifference_ch(r1 * this._whitePoint.r, r2 * this._whitePoint.r, alphas) + + this._colordifference_ch(g1 * this._whitePoint.g, g2 * this._whitePoint.g, alphas) + + this._colordifference_ch(b1 * this._whitePoint.b, b2 * this._whitePoint.b, alphas); + }; + PNGQUANT.prototype._colordifference_ch = function (x, y, alphas) { + // maximum of channel blended on white, and blended on black + // premultiplied alpha and backgrounds 0/1 shorten the formula + var black = x - y, white = black + alphas; + return black * black + white * white; + }; + return PNGQUANT; + }(abstractDistanceCalculator_1.AbstractDistanceCalculator)); + exports.PNGQUANT = PNGQUANT; + + +/***/ }, +/* 20 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var neuquant_1 = __webpack_require__(21); + exports.NeuQuant = neuquant_1.NeuQuant; + var neuquantFloat_1 = __webpack_require__(25); + exports.NeuQuantFloat = neuquantFloat_1.NeuQuantFloat; + var rgbquant_1 = __webpack_require__(26); + exports.RGBQuant = rgbquant_1.RGBQuant; + var colorHistogram_1 = __webpack_require__(27); + exports.ColorHistogram = colorHistogram_1.ColorHistogram; + var wuQuant_1 = __webpack_require__(29); + exports.WuQuant = wuQuant_1.WuQuant; + exports.WuColorCube = wuQuant_1.WuColorCube; + + +/***/ }, +/* 21 */ +/***/ function(module, exports, __webpack_require__) { + + /* + * NeuQuant Neural-Net Quantization Algorithm + * ------------------------------------------ + * + * Copyright (c) 1994 Anthony Dekker + * + * NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See + * "Kohonen neural networks for optimal colour quantization" in "Network: + * Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of + * the algorithm. + * + * Any party obtaining a copy of these files from the author, directly or + * indirectly, is granted, free of charge, a full and unrestricted irrevocable, + * world-wide, paid up, royalty-free, nonexclusive right and license to deal in + * this software and documentation files (the "Software"), including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons who + * receive copies from any such party to do so, with the only requirement being + * that this copyright notice remain intact. + */ + "use strict"; + /** + * @preserve TypeScript port: + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * neuquant.ts - part of Image Quantization Library + */ + var palette_1 = __webpack_require__(22); + var point_1 = __webpack_require__(24); + // bias for colour values + var networkBiasShift = 3; + var Neuron = (function () { + function Neuron(defaultValue) { + this.r = this.g = this.b = this.a = defaultValue; + } + /** + * There is a fix in original NEUQUANT by Anthony Dekker (http://members.ozemail.com.au/~dekker/NEUQUANT.HTML) + * @example + * r = Math.min(255, (neuron.r + (1 << (networkBiasShift - 1))) >> networkBiasShift); + */ + Neuron.prototype.toPoint = function () { + return point_1.Point.createByRGBA(this.r >> networkBiasShift, this.g >> networkBiasShift, this.b >> networkBiasShift, this.a >> networkBiasShift); + }; + Neuron.prototype.subtract = function (r, g, b, a) { + this.r -= r | 0; + this.g -= g | 0; + this.b -= b | 0; + this.a -= a | 0; + }; + return Neuron; + }()); + var NeuQuant = (function () { + function NeuQuant(colorDistanceCalculator, colors) { + if (colors === void 0) { colors = 256; } + this._distance = colorDistanceCalculator; + this._pointArray = []; + this._sampleFactor = 1; + this._networkSize = colors; + this._distance.setWhitePoint(255 << networkBiasShift, 255 << networkBiasShift, 255 << networkBiasShift, 255 << networkBiasShift); + } + NeuQuant.prototype.sample = function (pointBuffer) { + this._pointArray = this._pointArray.concat(pointBuffer.getPointArray()); + }; + NeuQuant.prototype.quantize = function () { + this._init(); + this._learn(); + return this._buildPalette(); + }; + NeuQuant.prototype._init = function () { + this._freq = []; + this._bias = []; + this._radPower = []; + this._network = []; + for (var i = 0; i < this._networkSize; i++) { + this._network[i] = new Neuron((i << (networkBiasShift + 8)) / this._networkSize | 0); + // 1/this._networkSize + this._freq[i] = NeuQuant._initialBias / this._networkSize | 0; + this._bias[i] = 0; + } + }; + /** + * Main Learning Loop + */ + NeuQuant.prototype._learn = function () { + var sampleFactor = this._sampleFactor; + var pointsNumber = this._pointArray.length; + if (pointsNumber < NeuQuant._minpicturebytes) + sampleFactor = 1; + var alphadec = 30 + (sampleFactor - 1) / 3 | 0, pointsToSample = pointsNumber / sampleFactor | 0; + var delta = pointsToSample / NeuQuant._nCycles | 0, alpha = NeuQuant._initAlpha, radius = (this._networkSize >> 3) * NeuQuant._radiusBias; + var rad = radius >> NeuQuant._radiusBiasShift; + if (rad <= 1) + rad = 0; + for (var i = 0; i < rad; i++) { + this._radPower[i] = alpha * (((rad * rad - i * i) * NeuQuant._radBias) / (rad * rad)) >>> 0; + } + var step; + if (pointsNumber < NeuQuant._minpicturebytes) { + step = 1; + } + else if (pointsNumber % NeuQuant._prime1 != 0) { + step = NeuQuant._prime1; + } + else if ((pointsNumber % NeuQuant._prime2) != 0) { + step = NeuQuant._prime2; + } + else if ((pointsNumber % NeuQuant._prime3) != 0) { + step = NeuQuant._prime3; + } + else { + step = NeuQuant._prime4; + } + for (var i = 0, pointIndex = 0; i < pointsToSample;) { + var point = this._pointArray[pointIndex], b = point.b << networkBiasShift, g = point.g << networkBiasShift, r = point.r << networkBiasShift, a = point.a << networkBiasShift, neuronIndex = this._contest(b, g, r, a); + this._alterSingle(alpha, neuronIndex, b, g, r, a); + if (rad !== 0) + this._alterNeighbour(rad, neuronIndex, b, g, r, a); + /* alter neighbours */ + pointIndex += step; + if (pointIndex >= pointsNumber) + pointIndex -= pointsNumber; + i++; + if (delta === 0) + delta = 1; + if (i % delta === 0) { + alpha -= (alpha / alphadec) | 0; + radius -= (radius / NeuQuant._radiusDecrease) | 0; + rad = radius >> NeuQuant._radiusBiasShift; + if (rad <= 1) + rad = 0; + for (var j = 0; j < rad; j++) + this._radPower[j] = alpha * (((rad * rad - j * j) * NeuQuant._radBias) / (rad * rad)) >>> 0; + } + } + }; + NeuQuant.prototype._buildPalette = function () { + var palette = new palette_1.Palette(); + this._network.forEach(function (neuron) { + palette.add(neuron.toPoint()); + }); + palette.sort(); + return palette; + }; + /** + * Move adjacent neurons by precomputed alpha*(1-((i-j)^2/[r]^2)) in radpower[|i-j|] + */ + NeuQuant.prototype._alterNeighbour = function (rad, i, b, g, r, al) { + var lo = i - rad; + if (lo < -1) + lo = -1; + var hi = i + rad; + if (hi > this._networkSize) + hi = this._networkSize; + var j = i + 1, k = i - 1, m = 1; + while (j < hi || k > lo) { + var a = this._radPower[m++] / NeuQuant._alphaRadBias; + if (j < hi) { + var p = this._network[j++]; + p.subtract(a * (p.r - r), a * (p.g - g), a * (p.b - b), a * (p.a - al)); + } + if (k > lo) { + var p = this._network[k--]; + p.subtract(a * (p.r - r), a * (p.g - g), a * (p.b - b), a * (p.a - al)); + } + } + }; + /** + * Move neuron i towards biased (b,g,r) by factor alpha + */ + NeuQuant.prototype._alterSingle = function (alpha, i, b, g, r, a) { + alpha /= NeuQuant._initAlpha; + /* alter hit neuron */ + var n = this._network[i]; + n.subtract(alpha * (n.r - r), alpha * (n.g - g), alpha * (n.b - b), alpha * (n.a - a)); + }; + /** + * Search for biased BGR values + * description: + * finds closest neuron (min dist) and updates freq + * finds best neuron (min dist-bias) and returns position + * for frequently chosen neurons, freq[i] is high and bias[i] is negative + * bias[i] = _gamma*((1/this._networkSize)-freq[i]) + * + * Original distance equation: + * dist = abs(dR) + abs(dG) + abs(dB) + */ + NeuQuant.prototype._contest = function (b, g, r, a) { + var multiplier = (255 * 4) << networkBiasShift; + var bestd = ~(1 << 31), bestbiasd = bestd, bestpos = -1, bestbiaspos = bestpos; + for (var i = 0; i < this._networkSize; i++) { + var n = this._network[i], dist = this._distance.calculateNormalized(n, { r: r, g: g, b: b, a: a }) * multiplier | 0; + if (dist < bestd) { + bestd = dist; + bestpos = i; + } + var biasdist = dist - ((this._bias[i]) >> (NeuQuant._initialBiasShift - networkBiasShift)); + if (biasdist < bestbiasd) { + bestbiasd = biasdist; + bestbiaspos = i; + } + var betafreq = (this._freq[i] >> NeuQuant._betaShift); + this._freq[i] -= betafreq; + this._bias[i] += (betafreq << NeuQuant._gammaShift); + } + this._freq[bestpos] += NeuQuant._beta; + this._bias[bestpos] -= NeuQuant._betaGamma; + return bestbiaspos; + }; + /* + four primes near 500 - assume no image has a length so large + that it is divisible by all four primes + */ + NeuQuant._prime1 = 499; + NeuQuant._prime2 = 491; + NeuQuant._prime3 = 487; + NeuQuant._prime4 = 503; + NeuQuant._minpicturebytes = NeuQuant._prime4; + // no. of learning cycles + NeuQuant._nCycles = 100; + // defs for freq and bias + NeuQuant._initialBiasShift = 16; + // bias for fractions + NeuQuant._initialBias = (1 << NeuQuant._initialBiasShift); + NeuQuant._gammaShift = 10; + // gamma = 1024 + // TODO: why gamma is never used? + //private static _gamma : number = (1 << NeuQuant._gammaShift); + NeuQuant._betaShift = 10; + NeuQuant._beta = (NeuQuant._initialBias >> NeuQuant._betaShift); + // beta = 1/1024 + NeuQuant._betaGamma = (NeuQuant._initialBias << (NeuQuant._gammaShift - NeuQuant._betaShift)); + /* + * for 256 cols, radius starts + */ + NeuQuant._radiusBiasShift = 6; + // at 32.0 biased by 6 bits + NeuQuant._radiusBias = 1 << NeuQuant._radiusBiasShift; + // and decreases by a factor of 1/30 each cycle + NeuQuant._radiusDecrease = 30; + /* defs for decreasing alpha factor */ + // alpha starts at 1.0 + NeuQuant._alphaBiasShift = 10; + // biased by 10 bits + NeuQuant._initAlpha = (1 << NeuQuant._alphaBiasShift); + /* radBias and alphaRadBias used for radpower calculation */ + NeuQuant._radBiasShift = 8; + NeuQuant._radBias = 1 << NeuQuant._radBiasShift; + NeuQuant._alphaRadBiasShift = NeuQuant._alphaBiasShift + NeuQuant._radBiasShift; + NeuQuant._alphaRadBias = 1 << NeuQuant._alphaRadBiasShift; + return NeuQuant; + }()); + exports.NeuQuant = NeuQuant; + + +/***/ }, +/* 22 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * palette.ts - part of Image Quantization Library + */ + "use strict"; + var pointContainer_1 = __webpack_require__(23); + var rgb2hsl_1 = __webpack_require__(5); + // TODO: make paletteArray via pointBuffer, so, export will be available via pointBuffer.exportXXX + var hueGroups = 10; + function hueGroup(hue, segmentsNumber) { + var maxHue = 360, seg = maxHue / segmentsNumber, half = seg / 2; + for (var i = 1, mid = seg - half; i < segmentsNumber; i++, mid += seg) { + if (hue >= mid && hue < mid + seg) + return i; + } + return 0; + } + exports.hueGroup = hueGroup; + var Palette = (function () { + function Palette() { + this._pointArray = []; + this._i32idx = {}; + this._pointContainer = new pointContainer_1.PointContainer(); + this._pointContainer.setHeight(1); + this._pointArray = this._pointContainer.getPointArray(); + } + Palette.prototype.add = function (color) { + this._pointArray.push(color); + this._pointContainer.setWidth(this._pointArray.length); + }; + Palette.prototype.has = function (color) { + for (var i = this._pointArray.length - 1; i >= 0; i--) { + if (color.uint32 === this._pointArray[i].uint32) + return true; + } + return false; + }; + // TOTRY: use HUSL - http://boronine.com/husl/ http://www.husl-colors.org/ https://github.com/husl-colors/husl + Palette.prototype.getNearestColor = function (colorDistanceCalculator, color) { + return this._pointArray[this.getNearestIndex(colorDistanceCalculator, color) | 0]; + }; + Palette.prototype.getPointContainer = function () { + return this._pointContainer; + }; + // TOTRY: use HUSL - http://boronine.com/husl/ + /* + public nearestIndexByUint32(i32) { + var idx : number = this._nearestPointFromCache("" + i32); + if (idx >= 0) return idx; + + var min = 1000, + rgb = [ + (i32 & 0xff), + (i32 >>> 8) & 0xff, + (i32 >>> 16) & 0xff, + (i32 >>> 24) & 0xff + ], + len = this._pointArray.length; + + idx = 0; + for (var i = 0; i < len; i++) { + var dist = Utils.distEuclidean(rgb, this._pointArray[i].rgba); + + if (dist < min) { + min = dist; + idx = i; + } + } + + this._i32idx[i32] = idx; + return idx; + } + */ + Palette.prototype._nearestPointFromCache = function (key) { + return typeof this._i32idx[key] === "number" ? this._i32idx[key] : -1; + }; + Palette.prototype.getNearestIndex = function (colorDistanceCalculator, point) { + var idx = this._nearestPointFromCache("" + point.uint32); + if (idx >= 0) + return idx; + var minimalDistance = Number.MAX_VALUE; + idx = 0; + for (var i = 0, l = this._pointArray.length; i < l; i++) { + var p = this._pointArray[i], distance = colorDistanceCalculator.calculateRaw(point.r, point.g, point.b, point.a, p.r, p.g, p.b, p.a); + if (distance < minimalDistance) { + minimalDistance = distance; + idx = i; + } + } + this._i32idx[point.uint32] = idx; + return idx; + }; + /* + public reduce(histogram : ColorHistogram, colors : number) { + if (this._pointArray.length > colors) { + var idxi32 = histogram.getImportanceSortedColorsIDXI32(); + + // quantize histogram to existing palette + var keep = [], uniqueColors = 0, idx, pruned = false; + + for (var i = 0, len = idxi32.length; i < len; i++) { + // palette length reached, unset all remaining colors (sparse palette) + if (uniqueColors >= colors) { + this.prunePal(keep); + pruned = true; + break; + } else { + idx = this.nearestIndexByUint32(idxi32[i]); + if (keep.indexOf(idx) < 0) { + keep.push(idx); + uniqueColors++; + } + } + } + + if (!pruned) { + this.prunePal(keep); + } + } + } + + // TODO: check usage, not tested! + public prunePal(keep : number[]) { + var colors = this._pointArray.length; + for (var colorIndex = colors - 1; colorIndex >= 0; colorIndex--) { + if (keep.indexOf(colorIndex) < 0) { + + if(colorIndex + 1 < colors) { + this._pointArray[ colorIndex ] = this._pointArray [ colors - 1 ]; + } + --colors; + //this._pointArray[colorIndex] = null; + } + } + console.log("colors pruned: " + (this._pointArray.length - colors)); + this._pointArray.length = colors; + this._i32idx = {}; + } + */ + // TODO: group very low lum and very high lum colors + // TODO: pass custom sort order + // TODO: sort criteria function should be placed to HueStats class + Palette.prototype.sort = function () { + this._i32idx = {}; + this._pointArray.sort(function (a, b) { + var hslA = rgb2hsl_1.rgb2hsl(a.r, a.g, a.b), hslB = rgb2hsl_1.rgb2hsl(b.r, b.g, b.b); + // sort all grays + whites together + var hueA = (a.r === a.g && a.g === a.b) ? 0 : 1 + hueGroup(hslA.h, hueGroups), hueB = (b.r === b.g && b.g === b.b) ? 0 : 1 + hueGroup(hslB.h, hueGroups); + /* + var hueA = (a.r === a.g && a.g === a.b) ? 0 : 1 + Utils.hueGroup(hslA.h, hueGroups); + var hueB = (b.r === b.g && b.g === b.b) ? 0 : 1 + Utils.hueGroup(hslB.h, hueGroups); + */ + var hueDiff = hueB - hueA; + if (hueDiff) + return -hueDiff; + /* + var lumDiff = Utils.lumGroup(+hslB.l.toFixed(2)) - Utils.lumGroup(+hslA.l.toFixed(2)); + if (lumDiff) return -lumDiff; + */ + var lA = a.getLuminosity(true), lB = b.getLuminosity(true); + if (lB - lA !== 0) + return lB - lA; + var satDiff = ((hslB.s * 100) | 0) - ((hslA.s * 100) | 0); + if (satDiff) + return -satDiff; + return 0; + }); + }; + return Palette; + }()); + exports.Palette = Palette; + + +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * pointContainer.ts - part of Image Quantization Library + */ + var point_1 = __webpack_require__(24); + /** + * v8 optimizations done. + * fromXXX methods are static to move out polymorphic code from class instance itself. + */ + var PointContainer = (function () { + function PointContainer() { + this._width = 0; + this._height = 0; + this._pointArray = []; + } + PointContainer.prototype.getWidth = function () { + return this._width; + }; + PointContainer.prototype.getHeight = function () { + return this._height; + }; + PointContainer.prototype.setWidth = function (width) { + this._width = width; + }; + PointContainer.prototype.setHeight = function (height) { + this._height = height; + }; + PointContainer.prototype.getPointArray = function () { + return this._pointArray; + }; + PointContainer.prototype.clone = function () { + var clone = new PointContainer(); + clone._width = this._width; + clone._height = this._height; + for (var i = 0, l = this._pointArray.length; i < l; i++) { + clone._pointArray[i] = point_1.Point.createByUint32(this._pointArray[i].uint32 | 0); // "| 0" is added for v8 optimization + } + return clone; + }; + PointContainer.prototype.toUint32Array = function () { + var l = this._pointArray.length, uint32Array = new Uint32Array(l); + for (var i = 0; i < l; i++) { + uint32Array[i] = this._pointArray[i].uint32; + } + return uint32Array; + }; + PointContainer.prototype.toUint8Array = function () { + return new Uint8Array(this.toUint32Array().buffer); + }; + PointContainer.fromHTMLImageElement = function (img) { + var width = img.naturalWidth, height = img.naturalHeight; + var canvas = document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0, width, height, 0, 0, width, height); + return PointContainer.fromHTMLCanvasElement(canvas); + }; + PointContainer.fromHTMLCanvasElement = function (canvas) { + var width = canvas.width, height = canvas.height; + var ctx = canvas.getContext("2d"), imgData = ctx.getImageData(0, 0, width, height); + return PointContainer.fromImageData(imgData); + }; + PointContainer.fromNodeCanvas = function (canvas) { + return PointContainer.fromHTMLCanvasElement(canvas); + }; + PointContainer.fromImageData = function (imageData) { + var width = imageData.width, height = imageData.height; + return PointContainer.fromCanvasPixelArray(imageData.data, width, height); + /* + var buf8; + if (Utils.typeOf(imageData.data) == "CanvasPixelArray") + buf8 = new Uint8Array(imageData.data); + else + buf8 = imageData.data; + + this.fromUint32Array(new Uint32Array(buf8.buffer), width, height); + */ + }; + PointContainer.fromArray = function (byteArray, width, height) { + var uint8array = new Uint8Array(byteArray); + return PointContainer.fromUint8Array(uint8array, width, height); + }; + PointContainer.fromCanvasPixelArray = function (data, width, height) { + return PointContainer.fromArray(data, width, height); + }; + PointContainer.fromUint8Array = function (uint8array, width, height) { + return PointContainer.fromUint32Array(new Uint32Array(uint8array.buffer), width, height); + }; + PointContainer.fromUint32Array = function (uint32array, width, height) { + var container = new PointContainer(); + container._width = width; + container._height = height; + for (var i = 0, l = uint32array.length; i < l; i++) { + container._pointArray[i] = point_1.Point.createByUint32(uint32array[i] | 0); // "| 0" is added for v8 optimization + } + return container; + }; + return PointContainer; + }()); + exports.PointContainer = PointContainer; + + +/***/ }, +/* 24 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * point.ts - part of Image Quantization Library + */ + var bt709_1 = __webpack_require__(2); + /** + * v8 optimized class + * 1) "constructor" should have initialization with worst types + * 2) "set" should have |0 / >>> 0 + */ + var Point = (function () { + function Point() { + this.uint32 = -1 >>> 0; + this.r = this.g = this.b = this.a = 0; + this.rgba = new Array(4); + /*[ this.r , this.g , this.b , this.a ]*/ + this.rgba[0] = 0; + this.rgba[1] = 0; + this.rgba[2] = 0; + this.rgba[3] = 0; + /* + this.Lab = { + L : 0.0, + a : 0.0, + b : 0.0 + }; + */ + } + Point.createByQuadruplet = function (quadruplet) { + var point = new Point(); + point.r = quadruplet[0] | 0; + point.g = quadruplet[1] | 0; + point.b = quadruplet[2] | 0; + point.a = quadruplet[3] | 0; + point._loadUINT32(); + point._loadQuadruplet(); + //point._loadLab(); + return point; + }; + Point.createByRGBA = function (red, green, blue, alpha) { + var point = new Point(); + point.r = red | 0; + point.g = green | 0; + point.b = blue | 0; + point.a = alpha | 0; + point._loadUINT32(); + point._loadQuadruplet(); + //point._loadLab(); + return point; + }; + Point.createByUint32 = function (uint32) { + var point = new Point(); + point.uint32 = uint32 >>> 0; + point._loadRGBA(); + point._loadQuadruplet(); + //point._loadLab(); + return point; + }; + Point.prototype.from = function (point) { + this.r = point.r; + this.g = point.g; + this.b = point.b; + this.a = point.a; + this.uint32 = point.uint32; + this.rgba[0] = point.r; + this.rgba[1] = point.g; + this.rgba[2] = point.b; + this.rgba[3] = point.a; + /* + this.Lab.L = point.Lab.L; + this.Lab.a = point.Lab.a; + this.Lab.b = point.Lab.b; + */ + }; + /* + * TODO: + Luminance from RGB: + + Luminance (standard for certain colour spaces): (0.2126*R + 0.7152*G + 0.0722*B) [1] + Luminance (perceived option 1): (0.299*R + 0.587*G + 0.114*B) [2] + Luminance (perceived option 2, slower to calculate): sqrt( 0.241*R^2 + 0.691*G^2 + 0.068*B^2 ) ? sqrt( 0.299*R^2 + 0.587*G^2 + 0.114*B^2 ) (thanks to @MatthewHerbst) [http://alienryderflex.com/hsp.html] + */ + Point.prototype.getLuminosity = function (useAlphaChannel) { + var r = this.r, g = this.g, b = this.b; + if (useAlphaChannel) { + r = Math.min(255, 255 - this.a + this.a * r / 255); + g = Math.min(255, 255 - this.a + this.a * g / 255); + b = Math.min(255, 255 - this.a + this.a * b / 255); + } + //var luma = this.r * Point._RED_COEFFICIENT + this.g * Point._GREEN_COEFFICIENT + this.b * Point._BLUE_COEFFICIENT; + /* + if(useAlphaChannel) { + luma = (luma * (255 - this.a)) / 255; + } + */ + return r * bt709_1.Y.RED + g * bt709_1.Y.GREEN + b * bt709_1.Y.BLUE; + }; + Point.prototype._loadUINT32 = function () { + this.uint32 = (this.a << 24 | this.b << 16 | this.g << 8 | this.r) >>> 0; + }; + Point.prototype._loadRGBA = function () { + this.r = this.uint32 & 0xff; + this.g = (this.uint32 >>> 8) & 0xff; + this.b = (this.uint32 >>> 16) & 0xff; + this.a = (this.uint32 >>> 24) & 0xff; + }; + Point.prototype._loadQuadruplet = function () { + this.rgba[0] = this.r; + this.rgba[1] = this.g; + this.rgba[2] = this.b; + this.rgba[3] = this.a; + /* + var xyz = rgb2xyz(this.r, this.g, this.b); + var lab = xyz2lab(xyz.x, xyz.y, xyz.z); + this.lab.l = lab.l; + this.lab.a = lab.a; + this.lab.b = lab.b; + */ + }; + return Point; + }()); + exports.Point = Point; + + +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /* + * NeuQuantFloat Neural-Net Quantization Algorithm + * ------------------------------------------ + * + * Copyright (c) 1994 Anthony Dekker + * + * NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See + * "Kohonen neural networks for optimal colour quantization" in "Network: + * Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of + * the algorithm. + * + * Any party obtaining a copy of these files from the author, directly or + * indirectly, is granted, free of charge, a full and unrestricted irrevocable, + * world-wide, paid up, royalty-free, nonexclusive right and license to deal in + * this software and documentation files (the "Software"), including without + * limitation the rights to use, copy, modify, merge, publish, distribute, + * sublicense, and/or sell copies of the Software, and to permit persons who + * receive copies from any such party to do so, with the only requirement being + * that this copyright notice remain intact. + */ + /** + * @preserve TypeScript port: + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * neuquant.ts - part of Image Quantization Library + */ + var palette_1 = __webpack_require__(22); + var point_1 = __webpack_require__(24); + // bias for colour values + var networkBiasShift = 3; + var NeuronFloat = (function () { + function NeuronFloat(defaultValue) { + this.r = this.g = this.b = this.a = defaultValue; + } + /** + * There is a fix in original NEUQUANT by Anthony Dekker (http://members.ozemail.com.au/~dekker/NEUQUANT.HTML) + * @example + * r = Math.min(255, (neuron.r + (1 << (networkBiasShift - 1))) >> networkBiasShift); + */ + NeuronFloat.prototype.toPoint = function () { + return point_1.Point.createByRGBA(this.r >> networkBiasShift, this.g >> networkBiasShift, this.b >> networkBiasShift, this.a >> networkBiasShift); + }; + NeuronFloat.prototype.subtract = function (r, g, b, a) { + this.r -= r; + this.g -= g; + this.b -= b; + this.a -= a; + }; + return NeuronFloat; + }()); + var NeuQuantFloat = (function () { + function NeuQuantFloat(colorDistanceCalculator, colors) { + if (colors === void 0) { colors = 256; } + this._distance = colorDistanceCalculator; + this._pointArray = []; + this._sampleFactor = 1; + this._networkSize = colors; + this._distance.setWhitePoint(255 << networkBiasShift, 255 << networkBiasShift, 255 << networkBiasShift, 255 << networkBiasShift); + } + NeuQuantFloat.prototype.sample = function (pointBuffer) { + this._pointArray = this._pointArray.concat(pointBuffer.getPointArray()); + }; + NeuQuantFloat.prototype.quantize = function () { + this._init(); + this._learn(); + return this._buildPalette(); + }; + NeuQuantFloat.prototype._init = function () { + this._freq = []; + this._bias = []; + this._radPower = []; + this._network = []; + for (var i = 0; i < this._networkSize; i++) { + this._network[i] = new NeuronFloat((i << (networkBiasShift + 8)) / this._networkSize); + // 1/this._networkSize + this._freq[i] = NeuQuantFloat._initialBias / this._networkSize; + this._bias[i] = 0; + } + }; + /** + * Main Learning Loop + */ + NeuQuantFloat.prototype._learn = function () { + var sampleFactor = this._sampleFactor; + var pointsNumber = this._pointArray.length; + if (pointsNumber < NeuQuantFloat._minpicturebytes) + sampleFactor = 1; + var alphadec = 30 + (sampleFactor - 1) / 3, pointsToSample = pointsNumber / sampleFactor; + var delta = pointsToSample / NeuQuantFloat._nCycles | 0, alpha = NeuQuantFloat._initAlpha, radius = (this._networkSize >> 3) * NeuQuantFloat._radiusBias; + var rad = radius >> NeuQuantFloat._radiusBiasShift; + if (rad <= 1) + rad = 0; + for (var i = 0; i < rad; i++) { + this._radPower[i] = alpha * (((rad * rad - i * i) * NeuQuantFloat._radBias) / (rad * rad)); + } + var step; + if (pointsNumber < NeuQuantFloat._minpicturebytes) { + step = 1; + } + else if (pointsNumber % NeuQuantFloat._prime1 != 0) { + step = NeuQuantFloat._prime1; + } + else if ((pointsNumber % NeuQuantFloat._prime2) != 0) { + step = NeuQuantFloat._prime2; + } + else if ((pointsNumber % NeuQuantFloat._prime3) != 0) { + step = NeuQuantFloat._prime3; + } + else { + step = NeuQuantFloat._prime4; + } + for (var i = 0, pointIndex = 0; i < pointsToSample;) { + var point = this._pointArray[pointIndex], b = point.b << networkBiasShift, g = point.g << networkBiasShift, r = point.r << networkBiasShift, a = point.a << networkBiasShift, neuronIndex = this._contest(b, g, r, a); + this._alterSingle(alpha, neuronIndex, b, g, r, a); + if (rad != 0) + this._alterNeighbour(rad, neuronIndex, b, g, r, a); + /* alter neighbours */ + pointIndex += step; + if (pointIndex >= pointsNumber) + pointIndex -= pointsNumber; + i++; + if (delta == 0) + delta = 1; + if (i % delta == 0) { + alpha -= (alpha / alphadec); + radius -= (radius / NeuQuantFloat._radiusDecrease); + rad = radius >> NeuQuantFloat._radiusBiasShift; + if (rad <= 1) + rad = 0; + for (var j = 0; j < rad; j++) + this._radPower[j] = alpha * (((rad * rad - j * j) * NeuQuantFloat._radBias) / (rad * rad)); + } + } + }; + NeuQuantFloat.prototype._buildPalette = function () { + var palette = new palette_1.Palette(); + this._network.forEach(function (neuron) { + palette.add(neuron.toPoint()); + }); + palette.sort(); + return palette; + }; + /** + * Move adjacent neurons by precomputed alpha*(1-((i-j)^2/[r]^2)) in radpower[|i-j|] + */ + NeuQuantFloat.prototype._alterNeighbour = function (rad, i, b, g, r, al) { + var lo = i - rad; + if (lo < -1) + lo = -1; + var hi = i + rad; + if (hi > this._networkSize) + hi = this._networkSize; + var j = i + 1, k = i - 1, m = 1; + while (j < hi || k > lo) { + var a = this._radPower[m++] / NeuQuantFloat._alphaRadBias; + if (j < hi) { + var p = this._network[j++]; + p.subtract(a * (p.r - r), a * (p.g - g), a * (p.b - b), a * (p.a - al)); + } + if (k > lo) { + var p = this._network[k--]; + p.subtract(a * (p.r - r), a * (p.g - g), a * (p.b - b), a * (p.a - al)); + } + } + }; + /** + * Move neuron i towards biased (b,g,r) by factor alpha + */ + NeuQuantFloat.prototype._alterSingle = function (alpha, i, b, g, r, a) { + alpha /= NeuQuantFloat._initAlpha; + /* alter hit neuron */ + var n = this._network[i]; + n.subtract(alpha * (n.r - r), alpha * (n.g - g), alpha * (n.b - b), alpha * (n.a - a)); + }; + /** + * Search for biased BGR values + * description: + * finds closest neuron (min dist) and updates freq + * finds best neuron (min dist-bias) and returns position + * for frequently chosen neurons, freq[i] is high and bias[i] is negative + * bias[i] = _gamma*((1/this._networkSize)-freq[i]) + * + * Original distance equation: + * dist = abs(dR) + abs(dG) + abs(dB) + */ + NeuQuantFloat.prototype._contest = function (b, g, r, al) { + var multiplier = (255 * 4) << networkBiasShift; + var bestd = ~(1 << 31), bestbiasd = bestd, bestpos = -1, bestbiaspos = bestpos; + for (var i = 0; i < this._networkSize; i++) { + var n = this._network[i], dist = this._distance.calculateNormalized(n, { r: r, g: g, b: b, a: al }) * multiplier; + if (dist < bestd) { + bestd = dist; + bestpos = i; + } + var biasdist = dist - ((this._bias[i]) >> (NeuQuantFloat._initialBiasShift - networkBiasShift)); + if (biasdist < bestbiasd) { + bestbiasd = biasdist; + bestbiaspos = i; + } + var betafreq = (this._freq[i] >> NeuQuantFloat._betaShift); + this._freq[i] -= betafreq; + this._bias[i] += (betafreq << NeuQuantFloat._gammaShift); + } + this._freq[bestpos] += NeuQuantFloat._beta; + this._bias[bestpos] -= NeuQuantFloat._betaGamma; + return bestbiaspos; + }; + /* + four primes near 500 - assume no image has a length so large + that it is divisible by all four primes + */ + NeuQuantFloat._prime1 = 499; + NeuQuantFloat._prime2 = 491; + NeuQuantFloat._prime3 = 487; + NeuQuantFloat._prime4 = 503; + NeuQuantFloat._minpicturebytes = NeuQuantFloat._prime4; + // no. of learning cycles + NeuQuantFloat._nCycles = 100; + // defs for freq and bias + NeuQuantFloat._initialBiasShift = 16; + // bias for fractions + NeuQuantFloat._initialBias = (1 << NeuQuantFloat._initialBiasShift); + NeuQuantFloat._gammaShift = 10; + // gamma = 1024 + // TODO: why gamma is never used? + //private static _gamma : number = (1 << NeuQuantFloat._gammaShift); + NeuQuantFloat._betaShift = 10; + NeuQuantFloat._beta = (NeuQuantFloat._initialBias >> NeuQuantFloat._betaShift); + // beta = 1/1024 + NeuQuantFloat._betaGamma = (NeuQuantFloat._initialBias << (NeuQuantFloat._gammaShift - NeuQuantFloat._betaShift)); + /* + * for 256 cols, radius starts + */ + NeuQuantFloat._radiusBiasShift = 6; + // at 32.0 biased by 6 bits + NeuQuantFloat._radiusBias = 1 << NeuQuantFloat._radiusBiasShift; + // and decreases by a factor of 1/30 each cycle + NeuQuantFloat._radiusDecrease = 30; + /* defs for decreasing alpha factor */ + // alpha starts at 1.0 + NeuQuantFloat._alphaBiasShift = 10; + // biased by 10 bits + NeuQuantFloat._initAlpha = (1 << NeuQuantFloat._alphaBiasShift); + /* radBias and alphaRadBias used for radpower calculation */ + NeuQuantFloat._radBiasShift = 8; + NeuQuantFloat._radBias = 1 << NeuQuantFloat._radBiasShift; + NeuQuantFloat._alphaRadBiasShift = NeuQuantFloat._alphaBiasShift + NeuQuantFloat._radBiasShift; + NeuQuantFloat._alphaRadBias = 1 << NeuQuantFloat._alphaRadBiasShift; + return NeuQuantFloat; + }()); + exports.NeuQuantFloat = NeuQuantFloat; + + +/***/ }, +/* 26 */ +/***/ function(module, exports, __webpack_require__) { + + /* + * Copyright (c) 2015, Leon Sorokin + * All rights reserved. (MIT Licensed) + * + * RgbQuant.js - an image quantization lib + */ + "use strict"; + /** + * @preserve TypeScript port: + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * rgbquant.ts - part of Image Quantization Library + */ + var palette_1 = __webpack_require__(22); + var point_1 = __webpack_require__(24); + var colorHistogram_1 = __webpack_require__(27); + var arithmetic_1 = __webpack_require__(6); + var RemovedColor = (function () { + function RemovedColor(index, color, distance) { + this.index = index; + this.color = color; + this.distance = distance; + } + return RemovedColor; + }()); + // TODO: make input/output image and input/output palettes with instances of class Point only! + var RGBQuant = (function () { + function RGBQuant(colorDistanceCalculator, colors, method) { + if (colors === void 0) { colors = 256; } + if (method === void 0) { method = 2; } + this._distance = colorDistanceCalculator; + // desired final palette size + this._colors = colors; + // histogram to accumulate + this._histogram = new colorHistogram_1.ColorHistogram(method, colors); + this._initialDistance = 0.01; + this._distanceIncrement = 0.005; + } + // gathers histogram info + RGBQuant.prototype.sample = function (image) { + /* + var pointArray = image.getPointArray(), max = [0, 0, 0, 0], min = [255, 255, 255, 255]; + + for (var i = 0, l = pointArray.length; i < l; i++) { + var color = pointArray[i]; + for (var componentIndex = 0; componentIndex < 4; componentIndex++) { + if (max[componentIndex] < color.rgba[componentIndex]) max[componentIndex] = color.rgba[componentIndex]; + if (min[componentIndex] > color.rgba[componentIndex]) min[componentIndex] = color.rgba[componentIndex]; + } + } + var rd = max[0] - min[0], gd = max[1] - min[1], bd = max[2] - min[2], ad = max[3] - min[3]; + this._distance.setWhitePoint(rd, gd, bd, ad); + + this._initialDistance = (Math.sqrt(rd * rd + gd * gd + bd * bd + ad * ad) / Math.sqrt(255 * 255 + 255 * 255 + 255 * 255)) * 0.01; + */ + this._histogram.sample(image); + }; + // reduces histogram to palette, remaps & memoizes reduced colors + RGBQuant.prototype.quantize = function () { + var idxi32 = this._histogram.getImportanceSortedColorsIDXI32(); + if (idxi32.length === 0) { + throw new Error("No colors in image"); + } + var palette = this._buildPalette(idxi32); + palette.sort(); + return palette; + }; + // reduces similar colors from an importance-sorted Uint32 rgba array + RGBQuant.prototype._buildPalette = function (idxi32) { + // reduce histogram to create initial palette + // build full rgb palette + var palette = new palette_1.Palette(), colorArray = palette.getPointContainer().getPointArray(), usageArray = new Array(idxi32.length); + for (var i = 0; i < idxi32.length; i++) { + colorArray.push(point_1.Point.createByUint32(idxi32[i])); + usageArray[i] = 1; + } + var len = colorArray.length, memDist = []; + var palLen = len, thold = this._initialDistance; + // palette already at or below desired length + while (palLen > this._colors) { + memDist.length = 0; + // iterate palette + for (var i = 0; i < len; i++) { + if (usageArray[i] === 0) + continue; + var pxi = colorArray[i]; + //if (!pxi) continue; + for (var j = i + 1; j < len; j++) { + if (usageArray[j] === 0) + continue; + var pxj = colorArray[j]; + //if (!pxj) continue; + var dist = this._distance.calculateNormalized(pxi, pxj); + if (dist < thold) { + // store index,rgb,dist + memDist.push(new RemovedColor(j, pxj, dist)); + usageArray[j] = 0; + palLen--; + } + } + } + // palette reduction pass + // console.log("palette length: " + palLen); + // if palette is still much larger than target, increment by larger initDist + thold += (palLen > this._colors * 3) ? this._initialDistance : this._distanceIncrement; + } + // if palette is over-reduced, re-add removed colors with largest distances from last round + if (palLen < this._colors) { + // sort descending + arithmetic_1.stableSort(memDist, function (a, b) { + return b.distance - a.distance; + }); + var k = 0; + while (palLen < this._colors && k < memDist.length) { + var removedColor = memDist[k]; + // re-inject rgb into final palette + usageArray[removedColor.index] = 1; + palLen++; + k++; + } + } + var colors = colorArray.length; + for (var colorIndex = colors - 1; colorIndex >= 0; colorIndex--) { + if (usageArray[colorIndex] === 0) { + if (colorIndex !== colors - 1) { + colorArray[colorIndex] = colorArray[colors - 1]; + } + --colors; + } + } + colorArray.length = colors; + return palette; + }; + return RGBQuant; + }()); + exports.RGBQuant = RGBQuant; + + +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + + /* + * Copyright (c) 2015, Leon Sorokin + * All rights reserved. (MIT Licensed) + * + * ColorHistogram.js - an image quantization lib + */ + "use strict"; + /** + * @preserve TypeScript port: + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * colorHistogram.ts - part of Image Quantization Library + */ + var hueStatistics_1 = __webpack_require__(28); + var arithmetic_1 = __webpack_require__(6); + var ColorHistogram = (function () { + function ColorHistogram(method, colors) { + // 1 = by global population, 2 = subregion population threshold + this._method = method; + // if > 0, enables hues stats and min-color retention per group + this._minHueCols = colors << 2; //opts.minHueCols || 0; + // # of highest-frequency colors to start with for palette reduction + this._initColors = colors << 2; + // HueStatistics instance + this._hueStats = new hueStatistics_1.HueStatistics(ColorHistogram._hueGroups, this._minHueCols); + this._histogram = Object.create(null); + } + ColorHistogram.prototype.sample = function (pointBuffer) { + switch (this._method) { + case 1: + this._colorStats1D(pointBuffer); + break; + case 2: + this._colorStats2D(pointBuffer); + break; + } + }; + ColorHistogram.prototype.getImportanceSortedColorsIDXI32 = function () { + var _this = this; + // TODO: fix typing issue in stableSort func + var sorted = arithmetic_1.stableSort(Object.keys(this._histogram), function (a, b) { return _this._histogram[b] - _this._histogram[a]; }); + if (sorted.length === 0) { + return []; + } + var idxi32; + switch (this._method) { + case 1: + var initialColorsLimit = Math.min(sorted.length, this._initColors), last = sorted[initialColorsLimit - 1], freq = this._histogram[last]; + idxi32 = sorted.slice(0, initialColorsLimit); + // add any cut off colors with same freq as last + var pos = initialColorsLimit, len = sorted.length; + while (pos < len && this._histogram[sorted[pos]] == freq) + idxi32.push(sorted[pos++]); + // inject min huegroup colors + this._hueStats.injectIntoArray(idxi32); + break; + case 2: + idxi32 = sorted; + break; + default: + // TODO: rethink errors + throw new Error("Incorrect method"); + } + // int32-ify values + return idxi32.map(function (v) { + return +v; + }); + }; + // global top-population + ColorHistogram.prototype._colorStats1D = function (pointBuffer) { + var histG = this._histogram, pointArray = pointBuffer.getPointArray(), len = pointArray.length; + for (var i = 0; i < len; i++) { + var col = pointArray[i].uint32; + // collect hue stats + this._hueStats.check(col); + if (col in histG) + histG[col]++; + else + histG[col] = 1; + } + }; + // population threshold within subregions + // FIXME: this can over-reduce (few/no colors same?), need a way to keep + // important colors that dont ever reach local thresholds (gradients?) + ColorHistogram.prototype._colorStats2D = function (pointBuffer) { + var _this = this; + var width = pointBuffer.getWidth(), height = pointBuffer.getHeight(), pointArray = pointBuffer.getPointArray(); + var boxW = ColorHistogram._boxSize[0], boxH = ColorHistogram._boxSize[1], area = boxW * boxH, boxes = this._makeBoxes(width, height, boxW, boxH), histG = this._histogram; + boxes.forEach(function (box) { + var effc = Math.round((box.w * box.h) / area) * ColorHistogram._boxPixels; + if (effc < 2) + effc = 2; + var histL = {}; + _this._iterateBox(box, width, function (i) { + var col = pointArray[i].uint32; + // collect hue stats + _this._hueStats.check(col); + if (col in histG) + histG[col]++; + else if (col in histL) { + if (++histL[col] >= effc) + histG[col] = histL[col]; + } + else + histL[col] = 1; + }); + }); + // inject min huegroup colors + this._hueStats.injectIntoDictionary(histG); + }; + // iterates @bbox within a parent rect of width @wid; calls @fn, passing index within parent + ColorHistogram.prototype._iterateBox = function (bbox, wid, fn) { + var b = bbox, i0 = b.y * wid + b.x, i1 = (b.y + b.h - 1) * wid + (b.x + b.w - 1), incr = wid - b.w + 1; + var cnt = 0, i = i0; + do { + fn.call(this, i); + i += (++cnt % b.w == 0) ? incr : 1; + } while (i <= i1); + }; + /** + * partitions a rectangle of width x height into + * array of boxes stepX x stepY (or less) + */ + ColorHistogram.prototype._makeBoxes = function (width, height, stepX, stepY) { + var wrem = width % stepX, hrem = height % stepY, xend = width - wrem, yend = height - hrem, boxesArray = []; + for (var y = 0; y < height; y += stepY) + for (var x = 0; x < width; x += stepX) + boxesArray.push({ x: x, y: y, w: (x == xend ? wrem : stepX), h: (y == yend ? hrem : stepY) }); + return boxesArray; + }; + ColorHistogram._boxSize = [64, 64]; + ColorHistogram._boxPixels = 2; + ColorHistogram._hueGroups = 10; + return ColorHistogram; + }()); + exports.ColorHistogram = ColorHistogram; + + +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * hueStatistics.ts - part of Image Quantization Library + */ + var rgb2hsl_1 = __webpack_require__(5); + var palette_1 = __webpack_require__(22); + var HueGroup = (function () { + function HueGroup() { + this.num = 0; + this.cols = []; + } + return HueGroup; + }()); + var HueStatistics = (function () { + function HueStatistics(numGroups, minCols) { + this._numGroups = numGroups; + this._minCols = minCols; + this._stats = []; + for (var i = 0; i <= numGroups; i++) { + this._stats[i] = new HueGroup(); + } + this._groupsFull = 0; + } + HueStatistics.prototype.check = function (i32) { + if (this._groupsFull == this._numGroups + 1) { + this.check = function () { + }; + } + var r = (i32 & 0xff), g = (i32 >>> 8) & 0xff, b = (i32 >>> 16) & 0xff, hg = (r == g && g == b) ? 0 : 1 + palette_1.hueGroup(rgb2hsl_1.rgb2hsl(r, g, b).h, this._numGroups), gr = this._stats[hg], min = this._minCols; + gr.num++; + if (gr.num > min) + return; + if (gr.num == min) + this._groupsFull++; + if (gr.num <= min) + this._stats[hg].cols.push(i32); + }; + HueStatistics.prototype.injectIntoDictionary = function (histG) { + for (var i = 0; i <= this._numGroups; i++) { + if (this._stats[i].num <= this._minCols) { + this._stats[i].cols.forEach(function (col) { + if (!histG[col]) + histG[col] = 1; + else + histG[col]++; + }); + } + } + }; + HueStatistics.prototype.injectIntoArray = function (histG) { + for (var i = 0; i <= this._numGroups; i++) { + if (this._stats[i].num <= this._minCols) { + this._stats[i].cols.forEach(function (col) { + if (histG.indexOf(col) == -1) + histG.push(col); + }); + } + } + }; + return HueStatistics; + }()); + exports.HueStatistics = HueStatistics; + + +/***/ }, +/* 29 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * wuQuant.ts - part of Image Quantization Library + */ + var palette_1 = __webpack_require__(22); + var point_1 = __webpack_require__(24); + function createArray1D(dimension1) { + var a = []; + for (var k = 0; k < dimension1; k++) { + a[k] = 0; + } + return a; + } + function createArray4D(dimension1, dimension2, dimension3, dimension4) { + var a = new Array(dimension1); + for (var i = 0; i < dimension1; i++) { + a[i] = new Array(dimension2); + for (var j = 0; j < dimension2; j++) { + a[i][j] = new Array(dimension3); + for (var k = 0; k < dimension3; k++) { + a[i][j][k] = new Array(dimension4); + for (var l = 0; l < dimension4; l++) { + a[i][j][k][l] = 0; + } + } + } + } + return a; + } + function createArray3D(dimension1, dimension2, dimension3) { + var a = new Array(dimension1); + for (var i = 0; i < dimension1; i++) { + a[i] = new Array(dimension2); + for (var j = 0; j < dimension2; j++) { + a[i][j] = new Array(dimension3); + for (var k = 0; k < dimension3; k++) { + a[i][j][k] = 0; + } + } + } + return a; + } + function fillArray3D(a, dimension1, dimension2, dimension3, value) { + for (var i = 0; i < dimension1; i++) { + a[i] = []; + for (var j = 0; j < dimension2; j++) { + a[i][j] = []; + for (var k = 0; k < dimension3; k++) { + a[i][j][k] = value; + } + } + } + } + function fillArray1D(a, dimension1, value) { + for (var i = 0; i < dimension1; i++) { + a[i] = value; + } + } + var WuColorCube = (function () { + function WuColorCube() { + } + return WuColorCube; + }()); + exports.WuColorCube = WuColorCube; + var WuQuant = (function () { + function WuQuant(colorDistanceCalculator, colors, significantBitsPerChannel) { + if (colors === void 0) { colors = 256; } + if (significantBitsPerChannel === void 0) { significantBitsPerChannel = 5; } + this._distance = colorDistanceCalculator; + this._setQuality(significantBitsPerChannel); + this._initialize(colors); + } + WuQuant.prototype.sample = function (image) { + var pointArray = image.getPointArray(); + for (var i = 0, l = pointArray.length; i < l; i++) { + this._addColor(pointArray[i]); + } + this._pixels = this._pixels.concat(pointArray); + }; + WuQuant.prototype.quantize = function () { + this._preparePalette(); + var palette = new palette_1.Palette(); + // generates palette + for (var paletteIndex = 0; paletteIndex < this._colors; paletteIndex++) { + if (this._sums[paletteIndex] > 0) { + var sum = this._sums[paletteIndex], r = this._reds[paletteIndex] / sum, g = this._greens[paletteIndex] / sum, b = this._blues[paletteIndex] / sum, a = this._alphas[paletteIndex] / sum; + var color = point_1.Point.createByRGBA(r | 0, g | 0, b | 0, a | 0); + palette.add(color); + } + } + palette.sort(); + return palette; + }; + WuQuant.prototype._preparePalette = function () { + // preprocess the colors + this._calculateMoments(); + var next = 0, volumeVariance = createArray1D(this._colors); + // processes the cubes + for (var cubeIndex = 1; cubeIndex < this._colors; ++cubeIndex) { + // if cut is possible; make it + if (this._cut(this._cubes[next], this._cubes[cubeIndex])) { + volumeVariance[next] = this._cubes[next].volume > 1 ? this._calculateVariance(this._cubes[next]) : 0.0; + volumeVariance[cubeIndex] = this._cubes[cubeIndex].volume > 1 ? this._calculateVariance(this._cubes[cubeIndex]) : 0.0; + } + else { + // the cut was not possible, revert the index + volumeVariance[next] = 0.0; + cubeIndex--; + } + next = 0; + var temp = volumeVariance[0]; + for (var index = 1; index <= cubeIndex; ++index) { + if (volumeVariance[index] > temp) { + temp = volumeVariance[index]; + next = index; + } + } + if (temp <= 0.0) { + this._colors = cubeIndex + 1; + break; + } + } + var lookupRed = [], lookupGreen = [], lookupBlue = [], lookupAlpha = []; + // precalculates lookup tables + for (var k = 0; k < this._colors; ++k) { + var weight = WuQuant._volume(this._cubes[k], this._weights); + if (weight > 0) { + lookupRed[k] = (WuQuant._volume(this._cubes[k], this._momentsRed) / weight) | 0; + lookupGreen[k] = (WuQuant._volume(this._cubes[k], this._momentsGreen) / weight) | 0; + lookupBlue[k] = (WuQuant._volume(this._cubes[k], this._momentsBlue) / weight) | 0; + lookupAlpha[k] = (WuQuant._volume(this._cubes[k], this._momentsAlpha) / weight) | 0; + } + else { + lookupRed[k] = 0; + lookupGreen[k] = 0; + lookupBlue[k] = 0; + lookupAlpha[k] = 0; + } + } + this._reds = createArray1D(this._colors + 1); + this._greens = createArray1D(this._colors + 1); + this._blues = createArray1D(this._colors + 1); + this._alphas = createArray1D(this._colors + 1); + this._sums = createArray1D(this._colors + 1); + // scans and adds colors + for (var index = 0, l = this._pixels.length; index < l; index++) { + var color = this._pixels[index]; + var match = -1; + var bestMatch = match, bestDistance = Number.MAX_VALUE; + for (var lookup = 0; lookup < this._colors; lookup++) { + var foundRed = lookupRed[lookup], foundGreen = lookupGreen[lookup], foundBlue = lookupBlue[lookup], foundAlpha = lookupAlpha[lookup]; + var distance = this._distance.calculateRaw(foundRed, foundGreen, foundBlue, foundAlpha, color.r, color.g, color.b, color.a); + //var distance = this._distance.calculateRaw(Utils.Point.createByRGBA(foundRed, foundGreen, foundBlue, foundAlpha), color); + //deltaRed = color.r - foundRed, + //deltaGreen = color.g - foundGreen, + //deltaBlue = color.b - foundBlue, + //deltaAlpha = color.a - foundAlpha, + //distance = deltaRed * deltaRed + deltaGreen * deltaGreen + deltaBlue * deltaBlue + deltaAlpha * deltaAlpha; + if (distance < bestDistance) { + bestDistance = distance; + bestMatch = lookup; + } + } + this._reds[bestMatch] += color.r; + this._greens[bestMatch] += color.g; + this._blues[bestMatch] += color.b; + this._alphas[bestMatch] += color.a; + this._sums[bestMatch]++; + } + }; + WuQuant.prototype._addColor = function (color) { + var bitsToRemove = 8 - this._significantBitsPerChannel, indexRed = (color.r >> bitsToRemove) + 1, indexGreen = (color.g >> bitsToRemove) + 1, indexBlue = (color.b >> bitsToRemove) + 1, indexAlpha = (color.a >> bitsToRemove) + 1; + //if(color.a > 10) { + this._weights[indexAlpha][indexRed][indexGreen][indexBlue]++; + this._momentsRed[indexAlpha][indexRed][indexGreen][indexBlue] += color.r; + this._momentsGreen[indexAlpha][indexRed][indexGreen][indexBlue] += color.g; + this._momentsBlue[indexAlpha][indexRed][indexGreen][indexBlue] += color.b; + this._momentsAlpha[indexAlpha][indexRed][indexGreen][indexBlue] += color.a; + this._moments[indexAlpha][indexRed][indexGreen][indexBlue] += this._table[color.r] + this._table[color.g] + this._table[color.b] + this._table[color.a]; + // } + }; + /** + * Converts the histogram to a series of _moments. + */ + WuQuant.prototype._calculateMoments = function () { + var area = [], areaRed = [], areaGreen = [], areaBlue = [], areaAlpha = [], area2 = []; + var xarea = createArray3D(this._sideSize, this._sideSize, this._sideSize), xareaRed = createArray3D(this._sideSize, this._sideSize, this._sideSize), xareaGreen = createArray3D(this._sideSize, this._sideSize, this._sideSize), xareaBlue = createArray3D(this._sideSize, this._sideSize, this._sideSize), xareaAlpha = createArray3D(this._sideSize, this._sideSize, this._sideSize), xarea2 = createArray3D(this._sideSize, this._sideSize, this._sideSize); + for (var alphaIndex = 1; alphaIndex <= this._alphaMaxSideIndex; ++alphaIndex) { + fillArray3D(xarea, this._sideSize, this._sideSize, this._sideSize, 0); + fillArray3D(xareaRed, this._sideSize, this._sideSize, this._sideSize, 0); + fillArray3D(xareaGreen, this._sideSize, this._sideSize, this._sideSize, 0); + fillArray3D(xareaBlue, this._sideSize, this._sideSize, this._sideSize, 0); + fillArray3D(xareaAlpha, this._sideSize, this._sideSize, this._sideSize, 0); + fillArray3D(xarea2, this._sideSize, this._sideSize, this._sideSize, 0); + for (var redIndex = 1; redIndex <= this._maxSideIndex; ++redIndex) { + fillArray1D(area, this._sideSize, 0); + fillArray1D(areaRed, this._sideSize, 0); + fillArray1D(areaGreen, this._sideSize, 0); + fillArray1D(areaBlue, this._sideSize, 0); + fillArray1D(areaAlpha, this._sideSize, 0); + fillArray1D(area2, this._sideSize, 0); + for (var greenIndex = 1; greenIndex <= this._maxSideIndex; ++greenIndex) { + var line = 0, lineRed = 0, lineGreen = 0, lineBlue = 0, lineAlpha = 0, line2 = 0.0; + for (var blueIndex = 1; blueIndex <= this._maxSideIndex; ++blueIndex) { + line += this._weights[alphaIndex][redIndex][greenIndex][blueIndex]; + lineRed += this._momentsRed[alphaIndex][redIndex][greenIndex][blueIndex]; + lineGreen += this._momentsGreen[alphaIndex][redIndex][greenIndex][blueIndex]; + lineBlue += this._momentsBlue[alphaIndex][redIndex][greenIndex][blueIndex]; + lineAlpha += this._momentsAlpha[alphaIndex][redIndex][greenIndex][blueIndex]; + line2 += this._moments[alphaIndex][redIndex][greenIndex][blueIndex]; + area[blueIndex] += line; + areaRed[blueIndex] += lineRed; + areaGreen[blueIndex] += lineGreen; + areaBlue[blueIndex] += lineBlue; + areaAlpha[blueIndex] += lineAlpha; + area2[blueIndex] += line2; + xarea[redIndex][greenIndex][blueIndex] = xarea[redIndex - 1][greenIndex][blueIndex] + area[blueIndex]; + xareaRed[redIndex][greenIndex][blueIndex] = xareaRed[redIndex - 1][greenIndex][blueIndex] + areaRed[blueIndex]; + xareaGreen[redIndex][greenIndex][blueIndex] = xareaGreen[redIndex - 1][greenIndex][blueIndex] + areaGreen[blueIndex]; + xareaBlue[redIndex][greenIndex][blueIndex] = xareaBlue[redIndex - 1][greenIndex][blueIndex] + areaBlue[blueIndex]; + xareaAlpha[redIndex][greenIndex][blueIndex] = xareaAlpha[redIndex - 1][greenIndex][blueIndex] + areaAlpha[blueIndex]; + xarea2[redIndex][greenIndex][blueIndex] = xarea2[redIndex - 1][greenIndex][blueIndex] + area2[blueIndex]; + this._weights[alphaIndex][redIndex][greenIndex][blueIndex] = this._weights[alphaIndex - 1][redIndex][greenIndex][blueIndex] + xarea[redIndex][greenIndex][blueIndex]; + this._momentsRed[alphaIndex][redIndex][greenIndex][blueIndex] = this._momentsRed[alphaIndex - 1][redIndex][greenIndex][blueIndex] + xareaRed[redIndex][greenIndex][blueIndex]; + this._momentsGreen[alphaIndex][redIndex][greenIndex][blueIndex] = this._momentsGreen[alphaIndex - 1][redIndex][greenIndex][blueIndex] + xareaGreen[redIndex][greenIndex][blueIndex]; + this._momentsBlue[alphaIndex][redIndex][greenIndex][blueIndex] = this._momentsBlue[alphaIndex - 1][redIndex][greenIndex][blueIndex] + xareaBlue[redIndex][greenIndex][blueIndex]; + this._momentsAlpha[alphaIndex][redIndex][greenIndex][blueIndex] = this._momentsAlpha[alphaIndex - 1][redIndex][greenIndex][blueIndex] + xareaAlpha[redIndex][greenIndex][blueIndex]; + this._moments[alphaIndex][redIndex][greenIndex][blueIndex] = this._moments[alphaIndex - 1][redIndex][greenIndex][blueIndex] + xarea2[redIndex][greenIndex][blueIndex]; + } + } + } + } + }; + /** + * Computes the volume of the cube in a specific moment. + */ + WuQuant._volumeFloat = function (cube, moment) { + return (moment[cube.alphaMaximum][cube.redMaximum][cube.greenMaximum][cube.blueMaximum] - + moment[cube.alphaMaximum][cube.redMaximum][cube.greenMinimum][cube.blueMaximum] - + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMaximum][cube.blueMaximum] + + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMinimum][cube.blueMaximum] - + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMaximum][cube.blueMaximum] + + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMinimum][cube.blueMaximum] + + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMaximum][cube.blueMaximum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMaximum]) - + (moment[cube.alphaMaximum][cube.redMaximum][cube.greenMaximum][cube.blueMinimum] - + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMaximum][cube.blueMinimum] - + moment[cube.alphaMaximum][cube.redMaximum][cube.greenMinimum][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMinimum][cube.blueMinimum] - + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMaximum][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMaximum][cube.blueMinimum] + + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum]); + }; + /** + * Computes the volume of the cube in a specific moment. + */ + WuQuant._volume = function (cube, moment) { + return WuQuant._volumeFloat(cube, moment) | 0; + }; + /** + * Splits the cube in given position][and color direction. + */ + WuQuant._top = function (cube, direction, position, moment) { + var result; + switch (direction) { + case WuQuant.alpha: + result = (moment[position][cube.redMaximum][cube.greenMaximum][cube.blueMaximum] - + moment[position][cube.redMaximum][cube.greenMinimum][cube.blueMaximum] - + moment[position][cube.redMinimum][cube.greenMaximum][cube.blueMaximum] + + moment[position][cube.redMinimum][cube.greenMinimum][cube.blueMaximum]) - + (moment[position][cube.redMaximum][cube.greenMaximum][cube.blueMinimum] - + moment[position][cube.redMaximum][cube.greenMinimum][cube.blueMinimum] - + moment[position][cube.redMinimum][cube.greenMaximum][cube.blueMinimum] + + moment[position][cube.redMinimum][cube.greenMinimum][cube.blueMinimum]); + break; + case WuQuant.red: + result = (moment[cube.alphaMaximum][position][cube.greenMaximum][cube.blueMaximum] - + moment[cube.alphaMaximum][position][cube.greenMinimum][cube.blueMaximum] - + moment[cube.alphaMinimum][position][cube.greenMaximum][cube.blueMaximum] + + moment[cube.alphaMinimum][position][cube.greenMinimum][cube.blueMaximum]) - + (moment[cube.alphaMaximum][position][cube.greenMaximum][cube.blueMinimum] - + moment[cube.alphaMaximum][position][cube.greenMinimum][cube.blueMinimum] - + moment[cube.alphaMinimum][position][cube.greenMaximum][cube.blueMinimum] + + moment[cube.alphaMinimum][position][cube.greenMinimum][cube.blueMinimum]); + break; + case WuQuant.green: + result = (moment[cube.alphaMaximum][cube.redMaximum][position][cube.blueMaximum] - + moment[cube.alphaMaximum][cube.redMinimum][position][cube.blueMaximum] - + moment[cube.alphaMinimum][cube.redMaximum][position][cube.blueMaximum] + + moment[cube.alphaMinimum][cube.redMinimum][position][cube.blueMaximum]) - + (moment[cube.alphaMaximum][cube.redMaximum][position][cube.blueMinimum] - + moment[cube.alphaMaximum][cube.redMinimum][position][cube.blueMinimum] - + moment[cube.alphaMinimum][cube.redMaximum][position][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMinimum][position][cube.blueMinimum]); + break; + case WuQuant.blue: + result = (moment[cube.alphaMaximum][cube.redMaximum][cube.greenMaximum][position] - + moment[cube.alphaMaximum][cube.redMaximum][cube.greenMinimum][position] - + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMaximum][position] + + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMinimum][position]) - + (moment[cube.alphaMinimum][cube.redMaximum][cube.greenMaximum][position] - + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMinimum][position] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMaximum][position] + + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][position]); + break; + default: + throw new Error("impossible"); + } + return result | 0; + }; + /** + * Splits the cube in a given color direction at its minimum. + */ + WuQuant._bottom = function (cube, direction, moment) { + switch (direction) { + case WuQuant.alpha: + return (-moment[cube.alphaMinimum][cube.redMaximum][cube.greenMaximum][cube.blueMaximum] + + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMinimum][cube.blueMaximum] + + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMaximum][cube.blueMaximum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMaximum]) - + (-moment[cube.alphaMinimum][cube.redMaximum][cube.greenMaximum][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMinimum][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMaximum][cube.blueMinimum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum]); + case WuQuant.red: + return (-moment[cube.alphaMaximum][cube.redMinimum][cube.greenMaximum][cube.blueMaximum] + + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMinimum][cube.blueMaximum] + + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMaximum][cube.blueMaximum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMaximum]) - + (-moment[cube.alphaMaximum][cube.redMinimum][cube.greenMaximum][cube.blueMinimum] + + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMaximum][cube.blueMinimum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum]); + case WuQuant.green: + return (-moment[cube.alphaMaximum][cube.redMaximum][cube.greenMinimum][cube.blueMaximum] + + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMinimum][cube.blueMaximum] + + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMinimum][cube.blueMaximum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMaximum]) - + (-moment[cube.alphaMaximum][cube.redMaximum][cube.greenMinimum][cube.blueMinimum] + + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMinimum][cube.blueMinimum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum]); + case WuQuant.blue: + return (-moment[cube.alphaMaximum][cube.redMaximum][cube.greenMaximum][cube.blueMinimum] + + moment[cube.alphaMaximum][cube.redMaximum][cube.greenMinimum][cube.blueMinimum] + + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMaximum][cube.blueMinimum] - + moment[cube.alphaMaximum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum]) - + (-moment[cube.alphaMinimum][cube.redMaximum][cube.greenMaximum][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMaximum][cube.greenMinimum][cube.blueMinimum] + + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMaximum][cube.blueMinimum] - + moment[cube.alphaMinimum][cube.redMinimum][cube.greenMinimum][cube.blueMinimum]); + default: + // TODO: why here is return 0, and in this._top there is no default at all (now it is throw error)? + return 0; + } + }; + /** + * Calculates statistical variance for a given cube. + */ + WuQuant.prototype._calculateVariance = function (cube) { + var volumeRed = WuQuant._volume(cube, this._momentsRed), volumeGreen = WuQuant._volume(cube, this._momentsGreen), volumeBlue = WuQuant._volume(cube, this._momentsBlue), volumeAlpha = WuQuant._volume(cube, this._momentsAlpha), volumeMoment = WuQuant._volumeFloat(cube, this._moments), volumeWeight = WuQuant._volume(cube, this._weights), distance = volumeRed * volumeRed + volumeGreen * volumeGreen + volumeBlue * volumeBlue + volumeAlpha * volumeAlpha; + return volumeMoment - (distance / volumeWeight); + }; + /** + * Finds the optimal (maximal) position for the cut. + */ + WuQuant.prototype._maximize = function (cube, direction, first, last, wholeRed, wholeGreen, wholeBlue, wholeAlpha, wholeWeight) { + var bottomRed = WuQuant._bottom(cube, direction, this._momentsRed) | 0, bottomGreen = WuQuant._bottom(cube, direction, this._momentsGreen) | 0, bottomBlue = WuQuant._bottom(cube, direction, this._momentsBlue) | 0, bottomAlpha = WuQuant._bottom(cube, direction, this._momentsAlpha) | 0, bottomWeight = WuQuant._bottom(cube, direction, this._weights) | 0; + var result = 0.0, cutPosition = -1; + for (var position = first; position < last; ++position) { + // determines the cube cut at a certain position + var halfRed = bottomRed + WuQuant._top(cube, direction, position, this._momentsRed), halfGreen = bottomGreen + WuQuant._top(cube, direction, position, this._momentsGreen), halfBlue = bottomBlue + WuQuant._top(cube, direction, position, this._momentsBlue), halfAlpha = bottomAlpha + WuQuant._top(cube, direction, position, this._momentsAlpha), halfWeight = bottomWeight + WuQuant._top(cube, direction, position, this._weights); + // the cube cannot be cut at bottom (this would lead to empty cube) + if (halfWeight != 0) { + var halfDistance = halfRed * halfRed + halfGreen * halfGreen + halfBlue * halfBlue + halfAlpha * halfAlpha, temp = halfDistance / halfWeight; + halfRed = wholeRed - halfRed; + halfGreen = wholeGreen - halfGreen; + halfBlue = wholeBlue - halfBlue; + halfAlpha = wholeAlpha - halfAlpha; + halfWeight = wholeWeight - halfWeight; + if (halfWeight != 0) { + halfDistance = halfRed * halfRed + halfGreen * halfGreen + halfBlue * halfBlue + halfAlpha * halfAlpha; + temp += halfDistance / halfWeight; + if (temp > result) { + result = temp; + cutPosition = position; + } + } + } + } + return { max: result, position: cutPosition }; + }; + // Cuts a cube with another one. + WuQuant.prototype._cut = function (first, second) { + var direction; + var wholeRed = WuQuant._volume(first, this._momentsRed), wholeGreen = WuQuant._volume(first, this._momentsGreen), wholeBlue = WuQuant._volume(first, this._momentsBlue), wholeAlpha = WuQuant._volume(first, this._momentsAlpha), wholeWeight = WuQuant._volume(first, this._weights), red = this._maximize(first, WuQuant.red, first.redMinimum + 1, first.redMaximum, wholeRed, wholeGreen, wholeBlue, wholeAlpha, wholeWeight), green = this._maximize(first, WuQuant.green, first.greenMinimum + 1, first.greenMaximum, wholeRed, wholeGreen, wholeBlue, wholeAlpha, wholeWeight), blue = this._maximize(first, WuQuant.blue, first.blueMinimum + 1, first.blueMaximum, wholeRed, wholeGreen, wholeBlue, wholeAlpha, wholeWeight), alpha = this._maximize(first, WuQuant.alpha, first.alphaMinimum + 1, first.alphaMaximum, wholeRed, wholeGreen, wholeBlue, wholeAlpha, wholeWeight); + if (alpha.max >= red.max && alpha.max >= green.max && alpha.max >= blue.max) { + direction = WuQuant.alpha; + // cannot split empty cube + if (alpha.position < 0) + return false; + } + else { + if (red.max >= alpha.max && red.max >= green.max && red.max >= blue.max) { + direction = WuQuant.red; + } + else if (green.max >= alpha.max && green.max >= red.max && green.max >= blue.max) { + direction = WuQuant.green; + } + else { + direction = WuQuant.blue; + } + } + second.redMaximum = first.redMaximum; + second.greenMaximum = first.greenMaximum; + second.blueMaximum = first.blueMaximum; + second.alphaMaximum = first.alphaMaximum; + // cuts in a certain direction + switch (direction) { + case WuQuant.red: + second.redMinimum = first.redMaximum = red.position; + second.greenMinimum = first.greenMinimum; + second.blueMinimum = first.blueMinimum; + second.alphaMinimum = first.alphaMinimum; + break; + case WuQuant.green: + second.greenMinimum = first.greenMaximum = green.position; + second.redMinimum = first.redMinimum; + second.blueMinimum = first.blueMinimum; + second.alphaMinimum = first.alphaMinimum; + break; + case WuQuant.blue: + second.blueMinimum = first.blueMaximum = blue.position; + second.redMinimum = first.redMinimum; + second.greenMinimum = first.greenMinimum; + second.alphaMinimum = first.alphaMinimum; + break; + case WuQuant.alpha: + second.alphaMinimum = first.alphaMaximum = alpha.position; + second.blueMinimum = first.blueMinimum; + second.redMinimum = first.redMinimum; + second.greenMinimum = first.greenMinimum; + break; + } + // determines the volumes after cut + first.volume = (first.redMaximum - first.redMinimum) * (first.greenMaximum - first.greenMinimum) * (first.blueMaximum - first.blueMinimum) * (first.alphaMaximum - first.alphaMinimum); + second.volume = (second.redMaximum - second.redMinimum) * (second.greenMaximum - second.greenMinimum) * (second.blueMaximum - second.blueMinimum) * (second.alphaMaximum - second.alphaMinimum); + // the cut was successful + return true; + }; + WuQuant.prototype._initialize = function (colors) { + this._colors = colors; + // creates all the _cubes + this._cubes = []; + // initializes all the _cubes + for (var cubeIndex = 0; cubeIndex < colors; cubeIndex++) { + this._cubes[cubeIndex] = new WuColorCube(); + } + // resets the reference minimums + this._cubes[0].redMinimum = 0; + this._cubes[0].greenMinimum = 0; + this._cubes[0].blueMinimum = 0; + this._cubes[0].alphaMinimum = 0; + // resets the reference maximums + this._cubes[0].redMaximum = this._maxSideIndex; + this._cubes[0].greenMaximum = this._maxSideIndex; + this._cubes[0].blueMaximum = this._maxSideIndex; + this._cubes[0].alphaMaximum = this._alphaMaxSideIndex; + this._weights = createArray4D(this._alphaSideSize, this._sideSize, this._sideSize, this._sideSize); + this._momentsRed = createArray4D(this._alphaSideSize, this._sideSize, this._sideSize, this._sideSize); + this._momentsGreen = createArray4D(this._alphaSideSize, this._sideSize, this._sideSize, this._sideSize); + this._momentsBlue = createArray4D(this._alphaSideSize, this._sideSize, this._sideSize, this._sideSize); + this._momentsAlpha = createArray4D(this._alphaSideSize, this._sideSize, this._sideSize, this._sideSize); + this._moments = createArray4D(this._alphaSideSize, this._sideSize, this._sideSize, this._sideSize); + this._table = []; + for (var tableIndex = 0; tableIndex < 256; ++tableIndex) { + this._table[tableIndex] = tableIndex * tableIndex; + } + this._pixels = []; + }; + WuQuant.prototype._setQuality = function (significantBitsPerChannel) { + if (significantBitsPerChannel === void 0) { significantBitsPerChannel = 5; } + this._significantBitsPerChannel = significantBitsPerChannel; + this._maxSideIndex = 1 << this._significantBitsPerChannel; + this._alphaMaxSideIndex = this._maxSideIndex; + this._sideSize = this._maxSideIndex + 1; + this._alphaSideSize = this._alphaMaxSideIndex + 1; + }; + WuQuant.alpha = 3; + WuQuant.red = 2; + WuQuant.green = 1; + WuQuant.blue = 0; + return WuQuant; + }()); + exports.WuQuant = WuQuant; + + +/***/ }, +/* 30 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var nearestColor_1 = __webpack_require__(31); + exports.NearestColor = nearestColor_1.NearestColor; + var array_1 = __webpack_require__(32); + exports.ErrorDiffusionArray = array_1.ErrorDiffusionArray; + exports.ErrorDiffusionArrayKernel = array_1.ErrorDiffusionArrayKernel; + var riemersma_1 = __webpack_require__(33); + exports.ErrorDiffusionRiemersma = riemersma_1.ErrorDiffusionRiemersma; + + +/***/ }, +/* 31 */ +/***/ function(module, exports) { + + "use strict"; + var NearestColor = (function () { + function NearestColor(colorDistanceCalculator) { + this._distance = colorDistanceCalculator; + } + NearestColor.prototype.quantize = function (pointBuffer, palette) { + var pointArray = pointBuffer.getPointArray(), width = pointBuffer.getWidth(), height = pointBuffer.getHeight(); + for (var y = 0; y < height; y++) { + for (var x = 0, idx = y * width; x < width; x++, idx++) { + // Image pixel + var point = pointArray[idx]; + // Reduced pixel + point.from(palette.getNearestColor(this._distance, point)); + } + } + return pointBuffer; + }; + return NearestColor; + }()); + exports.NearestColor = NearestColor; + + +/***/ }, +/* 32 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var point_1 = __webpack_require__(24); + var arithmetic_1 = __webpack_require__(6); + // TODO: is it the best name for this enum "kernel"? + (function (ErrorDiffusionArrayKernel) { + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["FloydSteinberg"] = 0] = "FloydSteinberg"; + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["FalseFloydSteinberg"] = 1] = "FalseFloydSteinberg"; + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["Stucki"] = 2] = "Stucki"; + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["Atkinson"] = 3] = "Atkinson"; + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["Jarvis"] = 4] = "Jarvis"; + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["Burkes"] = 5] = "Burkes"; + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["Sierra"] = 6] = "Sierra"; + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["TwoSierra"] = 7] = "TwoSierra"; + ErrorDiffusionArrayKernel[ErrorDiffusionArrayKernel["SierraLite"] = 8] = "SierraLite"; + })(exports.ErrorDiffusionArrayKernel || (exports.ErrorDiffusionArrayKernel = {})); + var ErrorDiffusionArrayKernel = exports.ErrorDiffusionArrayKernel; + // http://www.tannerhelland.com/4660/dithering-eleven-algorithms-source-code/ + var ErrorDiffusionArray = (function () { + function ErrorDiffusionArray(colorDistanceCalculator, kernel, serpentine, minimumColorDistanceToDither, calculateErrorLikeGIMP) { + if (serpentine === void 0) { serpentine = true; } + if (minimumColorDistanceToDither === void 0) { minimumColorDistanceToDither = 0; } + if (calculateErrorLikeGIMP === void 0) { calculateErrorLikeGIMP = false; } + this._setKernel(kernel); + this._distance = colorDistanceCalculator; + this._minColorDistance = minimumColorDistanceToDither; + this._serpentine = serpentine; + this._calculateErrorLikeGIMP = calculateErrorLikeGIMP; + } + // adapted from http://jsbin.com/iXofIji/2/edit by PAEz + // fixed version. it doesn't use image pixels as error storage, also it doesn't have 0.3 + 0.3 + 0.3 + 0.3 = 0 error + ErrorDiffusionArray.prototype.quantize = function (pointBuffer, palette) { + var pointArray = pointBuffer.getPointArray(), originalPoint = new point_1.Point(), width = pointBuffer.getWidth(), height = pointBuffer.getHeight(), errorLines = []; + var dir = 1, maxErrorLines = 1; + // initial error lines (number is taken from dithering kernel) + for (var i = 0; i < this._kernel.length; i++) { + var kernelErrorLines = this._kernel[i][2] + 1; + if (maxErrorLines < kernelErrorLines) + maxErrorLines = kernelErrorLines; + } + for (var i = 0; i < maxErrorLines; i++) { + this._fillErrorLine(errorLines[i] = [], width); + } + for (var y = 0; y < height; y++) { + // always serpentine + if (this._serpentine) + dir = dir * -1; + var lni = y * width, xStart = dir == 1 ? 0 : width - 1, xEnd = dir == 1 ? width : -1; + // cyclic shift with erasing + this._fillErrorLine(errorLines[0], width); + // TODO: why it is needed to cast types here? + errorLines.push(errorLines.shift()); + var errorLine = errorLines[0]; + for (var x = xStart, idx = lni + xStart; x !== xEnd; x += dir, idx += dir) { + // Image pixel + var point = pointArray[idx], + //originalPoint = new Utils.Point(), + error = errorLine[x]; + originalPoint.from(point); + var correctedPoint = point_1.Point.createByRGBA(arithmetic_1.inRange0to255Rounded(point.r + error[0]), arithmetic_1.inRange0to255Rounded(point.g + error[1]), arithmetic_1.inRange0to255Rounded(point.b + error[2]), arithmetic_1.inRange0to255Rounded(point.a + error[3])); + // Reduced pixel + var palettePoint = palette.getNearestColor(this._distance, correctedPoint); + point.from(palettePoint); + // dithering strength + if (this._minColorDistance) { + var dist = this._distance.calculateNormalized(point, palettePoint); + if (dist < this._minColorDistance) + continue; + } + // Component distance + var er = void 0, eg = void 0, eb = void 0, ea = void 0; + if (this._calculateErrorLikeGIMP) { + er = correctedPoint.r - palettePoint.r; + eg = correctedPoint.g - palettePoint.g; + eb = correctedPoint.b - palettePoint.b; + ea = correctedPoint.a - palettePoint.a; + } + else { + er = originalPoint.r - palettePoint.r; + eg = originalPoint.g - palettePoint.g; + eb = originalPoint.b - palettePoint.b; + ea = originalPoint.a - palettePoint.a; + } + var dStart = dir == 1 ? 0 : this._kernel.length - 1, dEnd = dir == 1 ? this._kernel.length : -1; + for (var i = dStart; i !== dEnd; i += dir) { + var x1 = this._kernel[i][1] * dir, y1 = this._kernel[i][2]; + if (x1 + x >= 0 && x1 + x < width && y1 + y >= 0 && y1 + y < height) { + var d = this._kernel[i][0], e = errorLines[y1][x1 + x]; + e[0] = e[0] + er * d; + e[1] = e[1] + eg * d; + e[2] = e[2] + eb * d; + e[3] = e[3] + ea * d; + } + } + } + } + return pointBuffer; + }; + ErrorDiffusionArray.prototype._fillErrorLine = function (errorLine, width) { + // shrink + if (errorLine.length > width) { + errorLine.length = width; + } + // reuse existing arrays + var l = errorLine.length; + for (var i = 0; i < l; i++) { + var error = errorLine[i]; + error[0] = error[1] = error[2] = error[3] = 0; + } + // create missing arrays + for (var i = l; i < width; i++) { + errorLine[i] = [0.0, 0.0, 0.0, 0.0]; + } + }; + ErrorDiffusionArray.prototype._setKernel = function (kernel) { + switch (kernel) { + case ErrorDiffusionArrayKernel.FloydSteinberg: + this._kernel = [ + [7 / 16, 1, 0], + [3 / 16, -1, 1], + [5 / 16, 0, 1], + [1 / 16, 1, 1] + ]; + break; + case ErrorDiffusionArrayKernel.FalseFloydSteinberg: + this._kernel = [ + [3 / 8, 1, 0], + [3 / 8, 0, 1], + [2 / 8, 1, 1] + ]; + break; + case ErrorDiffusionArrayKernel.Stucki: + this._kernel = [ + [8 / 42, 1, 0], + [4 / 42, 2, 0], + [2 / 42, -2, 1], + [4 / 42, -1, 1], + [8 / 42, 0, 1], + [4 / 42, 1, 1], + [2 / 42, 2, 1], + [1 / 42, -2, 2], + [2 / 42, -1, 2], + [4 / 42, 0, 2], + [2 / 42, 1, 2], + [1 / 42, 2, 2] + ]; + break; + case ErrorDiffusionArrayKernel.Atkinson: + this._kernel = [ + [1 / 8, 1, 0], + [1 / 8, 2, 0], + [1 / 8, -1, 1], + [1 / 8, 0, 1], + [1 / 8, 1, 1], + [1 / 8, 0, 2] + ]; + break; + case ErrorDiffusionArrayKernel.Jarvis: + this._kernel = [ + [7 / 48, 1, 0], + [5 / 48, 2, 0], + [3 / 48, -2, 1], + [5 / 48, -1, 1], + [7 / 48, 0, 1], + [5 / 48, 1, 1], + [3 / 48, 2, 1], + [1 / 48, -2, 2], + [3 / 48, -1, 2], + [5 / 48, 0, 2], + [3 / 48, 1, 2], + [1 / 48, 2, 2] + ]; + break; + case ErrorDiffusionArrayKernel.Burkes: + this._kernel = [ + [8 / 32, 1, 0], + [4 / 32, 2, 0], + [2 / 32, -2, 1], + [4 / 32, -1, 1], + [8 / 32, 0, 1], + [4 / 32, 1, 1], + [2 / 32, 2, 1], + ]; + break; + case ErrorDiffusionArrayKernel.Sierra: + this._kernel = [ + [5 / 32, 1, 0], + [3 / 32, 2, 0], + [2 / 32, -2, 1], + [4 / 32, -1, 1], + [5 / 32, 0, 1], + [4 / 32, 1, 1], + [2 / 32, 2, 1], + [2 / 32, -1, 2], + [3 / 32, 0, 2], + [2 / 32, 1, 2] + ]; + break; + case ErrorDiffusionArrayKernel.TwoSierra: + this._kernel = [ + [4 / 16, 1, 0], + [3 / 16, 2, 0], + [1 / 16, -2, 1], + [2 / 16, -1, 1], + [3 / 16, 0, 1], + [2 / 16, 1, 1], + [1 / 16, 2, 1] + ]; + break; + case ErrorDiffusionArrayKernel.SierraLite: + this._kernel = [ + [2 / 4, 1, 0], + [1 / 4, -1, 1], + [1 / 4, 0, 1] + ]; + break; + default: + throw new Error("ErrorDiffusionArray: unknown kernel = " + kernel); + } + }; + return ErrorDiffusionArray; + }()); + exports.ErrorDiffusionArray = ErrorDiffusionArray; + + +/***/ }, +/* 33 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var hilbertCurve_1 = __webpack_require__(34); + var point_1 = __webpack_require__(24); + var arithmetic_1 = __webpack_require__(6); + var ErrorDiffusionRiemersma = (function () { + function ErrorDiffusionRiemersma(colorDistanceCalculator, errorQueueSize, errorPropagation) { + if (errorQueueSize === void 0) { errorQueueSize = 16; } + if (errorPropagation === void 0) { errorPropagation = 1; } + this._distance = colorDistanceCalculator; + this._errorPropagation = errorPropagation; + this._errorQueueSize = errorQueueSize; + this._max = this._errorQueueSize; + this._createWeights(); + } + ErrorDiffusionRiemersma.prototype.quantize = function (pointBuffer, palette) { + var _this = this; + var curve = new hilbertCurve_1.HilbertCurveBase(), pointArray = pointBuffer.getPointArray(), width = pointBuffer.getWidth(), height = pointBuffer.getHeight(), errorQueue = []; + var head = 0; + for (var i = 0; i < this._errorQueueSize; i++) { + errorQueue[i] = { r: 0, g: 0, b: 0, a: 0 }; + } + curve.walk(width, height, function (x, y) { + var p = pointArray[x + y * width]; + var r = p.r, g = p.g, b = p.b, a = p.a; + for (var i = 0; i < _this._errorQueueSize; i++) { + var weight = _this._weights[i], e = errorQueue[(i + head) % _this._errorQueueSize]; + r += e.r * weight; + g += e.g * weight; + b += e.b * weight; + a += e.a * weight; + } + var correctedPoint = point_1.Point.createByRGBA(arithmetic_1.inRange0to255Rounded(r), arithmetic_1.inRange0to255Rounded(g), arithmetic_1.inRange0to255Rounded(b), arithmetic_1.inRange0to255Rounded(a)); + var quantizedPoint = palette.getNearestColor(_this._distance, correctedPoint); + // update head and calculate tail + head = (head + 1) % _this._errorQueueSize; + var tail = (head + _this._errorQueueSize - 1) % _this._errorQueueSize; + // update error with new value + errorQueue[tail].r = p.r - quantizedPoint.r; + errorQueue[tail].g = p.g - quantizedPoint.g; + errorQueue[tail].b = p.b - quantizedPoint.b; + errorQueue[tail].a = p.a - quantizedPoint.a; + // update point + p.from(quantizedPoint); + }); + return pointBuffer; + }; + ErrorDiffusionRiemersma.prototype._createWeights = function () { + this._weights = []; + var multiplier = Math.exp(Math.log(this._max) / (this._errorQueueSize - 1)); + for (var i = 0, next = 1; i < this._errorQueueSize; i++) { + this._weights[i] = (((next + 0.5) | 0) / this._max) * this._errorPropagation; + next *= multiplier; + } + }; + return ErrorDiffusionRiemersma; + }()); + exports.ErrorDiffusionRiemersma = ErrorDiffusionRiemersma; + + +/***/ }, +/* 34 */ +/***/ function(module, exports) { + + "use strict"; + var Direction; + (function (Direction) { + Direction[Direction["NONE"] = 0] = "NONE"; + Direction[Direction["UP"] = 1] = "UP"; + Direction[Direction["LEFT"] = 2] = "LEFT"; + Direction[Direction["RIGHT"] = 3] = "RIGHT"; + Direction[Direction["DOWN"] = 4] = "DOWN"; + })(Direction || (Direction = {})); + // Check code against double-entrance into walk (walk=> callback => walk) + var HilbertCurveBase = (function () { + function HilbertCurveBase() { + } + HilbertCurveBase.prototype.walk = function (width, height, visitorCallback) { + this._x = 0; + this._y = 0; + this._d = 0; + this._width = width; + this._height = height; + this._callback = visitorCallback; + var maxBound = Math.max(width, height); + this._level = (Math.log(maxBound) / Math.log(2) + 1) | 0; + this._walkHilbert(Direction.UP); + this._visit(Direction.NONE); + }; + HilbertCurveBase.prototype._walkHilbert = function (direction) { + if (this._level < 1) + return; + this._level--; + switch (direction) { + case Direction.LEFT: + this._walkHilbert(Direction.UP); + this._visit(Direction.RIGHT); + this._walkHilbert(Direction.LEFT); + this._visit(Direction.DOWN); + this._walkHilbert(Direction.LEFT); + this._visit(Direction.LEFT); + this._walkHilbert(Direction.DOWN); + break; + case Direction.RIGHT: + this._walkHilbert(Direction.DOWN); + this._visit(Direction.LEFT); + this._walkHilbert(Direction.RIGHT); + this._visit(Direction.UP); + this._walkHilbert(Direction.RIGHT); + this._visit(Direction.RIGHT); + this._walkHilbert(Direction.UP); + break; + case Direction.UP: + this._walkHilbert(Direction.LEFT); + this._visit(Direction.DOWN); + this._walkHilbert(Direction.UP); + this._visit(Direction.RIGHT); + this._walkHilbert(Direction.UP); + this._visit(Direction.UP); + this._walkHilbert(Direction.RIGHT); + break; + case Direction.DOWN: + this._walkHilbert(Direction.RIGHT); + this._visit(Direction.UP); + this._walkHilbert(Direction.DOWN); + this._visit(Direction.LEFT); + this._walkHilbert(Direction.DOWN); + this._visit(Direction.DOWN); + this._walkHilbert(Direction.LEFT); + break; + default: + break; + } + this._level++; + }; + HilbertCurveBase.prototype._visit = function (direction) { + if (this._x >= 0 && this._x < this._width && this._y >= 0 && this._y < this._height) { + this._callback(this._x, this._y, this._d); + this._d++; + } + switch (direction) { + case Direction.LEFT: + this._x--; + break; + case Direction.RIGHT: + this._x++; + break; + case Direction.UP: + this._y--; + break; + case Direction.DOWN: + this._y++; + break; + } + }; + return HilbertCurveBase; + }()); + exports.HilbertCurveBase = HilbertCurveBase; + + +/***/ }, +/* 35 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * iq.ts - Image Quantization Library + */ + var ssim_1 = __webpack_require__(36); + exports.SSIM = ssim_1.SSIM; + + +/***/ }, +/* 36 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + var bt709_1 = __webpack_require__(2); + // based on https://github.com/rhys-e/structural-similarity + // http://en.wikipedia.org/wiki/Structural_similarity + var K1 = 0.01, K2 = 0.03; + var SSIM = (function () { + function SSIM() { + } + SSIM.prototype.compare = function (image1, image2) { + if (image1.getHeight() !== image2.getHeight() || image1.getWidth() !== image2.getWidth()) { + throw new Error("Images have different sizes!"); + } + var bitsPerComponent = 8, L = (1 << bitsPerComponent) - 1, c1 = Math.pow((K1 * L), 2), c2 = Math.pow((K2 * L), 2); + var numWindows = 0, mssim = 0.0; + //calculate ssim for each window + this._iterate(image1, image2, function (lumaValues1, lumaValues2, averageLumaValue1, averageLumaValue2) { + //calculate variance and covariance + var sigxy = 0.0, sigsqx = 0.0, sigsqy = 0.0; + for (var i = 0; i < lumaValues1.length; i++) { + sigsqx += Math.pow((lumaValues1[i] - averageLumaValue1), 2); + sigsqy += Math.pow((lumaValues2[i] - averageLumaValue2), 2); + sigxy += (lumaValues1[i] - averageLumaValue1) * (lumaValues2[i] - averageLumaValue2); + } + var numPixelsInWin = lumaValues1.length - 1; + sigsqx /= numPixelsInWin; + sigsqy /= numPixelsInWin; + sigxy /= numPixelsInWin; + //perform ssim calculation on window + var numerator = (2 * averageLumaValue1 * averageLumaValue2 + c1) * (2 * sigxy + c2), denominator = (Math.pow(averageLumaValue1, 2) + Math.pow(averageLumaValue2, 2) + c1) * (sigsqx + sigsqy + c2), ssim = numerator / denominator; + mssim += ssim; + numWindows++; + }); + return mssim / numWindows; + }; + SSIM.prototype._iterate = function (image1, image2, callback) { + var windowSize = 8, width = image1.getWidth(), height = image1.getHeight(); + for (var y = 0; y < height; y += windowSize) { + for (var x = 0; x < width; x += windowSize) { + // avoid out-of-width/height + var windowWidth = Math.min(windowSize, width - x), windowHeight = Math.min(windowSize, height - y); + var lumaValues1 = this._calculateLumaValuesForWindow(image1, x, y, windowWidth, windowHeight), lumaValues2 = this._calculateLumaValuesForWindow(image2, x, y, windowWidth, windowHeight), averageLuma1 = this._calculateAverageLuma(lumaValues1), averageLuma2 = this._calculateAverageLuma(lumaValues2); + callback(lumaValues1, lumaValues2, averageLuma1, averageLuma2); + } + } + }; + SSIM.prototype._calculateLumaValuesForWindow = function (image, x, y, width, height) { + var pointArray = image.getPointArray(), lumaValues = []; + var counter = 0; + for (var j = y; j < y + height; j++) { + var offset = j * image.getWidth(); + for (var i = x; i < x + width; i++) { + var point = pointArray[offset + i]; + lumaValues[counter] = point.r * bt709_1.Y.RED + point.g * bt709_1.Y.GREEN + point.b * bt709_1.Y.BLUE; + counter++; + } + } + return lumaValues; + }; + SSIM.prototype._calculateAverageLuma = function (lumaValues) { + var sumLuma = 0.0; + for (var i = 0; i < lumaValues.length; i++) { + sumLuma += lumaValues[i]; + } + return sumLuma / lumaValues.length; + }; + return SSIM; + }()); + exports.SSIM = SSIM; + + +/***/ }, +/* 37 */ +/***/ function(module, exports, __webpack_require__) { + + "use strict"; + /** + * @preserve + * Copyright 2015-2016 Igor Bezkrovnyi + * All rights reserved. (MIT Licensed) + * + * iq.ts - Image Quantization Library + */ + var arithmetic = __webpack_require__(6); + exports.arithmetic = arithmetic; + var hueStatistics_1 = __webpack_require__(28); + exports.HueStatistics = hueStatistics_1.HueStatistics; + var palette_1 = __webpack_require__(22); + exports.Palette = palette_1.Palette; + var point_1 = __webpack_require__(24); + exports.Point = point_1.Point; + var pointContainer_1 = __webpack_require__(23); + exports.PointContainer = pointContainer_1.PointContainer; + + +/***/ } +/******/ ]) +}); +; + +},{}],75:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} + +},{}],76:[function(require,module,exports){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} + +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + +},{}],77:[function(require,module,exports){ +'use strict'; + +var fnToStr = Function.prototype.toString; + +var constructorRegex = /^\s*class\b/; +var isES6ClassFn = function isES6ClassFunction(value) { + try { + var fnStr = fnToStr.call(value); + return constructorRegex.test(fnStr); + } catch (e) { + return false; // not a function + } +}; + +var tryFunctionObject = function tryFunctionToStr(value) { + try { + if (isES6ClassFn(value)) { return false; } + fnToStr.call(value); + return true; + } catch (e) { + return false; + } +}; +var toStr = Object.prototype.toString; +var fnClass = '[object Function]'; +var genClass = '[object GeneratorFunction]'; +var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol'; + +module.exports = function isCallable(value) { + if (!value) { return false; } + if (typeof value !== 'function' && typeof value !== 'object') { return false; } + if (typeof value === 'function' && !value.prototype) { return true; } + if (hasToStringTag) { return tryFunctionObject(value); } + if (isES6ClassFn(value)) { return false; } + var strClass = toStr.call(value); + return strClass === fnClass || strClass === genClass; +}; + +},{}],78:[function(require,module,exports){ +module.exports = isFunction + +var toString = Object.prototype.toString + +function isFunction (fn) { + var string = toString.call(fn) + return string === '[object Function]' || + (typeof fn === 'function' && string !== '[object RegExp]') || + (typeof window !== 'undefined' && + // IE8 and below + (fn === window.setTimeout || + fn === window.alert || + fn === window.confirm || + fn === window.prompt)) +}; + +},{}],79:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +},{}],80:[function(require,module,exports){ +var encode = require('./lib/encoder'), + decode = require('./lib/decoder'); + +module.exports = { + encode: encode, + decode: decode +}; + +},{"./lib/decoder":81,"./lib/encoder":82}],81:[function(require,module,exports){ +(function (Buffer){ +/* -*- tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / +/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ +/* + Copyright 2011 notmasteryet + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// - The JPEG specification can be found in the ITU CCITT Recommendation T.81 +// (www.w3.org/Graphics/JPEG/itu-t81.pdf) +// - The JFIF specification can be found in the JPEG File Interchange Format +// (www.w3.org/Graphics/JPEG/jfif3.pdf) +// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters +// in PostScript Level 2, Technical Note #5116 +// (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf) + +var JpegImage = (function jpegImage() { + "use strict"; + var dctZigZag = new Int32Array([ + 0, + 1, 8, + 16, 9, 2, + 3, 10, 17, 24, + 32, 25, 18, 11, 4, + 5, 12, 19, 26, 33, 40, + 48, 41, 34, 27, 20, 13, 6, + 7, 14, 21, 28, 35, 42, 49, 56, + 57, 50, 43, 36, 29, 22, 15, + 23, 30, 37, 44, 51, 58, + 59, 52, 45, 38, 31, + 39, 46, 53, 60, + 61, 54, 47, + 55, 62, + 63 + ]); + + var dctCos1 = 4017 // cos(pi/16) + var dctSin1 = 799 // sin(pi/16) + var dctCos3 = 3406 // cos(3*pi/16) + var dctSin3 = 2276 // sin(3*pi/16) + var dctCos6 = 1567 // cos(6*pi/16) + var dctSin6 = 3784 // sin(6*pi/16) + var dctSqrt2 = 5793 // sqrt(2) + var dctSqrt1d2 = 2896 // sqrt(2) / 2 + + function constructor() { + } + + function buildHuffmanTable(codeLengths, values) { + var k = 0, code = [], i, j, length = 16; + while (length > 0 && !codeLengths[length - 1]) + length--; + code.push({children: [], index: 0}); + var p = code[0], q; + for (i = 0; i < length; i++) { + for (j = 0; j < codeLengths[i]; j++) { + p = code.pop(); + p.children[p.index] = values[k]; + while (p.index > 0) { + if (code.length === 0) + throw new Error('Could not recreate Huffman Table'); + p = code.pop(); + } + p.index++; + code.push(p); + while (code.length <= i) { + code.push(q = {children: [], index: 0}); + p.children[p.index] = q.children; + p = q; + } + k++; + } + if (i + 1 < length) { + // p here points to last code + code.push(q = {children: [], index: 0}); + p.children[p.index] = q.children; + p = q; + } + } + return code[0].children; + } + + function decodeScan(data, offset, + frame, components, resetInterval, + spectralStart, spectralEnd, + successivePrev, successive, opts) { + var precision = frame.precision; + var samplesPerLine = frame.samplesPerLine; + var scanLines = frame.scanLines; + var mcusPerLine = frame.mcusPerLine; + var progressive = frame.progressive; + var maxH = frame.maxH, maxV = frame.maxV; + + var startOffset = offset, bitsData = 0, bitsCount = 0; + function readBit() { + if (bitsCount > 0) { + bitsCount--; + return (bitsData >> bitsCount) & 1; + } + bitsData = data[offset++]; + if (bitsData == 0xFF) { + var nextByte = data[offset++]; + if (nextByte) { + throw new Error("unexpected marker: " + ((bitsData << 8) | nextByte).toString(16)); + } + // unstuff 0 + } + bitsCount = 7; + return bitsData >>> 7; + } + function decodeHuffman(tree) { + var node = tree, bit; + while ((bit = readBit()) !== null) { + node = node[bit]; + if (typeof node === 'number') + return node; + if (typeof node !== 'object') + throw new Error("invalid huffman sequence"); + } + return null; + } + function receive(length) { + var n = 0; + while (length > 0) { + var bit = readBit(); + if (bit === null) return; + n = (n << 1) | bit; + length--; + } + return n; + } + function receiveAndExtend(length) { + var n = receive(length); + if (n >= 1 << (length - 1)) + return n; + return n + (-1 << length) + 1; + } + function decodeBaseline(component, zz) { + var t = decodeHuffman(component.huffmanTableDC); + var diff = t === 0 ? 0 : receiveAndExtend(t); + zz[0]= (component.pred += diff); + var k = 1; + while (k < 64) { + var rs = decodeHuffman(component.huffmanTableAC); + var s = rs & 15, r = rs >> 4; + if (s === 0) { + if (r < 15) + break; + k += 16; + continue; + } + k += r; + var z = dctZigZag[k]; + zz[z] = receiveAndExtend(s); + k++; + } + } + function decodeDCFirst(component, zz) { + var t = decodeHuffman(component.huffmanTableDC); + var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive); + zz[0] = (component.pred += diff); + } + function decodeDCSuccessive(component, zz) { + zz[0] |= readBit() << successive; + } + var eobrun = 0; + function decodeACFirst(component, zz) { + if (eobrun > 0) { + eobrun--; + return; + } + var k = spectralStart, e = spectralEnd; + while (k <= e) { + var rs = decodeHuffman(component.huffmanTableAC); + var s = rs & 15, r = rs >> 4; + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r) - 1; + break; + } + k += 16; + continue; + } + k += r; + var z = dctZigZag[k]; + zz[z] = receiveAndExtend(s) * (1 << successive); + k++; + } + } + var successiveACState = 0, successiveACNextValue; + function decodeACSuccessive(component, zz) { + var k = spectralStart, e = spectralEnd, r = 0; + while (k <= e) { + var z = dctZigZag[k]; + var direction = zz[z] < 0 ? -1 : 1; + switch (successiveACState) { + case 0: // initial state + var rs = decodeHuffman(component.huffmanTableAC); + var s = rs & 15, r = rs >> 4; + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r); + successiveACState = 4; + } else { + r = 16; + successiveACState = 1; + } + } else { + if (s !== 1) + throw new Error("invalid ACn encoding"); + successiveACNextValue = receiveAndExtend(s); + successiveACState = r ? 2 : 3; + } + continue; + case 1: // skipping r zero items + case 2: + if (zz[z]) + zz[z] += (readBit() << successive) * direction; + else { + r--; + if (r === 0) + successiveACState = successiveACState == 2 ? 3 : 0; + } + break; + case 3: // set value for a zero item + if (zz[z]) + zz[z] += (readBit() << successive) * direction; + else { + zz[z] = successiveACNextValue << successive; + successiveACState = 0; + } + break; + case 4: // eob + if (zz[z]) + zz[z] += (readBit() << successive) * direction; + break; + } + k++; + } + if (successiveACState === 4) { + eobrun--; + if (eobrun === 0) + successiveACState = 0; + } + } + function decodeMcu(component, decode, mcu, row, col) { + var mcuRow = (mcu / mcusPerLine) | 0; + var mcuCol = mcu % mcusPerLine; + var blockRow = mcuRow * component.v + row; + var blockCol = mcuCol * component.h + col; + // If the block is missing and we're in tolerant mode, just skip it. + if (component.blocks[blockRow] === undefined && opts.tolerantDecoding) + return; + decode(component, component.blocks[blockRow][blockCol]); + } + function decodeBlock(component, decode, mcu) { + var blockRow = (mcu / component.blocksPerLine) | 0; + var blockCol = mcu % component.blocksPerLine; + // If the block is missing and we're in tolerant mode, just skip it. + if (component.blocks[blockRow] === undefined && opts.tolerantDecoding) + return; + decode(component, component.blocks[blockRow][blockCol]); + } + + var componentsLength = components.length; + var component, i, j, k, n; + var decodeFn; + if (progressive) { + if (spectralStart === 0) + decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; + else + decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; + } else { + decodeFn = decodeBaseline; + } + + var mcu = 0, marker; + var mcuExpected; + if (componentsLength == 1) { + mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; + } else { + mcuExpected = mcusPerLine * frame.mcusPerColumn; + } + if (!resetInterval) resetInterval = mcuExpected; + + var h, v; + while (mcu < mcuExpected) { + // reset interval stuff + for (i = 0; i < componentsLength; i++) + components[i].pred = 0; + eobrun = 0; + + if (componentsLength == 1) { + component = components[0]; + for (n = 0; n < resetInterval; n++) { + decodeBlock(component, decodeFn, mcu); + mcu++; + } + } else { + for (n = 0; n < resetInterval; n++) { + for (i = 0; i < componentsLength; i++) { + component = components[i]; + h = component.h; + v = component.v; + for (j = 0; j < v; j++) { + for (k = 0; k < h; k++) { + decodeMcu(component, decodeFn, mcu, j, k); + } + } + } + mcu++; + + // If we've reached our expected MCU's, stop decoding + if (mcu === mcuExpected) break; + } + } + + if (mcu === mcuExpected) { + // Skip trailing bytes at the end of the scan - until we reach the next marker + do { + if (data[offset] === 0xFF) { + if (data[offset + 1] !== 0x00) { + break; + } + } + offset += 1; + } while (offset < data.length - 2); + } + + // find marker + bitsCount = 0; + marker = (data[offset] << 8) | data[offset + 1]; + if (marker < 0xFF00) { + throw new Error("marker was not found"); + } + + if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx + offset += 2; + } + else + break; + } + + return offset - startOffset; + } + + function buildComponentData(frame, component) { + var lines = []; + var blocksPerLine = component.blocksPerLine; + var blocksPerColumn = component.blocksPerColumn; + var samplesPerLine = blocksPerLine << 3; + // Only 1 used per invocation of this function and garbage collected after invocation, so no need to account for its memory footprint. + var R = new Int32Array(64), r = new Uint8Array(64); + + // A port of poppler's IDCT method which in turn is taken from: + // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz, + // "Practical Fast 1-D DCT Algorithms with 11 Multiplications", + // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989, + // 988-991. + function quantizeAndInverse(zz, dataOut, dataIn) { + var qt = component.quantizationTable; + var v0, v1, v2, v3, v4, v5, v6, v7, t; + var p = dataIn; + var i; + + // dequant + for (i = 0; i < 64; i++) + p[i] = zz[i] * qt[i]; + + // inverse DCT on rows + for (i = 0; i < 8; ++i) { + var row = 8 * i; + + // check for all-zero AC coefficients + if (p[1 + row] == 0 && p[2 + row] == 0 && p[3 + row] == 0 && + p[4 + row] == 0 && p[5 + row] == 0 && p[6 + row] == 0 && + p[7 + row] == 0) { + t = (dctSqrt2 * p[0 + row] + 512) >> 10; + p[0 + row] = t; + p[1 + row] = t; + p[2 + row] = t; + p[3 + row] = t; + p[4 + row] = t; + p[5 + row] = t; + p[6 + row] = t; + p[7 + row] = t; + continue; + } + + // stage 4 + v0 = (dctSqrt2 * p[0 + row] + 128) >> 8; + v1 = (dctSqrt2 * p[4 + row] + 128) >> 8; + v2 = p[2 + row]; + v3 = p[6 + row]; + v4 = (dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128) >> 8; + v7 = (dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128) >> 8; + v5 = p[3 + row] << 4; + v6 = p[5 + row] << 4; + + // stage 3 + t = (v0 - v1+ 1) >> 1; + v0 = (v0 + v1 + 1) >> 1; + v1 = t; + t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8; + v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8; + v3 = t; + t = (v4 - v6 + 1) >> 1; + v4 = (v4 + v6 + 1) >> 1; + v6 = t; + t = (v7 + v5 + 1) >> 1; + v5 = (v7 - v5 + 1) >> 1; + v7 = t; + + // stage 2 + t = (v0 - v3 + 1) >> 1; + v0 = (v0 + v3 + 1) >> 1; + v3 = t; + t = (v1 - v2 + 1) >> 1; + v1 = (v1 + v2 + 1) >> 1; + v2 = t; + t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; + v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; + v7 = t; + t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; + v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; + v6 = t; + + // stage 1 + p[0 + row] = v0 + v7; + p[7 + row] = v0 - v7; + p[1 + row] = v1 + v6; + p[6 + row] = v1 - v6; + p[2 + row] = v2 + v5; + p[5 + row] = v2 - v5; + p[3 + row] = v3 + v4; + p[4 + row] = v3 - v4; + } + + // inverse DCT on columns + for (i = 0; i < 8; ++i) { + var col = i; + + // check for all-zero AC coefficients + if (p[1*8 + col] == 0 && p[2*8 + col] == 0 && p[3*8 + col] == 0 && + p[4*8 + col] == 0 && p[5*8 + col] == 0 && p[6*8 + col] == 0 && + p[7*8 + col] == 0) { + t = (dctSqrt2 * dataIn[i+0] + 8192) >> 14; + p[0*8 + col] = t; + p[1*8 + col] = t; + p[2*8 + col] = t; + p[3*8 + col] = t; + p[4*8 + col] = t; + p[5*8 + col] = t; + p[6*8 + col] = t; + p[7*8 + col] = t; + continue; + } + + // stage 4 + v0 = (dctSqrt2 * p[0*8 + col] + 2048) >> 12; + v1 = (dctSqrt2 * p[4*8 + col] + 2048) >> 12; + v2 = p[2*8 + col]; + v3 = p[6*8 + col]; + v4 = (dctSqrt1d2 * (p[1*8 + col] - p[7*8 + col]) + 2048) >> 12; + v7 = (dctSqrt1d2 * (p[1*8 + col] + p[7*8 + col]) + 2048) >> 12; + v5 = p[3*8 + col]; + v6 = p[5*8 + col]; + + // stage 3 + t = (v0 - v1 + 1) >> 1; + v0 = (v0 + v1 + 1) >> 1; + v1 = t; + t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12; + v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12; + v3 = t; + t = (v4 - v6 + 1) >> 1; + v4 = (v4 + v6 + 1) >> 1; + v6 = t; + t = (v7 + v5 + 1) >> 1; + v5 = (v7 - v5 + 1) >> 1; + v7 = t; + + // stage 2 + t = (v0 - v3 + 1) >> 1; + v0 = (v0 + v3 + 1) >> 1; + v3 = t; + t = (v1 - v2 + 1) >> 1; + v1 = (v1 + v2 + 1) >> 1; + v2 = t; + t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12; + v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12; + v7 = t; + t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12; + v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12; + v6 = t; + + // stage 1 + p[0*8 + col] = v0 + v7; + p[7*8 + col] = v0 - v7; + p[1*8 + col] = v1 + v6; + p[6*8 + col] = v1 - v6; + p[2*8 + col] = v2 + v5; + p[5*8 + col] = v2 - v5; + p[3*8 + col] = v3 + v4; + p[4*8 + col] = v3 - v4; + } + + // convert to 8-bit integers + for (i = 0; i < 64; ++i) { + var sample = 128 + ((p[i] + 8) >> 4); + dataOut[i] = sample < 0 ? 0 : sample > 0xFF ? 0xFF : sample; + } + } + + requestMemoryAllocation(samplesPerLine * blocksPerColumn * 8); + + var i, j; + for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) { + var scanLine = blockRow << 3; + for (i = 0; i < 8; i++) + lines.push(new Uint8Array(samplesPerLine)); + for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) { + quantizeAndInverse(component.blocks[blockRow][blockCol], r, R); + + var offset = 0, sample = blockCol << 3; + for (j = 0; j < 8; j++) { + var line = lines[scanLine + j]; + for (i = 0; i < 8; i++) + line[sample + i] = r[offset++]; + } + } + } + return lines; + } + + function clampTo8bit(a) { + return a < 0 ? 0 : a > 255 ? 255 : a; + } + + constructor.prototype = { + load: function load(path) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", path, true); + xhr.responseType = "arraybuffer"; + xhr.onload = (function() { + // TODO catch parse error + var data = new Uint8Array(xhr.response || xhr.mozResponseArrayBuffer); + this.parse(data); + if (this.onload) + this.onload(); + }).bind(this); + xhr.send(null); + }, + parse: function parse(data) { + var maxResolutionInPixels = this.opts.maxResolutionInMP * 1000 * 1000; + var offset = 0, length = data.length; + function readUint16() { + var value = (data[offset] << 8) | data[offset + 1]; + offset += 2; + return value; + } + function readDataBlock() { + var length = readUint16(); + var array = data.subarray(offset, offset + length - 2); + offset += array.length; + return array; + } + function prepareComponents(frame) { + var maxH = 0, maxV = 0; + var component, componentId; + for (componentId in frame.components) { + if (frame.components.hasOwnProperty(componentId)) { + component = frame.components[componentId]; + if (maxH < component.h) maxH = component.h; + if (maxV < component.v) maxV = component.v; + } + } + var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / maxH); + var mcusPerColumn = Math.ceil(frame.scanLines / 8 / maxV); + for (componentId in frame.components) { + if (frame.components.hasOwnProperty(componentId)) { + component = frame.components[componentId]; + var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / maxH); + var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / maxV); + var blocksPerLineForMcu = mcusPerLine * component.h; + var blocksPerColumnForMcu = mcusPerColumn * component.v; + var blocksToAllocate = blocksPerColumnForMcu * blocksPerLineForMcu; + var blocks = []; + + // Each block is a Int32Array of length 64 (4 x 64 = 256 bytes) + requestMemoryAllocation(blocksToAllocate * 256); + + for (var i = 0; i < blocksPerColumnForMcu; i++) { + var row = []; + for (var j = 0; j < blocksPerLineForMcu; j++) + row.push(new Int32Array(64)); + blocks.push(row); + } + component.blocksPerLine = blocksPerLine; + component.blocksPerColumn = blocksPerColumn; + component.blocks = blocks; + } + } + frame.maxH = maxH; + frame.maxV = maxV; + frame.mcusPerLine = mcusPerLine; + frame.mcusPerColumn = mcusPerColumn; + } + var jfif = null; + var adobe = null; + var pixels = null; + var frame, resetInterval; + var quantizationTables = [], frames = []; + var huffmanTablesAC = [], huffmanTablesDC = []; + var fileMarker = readUint16(); + this.comments = []; + if (fileMarker != 0xFFD8) { // SOI (Start of Image) + throw new Error("SOI not found"); + } + + fileMarker = readUint16(); + while (fileMarker != 0xFFD9) { // EOI (End of image) + var i, j, l; + switch(fileMarker) { + case 0xFF00: break; + case 0xFFE0: // APP0 (Application Specific) + case 0xFFE1: // APP1 + case 0xFFE2: // APP2 + case 0xFFE3: // APP3 + case 0xFFE4: // APP4 + case 0xFFE5: // APP5 + case 0xFFE6: // APP6 + case 0xFFE7: // APP7 + case 0xFFE8: // APP8 + case 0xFFE9: // APP9 + case 0xFFEA: // APP10 + case 0xFFEB: // APP11 + case 0xFFEC: // APP12 + case 0xFFED: // APP13 + case 0xFFEE: // APP14 + case 0xFFEF: // APP15 + case 0xFFFE: // COM (Comment) + var appData = readDataBlock(); + + if (fileMarker === 0xFFFE) { + var comment = String.fromCharCode.apply(null, appData); + this.comments.push(comment); + } + + if (fileMarker === 0xFFE0) { + if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && + appData[3] === 0x46 && appData[4] === 0) { // 'JFIF\x00' + jfif = { + version: { major: appData[5], minor: appData[6] }, + densityUnits: appData[7], + xDensity: (appData[8] << 8) | appData[9], + yDensity: (appData[10] << 8) | appData[11], + thumbWidth: appData[12], + thumbHeight: appData[13], + thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13]) + }; + } + } + // TODO APP1 - Exif + if (fileMarker === 0xFFE1) { + if (appData[0] === 0x45 && + appData[1] === 0x78 && + appData[2] === 0x69 && + appData[3] === 0x66 && + appData[4] === 0) { // 'EXIF\x00' + this.exifBuffer = appData.subarray(5, appData.length); + } + } + + if (fileMarker === 0xFFEE) { + if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && + appData[3] === 0x62 && appData[4] === 0x65 && appData[5] === 0) { // 'Adobe\x00' + adobe = { + version: appData[6], + flags0: (appData[7] << 8) | appData[8], + flags1: (appData[9] << 8) | appData[10], + transformCode: appData[11] + }; + } + } + break; + + case 0xFFDB: // DQT (Define Quantization Tables) + var quantizationTablesLength = readUint16(); + var quantizationTablesEnd = quantizationTablesLength + offset - 2; + while (offset < quantizationTablesEnd) { + var quantizationTableSpec = data[offset++]; + requestMemoryAllocation(64 * 4); + var tableData = new Int32Array(64); + if ((quantizationTableSpec >> 4) === 0) { // 8 bit values + for (j = 0; j < 64; j++) { + var z = dctZigZag[j]; + tableData[z] = data[offset++]; + } + } else if ((quantizationTableSpec >> 4) === 1) { //16 bit + for (j = 0; j < 64; j++) { + var z = dctZigZag[j]; + tableData[z] = readUint16(); + } + } else + throw new Error("DQT: invalid table spec"); + quantizationTables[quantizationTableSpec & 15] = tableData; + } + break; + + case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT) + case 0xFFC1: // SOF1 (Start of Frame, Extended DCT) + case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT) + readUint16(); // skip data length + frame = {}; + frame.extended = (fileMarker === 0xFFC1); + frame.progressive = (fileMarker === 0xFFC2); + frame.precision = data[offset++]; + frame.scanLines = readUint16(); + frame.samplesPerLine = readUint16(); + frame.components = {}; + frame.componentsOrder = []; + + var pixelsInFrame = frame.scanLines * frame.samplesPerLine; + if (pixelsInFrame > maxResolutionInPixels) { + var exceededAmount = Math.ceil((pixelsInFrame - maxResolutionInPixels) / 1e6); + throw new Error(`maxResolutionInMP limit exceeded by ${exceededAmount}MP`); + } + + var componentsCount = data[offset++], componentId; + var maxH = 0, maxV = 0; + for (i = 0; i < componentsCount; i++) { + componentId = data[offset]; + var h = data[offset + 1] >> 4; + var v = data[offset + 1] & 15; + var qId = data[offset + 2]; + frame.componentsOrder.push(componentId); + frame.components[componentId] = { + h: h, + v: v, + quantizationIdx: qId + }; + offset += 3; + } + prepareComponents(frame); + frames.push(frame); + break; + + case 0xFFC4: // DHT (Define Huffman Tables) + var huffmanLength = readUint16(); + for (i = 2; i < huffmanLength;) { + var huffmanTableSpec = data[offset++]; + var codeLengths = new Uint8Array(16); + var codeLengthSum = 0; + for (j = 0; j < 16; j++, offset++) { + codeLengthSum += (codeLengths[j] = data[offset]); + } + requestMemoryAllocation(16 + codeLengthSum); + var huffmanValues = new Uint8Array(codeLengthSum); + for (j = 0; j < codeLengthSum; j++, offset++) + huffmanValues[j] = data[offset]; + i += 17 + codeLengthSum; + + ((huffmanTableSpec >> 4) === 0 ? + huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = + buildHuffmanTable(codeLengths, huffmanValues); + } + break; + + case 0xFFDD: // DRI (Define Restart Interval) + readUint16(); // skip data length + resetInterval = readUint16(); + break; + + case 0xFFDC: // Number of Lines marker + readUint16() // skip data length + readUint16() // Ignore this data since it represents the image height + break; + + case 0xFFDA: // SOS (Start of Scan) + var scanLength = readUint16(); + var selectorsCount = data[offset++]; + var components = [], component; + for (i = 0; i < selectorsCount; i++) { + component = frame.components[data[offset++]]; + var tableSpec = data[offset++]; + component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; + component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; + components.push(component); + } + var spectralStart = data[offset++]; + var spectralEnd = data[offset++]; + var successiveApproximation = data[offset++]; + var processed = decodeScan(data, offset, + frame, components, resetInterval, + spectralStart, spectralEnd, + successiveApproximation >> 4, successiveApproximation & 15, this.opts); + offset += processed; + break; + + case 0xFFFF: // Fill bytes + if (data[offset] !== 0xFF) { // Avoid skipping a valid marker. + offset--; + } + break; + + default: + if (data[offset - 3] == 0xFF && + data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) { + // could be incorrect encoding -- last 0xFF byte of the previous + // block was eaten by the encoder + offset -= 3; + break; + } + throw new Error("unknown JPEG marker " + fileMarker.toString(16)); + } + fileMarker = readUint16(); + } + if (frames.length != 1) + throw new Error("only single frame JPEGs supported"); + + // set each frame's components quantization table + for (var i = 0; i < frames.length; i++) { + var cp = frames[i].components; + for (var j in cp) { + cp[j].quantizationTable = quantizationTables[cp[j].quantizationIdx]; + delete cp[j].quantizationIdx; + } + } + + this.width = frame.samplesPerLine; + this.height = frame.scanLines; + this.jfif = jfif; + this.adobe = adobe; + this.components = []; + for (var i = 0; i < frame.componentsOrder.length; i++) { + var component = frame.components[frame.componentsOrder[i]]; + this.components.push({ + lines: buildComponentData(frame, component), + scaleX: component.h / frame.maxH, + scaleY: component.v / frame.maxV + }); + } + }, + getData: function getData(width, height) { + var scaleX = this.width / width, scaleY = this.height / height; + + var component1, component2, component3, component4; + var component1Line, component2Line, component3Line, component4Line; + var x, y; + var offset = 0; + var Y, Cb, Cr, K, C, M, Ye, R, G, B; + var colorTransform; + var dataLength = width * height * this.components.length; + requestMemoryAllocation(dataLength); + var data = new Uint8Array(dataLength); + switch (this.components.length) { + case 1: + component1 = this.components[0]; + for (y = 0; y < height; y++) { + component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)]; + for (x = 0; x < width; x++) { + Y = component1Line[0 | (x * component1.scaleX * scaleX)]; + + data[offset++] = Y; + } + } + break; + case 2: + // PDF might compress two component data in custom colorspace + component1 = this.components[0]; + component2 = this.components[1]; + for (y = 0; y < height; y++) { + component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)]; + component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)]; + for (x = 0; x < width; x++) { + Y = component1Line[0 | (x * component1.scaleX * scaleX)]; + data[offset++] = Y; + Y = component2Line[0 | (x * component2.scaleX * scaleX)]; + data[offset++] = Y; + } + } + break; + case 3: + // The default transform for three components is true + colorTransform = true; + // The adobe transform marker overrides any previous setting + if (this.adobe && this.adobe.transformCode) + colorTransform = true; + else if (typeof this.opts.colorTransform !== 'undefined') + colorTransform = !!this.opts.colorTransform; + + component1 = this.components[0]; + component2 = this.components[1]; + component3 = this.components[2]; + for (y = 0; y < height; y++) { + component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)]; + component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)]; + component3Line = component3.lines[0 | (y * component3.scaleY * scaleY)]; + for (x = 0; x < width; x++) { + if (!colorTransform) { + R = component1Line[0 | (x * component1.scaleX * scaleX)]; + G = component2Line[0 | (x * component2.scaleX * scaleX)]; + B = component3Line[0 | (x * component3.scaleX * scaleX)]; + } else { + Y = component1Line[0 | (x * component1.scaleX * scaleX)]; + Cb = component2Line[0 | (x * component2.scaleX * scaleX)]; + Cr = component3Line[0 | (x * component3.scaleX * scaleX)]; + + R = clampTo8bit(Y + 1.402 * (Cr - 128)); + G = clampTo8bit(Y - 0.3441363 * (Cb - 128) - 0.71413636 * (Cr - 128)); + B = clampTo8bit(Y + 1.772 * (Cb - 128)); + } + + data[offset++] = R; + data[offset++] = G; + data[offset++] = B; + } + } + break; + case 4: + if (!this.adobe) + throw new Error('Unsupported color mode (4 components)'); + // The default transform for four components is false + colorTransform = false; + // The adobe transform marker overrides any previous setting + if (this.adobe && this.adobe.transformCode) + colorTransform = true; + else if (typeof this.opts.colorTransform !== 'undefined') + colorTransform = !!this.opts.colorTransform; + + component1 = this.components[0]; + component2 = this.components[1]; + component3 = this.components[2]; + component4 = this.components[3]; + for (y = 0; y < height; y++) { + component1Line = component1.lines[0 | (y * component1.scaleY * scaleY)]; + component2Line = component2.lines[0 | (y * component2.scaleY * scaleY)]; + component3Line = component3.lines[0 | (y * component3.scaleY * scaleY)]; + component4Line = component4.lines[0 | (y * component4.scaleY * scaleY)]; + for (x = 0; x < width; x++) { + if (!colorTransform) { + C = component1Line[0 | (x * component1.scaleX * scaleX)]; + M = component2Line[0 | (x * component2.scaleX * scaleX)]; + Ye = component3Line[0 | (x * component3.scaleX * scaleX)]; + K = component4Line[0 | (x * component4.scaleX * scaleX)]; + } else { + Y = component1Line[0 | (x * component1.scaleX * scaleX)]; + Cb = component2Line[0 | (x * component2.scaleX * scaleX)]; + Cr = component3Line[0 | (x * component3.scaleX * scaleX)]; + K = component4Line[0 | (x * component4.scaleX * scaleX)]; + + C = 255 - clampTo8bit(Y + 1.402 * (Cr - 128)); + M = 255 - clampTo8bit(Y - 0.3441363 * (Cb - 128) - 0.71413636 * (Cr - 128)); + Ye = 255 - clampTo8bit(Y + 1.772 * (Cb - 128)); + } + data[offset++] = 255-C; + data[offset++] = 255-M; + data[offset++] = 255-Ye; + data[offset++] = 255-K; + } + } + break; + default: + throw new Error('Unsupported color mode'); + } + return data; + }, + copyToImageData: function copyToImageData(imageData, formatAsRGBA) { + var width = imageData.width, height = imageData.height; + var imageDataArray = imageData.data; + var data = this.getData(width, height); + var i = 0, j = 0, x, y; + var Y, K, C, M, R, G, B; + switch (this.components.length) { + case 1: + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + Y = data[i++]; + + imageDataArray[j++] = Y; + imageDataArray[j++] = Y; + imageDataArray[j++] = Y; + if (formatAsRGBA) { + imageDataArray[j++] = 255; + } + } + } + break; + case 3: + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + R = data[i++]; + G = data[i++]; + B = data[i++]; + + imageDataArray[j++] = R; + imageDataArray[j++] = G; + imageDataArray[j++] = B; + if (formatAsRGBA) { + imageDataArray[j++] = 255; + } + } + } + break; + case 4: + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + C = data[i++]; + M = data[i++]; + Y = data[i++]; + K = data[i++]; + + R = 255 - clampTo8bit(C * (1 - K / 255) + K); + G = 255 - clampTo8bit(M * (1 - K / 255) + K); + B = 255 - clampTo8bit(Y * (1 - K / 255) + K); + + imageDataArray[j++] = R; + imageDataArray[j++] = G; + imageDataArray[j++] = B; + if (formatAsRGBA) { + imageDataArray[j++] = 255; + } + } + } + break; + default: + throw new Error('Unsupported color mode'); + } + } + }; + + + // We cap the amount of memory used by jpeg-js to avoid unexpected OOMs from untrusted content. + var totalBytesAllocated = 0; + var maxMemoryUsageBytes = 0; + function requestMemoryAllocation(increaseAmount = 0) { + var totalMemoryImpactBytes = totalBytesAllocated + increaseAmount; + if (totalMemoryImpactBytes > maxMemoryUsageBytes) { + var exceededAmount = Math.ceil((totalMemoryImpactBytes - maxMemoryUsageBytes) / 1024 / 1024); + throw new Error(`maxMemoryUsageInMB limit exceeded by at least ${exceededAmount}MB`); + } + + totalBytesAllocated = totalMemoryImpactBytes; + } + + constructor.resetMaxMemoryUsage = function (maxMemoryUsageBytes_) { + totalBytesAllocated = 0; + maxMemoryUsageBytes = maxMemoryUsageBytes_; + }; + + constructor.getBytesAllocated = function () { + return totalBytesAllocated; + }; + + constructor.requestMemoryAllocation = requestMemoryAllocation; + + return constructor; +})(); + +if (typeof module !== 'undefined') { + module.exports = decode; +} else if (typeof window !== 'undefined') { + window['jpeg-js'] = window['jpeg-js'] || {}; + window['jpeg-js'].decode = decode; +} + +function decode(jpegData, userOpts = {}) { + var defaultOpts = { + // "undefined" means "Choose whether to transform colors based on the image’s color model." + colorTransform: undefined, + useTArray: false, + formatAsRGBA: true, + tolerantDecoding: true, + maxResolutionInMP: 100, // Don't decode more than 100 megapixels + maxMemoryUsageInMB: 512, // Don't decode if memory footprint is more than 512MB + }; + + var opts = {...defaultOpts, ...userOpts}; + var arr = new Uint8Array(jpegData); + var decoder = new JpegImage(); + decoder.opts = opts; + // If this constructor ever supports async decoding this will need to be done differently. + // Until then, treating as singleton limit is fine. + JpegImage.resetMaxMemoryUsage(opts.maxMemoryUsageInMB * 1024 * 1024); + decoder.parse(arr); + + var channels = (opts.formatAsRGBA) ? 4 : 3; + var bytesNeeded = decoder.width * decoder.height * channels; + try { + JpegImage.requestMemoryAllocation(bytesNeeded); + var image = { + width: decoder.width, + height: decoder.height, + exifBuffer: decoder.exifBuffer, + data: opts.useTArray ? + new Uint8Array(bytesNeeded) : + Buffer.alloc(bytesNeeded) + }; + if(decoder.comments.length > 0) { + image["comments"] = decoder.comments; + } + } catch (err){ + if (err instanceof RangeError){ + throw new Error("Could not allocate enough memory for the image. " + + "Required: " + bytesNeeded); + } else { + throw err; + } + } + + decoder.copyToImageData(image, opts.formatAsRGBA); + + return image; +} + +}).call(this,require("buffer").Buffer) +},{"buffer":48}],82:[function(require,module,exports){ +(function (Buffer){ +/* + Copyright (c) 2008, Adobe Systems Incorporated + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Adobe Systems Incorporated nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/* +JPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009 + +Basic GUI blocking jpeg encoder +*/ + +var btoa = btoa || function(buf) { + return Buffer.from(buf).toString('base64'); +}; + +function JPEGEncoder(quality) { + var self = this; + var fround = Math.round; + var ffloor = Math.floor; + var YTable = new Array(64); + var UVTable = new Array(64); + var fdtbl_Y = new Array(64); + var fdtbl_UV = new Array(64); + var YDC_HT; + var UVDC_HT; + var YAC_HT; + var UVAC_HT; + + var bitcode = new Array(65535); + var category = new Array(65535); + var outputfDCTQuant = new Array(64); + var DU = new Array(64); + var byteout = []; + var bytenew = 0; + var bytepos = 7; + + var YDU = new Array(64); + var UDU = new Array(64); + var VDU = new Array(64); + var clt = new Array(256); + var RGB_YUV_TABLE = new Array(2048); + var currentQuality; + + var ZigZag = [ + 0, 1, 5, 6,14,15,27,28, + 2, 4, 7,13,16,26,29,42, + 3, 8,12,17,25,30,41,43, + 9,11,18,24,31,40,44,53, + 10,19,23,32,39,45,52,54, + 20,22,33,38,46,51,55,60, + 21,34,37,47,50,56,59,61, + 35,36,48,49,57,58,62,63 + ]; + + var std_dc_luminance_nrcodes = [0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0]; + var std_dc_luminance_values = [0,1,2,3,4,5,6,7,8,9,10,11]; + var std_ac_luminance_nrcodes = [0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d]; + var std_ac_luminance_values = [ + 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12, + 0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07, + 0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0, + 0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16, + 0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, + 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39, + 0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49, + 0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69, + 0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79, + 0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, + 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98, + 0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, + 0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5, + 0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4, + 0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, + 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea, + 0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8, + 0xf9,0xfa + ]; + + var std_dc_chrominance_nrcodes = [0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0]; + var std_dc_chrominance_values = [0,1,2,3,4,5,6,7,8,9,10,11]; + var std_ac_chrominance_nrcodes = [0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77]; + var std_ac_chrominance_values = [ + 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21, + 0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71, + 0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0, + 0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34, + 0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, + 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38, + 0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, + 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, + 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78, + 0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, + 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96, + 0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5, + 0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3, + 0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2, + 0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9, + 0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8, + 0xf9,0xfa + ]; + + function initQuantTables(sf){ + var YQT = [ + 16, 11, 10, 16, 24, 40, 51, 61, + 12, 12, 14, 19, 26, 58, 60, 55, + 14, 13, 16, 24, 40, 57, 69, 56, + 14, 17, 22, 29, 51, 87, 80, 62, + 18, 22, 37, 56, 68,109,103, 77, + 24, 35, 55, 64, 81,104,113, 92, + 49, 64, 78, 87,103,121,120,101, + 72, 92, 95, 98,112,100,103, 99 + ]; + + for (var i = 0; i < 64; i++) { + var t = ffloor((YQT[i]*sf+50)/100); + if (t < 1) { + t = 1; + } else if (t > 255) { + t = 255; + } + YTable[ZigZag[i]] = t; + } + var UVQT = [ + 17, 18, 24, 47, 99, 99, 99, 99, + 18, 21, 26, 66, 99, 99, 99, 99, + 24, 26, 56, 99, 99, 99, 99, 99, + 47, 66, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99 + ]; + for (var j = 0; j < 64; j++) { + var u = ffloor((UVQT[j]*sf+50)/100); + if (u < 1) { + u = 1; + } else if (u > 255) { + u = 255; + } + UVTable[ZigZag[j]] = u; + } + var aasf = [ + 1.0, 1.387039845, 1.306562965, 1.175875602, + 1.0, 0.785694958, 0.541196100, 0.275899379 + ]; + var k = 0; + for (var row = 0; row < 8; row++) + { + for (var col = 0; col < 8; col++) + { + fdtbl_Y[k] = (1.0 / (YTable [ZigZag[k]] * aasf[row] * aasf[col] * 8.0)); + fdtbl_UV[k] = (1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0)); + k++; + } + } + } + + function computeHuffmanTbl(nrcodes, std_table){ + var codevalue = 0; + var pos_in_table = 0; + var HT = new Array(); + for (var k = 1; k <= 16; k++) { + for (var j = 1; j <= nrcodes[k]; j++) { + HT[std_table[pos_in_table]] = []; + HT[std_table[pos_in_table]][0] = codevalue; + HT[std_table[pos_in_table]][1] = k; + pos_in_table++; + codevalue++; + } + codevalue*=2; + } + return HT; + } + + function initHuffmanTbl() + { + YDC_HT = computeHuffmanTbl(std_dc_luminance_nrcodes,std_dc_luminance_values); + UVDC_HT = computeHuffmanTbl(std_dc_chrominance_nrcodes,std_dc_chrominance_values); + YAC_HT = computeHuffmanTbl(std_ac_luminance_nrcodes,std_ac_luminance_values); + UVAC_HT = computeHuffmanTbl(std_ac_chrominance_nrcodes,std_ac_chrominance_values); + } + + function initCategoryNumber() + { + var nrlower = 1; + var nrupper = 2; + for (var cat = 1; cat <= 15; cat++) { + //Positive numbers + for (var nr = nrlower; nr>0] = 38470 * i; + RGB_YUV_TABLE[(i+ 512)>>0] = 7471 * i + 0x8000; + RGB_YUV_TABLE[(i+ 768)>>0] = -11059 * i; + RGB_YUV_TABLE[(i+1024)>>0] = -21709 * i; + RGB_YUV_TABLE[(i+1280)>>0] = 32768 * i + 0x807FFF; + RGB_YUV_TABLE[(i+1536)>>0] = -27439 * i; + RGB_YUV_TABLE[(i+1792)>>0] = - 5329 * i; + } + } + + // IO functions + function writeBits(bs) + { + var value = bs[0]; + var posval = bs[1]-1; + while ( posval >= 0 ) { + if (value & (1 << posval) ) { + bytenew |= (1 << bytepos); + } + posval--; + bytepos--; + if (bytepos < 0) { + if (bytenew == 0xFF) { + writeByte(0xFF); + writeByte(0); + } + else { + writeByte(bytenew); + } + bytepos=7; + bytenew=0; + } + } + } + + function writeByte(value) + { + //byteout.push(clt[value]); // write char directly instead of converting later + byteout.push(value); + } + + function writeWord(value) + { + writeByte((value>>8)&0xFF); + writeByte((value )&0xFF); + } + + // DCT & quantization core + function fDCTQuant(data, fdtbl) + { + var d0, d1, d2, d3, d4, d5, d6, d7; + /* Pass 1: process rows. */ + var dataOff=0; + var i; + var I8 = 8; + var I64 = 64; + for (i=0; i 0.0) ? ((fDCTQuant + 0.5)|0) : ((fDCTQuant - 0.5)|0); + //outputfDCTQuant[i] = fround(fDCTQuant); + + } + return outputfDCTQuant; + } + + function writeAPP0() + { + writeWord(0xFFE0); // marker + writeWord(16); // length + writeByte(0x4A); // J + writeByte(0x46); // F + writeByte(0x49); // I + writeByte(0x46); // F + writeByte(0); // = "JFIF",'\0' + writeByte(1); // versionhi + writeByte(1); // versionlo + writeByte(0); // xyunits + writeWord(1); // xdensity + writeWord(1); // ydensity + writeByte(0); // thumbnwidth + writeByte(0); // thumbnheight + } + + function writeAPP1(exifBuffer) { + if (!exifBuffer) return; + + writeWord(0xFFE1); // APP1 marker + + if (exifBuffer[0] === 0x45 && + exifBuffer[1] === 0x78 && + exifBuffer[2] === 0x69 && + exifBuffer[3] === 0x66) { + // Buffer already starts with EXIF, just use it directly + writeWord(exifBuffer.length + 2); // length is buffer + length itself! + } else { + // Buffer doesn't start with EXIF, write it for them + writeWord(exifBuffer.length + 5 + 2); // length is buffer + EXIF\0 + length itself! + writeByte(0x45); // E + writeByte(0x78); // X + writeByte(0x69); // I + writeByte(0x66); // F + writeByte(0); // = "EXIF",'\0' + } + + for (var i = 0; i < exifBuffer.length; i++) { + writeByte(exifBuffer[i]); + } + } + + function writeSOF0(width, height) + { + writeWord(0xFFC0); // marker + writeWord(17); // length, truecolor YUV JPG + writeByte(8); // precision + writeWord(height); + writeWord(width); + writeByte(3); // nrofcomponents + writeByte(1); // IdY + writeByte(0x11); // HVY + writeByte(0); // QTY + writeByte(2); // IdU + writeByte(0x11); // HVU + writeByte(1); // QTU + writeByte(3); // IdV + writeByte(0x11); // HVV + writeByte(1); // QTV + } + + function writeDQT() + { + writeWord(0xFFDB); // marker + writeWord(132); // length + writeByte(0); + for (var i=0; i<64; i++) { + writeByte(YTable[i]); + } + writeByte(1); + for (var j=0; j<64; j++) { + writeByte(UVTable[j]); + } + } + + function writeDHT() + { + writeWord(0xFFC4); // marker + writeWord(0x01A2); // length + + writeByte(0); // HTYDCinfo + for (var i=0; i<16; i++) { + writeByte(std_dc_luminance_nrcodes[i+1]); + } + for (var j=0; j<=11; j++) { + writeByte(std_dc_luminance_values[j]); + } + + writeByte(0x10); // HTYACinfo + for (var k=0; k<16; k++) { + writeByte(std_ac_luminance_nrcodes[k+1]); + } + for (var l=0; l<=161; l++) { + writeByte(std_ac_luminance_values[l]); + } + + writeByte(1); // HTUDCinfo + for (var m=0; m<16; m++) { + writeByte(std_dc_chrominance_nrcodes[m+1]); + } + for (var n=0; n<=11; n++) { + writeByte(std_dc_chrominance_values[n]); + } + + writeByte(0x11); // HTUACinfo + for (var o=0; o<16; o++) { + writeByte(std_ac_chrominance_nrcodes[o+1]); + } + for (var p=0; p<=161; p++) { + writeByte(std_ac_chrominance_values[p]); + } + } + + function writeSOS() + { + writeWord(0xFFDA); // marker + writeWord(12); // length + writeByte(3); // nrofcomponents + writeByte(1); // IdY + writeByte(0); // HTY + writeByte(2); // IdU + writeByte(0x11); // HTU + writeByte(3); // IdV + writeByte(0x11); // HTV + writeByte(0); // Ss + writeByte(0x3f); // Se + writeByte(0); // Bf + } + + function processDU(CDU, fdtbl, DC, HTDC, HTAC){ + var EOB = HTAC[0x00]; + var M16zeroes = HTAC[0xF0]; + var pos; + var I16 = 16; + var I63 = 63; + var I64 = 64; + var DU_DCT = fDCTQuant(CDU, fdtbl); + //ZigZag reorder + for (var j=0;j0)&&(DU[end0pos]==0); end0pos--) {}; + //end0pos = first element in reverse order !=0 + if ( end0pos == 0) { + writeBits(EOB); + return DC; + } + var i = 1; + var lng; + while ( i <= end0pos ) { + var startpos = i; + for (; (DU[i]==0) && (i<=end0pos); ++i) {} + var nrzeroes = i-startpos; + if ( nrzeroes >= I16 ) { + lng = nrzeroes>>4; + for (var nrmarker=1; nrmarker <= lng; ++nrmarker) + writeBits(M16zeroes); + nrzeroes = nrzeroes&0xF; + } + pos = 32767+DU[i]; + writeBits(HTAC[(nrzeroes<<4)+category[pos]]); + writeBits(bitcode[pos]); + i++; + } + if ( end0pos != I63 ) { + writeBits(EOB); + } + return DC; + } + + function initCharLookupTable(){ + var sfcc = String.fromCharCode; + for(var i=0; i < 256; i++){ ///// ACHTUNG // 255 + clt[i] = sfcc(i); + } + } + + this.encode = function(image,quality) // image data object + { + var time_start = new Date().getTime(); + + if(quality) setQuality(quality); + + // Initialize bit writer + byteout = new Array(); + bytenew=0; + bytepos=7; + + // Add JPEG headers + writeWord(0xFFD8); // SOI + writeAPP0(); + writeAPP1(image.exifBuffer); + writeDQT(); + writeSOF0(image.width,image.height); + writeDHT(); + writeSOS(); + + + // Encode 8x8 macroblocks + var DCY=0; + var DCU=0; + var DCV=0; + + bytenew=0; + bytepos=7; + + + this.encode.displayName = "_encode_"; + + var imageData = image.data; + var width = image.width; + var height = image.height; + + var quadWidth = width*4; + var tripleWidth = width*3; + + var x, y = 0; + var r, g, b; + var start,p, col,row,pos; + while(y < height){ + x = 0; + while(x < quadWidth){ + start = quadWidth * y + x; + p = start; + col = -1; + row = 0; + + for(pos=0; pos < 64; pos++){ + row = pos >> 3;// /8 + col = ( pos & 7 ) * 4; // %8 + p = start + ( row * quadWidth ) + col; + + if(y+row >= height){ // padding bottom + p-= (quadWidth*(y+1+row-height)); + } + + if(x+col >= quadWidth){ // padding right + p-= ((x+col) - quadWidth +4) + } + + r = imageData[ p++ ]; + g = imageData[ p++ ]; + b = imageData[ p++ ]; + + + /* // calculate YUV values dynamically + YDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80 + UDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b)); + VDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b)); + */ + + // use lookup table (slightly faster) + YDU[pos] = ((RGB_YUV_TABLE[r] + RGB_YUV_TABLE[(g + 256)>>0] + RGB_YUV_TABLE[(b + 512)>>0]) >> 16)-128; + UDU[pos] = ((RGB_YUV_TABLE[(r + 768)>>0] + RGB_YUV_TABLE[(g + 1024)>>0] + RGB_YUV_TABLE[(b + 1280)>>0]) >> 16)-128; + VDU[pos] = ((RGB_YUV_TABLE[(r + 1280)>>0] + RGB_YUV_TABLE[(g + 1536)>>0] + RGB_YUV_TABLE[(b + 1792)>>0]) >> 16)-128; + + } + + DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + x+=32; + } + y+=8; + } + + + //////////////////////////////////////////////////////////////// + + // Do the bit alignment of the EOI marker + if ( bytepos >= 0 ) { + var fillbits = []; + fillbits[1] = bytepos+1; + fillbits[0] = (1<<(bytepos+1))-1; + writeBits(fillbits); + } + + writeWord(0xFFD9); //EOI + + if (typeof module === 'undefined') return new Uint8Array(byteout); + return Buffer.from(byteout); + + var jpegDataUri = 'data:image/jpeg;base64,' + btoa(byteout.join('')); + + byteout = []; + + // benchmarking + var duration = new Date().getTime() - time_start; + //console.log('Encoding time: '+ duration + 'ms'); + // + + return jpegDataUri + } + + function setQuality(quality){ + if (quality <= 0) { + quality = 1; + } + if (quality > 100) { + quality = 100; + } + + if(currentQuality == quality) return // don't recalc if unchanged + + var sf = 0; + if (quality < 50) { + sf = Math.floor(5000 / quality); + } else { + sf = Math.floor(200 - quality*2); + } + + initQuantTables(sf); + currentQuality = quality; + //console.log('Quality set to: '+quality +'%'); + } + + function init(){ + var time_start = new Date().getTime(); + if(!quality) quality = 50; + // Create tables + initCharLookupTable() + initHuffmanTbl(); + initCategoryNumber(); + initRGBYUVTable(); + + setQuality(quality); + var duration = new Date().getTime() - time_start; + //console.log('Initialization '+ duration + 'ms'); + } + + init(); + +}; + +if (typeof module !== 'undefined') { + module.exports = encode; +} else if (typeof window !== 'undefined') { + window['jpeg-js'] = window['jpeg-js'] || {}; + window['jpeg-js'].encode = encode; +} + +function encode(imgData, qu) { + if (typeof qu === 'undefined') qu = 50; + var encoder = new JPEGEncoder(qu); + var data = encoder.encode(imgData, qu); + return { + data: data, + width: imgData.width, + height: imgData.height + }; +} + +// helper function to get the imageData of an existing image on the current page. +function getImageDataFromImage(idOrElement){ + var theImg = (typeof(idOrElement)=='string')? document.getElementById(idOrElement):idOrElement; + var cvs = document.createElement('canvas'); + cvs.width = theImg.width; + cvs.height = theImg.height; + var ctx = cvs.getContext("2d"); + ctx.drawImage(theImg,0,0); + + return (ctx.getImageData(0, 0, cvs.width, cvs.height)); +} + +}).call(this,require("buffer").Buffer) +},{"buffer":48}],83:[function(require,module,exports){ +(function (process){ +var path = require('path'); +var fs = require('fs'); +var _0777 = parseInt('0777', 8); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, opts, f, made) { + if (typeof opts === 'function') { + f = opts; + opts = {}; + } + else if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + p = path.resolve(p); + + xfs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), opts, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, opts, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 & (~process.umask()); + } + if (!made) made = null; + + p = path.resolve(p); + + try { + xfs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), opts, made); + sync(p, opts, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = xfs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; + +}).call(this,require('_process')) +},{"_process":133,"fs":47,"path":107}],84:[function(require,module,exports){ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + +},{}],85:[function(require,module,exports){ +arguments[4][64][0].apply(exports,arguments) +},{"dup":64}],86:[function(require,module,exports){ +// Top level file is just a mixin of submodules & constants +'use strict'; + +var assign = require('./lib/utils/common').assign; + +var deflate = require('./lib/deflate'); +var inflate = require('./lib/inflate'); +var constants = require('./lib/zlib/constants'); + +var pako = {}; + +assign(pako, deflate, inflate, constants); + +module.exports = pako; + +},{"./lib/deflate":87,"./lib/inflate":88,"./lib/utils/common":89,"./lib/zlib/constants":92}],87:[function(require,module,exports){ +'use strict'; + + +var zlib_deflate = require('./zlib/deflate'); +var utils = require('./utils/common'); +var strings = require('./utils/strings'); +var msg = require('./zlib/messages'); +var ZStream = require('./zlib/zstream'); + +var toString = Object.prototype.toString; + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + +var Z_NO_FLUSH = 0; +var Z_FINISH = 4; + +var Z_OK = 0; +var Z_STREAM_END = 1; +var Z_SYNC_FLUSH = 2; + +var Z_DEFAULT_COMPRESSION = -1; + +var Z_DEFAULT_STRATEGY = 0; + +var Z_DEFLATED = 8; + +/* ===========================================================================*/ + + +/** + * class Deflate + * + * Generic JS-style wrapper for zlib calls. If you don't need + * streaming behaviour - use more simple functions: [[deflate]], + * [[deflateRaw]] and [[gzip]]. + **/ + +/* internal + * Deflate.chunks -> Array + * + * Chunks of output data, if [[Deflate#onData]] not overridden. + **/ + +/** + * Deflate.result -> Uint8Array|Array + * + * Compressed result, generated by default [[Deflate#onData]] + * and [[Deflate#onEnd]] handlers. Filled after you push last chunk + * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you + * push a chunk with explicit flush (call [[Deflate#push]] with + * `Z_SYNC_FLUSH` param). + **/ + +/** + * Deflate.err -> Number + * + * Error code after deflate finished. 0 (Z_OK) on success. + * You will not need it in real life, because deflate errors + * are possible only on wrong options or bad `onData` / `onEnd` + * custom handlers. + **/ + +/** + * Deflate.msg -> String + * + * Error message, if [[Deflate.err]] != 0 + **/ + + +/** + * new Deflate(options) + * - options (Object): zlib deflate options. + * + * Creates new deflator instance with specified params. Throws exception + * on bad params. Supported options: + * + * - `level` + * - `windowBits` + * - `memLevel` + * - `strategy` + * - `dictionary` + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Additional options, for internal needs: + * + * - `chunkSize` - size of generated data chunks (16K by default) + * - `raw` (Boolean) - do raw deflate + * - `gzip` (Boolean) - create gzip wrapper + * - `to` (String) - if equal to 'string', then result will be "binary string" + * (each char code [0..255]) + * - `header` (Object) - custom header for gzip + * - `text` (Boolean) - true if compressed data believed to be text + * - `time` (Number) - modification time, unix timestamp + * - `os` (Number) - operation system code + * - `extra` (Array) - array of bytes with extra data (max 65536) + * - `name` (String) - file name (binary string) + * - `comment` (String) - comment (binary string) + * - `hcrc` (Boolean) - true if header crc should be added + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9]) + * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]); + * + * var deflate = new pako.Deflate({ level: 3}); + * + * deflate.push(chunk1, false); + * deflate.push(chunk2, true); // true -> last chunk + * + * if (deflate.err) { throw new Error(deflate.err); } + * + * console.log(deflate.result); + * ``` + **/ +function Deflate(options) { + if (!(this instanceof Deflate)) return new Deflate(options); + + this.options = utils.assign({ + level: Z_DEFAULT_COMPRESSION, + method: Z_DEFLATED, + chunkSize: 16384, + windowBits: 15, + memLevel: 8, + strategy: Z_DEFAULT_STRATEGY, + to: '' + }, options || {}); + + var opt = this.options; + + if (opt.raw && (opt.windowBits > 0)) { + opt.windowBits = -opt.windowBits; + } + + else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) { + opt.windowBits += 16; + } + + this.err = 0; // error code, if happens (0 = Z_OK) + this.msg = ''; // error message + this.ended = false; // used to avoid multiple onEnd() calls + this.chunks = []; // chunks of compressed data + + this.strm = new ZStream(); + this.strm.avail_out = 0; + + var status = zlib_deflate.deflateInit2( + this.strm, + opt.level, + opt.method, + opt.windowBits, + opt.memLevel, + opt.strategy + ); + + if (status !== Z_OK) { + throw new Error(msg[status]); + } + + if (opt.header) { + zlib_deflate.deflateSetHeader(this.strm, opt.header); + } + + if (opt.dictionary) { + var dict; + // Convert data if needed + if (typeof opt.dictionary === 'string') { + // If we need to compress text, change encoding to utf8. + dict = strings.string2buf(opt.dictionary); + } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { + dict = new Uint8Array(opt.dictionary); + } else { + dict = opt.dictionary; + } + + status = zlib_deflate.deflateSetDictionary(this.strm, dict); + + if (status !== Z_OK) { + throw new Error(msg[status]); + } + + this._dict_set = true; + } +} + +/** + * Deflate#push(data[, mode]) -> Boolean + * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be + * converted to utf8 byte sequence. + * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. + * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. + * + * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with + * new compressed chunks. Returns `true` on success. The last data block must have + * mode Z_FINISH (or `true`). That will flush internal pending buffers and call + * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you + * can use mode Z_SYNC_FLUSH, keeping the compression context. + * + * On fail call [[Deflate#onEnd]] with error code and return false. + * + * We strongly recommend to use `Uint8Array` on input for best speed (output + * array format is detected automatically). Also, don't skip last param and always + * use the same type in your code (boolean or number). That will improve JS speed. + * + * For regular `Array`-s make sure all elements are [0..255]. + * + * ##### Example + * + * ```javascript + * push(chunk, false); // push one of data chunks + * ... + * push(chunk, true); // push last chunk + * ``` + **/ +Deflate.prototype.push = function (data, mode) { + var strm = this.strm; + var chunkSize = this.options.chunkSize; + var status, _mode; + + if (this.ended) { return false; } + + _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH); + + // Convert data if needed + if (typeof data === 'string') { + // If we need to compress text, change encoding to utf8. + strm.input = strings.string2buf(data); + } else if (toString.call(data) === '[object ArrayBuffer]') { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + + strm.next_in = 0; + strm.avail_in = strm.input.length; + + do { + if (strm.avail_out === 0) { + strm.output = new utils.Buf8(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + status = zlib_deflate.deflate(strm, _mode); /* no bad return value */ + + if (status !== Z_STREAM_END && status !== Z_OK) { + this.onEnd(status); + this.ended = true; + return false; + } + if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) { + if (this.options.to === 'string') { + this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out))); + } else { + this.onData(utils.shrinkBuf(strm.output, strm.next_out)); + } + } + } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END); + + // Finalize on the last chunk. + if (_mode === Z_FINISH) { + status = zlib_deflate.deflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return status === Z_OK; + } + + // callback interim results if Z_SYNC_FLUSH. + if (_mode === Z_SYNC_FLUSH) { + this.onEnd(Z_OK); + strm.avail_out = 0; + return true; + } + + return true; +}; + + +/** + * Deflate#onData(chunk) -> Void + * - chunk (Uint8Array|Array|String): output data. Type of array depends + * on js engine support. When string output requested, each chunk + * will be string. + * + * By default, stores data blocks in `chunks[]` property and glue + * those in `onEnd`. Override this handler, if you need another behaviour. + **/ +Deflate.prototype.onData = function (chunk) { + this.chunks.push(chunk); +}; + + +/** + * Deflate#onEnd(status) -> Void + * - status (Number): deflate status. 0 (Z_OK) on success, + * other if not. + * + * Called once after you tell deflate that the input stream is + * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH) + * or if an error happened. By default - join collected chunks, + * free memory and fill `results` / `err` properties. + **/ +Deflate.prototype.onEnd = function (status) { + // On success - join + if (status === Z_OK) { + if (this.options.to === 'string') { + this.result = this.chunks.join(''); + } else { + this.result = utils.flattenChunks(this.chunks); + } + } + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; +}; + + +/** + * deflate(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * Compress `data` with deflate algorithm and `options`. + * + * Supported options are: + * + * - level + * - windowBits + * - memLevel + * - strategy + * - dictionary + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Sugar (options): + * + * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify + * negative windowBits implicitly. + * - `to` (String) - if equal to 'string', then result will be "binary string" + * (each char code [0..255]) + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , data = Uint8Array([1,2,3,4,5,6,7,8,9]); + * + * console.log(pako.deflate(data)); + * ``` + **/ +function deflate(input, options) { + var deflator = new Deflate(options); + + deflator.push(input, true); + + // That will never happens, if you don't cheat with options :) + if (deflator.err) { throw deflator.msg || msg[deflator.err]; } + + return deflator.result; +} + + +/** + * deflateRaw(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * The same as [[deflate]], but creates raw data, without wrapper + * (header and adler32 crc). + **/ +function deflateRaw(input, options) { + options = options || {}; + options.raw = true; + return deflate(input, options); +} + + +/** + * gzip(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to compress. + * - options (Object): zlib deflate options. + * + * The same as [[deflate]], but create gzip wrapper instead of + * deflate one. + **/ +function gzip(input, options) { + options = options || {}; + options.gzip = true; + return deflate(input, options); +} + + +exports.Deflate = Deflate; +exports.deflate = deflate; +exports.deflateRaw = deflateRaw; +exports.gzip = gzip; + +},{"./utils/common":89,"./utils/strings":90,"./zlib/deflate":94,"./zlib/messages":99,"./zlib/zstream":101}],88:[function(require,module,exports){ +'use strict'; + + +var zlib_inflate = require('./zlib/inflate'); +var utils = require('./utils/common'); +var strings = require('./utils/strings'); +var c = require('./zlib/constants'); +var msg = require('./zlib/messages'); +var ZStream = require('./zlib/zstream'); +var GZheader = require('./zlib/gzheader'); + +var toString = Object.prototype.toString; + +/** + * class Inflate + * + * Generic JS-style wrapper for zlib calls. If you don't need + * streaming behaviour - use more simple functions: [[inflate]] + * and [[inflateRaw]]. + **/ + +/* internal + * inflate.chunks -> Array + * + * Chunks of output data, if [[Inflate#onData]] not overridden. + **/ + +/** + * Inflate.result -> Uint8Array|Array|String + * + * Uncompressed result, generated by default [[Inflate#onData]] + * and [[Inflate#onEnd]] handlers. Filled after you push last chunk + * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you + * push a chunk with explicit flush (call [[Inflate#push]] with + * `Z_SYNC_FLUSH` param). + **/ + +/** + * Inflate.err -> Number + * + * Error code after inflate finished. 0 (Z_OK) on success. + * Should be checked if broken data possible. + **/ + +/** + * Inflate.msg -> String + * + * Error message, if [[Inflate.err]] != 0 + **/ + + +/** + * new Inflate(options) + * - options (Object): zlib inflate options. + * + * Creates new inflator instance with specified params. Throws exception + * on bad params. Supported options: + * + * - `windowBits` + * - `dictionary` + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information on these. + * + * Additional options, for internal needs: + * + * - `chunkSize` - size of generated data chunks (16K by default) + * - `raw` (Boolean) - do raw inflate + * - `to` (String) - if equal to 'string', then result will be converted + * from utf8 to utf16 (javascript) string. When string output requested, + * chunk length can differ from `chunkSize`, depending on content. + * + * By default, when no options set, autodetect deflate/gzip data format via + * wrapper header. + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9]) + * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]); + * + * var inflate = new pako.Inflate({ level: 3}); + * + * inflate.push(chunk1, false); + * inflate.push(chunk2, true); // true -> last chunk + * + * if (inflate.err) { throw new Error(inflate.err); } + * + * console.log(inflate.result); + * ``` + **/ +function Inflate(options) { + if (!(this instanceof Inflate)) return new Inflate(options); + + this.options = utils.assign({ + chunkSize: 16384, + windowBits: 0, + to: '' + }, options || {}); + + var opt = this.options; + + // Force window size for `raw` data, if not set directly, + // because we have no header for autodetect. + if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) { + opt.windowBits = -opt.windowBits; + if (opt.windowBits === 0) { opt.windowBits = -15; } + } + + // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate + if ((opt.windowBits >= 0) && (opt.windowBits < 16) && + !(options && options.windowBits)) { + opt.windowBits += 32; + } + + // Gzip header has no info about windows size, we can do autodetect only + // for deflate. So, if window size not set, force it to max when gzip possible + if ((opt.windowBits > 15) && (opt.windowBits < 48)) { + // bit 3 (16) -> gzipped data + // bit 4 (32) -> autodetect gzip/deflate + if ((opt.windowBits & 15) === 0) { + opt.windowBits |= 15; + } + } + + this.err = 0; // error code, if happens (0 = Z_OK) + this.msg = ''; // error message + this.ended = false; // used to avoid multiple onEnd() calls + this.chunks = []; // chunks of compressed data + + this.strm = new ZStream(); + this.strm.avail_out = 0; + + var status = zlib_inflate.inflateInit2( + this.strm, + opt.windowBits + ); + + if (status !== c.Z_OK) { + throw new Error(msg[status]); + } + + this.header = new GZheader(); + + zlib_inflate.inflateGetHeader(this.strm, this.header); +} + +/** + * Inflate#push(data[, mode]) -> Boolean + * - data (Uint8Array|Array|ArrayBuffer|String): input data + * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. + * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. + * + * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with + * new output chunks. Returns `true` on success. The last data block must have + * mode Z_FINISH (or `true`). That will flush internal pending buffers and call + * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you + * can use mode Z_SYNC_FLUSH, keeping the decompression context. + * + * On fail call [[Inflate#onEnd]] with error code and return false. + * + * We strongly recommend to use `Uint8Array` on input for best speed (output + * format is detected automatically). Also, don't skip last param and always + * use the same type in your code (boolean or number). That will improve JS speed. + * + * For regular `Array`-s make sure all elements are [0..255]. + * + * ##### Example + * + * ```javascript + * push(chunk, false); // push one of data chunks + * ... + * push(chunk, true); // push last chunk + * ``` + **/ +Inflate.prototype.push = function (data, mode) { + var strm = this.strm; + var chunkSize = this.options.chunkSize; + var dictionary = this.options.dictionary; + var status, _mode; + var next_out_utf8, tail, utf8str; + var dict; + + // Flag to properly process Z_BUF_ERROR on testing inflate call + // when we check that all output data was flushed. + var allowBufError = false; + + if (this.ended) { return false; } + _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH); + + // Convert data if needed + if (typeof data === 'string') { + // Only binary strings can be decompressed on practice + strm.input = strings.binstring2buf(data); + } else if (toString.call(data) === '[object ArrayBuffer]') { + strm.input = new Uint8Array(data); + } else { + strm.input = data; + } + + strm.next_in = 0; + strm.avail_in = strm.input.length; + + do { + if (strm.avail_out === 0) { + strm.output = new utils.Buf8(chunkSize); + strm.next_out = 0; + strm.avail_out = chunkSize; + } + + status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */ + + if (status === c.Z_NEED_DICT && dictionary) { + // Convert data if needed + if (typeof dictionary === 'string') { + dict = strings.string2buf(dictionary); + } else if (toString.call(dictionary) === '[object ArrayBuffer]') { + dict = new Uint8Array(dictionary); + } else { + dict = dictionary; + } + + status = zlib_inflate.inflateSetDictionary(this.strm, dict); + + } + + if (status === c.Z_BUF_ERROR && allowBufError === true) { + status = c.Z_OK; + allowBufError = false; + } + + if (status !== c.Z_STREAM_END && status !== c.Z_OK) { + this.onEnd(status); + this.ended = true; + return false; + } + + if (strm.next_out) { + if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) { + + if (this.options.to === 'string') { + + next_out_utf8 = strings.utf8border(strm.output, strm.next_out); + + tail = strm.next_out - next_out_utf8; + utf8str = strings.buf2string(strm.output, next_out_utf8); + + // move tail + strm.next_out = tail; + strm.avail_out = chunkSize - tail; + if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); } + + this.onData(utf8str); + + } else { + this.onData(utils.shrinkBuf(strm.output, strm.next_out)); + } + } + } + + // When no more input data, we should check that internal inflate buffers + // are flushed. The only way to do it when avail_out = 0 - run one more + // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR. + // Here we set flag to process this error properly. + // + // NOTE. Deflate does not return error in this case and does not needs such + // logic. + if (strm.avail_in === 0 && strm.avail_out === 0) { + allowBufError = true; + } + + } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END); + + if (status === c.Z_STREAM_END) { + _mode = c.Z_FINISH; + } + + // Finalize on the last chunk. + if (_mode === c.Z_FINISH) { + status = zlib_inflate.inflateEnd(this.strm); + this.onEnd(status); + this.ended = true; + return status === c.Z_OK; + } + + // callback interim results if Z_SYNC_FLUSH. + if (_mode === c.Z_SYNC_FLUSH) { + this.onEnd(c.Z_OK); + strm.avail_out = 0; + return true; + } + + return true; +}; + + +/** + * Inflate#onData(chunk) -> Void + * - chunk (Uint8Array|Array|String): output data. Type of array depends + * on js engine support. When string output requested, each chunk + * will be string. + * + * By default, stores data blocks in `chunks[]` property and glue + * those in `onEnd`. Override this handler, if you need another behaviour. + **/ +Inflate.prototype.onData = function (chunk) { + this.chunks.push(chunk); +}; + + +/** + * Inflate#onEnd(status) -> Void + * - status (Number): inflate status. 0 (Z_OK) on success, + * other if not. + * + * Called either after you tell inflate that the input stream is + * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH) + * or if an error happened. By default - join collected chunks, + * free memory and fill `results` / `err` properties. + **/ +Inflate.prototype.onEnd = function (status) { + // On success - join + if (status === c.Z_OK) { + if (this.options.to === 'string') { + // Glue & convert here, until we teach pako to send + // utf8 aligned strings to onData + this.result = this.chunks.join(''); + } else { + this.result = utils.flattenChunks(this.chunks); + } + } + this.chunks = []; + this.err = status; + this.msg = this.strm.msg; +}; + + +/** + * inflate(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * Decompress `data` with inflate/ungzip and `options`. Autodetect + * format via wrapper header by default. That's why we don't provide + * separate `ungzip` method. + * + * Supported options are: + * + * - windowBits + * + * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) + * for more information. + * + * Sugar (options): + * + * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify + * negative windowBits implicitly. + * - `to` (String) - if equal to 'string', then result will be converted + * from utf8 to utf16 (javascript) string. When string output requested, + * chunk length can differ from `chunkSize`, depending on content. + * + * + * ##### Example: + * + * ```javascript + * var pako = require('pako') + * , input = pako.deflate([1,2,3,4,5,6,7,8,9]) + * , output; + * + * try { + * output = pako.inflate(input); + * } catch (err) + * console.log(err); + * } + * ``` + **/ +function inflate(input, options) { + var inflator = new Inflate(options); + + inflator.push(input, true); + + // That will never happens, if you don't cheat with options :) + if (inflator.err) { throw inflator.msg || msg[inflator.err]; } + + return inflator.result; +} + + +/** + * inflateRaw(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * The same as [[inflate]], but creates raw data, without wrapper + * (header and adler32 crc). + **/ +function inflateRaw(input, options) { + options = options || {}; + options.raw = true; + return inflate(input, options); +} + + +/** + * ungzip(data[, options]) -> Uint8Array|Array|String + * - data (Uint8Array|Array|String): input data to decompress. + * - options (Object): zlib inflate options. + * + * Just shortcut to [[inflate]], because it autodetects format + * by header.content. Done for convenience. + **/ + + +exports.Inflate = Inflate; +exports.inflate = inflate; +exports.inflateRaw = inflateRaw; +exports.ungzip = inflate; + +},{"./utils/common":89,"./utils/strings":90,"./zlib/constants":92,"./zlib/gzheader":95,"./zlib/inflate":97,"./zlib/messages":99,"./zlib/zstream":101}],89:[function(require,module,exports){ +arguments[4][36][0].apply(exports,arguments) +},{"dup":36}],90:[function(require,module,exports){ +// String encode/decode helpers +'use strict'; + + +var utils = require('./common'); + + +// Quick check if we can use fast array to bin string conversion +// +// - apply(Array) can fail on Android 2.2 +// - apply(Uint8Array) can fail on iOS 5.1 Safari +// +var STR_APPLY_OK = true; +var STR_APPLY_UIA_OK = true; + +try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; } +try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; } + + +// Table with utf8 lengths (calculated by first byte of sequence) +// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS, +// because max possible codepoint is 0x10ffff +var _utf8len = new utils.Buf8(256); +for (var q = 0; q < 256; q++) { + _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1); +} +_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start + + +// convert string to array (typed, when possible) +exports.string2buf = function (str) { + var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; + + // count binary size + for (m_pos = 0; m_pos < str_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { + c2 = str.charCodeAt(m_pos + 1); + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); + m_pos++; + } + } + buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4; + } + + // allocate buffer + buf = new utils.Buf8(buf_len); + + // convert + for (i = 0, m_pos = 0; i < buf_len; m_pos++) { + c = str.charCodeAt(m_pos); + if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { + c2 = str.charCodeAt(m_pos + 1); + if ((c2 & 0xfc00) === 0xdc00) { + c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); + m_pos++; + } + } + if (c < 0x80) { + /* one byte */ + buf[i++] = c; + } else if (c < 0x800) { + /* two bytes */ + buf[i++] = 0xC0 | (c >>> 6); + buf[i++] = 0x80 | (c & 0x3f); + } else if (c < 0x10000) { + /* three bytes */ + buf[i++] = 0xE0 | (c >>> 12); + buf[i++] = 0x80 | (c >>> 6 & 0x3f); + buf[i++] = 0x80 | (c & 0x3f); + } else { + /* four bytes */ + buf[i++] = 0xf0 | (c >>> 18); + buf[i++] = 0x80 | (c >>> 12 & 0x3f); + buf[i++] = 0x80 | (c >>> 6 & 0x3f); + buf[i++] = 0x80 | (c & 0x3f); + } + } + + return buf; +}; + +// Helper (used in 2 places) +function buf2binstring(buf, len) { + // use fallback for big arrays to avoid stack overflow + if (len < 65537) { + if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) { + return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len)); + } + } + + var result = ''; + for (var i = 0; i < len; i++) { + result += String.fromCharCode(buf[i]); + } + return result; +} + + +// Convert byte array to binary string +exports.buf2binstring = function (buf) { + return buf2binstring(buf, buf.length); +}; + + +// Convert binary string (typed, when possible) +exports.binstring2buf = function (str) { + var buf = new utils.Buf8(str.length); + for (var i = 0, len = buf.length; i < len; i++) { + buf[i] = str.charCodeAt(i); + } + return buf; +}; + + +// convert array to string +exports.buf2string = function (buf, max) { + var i, out, c, c_len; + var len = max || buf.length; + + // Reserve max possible length (2 words per char) + // NB: by unknown reasons, Array is significantly faster for + // String.fromCharCode.apply than Uint16Array. + var utf16buf = new Array(len * 2); + + for (out = 0, i = 0; i < len;) { + c = buf[i++]; + // quick process ascii + if (c < 0x80) { utf16buf[out++] = c; continue; } + + c_len = _utf8len[c]; + // skip 5 & 6 byte codes + if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; } + + // apply mask on first byte + c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07; + // join the rest + while (c_len > 1 && i < len) { + c = (c << 6) | (buf[i++] & 0x3f); + c_len--; + } + + // terminated by end of string? + if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; } + + if (c < 0x10000) { + utf16buf[out++] = c; + } else { + c -= 0x10000; + utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff); + utf16buf[out++] = 0xdc00 | (c & 0x3ff); + } + } + + return buf2binstring(utf16buf, out); +}; + + +// Calculate max possible position in utf8 buffer, +// that will not break sequence. If that's not possible +// - (very small limits) return max size as is. +// +// buf[] - utf8 bytes array +// max - length limit (mandatory); +exports.utf8border = function (buf, max) { + var pos; + + max = max || buf.length; + if (max > buf.length) { max = buf.length; } + + // go back from last position, until start of sequence found + pos = max - 1; + while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; } + + // Very small and broken sequence, + // return max, because we should return something anyway. + if (pos < 0) { return max; } + + // If we came to start of buffer - that means buffer is too small, + // return max too. + if (pos === 0) { return max; } + + return (pos + _utf8len[buf[pos]] > max) ? pos : max; +}; + +},{"./common":89}],91:[function(require,module,exports){ +arguments[4][37][0].apply(exports,arguments) +},{"dup":37}],92:[function(require,module,exports){ +arguments[4][38][0].apply(exports,arguments) +},{"dup":38}],93:[function(require,module,exports){ +arguments[4][39][0].apply(exports,arguments) +},{"dup":39}],94:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +var utils = require('../utils/common'); +var trees = require('./trees'); +var adler32 = require('./adler32'); +var crc32 = require('./crc32'); +var msg = require('./messages'); + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +/* Allowed flush values; see deflate() and inflate() below for details */ +var Z_NO_FLUSH = 0; +var Z_PARTIAL_FLUSH = 1; +//var Z_SYNC_FLUSH = 2; +var Z_FULL_FLUSH = 3; +var Z_FINISH = 4; +var Z_BLOCK = 5; +//var Z_TREES = 6; + + +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ +var Z_OK = 0; +var Z_STREAM_END = 1; +//var Z_NEED_DICT = 2; +//var Z_ERRNO = -1; +var Z_STREAM_ERROR = -2; +var Z_DATA_ERROR = -3; +//var Z_MEM_ERROR = -4; +var Z_BUF_ERROR = -5; +//var Z_VERSION_ERROR = -6; + + +/* compression levels */ +//var Z_NO_COMPRESSION = 0; +//var Z_BEST_SPEED = 1; +//var Z_BEST_COMPRESSION = 9; +var Z_DEFAULT_COMPRESSION = -1; + + +var Z_FILTERED = 1; +var Z_HUFFMAN_ONLY = 2; +var Z_RLE = 3; +var Z_FIXED = 4; +var Z_DEFAULT_STRATEGY = 0; + +/* Possible values of the data_type field (though see inflate()) */ +//var Z_BINARY = 0; +//var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; + + +/* The deflate compression method */ +var Z_DEFLATED = 8; + +/*============================================================================*/ + + +var MAX_MEM_LEVEL = 9; +/* Maximum value for memLevel in deflateInit2 */ +var MAX_WBITS = 15; +/* 32K LZ77 window */ +var DEF_MEM_LEVEL = 8; + + +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ +var LITERALS = 256; +/* number of literal bytes 0..255 */ +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ +var D_CODES = 30; +/* number of distance codes */ +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ + +var MIN_MATCH = 3; +var MAX_MATCH = 258; +var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1); + +var PRESET_DICT = 0x20; + +var INIT_STATE = 42; +var EXTRA_STATE = 69; +var NAME_STATE = 73; +var COMMENT_STATE = 91; +var HCRC_STATE = 103; +var BUSY_STATE = 113; +var FINISH_STATE = 666; + +var BS_NEED_MORE = 1; /* block not completed, need more input or more output */ +var BS_BLOCK_DONE = 2; /* block flush performed */ +var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */ +var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */ + +var OS_CODE = 0x03; // Unix :) . Don't detect, use this default. + +function err(strm, errorCode) { + strm.msg = msg[errorCode]; + return errorCode; +} + +function rank(f) { + return ((f) << 1) - ((f) > 4 ? 9 : 0); +} + +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } + + +/* ========================================================================= + * Flush as much pending output as possible. All deflate() output goes + * through this function so some applications may wish to modify it + * to avoid allocating a large strm->output buffer and copying into it. + * (See also read_buf()). + */ +function flush_pending(strm) { + var s = strm.state; + + //_tr_flush_bits(s); + var len = s.pending; + if (len > strm.avail_out) { + len = strm.avail_out; + } + if (len === 0) { return; } + + utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out); + strm.next_out += len; + s.pending_out += len; + strm.total_out += len; + strm.avail_out -= len; + s.pending -= len; + if (s.pending === 0) { + s.pending_out = 0; + } +} + + +function flush_block_only(s, last) { + trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last); + s.block_start = s.strstart; + flush_pending(s.strm); +} + + +function put_byte(s, b) { + s.pending_buf[s.pending++] = b; +} + + +/* ========================================================================= + * Put a short in the pending buffer. The 16-bit value is put in MSB order. + * IN assertion: the stream state is correct and there is enough room in + * pending_buf. + */ +function putShortMSB(s, b) { +// put_byte(s, (Byte)(b >> 8)); +// put_byte(s, (Byte)(b & 0xff)); + s.pending_buf[s.pending++] = (b >>> 8) & 0xff; + s.pending_buf[s.pending++] = b & 0xff; +} + + +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->input buffer and copying from it. + * (See also flush_pending()). + */ +function read_buf(strm, buf, start, size) { + var len = strm.avail_in; + + if (len > size) { len = size; } + if (len === 0) { return 0; } + + strm.avail_in -= len; + + // zmemcpy(buf, strm->next_in, len); + utils.arraySet(buf, strm.input, strm.next_in, len, start); + if (strm.state.wrap === 1) { + strm.adler = adler32(strm.adler, buf, len, start); + } + + else if (strm.state.wrap === 2) { + strm.adler = crc32(strm.adler, buf, len, start); + } + + strm.next_in += len; + strm.total_in += len; + + return len; +} + + +/* =========================================================================== + * Set match_start to the longest match starting at the given string and + * return its length. Matches shorter or equal to prev_length are discarded, + * in which case the result is equal to prev_length and match_start is + * garbage. + * IN assertions: cur_match is the head of the hash chain for the current + * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 + * OUT assertion: the match length is not greater than s->lookahead. + */ +function longest_match(s, cur_match) { + var chain_length = s.max_chain_length; /* max hash chain length */ + var scan = s.strstart; /* current string */ + var match; /* matched string */ + var len; /* length of current match */ + var best_len = s.prev_length; /* best match length so far */ + var nice_match = s.nice_match; /* stop if match long enough */ + var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ? + s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/; + + var _win = s.window; // shortcut + + var wmask = s.w_mask; + var prev = s.prev; + + /* Stop when cur_match becomes <= limit. To simplify the code, + * we prevent matches with the string of window index 0. + */ + + var strend = s.strstart + MAX_MATCH; + var scan_end1 = _win[scan + best_len - 1]; + var scan_end = _win[scan + best_len]; + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + /* Do not waste too much time if we already have a good match: */ + if (s.prev_length >= s.good_match) { + chain_length >>= 2; + } + /* Do not look for matches beyond the end of the input. This is necessary + * to make deflate deterministic. + */ + if (nice_match > s.lookahead) { nice_match = s.lookahead; } + + // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + do { + // Assert(cur_match < s->strstart, "no future"); + match = cur_match; + + /* Skip to next match if the match length cannot increase + * or if the match length is less than 2. Note that the checks below + * for insufficient lookahead only occur occasionally for performance + * reasons. Therefore uninitialized memory will be accessed, and + * conditional jumps will be made that depend on those values. + * However the length of the match is limited to the lookahead, so + * the output of deflate is not affected by the uninitialized values. + */ + + if (_win[match + best_len] !== scan_end || + _win[match + best_len - 1] !== scan_end1 || + _win[match] !== _win[scan] || + _win[++match] !== _win[scan + 1]) { + continue; + } + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2; + match++; + // Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + /*jshint noempty:false*/ + } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && + scan < strend); + + // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (strend - scan); + scan = strend - MAX_MATCH; + + if (len > best_len) { + s.match_start = cur_match; + best_len = len; + if (len >= nice_match) { + break; + } + scan_end1 = _win[scan + best_len - 1]; + scan_end = _win[scan + best_len]; + } + } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); + + if (best_len <= s.lookahead) { + return best_len; + } + return s.lookahead; +} + + +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +function fill_window(s) { + var _w_size = s.w_size; + var p, n, m, more, str; + + //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); + + do { + more = s.window_size - s.lookahead - s.strstart; + + // JS ints have 32 bit, block below not needed + /* Deal with !@#$% 64K limit: */ + //if (sizeof(int) <= 2) { + // if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + // more = wsize; + // + // } else if (more == (unsigned)(-1)) { + // /* Very unlikely, but possible on 16 bit machine if + // * strstart == 0 && lookahead == 1 (input done a byte at time) + // */ + // more--; + // } + //} + + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { + + utils.arraySet(s.window, s.window, _w_size, _w_size, 0); + s.match_start -= _w_size; + s.strstart -= _w_size; + /* we now have strstart >= MAX_DIST */ + s.block_start -= _w_size; + + /* Slide the hash table (could be avoided with 32 bit values + at the expense of memory usage). We slide even when level == 0 + to keep the hash table consistent if we switch back to level > 0 + later. (Using level 0 permanently is not an optimal usage of + zlib, so we don't care about this pathological case.) + */ + + n = s.hash_size; + p = n; + do { + m = s.head[--p]; + s.head[p] = (m >= _w_size ? m - _w_size : 0); + } while (--n); + + n = _w_size; + p = n; + do { + m = s.prev[--p]; + s.prev[p] = (m >= _w_size ? m - _w_size : 0); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); + + more += _w_size; + } + if (s.strm.avail_in === 0) { + break; + } + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + //Assert(more >= 2, "more < 2"); + n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); + s.lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s.lookahead + s.insert >= MIN_MATCH) { + str = s.strstart - s.insert; + s.ins_h = s.window[str]; + + /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask; +//#if MIN_MATCH != 3 +// Call update_hash() MIN_MATCH-3 more times +//#endif + while (s.insert) { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = str; + str++; + s.insert--; + if (s.lookahead + s.insert < MIN_MATCH) { + break; + } + } + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ +// if (s.high_water < s.window_size) { +// var curr = s.strstart + s.lookahead; +// var init = 0; +// +// if (s.high_water < curr) { +// /* Previous high water mark below current data -- zero WIN_INIT +// * bytes or up to end of window, whichever is less. +// */ +// init = s.window_size - curr; +// if (init > WIN_INIT) +// init = WIN_INIT; +// zmemzero(s->window + curr, (unsigned)init); +// s->high_water = curr + init; +// } +// else if (s->high_water < (ulg)curr + WIN_INIT) { +// /* High water mark at or above current data, but below current data +// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up +// * to end of window, whichever is less. +// */ +// init = (ulg)curr + WIN_INIT - s->high_water; +// if (init > s->window_size - s->high_water) +// init = s->window_size - s->high_water; +// zmemzero(s->window + s->high_water, (unsigned)init); +// s->high_water += init; +// } +// } +// +// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, +// "not enough room for search"); +} + +/* =========================================================================== + * Copy without compression as much as possible from the input stream, return + * the current block state. + * This function does not insert new strings in the dictionary since + * uncompressible data is probably not useful. This function is used + * only for the level=0 compression option. + * NOTE: this function should be optimized to avoid extra copying from + * window to pending_buf. + */ +function deflate_stored(s, flush) { + /* Stored blocks are limited to 0xffff bytes, pending_buf is limited + * to pending_buf_size, and each stored block has a 5 byte header: + */ + var max_block_size = 0xffff; + + if (max_block_size > s.pending_buf_size - 5) { + max_block_size = s.pending_buf_size - 5; + } + + /* Copy as much as possible from input to output: */ + for (;;) { + /* Fill the window as much as possible: */ + if (s.lookahead <= 1) { + + //Assert(s->strstart < s->w_size+MAX_DIST(s) || + // s->block_start >= (long)s->w_size, "slide too late"); +// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) || +// s.block_start >= s.w_size)) { +// throw new Error("slide too late"); +// } + + fill_window(s); + if (s.lookahead === 0 && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + + if (s.lookahead === 0) { + break; + } + /* flush the current block */ + } + //Assert(s->block_start >= 0L, "block gone"); +// if (s.block_start < 0) throw new Error("block gone"); + + s.strstart += s.lookahead; + s.lookahead = 0; + + /* Emit a stored block if pending_buf will be full: */ + var max_start = s.block_start + max_block_size; + + if (s.strstart === 0 || s.strstart >= max_start) { + /* strstart == 0 is possible when wraparound on 16-bit machine */ + s.lookahead = s.strstart - max_start; + s.strstart = max_start; + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + + + } + /* Flush if we may have to slide, otherwise block_start may become + * negative and the data will be gone: + */ + if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + + s.insert = 0; + + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + + if (s.strstart > s.block_start) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_NEED_MORE; +} + +/* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. + */ +function deflate_fast(s, flush) { + var hash_head; /* head of the hash chain */ + var bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { + break; /* flush the current block */ + } + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + } + if (s.match_length >= MIN_MATCH) { + // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only + + /*** _tr_tally_dist(s, s.strstart - s.match_start, + s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ + if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) { + s.match_length--; /* string at strstart already in table */ + do { + s.strstart++; + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s.match_length !== 0); + s.strstart++; + } else + { + s.strstart += s.match_length; + s.match_length = 0; + s.ins_h = s.window[s.strstart]; + /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask; + +//#if MIN_MATCH != 3 +// Call UPDATE_HASH() MIN_MATCH-3 more times +//#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s.window[s.strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1); + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ +function deflate_slow(s, flush) { + var hash_head; /* head of hash chain */ + var bflush; /* set if current block must be flushed */ + + var max_insert; + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s.lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = 0/*NIL*/; + if (s.lookahead >= MIN_MATCH) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + + /* Find the longest match, discarding those <= prev_length. + */ + s.prev_length = s.match_length; + s.prev_match = s.match_start; + s.match_length = MIN_MATCH - 1; + + if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match && + s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s.match_length = longest_match(s, hash_head); + /* longest_match() sets match_start */ + + if (s.match_length <= 5 && + (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) { + + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s.match_length = MIN_MATCH - 1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { + max_insert = s.strstart + s.lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ + + //check_match(s, s.strstart-1, s.prev_match, s.prev_length); + + /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, + s.prev_length - MIN_MATCH, bflush);***/ + bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s.lookahead -= s.prev_length - 1; + s.prev_length -= 2; + do { + if (++s.strstart <= max_insert) { + /*** INSERT_STRING(s, s.strstart, hash_head); ***/ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask; + hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; + s.head[s.ins_h] = s.strstart; + /***/ + } + } while (--s.prev_length !== 0); + s.match_available = 0; + s.match_length = MIN_MATCH - 1; + s.strstart++; + + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + } else if (s.match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + if (bflush) { + /*** FLUSH_BLOCK_ONLY(s, 0) ***/ + flush_block_only(s, false); + /***/ + } + s.strstart++; + s.lookahead--; + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s.match_available = 1; + s.strstart++; + s.lookahead--; + } + } + //Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s.match_available) { + //Tracevv((stderr,"%c", s->window[s->strstart-1])); + /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]); + + s.match_available = 0; + } + s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + + return BS_BLOCK_DONE; +} + + +/* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ +function deflate_rle(s, flush) { + var bflush; /* set if current block must be flushed */ + var prev; /* byte at distance one to match */ + var scan, strend; /* scan goes up to strend for length of run */ + + var _win = s.window; + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest run, plus one for the unrolled loop. + */ + if (s.lookahead <= MAX_MATCH) { + fill_window(s); + if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + if (s.lookahead === 0) { break; } /* flush the current block */ + } + + /* See how many times the previous byte repeats */ + s.match_length = 0; + if (s.lookahead >= MIN_MATCH && s.strstart > 0) { + scan = s.strstart - 1; + prev = _win[scan]; + if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { + strend = s.strstart + MAX_MATCH; + do { + /*jshint noempty:false*/ + } while (prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + prev === _win[++scan] && prev === _win[++scan] && + scan < strend); + s.match_length = MAX_MATCH - (strend - scan); + if (s.match_length > s.lookahead) { + s.match_length = s.lookahead; + } + } + //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + } + + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (s.match_length >= MIN_MATCH) { + //check_match(s, s.strstart, s.strstart - 1, s.match_length); + + /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ + bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH); + + s.lookahead -= s.match_length; + s.strstart += s.match_length; + s.match_length = 0; + } else { + /* No match, output a literal byte */ + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + + s.lookahead--; + s.strstart++; + } + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* =========================================================================== + * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. + * (It will be regenerated if this run of deflate switches away from Huffman.) + */ +function deflate_huff(s, flush) { + var bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we have a literal to write. */ + if (s.lookahead === 0) { + fill_window(s); + if (s.lookahead === 0) { + if (flush === Z_NO_FLUSH) { + return BS_NEED_MORE; + } + break; /* flush the current block */ + } + } + + /* Output a literal byte */ + s.match_length = 0; + //Tracevv((stderr,"%c", s->window[s->strstart])); + /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ + bflush = trees._tr_tally(s, 0, s.window[s.strstart]); + s.lookahead--; + s.strstart++; + if (bflush) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + } + s.insert = 0; + if (flush === Z_FINISH) { + /*** FLUSH_BLOCK(s, 1); ***/ + flush_block_only(s, true); + if (s.strm.avail_out === 0) { + return BS_FINISH_STARTED; + } + /***/ + return BS_FINISH_DONE; + } + if (s.last_lit) { + /*** FLUSH_BLOCK(s, 0); ***/ + flush_block_only(s, false); + if (s.strm.avail_out === 0) { + return BS_NEED_MORE; + } + /***/ + } + return BS_BLOCK_DONE; +} + +/* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ +function Config(good_length, max_lazy, nice_length, max_chain, func) { + this.good_length = good_length; + this.max_lazy = max_lazy; + this.nice_length = nice_length; + this.max_chain = max_chain; + this.func = func; +} + +var configuration_table; + +configuration_table = [ + /* good lazy nice chain */ + new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ + new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ + new Config(4, 5, 16, 8, deflate_fast), /* 2 */ + new Config(4, 6, 32, 32, deflate_fast), /* 3 */ + + new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ + new Config(8, 16, 32, 32, deflate_slow), /* 5 */ + new Config(8, 16, 128, 128, deflate_slow), /* 6 */ + new Config(8, 32, 128, 256, deflate_slow), /* 7 */ + new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ + new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ +]; + + +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +function lm_init(s) { + s.window_size = 2 * s.w_size; + + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + + /* Set the default configuration parameters: + */ + s.max_lazy_match = configuration_table[s.level].max_lazy; + s.good_match = configuration_table[s.level].good_length; + s.nice_match = configuration_table[s.level].nice_length; + s.max_chain_length = configuration_table[s.level].max_chain; + + s.strstart = 0; + s.block_start = 0; + s.lookahead = 0; + s.insert = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + s.ins_h = 0; +} + + +function DeflateState() { + this.strm = null; /* pointer back to this zlib stream */ + this.status = 0; /* as the name implies */ + this.pending_buf = null; /* output still pending */ + this.pending_buf_size = 0; /* size of pending_buf */ + this.pending_out = 0; /* next pending byte to output to the stream */ + this.pending = 0; /* nb of bytes in the pending buffer */ + this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ + this.gzhead = null; /* gzip header information to write */ + this.gzindex = 0; /* where in extra, name, or comment */ + this.method = Z_DEFLATED; /* can only be DEFLATED */ + this.last_flush = -1; /* value of flush param for previous deflate call */ + + this.w_size = 0; /* LZ77 window size (32K by default) */ + this.w_bits = 0; /* log2(w_size) (8..16) */ + this.w_mask = 0; /* w_size - 1 */ + + this.window = null; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. + */ + + this.window_size = 0; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ + + this.prev = null; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ + + this.head = null; /* Heads of the hash chains or NIL. */ + + this.ins_h = 0; /* hash index of string to be inserted */ + this.hash_size = 0; /* number of elements in hash table */ + this.hash_bits = 0; /* log2(hash_size) */ + this.hash_mask = 0; /* hash_size-1 */ + + this.hash_shift = 0; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ + + this.block_start = 0; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ + + this.match_length = 0; /* length of best match */ + this.prev_match = 0; /* previous match */ + this.match_available = 0; /* set if previous match exists */ + this.strstart = 0; /* start of string to insert */ + this.match_start = 0; /* start of matching string */ + this.lookahead = 0; /* number of valid bytes ahead in window */ + + this.prev_length = 0; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ + + this.max_chain_length = 0; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ + + this.max_lazy_match = 0; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ + // That's alias to max_lazy_match, don't use directly + //this.max_insert_length = 0; + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ + + this.level = 0; /* compression level (1..9) */ + this.strategy = 0; /* favor or force Huffman coding*/ + + this.good_match = 0; + /* Use a faster search when the previous match is longer than this */ + + this.nice_match = 0; /* Stop searching when current match exceeds this */ + + /* used by trees.c: */ + + /* Didn't use ct_data typedef below to suppress compiler warning */ + + // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ + + // Use flat array of DOUBLE size, with interleaved fata, + // because JS does not support effective + this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2); + this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2); + this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2); + zero(this.dyn_ltree); + zero(this.dyn_dtree); + zero(this.bl_tree); + + this.l_desc = null; /* desc. for literal tree */ + this.d_desc = null; /* desc. for distance tree */ + this.bl_desc = null; /* desc. for bit length tree */ + + //ush bl_count[MAX_BITS+1]; + this.bl_count = new utils.Buf16(MAX_BITS + 1); + /* number of codes at each bit length for an optimal tree */ + + //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */ + zero(this.heap); + + this.heap_len = 0; /* number of elements in the heap */ + this.heap_max = 0; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ + + this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; + zero(this.depth); + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ + + this.l_buf = 0; /* buffer index for literals or lengths */ + + this.lit_bufsize = 0; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ + + this.last_lit = 0; /* running index in l_buf */ + + this.d_buf = 0; + /* Buffer index for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ + + this.opt_len = 0; /* bit length of current block with optimal trees */ + this.static_len = 0; /* bit length of current block with static trees */ + this.matches = 0; /* number of string matches in current block */ + this.insert = 0; /* bytes at end of window left to insert */ + + + this.bi_buf = 0; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + this.bi_valid = 0; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ + + // Used for window memory init. We safely ignore it for JS. That makes + // sense only for pointers and memory check tools. + //this.high_water = 0; + /* High water mark offset in window for initialized bytes -- bytes above + * this are set to zero in order to avoid memory check warnings when + * longest match routines access bytes past the input. This is then + * updated to the new high water mark. + */ +} + + +function deflateResetKeep(strm) { + var s; + + if (!strm || !strm.state) { + return err(strm, Z_STREAM_ERROR); + } + + strm.total_in = strm.total_out = 0; + strm.data_type = Z_UNKNOWN; + + s = strm.state; + s.pending = 0; + s.pending_out = 0; + + if (s.wrap < 0) { + s.wrap = -s.wrap; + /* was made negative by deflate(..., Z_FINISH); */ + } + s.status = (s.wrap ? INIT_STATE : BUSY_STATE); + strm.adler = (s.wrap === 2) ? + 0 // crc32(0, Z_NULL, 0) + : + 1; // adler32(0, Z_NULL, 0) + s.last_flush = Z_NO_FLUSH; + trees._tr_init(s); + return Z_OK; +} + + +function deflateReset(strm) { + var ret = deflateResetKeep(strm); + if (ret === Z_OK) { + lm_init(strm.state); + } + return ret; +} + + +function deflateSetHeader(strm, head) { + if (!strm || !strm.state) { return Z_STREAM_ERROR; } + if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; } + strm.state.gzhead = head; + return Z_OK; +} + + +function deflateInit2(strm, level, method, windowBits, memLevel, strategy) { + if (!strm) { // === Z_NULL + return Z_STREAM_ERROR; + } + var wrap = 1; + + if (level === Z_DEFAULT_COMPRESSION) { + level = 6; + } + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } + + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } + + + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || + windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || + strategy < 0 || strategy > Z_FIXED) { + return err(strm, Z_STREAM_ERROR); + } + + + if (windowBits === 8) { + windowBits = 9; + } + /* until 256-byte window bug fixed */ + + var s = new DeflateState(); + + strm.state = s; + s.strm = strm; + + s.wrap = wrap; + s.gzhead = null; + s.w_bits = windowBits; + s.w_size = 1 << s.w_bits; + s.w_mask = s.w_size - 1; + + s.hash_bits = memLevel + 7; + s.hash_size = 1 << s.hash_bits; + s.hash_mask = s.hash_size - 1; + s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); + + s.window = new utils.Buf8(s.w_size * 2); + s.head = new utils.Buf16(s.hash_size); + s.prev = new utils.Buf16(s.w_size); + + // Don't need mem init magic for JS. + //s.high_water = 0; /* nothing written to s->window yet */ + + s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ + + s.pending_buf_size = s.lit_bufsize * 4; + + //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + //s->pending_buf = (uchf *) overlay; + s.pending_buf = new utils.Buf8(s.pending_buf_size); + + // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) + //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s.d_buf = 1 * s.lit_bufsize; + + //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + s.l_buf = (1 + 2) * s.lit_bufsize; + + s.level = level; + s.strategy = strategy; + s.method = method; + + return deflateReset(strm); +} + +function deflateInit(strm, level) { + return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); +} + + +function deflate(strm, flush) { + var old_flush, s; + var beg, val; // for gzip header write only + + if (!strm || !strm.state || + flush > Z_BLOCK || flush < 0) { + return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; + } + + s = strm.state; + + if (!strm.output || + (!strm.input && strm.avail_in !== 0) || + (s.status === FINISH_STATE && flush !== Z_FINISH)) { + return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR); + } + + s.strm = strm; /* just in case */ + old_flush = s.last_flush; + s.last_flush = flush; + + /* Write the header */ + if (s.status === INIT_STATE) { + + if (s.wrap === 2) { // GZIP header + strm.adler = 0; //crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (!s.gzhead) { // s->gzhead == Z_NULL + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s.status = BUSY_STATE; + } + else { + put_byte(s, (s.gzhead.text ? 1 : 0) + + (s.gzhead.hcrc ? 2 : 0) + + (!s.gzhead.extra ? 0 : 4) + + (!s.gzhead.name ? 0 : 8) + + (!s.gzhead.comment ? 0 : 16) + ); + put_byte(s, s.gzhead.time & 0xff); + put_byte(s, (s.gzhead.time >> 8) & 0xff); + put_byte(s, (s.gzhead.time >> 16) & 0xff); + put_byte(s, (s.gzhead.time >> 24) & 0xff); + put_byte(s, s.level === 9 ? 2 : + (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? + 4 : 0)); + put_byte(s, s.gzhead.os & 0xff); + if (s.gzhead.extra && s.gzhead.extra.length) { + put_byte(s, s.gzhead.extra.length & 0xff); + put_byte(s, (s.gzhead.extra.length >> 8) & 0xff); + } + if (s.gzhead.hcrc) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); + } + s.gzindex = 0; + s.status = EXTRA_STATE; + } + } + else // DEFLATE header + { + var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8; + var level_flags = -1; + + if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { + level_flags = 0; + } else if (s.level < 6) { + level_flags = 1; + } else if (s.level === 6) { + level_flags = 2; + } else { + level_flags = 3; + } + header |= (level_flags << 6); + if (s.strstart !== 0) { header |= PRESET_DICT; } + header += 31 - (header % 31); + + s.status = BUSY_STATE; + putShortMSB(s, header); + + /* Save the adler32 of the preset dictionary: */ + if (s.strstart !== 0) { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + strm.adler = 1; // adler32(0L, Z_NULL, 0); + } + } + +//#ifdef GZIP + if (s.status === EXTRA_STATE) { + if (s.gzhead.extra/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + + while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + break; + } + } + put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); + s.gzindex++; + } + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (s.gzindex === s.gzhead.extra.length) { + s.gzindex = 0; + s.status = NAME_STATE; + } + } + else { + s.status = NAME_STATE; + } + } + if (s.status === NAME_STATE) { + if (s.gzhead.name/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.name.length) { + val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.gzindex = 0; + s.status = COMMENT_STATE; + } + } + else { + s.status = COMMENT_STATE; + } + } + if (s.status === COMMENT_STATE) { + if (s.gzhead.comment/* != Z_NULL*/) { + beg = s.pending; /* start of bytes to update crc */ + //int val; + + do { + if (s.pending === s.pending_buf_size) { + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + flush_pending(strm); + beg = s.pending; + if (s.pending === s.pending_buf_size) { + val = 1; + break; + } + } + // JS specific: little magic to add zero terminator to end of string + if (s.gzindex < s.gzhead.comment.length) { + val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; + } else { + val = 0; + } + put_byte(s, val); + } while (val !== 0); + + if (s.gzhead.hcrc && s.pending > beg) { + strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); + } + if (val === 0) { + s.status = HCRC_STATE; + } + } + else { + s.status = HCRC_STATE; + } + } + if (s.status === HCRC_STATE) { + if (s.gzhead.hcrc) { + if (s.pending + 2 > s.pending_buf_size) { + flush_pending(strm); + } + if (s.pending + 2 <= s.pending_buf_size) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + strm.adler = 0; //crc32(0L, Z_NULL, 0); + s.status = BUSY_STATE; + } + } + else { + s.status = BUSY_STATE; + } + } +//#endif + + /* Flush as much pending output as possible */ + if (s.pending !== 0) { + flush_pending(strm); + if (strm.avail_out === 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s.last_flush = -1; + return Z_OK; + } + + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && + flush !== Z_FINISH) { + return err(strm, Z_BUF_ERROR); + } + + /* User must not provide more input after the first FINISH: */ + if (s.status === FINISH_STATE && strm.avail_in !== 0) { + return err(strm, Z_BUF_ERROR); + } + + /* Start a new block or continue the current one. + */ + if (strm.avail_in !== 0 || s.lookahead !== 0 || + (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) { + var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) : + (s.strategy === Z_RLE ? deflate_rle(s, flush) : + configuration_table[s.level].func(s, flush)); + + if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { + s.status = FINISH_STATE; + } + if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { + if (strm.avail_out === 0) { + s.last_flush = -1; + /* avoid BUF_ERROR next call, see above */ + } + return Z_OK; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate === BS_BLOCK_DONE) { + if (flush === Z_PARTIAL_FLUSH) { + trees._tr_align(s); + } + else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ + + trees._tr_stored_block(s, 0, 0, false); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush === Z_FULL_FLUSH) { + /*** CLEAR_HASH(s); ***/ /* forget history */ + zero(s.head); // Fill with NIL (= 0); + + if (s.lookahead === 0) { + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + } + } + flush_pending(strm); + if (strm.avail_out === 0) { + s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK; + } + } + } + //Assert(strm->avail_out > 0, "bug2"); + //if (strm.avail_out <= 0) { throw new Error("bug2");} + + if (flush !== Z_FINISH) { return Z_OK; } + if (s.wrap <= 0) { return Z_STREAM_END; } + + /* Write the trailer */ + if (s.wrap === 2) { + put_byte(s, strm.adler & 0xff); + put_byte(s, (strm.adler >> 8) & 0xff); + put_byte(s, (strm.adler >> 16) & 0xff); + put_byte(s, (strm.adler >> 24) & 0xff); + put_byte(s, strm.total_in & 0xff); + put_byte(s, (strm.total_in >> 8) & 0xff); + put_byte(s, (strm.total_in >> 16) & 0xff); + put_byte(s, (strm.total_in >> 24) & 0xff); + } + else + { + putShortMSB(s, strm.adler >>> 16); + putShortMSB(s, strm.adler & 0xffff); + } + + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s.wrap > 0) { s.wrap = -s.wrap; } + /* write the trailer only once! */ + return s.pending !== 0 ? Z_OK : Z_STREAM_END; +} + +function deflateEnd(strm) { + var status; + + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; + } + + status = strm.state.status; + if (status !== INIT_STATE && + status !== EXTRA_STATE && + status !== NAME_STATE && + status !== COMMENT_STATE && + status !== HCRC_STATE && + status !== BUSY_STATE && + status !== FINISH_STATE + ) { + return err(strm, Z_STREAM_ERROR); + } + + strm.state = null; + + return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; +} + + +/* ========================================================================= + * Initializes the compression dictionary from the given byte + * sequence without producing any compressed output. + */ +function deflateSetDictionary(strm, dictionary) { + var dictLength = dictionary.length; + + var s; + var str, n; + var wrap; + var avail; + var next; + var input; + var tmpDict; + + if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { + return Z_STREAM_ERROR; + } + + s = strm.state; + wrap = s.wrap; + + if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { + return Z_STREAM_ERROR; + } + + /* when using zlib wrappers, compute Adler-32 for provided dictionary */ + if (wrap === 1) { + /* adler32(strm->adler, dictionary, dictLength); */ + strm.adler = adler32(strm.adler, dictionary, dictLength, 0); + } + + s.wrap = 0; /* avoid computing Adler-32 in read_buf */ + + /* if dictionary would fill window, just replace the history */ + if (dictLength >= s.w_size) { + if (wrap === 0) { /* already empty otherwise */ + /*** CLEAR_HASH(s); ***/ + zero(s.head); // Fill with NIL (= 0); + s.strstart = 0; + s.block_start = 0; + s.insert = 0; + } + /* use the tail */ + // dictionary = dictionary.slice(dictLength - s.w_size); + tmpDict = new utils.Buf8(s.w_size); + utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0); + dictionary = tmpDict; + dictLength = s.w_size; + } + /* insert dictionary into window and hash */ + avail = strm.avail_in; + next = strm.next_in; + input = strm.input; + strm.avail_in = dictLength; + strm.next_in = 0; + strm.input = dictionary; + fill_window(s); + while (s.lookahead >= MIN_MATCH) { + str = s.strstart; + n = s.lookahead - (MIN_MATCH - 1); + do { + /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ + s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask; + + s.prev[str & s.w_mask] = s.head[s.ins_h]; + + s.head[s.ins_h] = str; + str++; + } while (--n); + s.strstart = str; + s.lookahead = MIN_MATCH - 1; + fill_window(s); + } + s.strstart += s.lookahead; + s.block_start = s.strstart; + s.insert = s.lookahead; + s.lookahead = 0; + s.match_length = s.prev_length = MIN_MATCH - 1; + s.match_available = 0; + strm.next_in = next; + strm.input = input; + strm.avail_in = avail; + s.wrap = wrap; + return Z_OK; +} + + +exports.deflateInit = deflateInit; +exports.deflateInit2 = deflateInit2; +exports.deflateReset = deflateReset; +exports.deflateResetKeep = deflateResetKeep; +exports.deflateSetHeader = deflateSetHeader; +exports.deflate = deflate; +exports.deflateEnd = deflateEnd; +exports.deflateSetDictionary = deflateSetDictionary; +exports.deflateInfo = 'pako deflate (from Nodeca project)'; + +/* Not implemented +exports.deflateBound = deflateBound; +exports.deflateCopy = deflateCopy; +exports.deflateParams = deflateParams; +exports.deflatePending = deflatePending; +exports.deflatePrime = deflatePrime; +exports.deflateTune = deflateTune; +*/ + +},{"../utils/common":89,"./adler32":91,"./crc32":93,"./messages":99,"./trees":100}],95:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +function GZheader() { + /* true if compressed data believed to be text */ + this.text = 0; + /* modification time */ + this.time = 0; + /* extra flags (not used when writing a gzip file) */ + this.xflags = 0; + /* operating system */ + this.os = 0; + /* pointer to extra field or Z_NULL if none */ + this.extra = null; + /* extra field length (valid if extra != Z_NULL) */ + this.extra_len = 0; // Actually, we don't need it in JS, + // but leave for few code modifications + + // + // Setup limits is not necessary because in js we should not preallocate memory + // for inflate use constant limit in 65536 bytes + // + + /* space at extra (only when reading header) */ + // this.extra_max = 0; + /* pointer to zero-terminated file name or Z_NULL */ + this.name = ''; + /* space at name (only when reading header) */ + // this.name_max = 0; + /* pointer to zero-terminated comment or Z_NULL */ + this.comment = ''; + /* space at comment (only when reading header) */ + // this.comm_max = 0; + /* true if there was or will be a header crc */ + this.hcrc = 0; + /* true when done reading gzip header (not used when writing a gzip file) */ + this.done = false; +} + +module.exports = GZheader; + +},{}],96:[function(require,module,exports){ +arguments[4][41][0].apply(exports,arguments) +},{"dup":41}],97:[function(require,module,exports){ +arguments[4][42][0].apply(exports,arguments) +},{"../utils/common":89,"./adler32":91,"./crc32":93,"./inffast":96,"./inftrees":98,"dup":42}],98:[function(require,module,exports){ +arguments[4][43][0].apply(exports,arguments) +},{"../utils/common":89,"dup":43}],99:[function(require,module,exports){ +arguments[4][44][0].apply(exports,arguments) +},{"dup":44}],100:[function(require,module,exports){ +'use strict'; + +// (C) 1995-2013 Jean-loup Gailly and Mark Adler +// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. + +var utils = require('../utils/common'); + +/* Public constants ==========================================================*/ +/* ===========================================================================*/ + + +//var Z_FILTERED = 1; +//var Z_HUFFMAN_ONLY = 2; +//var Z_RLE = 3; +var Z_FIXED = 4; +//var Z_DEFAULT_STRATEGY = 0; + +/* Possible values of the data_type field (though see inflate()) */ +var Z_BINARY = 0; +var Z_TEXT = 1; +//var Z_ASCII = 1; // = Z_TEXT +var Z_UNKNOWN = 2; + +/*============================================================================*/ + + +function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } } + +// From zutil.h + +var STORED_BLOCK = 0; +var STATIC_TREES = 1; +var DYN_TREES = 2; +/* The three kinds of block type */ + +var MIN_MATCH = 3; +var MAX_MATCH = 258; +/* The minimum and maximum match lengths */ + +// From deflate.h +/* =========================================================================== + * Internal compression state. + */ + +var LENGTH_CODES = 29; +/* number of length codes, not counting the special END_BLOCK code */ + +var LITERALS = 256; +/* number of literal bytes 0..255 */ + +var L_CODES = LITERALS + 1 + LENGTH_CODES; +/* number of Literal or Length codes, including the END_BLOCK code */ + +var D_CODES = 30; +/* number of distance codes */ + +var BL_CODES = 19; +/* number of codes used to transfer the bit lengths */ + +var HEAP_SIZE = 2 * L_CODES + 1; +/* maximum heap size */ + +var MAX_BITS = 15; +/* All codes must not exceed MAX_BITS bits */ + +var Buf_size = 16; +/* size of bit buffer in bi_buf */ + + +/* =========================================================================== + * Constants + */ + +var MAX_BL_BITS = 7; +/* Bit length codes must not exceed MAX_BL_BITS bits */ + +var END_BLOCK = 256; +/* end of block literal code */ + +var REP_3_6 = 16; +/* repeat previous bit length 3-6 times (2 bits of repeat count) */ + +var REPZ_3_10 = 17; +/* repeat a zero length 3-10 times (3 bits of repeat count) */ + +var REPZ_11_138 = 18; +/* repeat a zero length 11-138 times (7 bits of repeat count) */ + +/* eslint-disable comma-spacing,array-bracket-spacing */ +var extra_lbits = /* extra bits for each length code */ + [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]; + +var extra_dbits = /* extra bits for each distance code */ + [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]; + +var extra_blbits = /* extra bits for each bit length code */ + [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]; + +var bl_order = + [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]; +/* eslint-enable comma-spacing,array-bracket-spacing */ + +/* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ + +/* =========================================================================== + * Local data. These are initialized only once. + */ + +// We pre-fill arrays with 0 to avoid uninitialized gaps + +var DIST_CODE_LEN = 512; /* see definition of array dist_code below */ + +// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 +var static_ltree = new Array((L_CODES + 2) * 2); +zero(static_ltree); +/* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ + +var static_dtree = new Array(D_CODES * 2); +zero(static_dtree); +/* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) + */ + +var _dist_code = new Array(DIST_CODE_LEN); +zero(_dist_code); +/* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ + +var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); +zero(_length_code); +/* length code for each normalized match length (0 == MIN_MATCH) */ + +var base_length = new Array(LENGTH_CODES); +zero(base_length); +/* First normalized length for each code (0 = MIN_MATCH) */ + +var base_dist = new Array(D_CODES); +zero(base_dist); +/* First normalized distance for each code (0 = distance of 1) */ + + +function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { + + this.static_tree = static_tree; /* static tree or NULL */ + this.extra_bits = extra_bits; /* extra bits for each code or NULL */ + this.extra_base = extra_base; /* base index for extra_bits */ + this.elems = elems; /* max number of elements in the tree */ + this.max_length = max_length; /* max bit length for the codes */ + + // show if `static_tree` has data or dummy - needed for monomorphic objects + this.has_stree = static_tree && static_tree.length; +} + + +var static_l_desc; +var static_d_desc; +var static_bl_desc; + + +function TreeDesc(dyn_tree, stat_desc) { + this.dyn_tree = dyn_tree; /* the dynamic tree */ + this.max_code = 0; /* largest code with non zero frequency */ + this.stat_desc = stat_desc; /* the corresponding static tree */ +} + + + +function d_code(dist) { + return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; +} + + +/* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +function put_short(s, w) { +// put_byte(s, (uch)((w) & 0xff)); +// put_byte(s, (uch)((ush)(w) >> 8)); + s.pending_buf[s.pending++] = (w) & 0xff; + s.pending_buf[s.pending++] = (w >>> 8) & 0xff; +} + + +/* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ +function send_bits(s, value, length) { + if (s.bi_valid > (Buf_size - length)) { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + put_short(s, s.bi_buf); + s.bi_buf = value >> (Buf_size - s.bi_valid); + s.bi_valid += length - Buf_size; + } else { + s.bi_buf |= (value << s.bi_valid) & 0xffff; + s.bi_valid += length; + } +} + + +function send_code(s, c, tree) { + send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/); +} + + +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +function bi_reverse(code, len) { + var res = 0; + do { + res |= code & 1; + code >>>= 1; + res <<= 1; + } while (--len > 0); + return res >>> 1; +} + + +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +function bi_flush(s) { + if (s.bi_valid === 16) { + put_short(s, s.bi_buf); + s.bi_buf = 0; + s.bi_valid = 0; + + } else if (s.bi_valid >= 8) { + s.pending_buf[s.pending++] = s.bi_buf & 0xff; + s.bi_buf >>= 8; + s.bi_valid -= 8; + } +} + + +/* =========================================================================== + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. + */ +function gen_bitlen(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var max_code = desc.max_code; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var extra = desc.stat_desc.extra_bits; + var base = desc.stat_desc.extra_base; + var max_length = desc.stat_desc.max_length; + var h; /* heap index */ + var n, m; /* iterate over the tree elements */ + var bits; /* bit length */ + var xbits; /* extra bits */ + var f; /* frequency */ + var overflow = 0; /* number of elements with bit length too large */ + + for (bits = 0; bits <= MAX_BITS; bits++) { + s.bl_count[bits] = 0; + } + + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). + */ + tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */ + + for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { + n = s.heap[h]; + bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1; + if (bits > max_length) { + bits = max_length; + overflow++; + } + tree[n * 2 + 1]/*.Len*/ = bits; + /* We overwrite tree[n].Dad which is no longer needed */ + + if (n > max_code) { continue; } /* not a leaf node */ + + s.bl_count[bits]++; + xbits = 0; + if (n >= base) { + xbits = extra[n - base]; + } + f = tree[n * 2]/*.Freq*/; + s.opt_len += f * (bits + xbits); + if (has_stree) { + s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits); + } + } + if (overflow === 0) { return; } + + // Trace((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length - 1; + while (s.bl_count[bits] === 0) { bits--; } + s.bl_count[bits]--; /* move one leaf down the tree */ + s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */ + s.bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); + + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits !== 0; bits--) { + n = s.bl_count[bits]; + while (n !== 0) { + m = s.heap[--h]; + if (m > max_code) { continue; } + if (tree[m * 2 + 1]/*.Len*/ !== bits) { + // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/; + tree[m * 2 + 1]/*.Len*/ = bits; + } + n--; + } + } +} + + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +function gen_codes(tree, max_code, bl_count) +// ct_data *tree; /* the tree to decorate */ +// int max_code; /* largest code with non zero frequency */ +// ushf *bl_count; /* number of codes at each bit length */ +{ + var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */ + var code = 0; /* running code value */ + var bits; /* bit index */ + var n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + next_code[bits] = code = (code + bl_count[bits - 1]) << 1; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES - 1; code++) { + base_length[code] = length; + for (n = 0; n < (1 << extra_lbits[code]); n++) { + _length_code[length++] = code; + } + } + //Assert (length == 256, "tr_static_init: length != 256"); + /* Note that the length 255 (match length 258) can be represented + * in two different ways: code 284 + 5 bits or code 285, so we + * overwrite length_code[255] to use the best encoding: + */ + _length_code[length - 1] = code; + + /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ + dist = 0; + for (code = 0; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1 << extra_dbits[code]); n++) { + _dist_code[dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: dist != 256"); + dist >>= 7; /* from now on, all distances are divided by 128 */ + for (; code < D_CODES; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { + _dist_code[256 + dist++] = code; + } + } + //Assert (dist == 256, "tr_static_init: 256+dist != 512"); + + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS; bits++) { + bl_count[bits] = 0; + } + + n = 0; + while (n <= 143) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + while (n <= 255) { + static_ltree[n * 2 + 1]/*.Len*/ = 9; + n++; + bl_count[9]++; + } + while (n <= 279) { + static_ltree[n * 2 + 1]/*.Len*/ = 7; + n++; + bl_count[7]++; + } + while (n <= 287) { + static_ltree[n * 2 + 1]/*.Len*/ = 8; + n++; + bl_count[8]++; + } + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes(static_ltree, L_CODES + 1, bl_count); + + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES; n++) { + static_dtree[n * 2 + 1]/*.Len*/ = 5; + static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5); + } + + // Now data ready and we can init static trees + static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); + static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); + static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); + + //static_init_done = true; +} + + +/* =========================================================================== + * Initialize a new block. + */ +function init_block(s) { + var n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; } + for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; } + + s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1; + s.opt_len = s.static_len = 0; + s.last_lit = s.matches = 0; +} + + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +function bi_windup(s) +{ + if (s.bi_valid > 8) { + put_short(s, s.bi_buf); + } else if (s.bi_valid > 0) { + //put_byte(s, (Byte)s->bi_buf); + s.pending_buf[s.pending++] = s.bi_buf; + } + s.bi_buf = 0; + s.bi_valid = 0; +} + +/* =========================================================================== + * Copy a stored block, storing first the length and its + * one's complement if requested. + */ +function copy_block(s, buf, len, header) +//DeflateState *s; +//charf *buf; /* the input data */ +//unsigned len; /* its length */ +//int header; /* true if block header must be written */ +{ + bi_windup(s); /* align on byte boundary */ + + if (header) { + put_short(s, len); + put_short(s, ~len); + } +// while (len--) { +// put_byte(s, *buf++); +// } + utils.arraySet(s.pending_buf, s.window, buf, len, s.pending); + s.pending += len; +} + +/* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ +function smaller(tree, n, m, depth) { + var _n2 = n * 2; + var _m2 = m * 2; + return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ || + (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m])); +} + +/* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ +function pqdownheap(s, tree, k) +// deflate_state *s; +// ct_data *tree; /* the tree to restore */ +// int k; /* node to move down */ +{ + var v = s.heap[k]; + var j = k << 1; /* left son of k */ + while (j <= s.heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s.heap_len && + smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s.heap[j], s.depth)) { break; } + + /* Exchange v with the smallest son */ + s.heap[k] = s.heap[j]; + k = j; + + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s.heap[k] = v; +} + + +// inlined manually +// var SMALLEST = 1; + +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +function compress_block(s, ltree, dtree) +// deflate_state *s; +// const ct_data *ltree; /* literal tree */ +// const ct_data *dtree; /* distance tree */ +{ + var dist; /* distance of matched string */ + var lc; /* match length or unmatched char (if dist == 0) */ + var lx = 0; /* running index in l_buf */ + var code; /* the code to send */ + var extra; /* number of extra bits to send */ + + if (s.last_lit !== 0) { + do { + dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]); + lc = s.pending_buf[s.l_buf + lx]; + lx++; + + if (dist === 0) { + send_code(s, lc, ltree); /* send a literal byte */ + //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code + LITERALS + 1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra !== 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + //Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra !== 0) { + dist -= base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + // "pendingBuf overflow"); + + } while (lx < s.last_lit); + } + + send_code(s, END_BLOCK, ltree); +} + + +/* =========================================================================== + * Construct one Huffman tree and assigns the code bit strings and lengths. + * Update the total bit length for the current block. + * IN assertion: the field freq is set for all tree elements. + * OUT assertions: the fields len and code are set to the optimal bit length + * and corresponding code. The length opt_len is updated; static_len is + * also updated if stree is not null. The field max_code is set. + */ +function build_tree(s, desc) +// deflate_state *s; +// tree_desc *desc; /* the tree descriptor */ +{ + var tree = desc.dyn_tree; + var stree = desc.stat_desc.static_tree; + var has_stree = desc.stat_desc.has_stree; + var elems = desc.stat_desc.elems; + var n, m; /* iterate over heap elements */ + var max_code = -1; /* largest code with non zero frequency */ + var node; /* new node being created */ + + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s.heap_len = 0; + s.heap_max = HEAP_SIZE; + + for (n = 0; n < elems; n++) { + if (tree[n * 2]/*.Freq*/ !== 0) { + s.heap[++s.heap_len] = max_code = n; + s.depth[n] = 0; + + } else { + tree[n * 2 + 1]/*.Len*/ = 0; + } + } + + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s.heap_len < 2) { + node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); + tree[node * 2]/*.Freq*/ = 1; + s.depth[node] = 0; + s.opt_len--; + + if (has_stree) { + s.static_len -= stree[node * 2 + 1]/*.Len*/; + } + /* node is 0 or 1 so it does not have extra bits */ + } + desc.max_code = max_code; + + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); } + + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + //pqremove(s, tree, n); /* n = node of least frequency */ + /*** pqremove ***/ + n = s.heap[1/*SMALLEST*/]; + s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--]; + pqdownheap(s, tree, 1/*SMALLEST*/); + /***/ + + m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */ + + s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */ + s.heap[--s.heap_max] = m; + + /* Create a new node father of n and m */ + tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/; + s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; + tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node; + + /* and insert the new node in the heap */ + s.heap[1/*SMALLEST*/] = node++; + pqdownheap(s, tree, 1/*SMALLEST*/); + + } while (s.heap_len >= 2); + + s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/]; + + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, desc); + + /* The field len is now set, we can generate the bit codes */ + gen_codes(tree, max_code, s.bl_count); +} + + +/* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ +function scan_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ + + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ + + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ + + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */ + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; + + if (++count < max_count && curlen === nextlen) { + continue; + + } else if (count < min_count) { + s.bl_tree[curlen * 2]/*.Freq*/ += count; + + } else if (curlen !== 0) { + + if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; } + s.bl_tree[REP_3_6 * 2]/*.Freq*/++; + + } else if (count <= 10) { + s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++; + + } else { + s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++; + } + + count = 0; + prevlen = curlen; + + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } +} + + +/* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ +function send_tree(s, tree, max_code) +// deflate_state *s; +// ct_data *tree; /* the tree to be scanned */ +// int max_code; /* and its largest code of non zero frequency */ +{ + var n; /* iterates over all tree elements */ + var prevlen = -1; /* last emitted length */ + var curlen; /* length of current code */ + + var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ + + var count = 0; /* repeat count of the current code */ + var max_count = 7; /* max repeat count */ + var min_count = 4; /* min repeat count */ + + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen === 0) { + max_count = 138; + min_count = 3; + } + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; + nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; + + if (++count < max_count && curlen === nextlen) { + continue; + + } else if (count < min_count) { + do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); + + } else if (curlen !== 0) { + if (curlen !== prevlen) { + send_code(s, curlen, s.bl_tree); + count--; + } + //Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s.bl_tree); + send_bits(s, count - 3, 2); + + } else if (count <= 10) { + send_code(s, REPZ_3_10, s.bl_tree); + send_bits(s, count - 3, 3); + + } else { + send_code(s, REPZ_11_138, s.bl_tree); + send_bits(s, count - 11, 7); + } + + count = 0; + prevlen = curlen; + if (nextlen === 0) { + max_count = 138; + min_count = 3; + + } else if (curlen === nextlen) { + max_count = 6; + min_count = 3; + + } else { + max_count = 7; + min_count = 4; + } + } +} + + +/* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. + */ +function build_bl_tree(s) { + var max_blindex; /* index of last bit length code of non zero freq */ + + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, s.dyn_ltree, s.l_desc.max_code); + scan_tree(s, s.dyn_dtree, s.d_desc.max_code); + + /* Build the bit length tree: */ + build_tree(s, s.bl_desc); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ + + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { + if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) { + break; + } + } + /* Update opt_len to include the bit length tree and counts */ + s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; + //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + // s->opt_len, s->static_len)); + + return max_blindex; +} + + +/* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + */ +function send_all_trees(s, lcodes, dcodes, blcodes) +// deflate_state *s; +// int lcodes, dcodes, blcodes; /* number of codes for each tree */ +{ + var rank; /* index in bl_order */ + + //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + // "too many codes"); + //Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); + } + //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ + //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + + send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ + //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); +} + + +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "black list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +function detect_data_type(s) { + /* black_mask is the bit mask of black-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + var black_mask = 0xf3ffc07f; + var n; + + /* Check for non-textual ("black-listed") bytes. */ + for (n = 0; n <= 31; n++, black_mask >>>= 1) { + if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) { + return Z_BINARY; + } + } + + /* Check for textual ("white-listed") bytes. */ + if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 || + s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + for (n = 32; n < LITERALS; n++) { + if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) { + return Z_TEXT; + } + } + + /* There are no "black-listed" or "white-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} + + +var static_init_done = false; + +/* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ +function _tr_init(s) +{ + + if (!static_init_done) { + tr_static_init(); + static_init_done = true; + } + + s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); + s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); + s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); + + s.bi_buf = 0; + s.bi_valid = 0; + + /* Initialize the first block of the first file: */ + init_block(s); +} + + +/* =========================================================================== + * Send a stored block + */ +function _tr_stored_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */ + copy_block(s, buf, stored_len, true); /* with header */ +} + + +/* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + */ +function _tr_align(s) { + send_bits(s, STATIC_TREES << 1, 3); + send_code(s, END_BLOCK, static_ltree); + bi_flush(s); +} + + +/* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and output the encoded block to the zip file. + */ +function _tr_flush_block(s, buf, stored_len, last) +//DeflateState *s; +//charf *buf; /* input block, or NULL if too old */ +//ulg stored_len; /* length of input block */ +//int last; /* one if this is the last block for a file */ +{ + var opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + var max_blindex = 0; /* index of last bit length code of non zero freq */ + + /* Build the Huffman trees unless a stored block is forced */ + if (s.level > 0) { + + /* Check if the file is binary or text */ + if (s.strm.data_type === Z_UNKNOWN) { + s.strm.data_type = detect_data_type(s); + } + + /* Construct the literal and distance trees */ + build_tree(s, s.l_desc); + // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + + build_tree(s, s.d_desc); + // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + // s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ + + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); + + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s.opt_len + 3 + 7) >>> 3; + static_lenb = (s.static_len + 3 + 7) >>> 3; + + // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + // s->last_lit)); + + if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } + + } else { + // Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + } + + if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) { + /* 4: two words for the lengths */ + + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block(s, buf, stored_len, last); + + } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { + + send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); + compress_block(s, static_ltree, static_dtree); + + } else { + send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); + send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); + compress_block(s, s.dyn_ltree, s.dyn_dtree); + } + // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); + + if (last) { + bi_windup(s); + } + // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + // s->compressed_len-7*last)); +} + +/* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ +function _tr_tally(s, dist, lc) +// deflate_state *s; +// unsigned dist; /* distance of matched string */ +// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ +{ + //var out_length, in_length, dcode; + + s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff; + s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; + + s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; + s.last_lit++; + + if (dist === 0) { + /* lc is the unmatched char */ + s.dyn_ltree[lc * 2]/*.Freq*/++; + } else { + s.matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + //Assert((ush)dist < (ush)MAX_DIST(s) && + // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); + + s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++; + s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++; + } + +// (!) This block is disabled in zlib defaults, +// don't enable it for binary compatibility + +//#ifdef TRUNCATE_BLOCK +// /* Try to guess if it is profitable to stop the current block here */ +// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { +// /* Compute an upper bound for the compressed length */ +// out_length = s.last_lit*8; +// in_length = s.strstart - s.block_start; +// +// for (dcode = 0; dcode < D_CODES; dcode++) { +// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); +// } +// out_length >>>= 3; +// //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", +// // s->last_lit, in_length, out_length, +// // 100L - out_length*100L/in_length)); +// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { +// return true; +// } +// } +//#endif + + return (s.last_lit === s.lit_bufsize - 1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ +} + +exports._tr_init = _tr_init; +exports._tr_stored_block = _tr_stored_block; +exports._tr_flush_block = _tr_flush_block; +exports._tr_tally = _tr_tally; +exports._tr_align = _tr_align; + +},{"../utils/common":89}],101:[function(require,module,exports){ +arguments[4][46][0].apply(exports,arguments) +},{"dup":46}],102:[function(require,module,exports){ +module.exports = function parseBMFontAscii(data) { + if (!data) + throw new Error('no data provided') + data = data.toString().trim() + + var output = { + pages: [], + chars: [], + kernings: [] + } + + var lines = data.split(/\r\n?|\n/g) + + if (lines.length === 0) + throw new Error('no data in BMFont file') + + for (var i = 0; i < lines.length; i++) { + var lineData = splitLine(lines[i], i) + if (!lineData) //skip empty lines + continue + + if (lineData.key === 'page') { + if (typeof lineData.data.id !== 'number') + throw new Error('malformed file at line ' + i + ' -- needs page id=N') + if (typeof lineData.data.file !== 'string') + throw new Error('malformed file at line ' + i + ' -- needs page file="path"') + output.pages[lineData.data.id] = lineData.data.file + } else if (lineData.key === 'chars' || lineData.key === 'kernings') { + //... do nothing for these two ... + } else if (lineData.key === 'char') { + output.chars.push(lineData.data) + } else if (lineData.key === 'kerning') { + output.kernings.push(lineData.data) + } else { + output[lineData.key] = lineData.data + } + } + + return output +} + +function splitLine(line, idx) { + line = line.replace(/\t+/g, ' ').trim() + if (!line) + return null + + var space = line.indexOf(' ') + if (space === -1) + throw new Error("no named row at line " + idx) + + var key = line.substring(0, space) + + line = line.substring(space + 1) + //clear "letter" field as it is non-standard and + //requires additional complexity to parse " / = symbols + line = line.replace(/letter=[\'\"]\S+[\'\"]/gi, '') + line = line.split("=") + line = line.map(function(str) { + return str.trim().match((/(".*?"|[^"\s]+)+(?=\s*|\s*$)/g)) + }) + + var data = [] + for (var i = 0; i < line.length; i++) { + var dt = line[i] + if (i === 0) { + data.push({ + key: dt[0], + data: "" + }) + } else if (i === line.length - 1) { + data[data.length - 1].data = parseData(dt[0]) + } else { + data[data.length - 1].data = parseData(dt[0]) + data.push({ + key: dt[1], + data: "" + }) + } + } + + var out = { + key: key, + data: {} + } + + data.forEach(function(v) { + out.data[v.key] = v.data; + }) + + return out +} + +function parseData(data) { + if (!data || data.length === 0) + return "" + + if (data.indexOf('"') === 0 || data.indexOf("'") === 0) + return data.substring(1, data.length - 1) + if (data.indexOf(',') !== -1) + return parseIntList(data) + return parseInt(data, 10) +} + +function parseIntList(data) { + return data.split(',').map(function(val) { + return parseInt(val, 10) + }) +} +},{}],103:[function(require,module,exports){ +var HEADER = [66, 77, 70] + +module.exports = function readBMFontBinary(buf) { + if (buf.length < 6) + throw new Error('invalid buffer length for BMFont') + + var header = HEADER.every(function(byte, i) { + return buf.readUInt8(i) === byte + }) + + if (!header) + throw new Error('BMFont missing BMF byte header') + + var i = 3 + var vers = buf.readUInt8(i++) + if (vers > 3) + throw new Error('Only supports BMFont Binary v3 (BMFont App v1.10)') + + var target = { kernings: [], chars: [] } + for (var b=0; b<5; b++) + i += readBlock(target, buf, i) + return target +} + +function readBlock(target, buf, i) { + if (i > buf.length-1) + return 0 + + var blockID = buf.readUInt8(i++) + var blockSize = buf.readInt32LE(i) + i += 4 + + switch(blockID) { + case 1: + target.info = readInfo(buf, i) + break + case 2: + target.common = readCommon(buf, i) + break + case 3: + target.pages = readPages(buf, i, blockSize) + break + case 4: + target.chars = readChars(buf, i, blockSize) + break + case 5: + target.kernings = readKernings(buf, i, blockSize) + break + } + return 5 + blockSize +} + +function readInfo(buf, i) { + var info = {} + info.size = buf.readInt16LE(i) + + var bitField = buf.readUInt8(i+2) + info.smooth = (bitField >> 7) & 1 + info.unicode = (bitField >> 6) & 1 + info.italic = (bitField >> 5) & 1 + info.bold = (bitField >> 4) & 1 + + //fixedHeight is only mentioned in binary spec + if ((bitField >> 3) & 1) + info.fixedHeight = 1 + + info.charset = buf.readUInt8(i+3) || '' + info.stretchH = buf.readUInt16LE(i+4) + info.aa = buf.readUInt8(i+6) + info.padding = [ + buf.readInt8(i+7), + buf.readInt8(i+8), + buf.readInt8(i+9), + buf.readInt8(i+10) + ] + info.spacing = [ + buf.readInt8(i+11), + buf.readInt8(i+12) + ] + info.outline = buf.readUInt8(i+13) + info.face = readStringNT(buf, i+14) + return info +} + +function readCommon(buf, i) { + var common = {} + common.lineHeight = buf.readUInt16LE(i) + common.base = buf.readUInt16LE(i+2) + common.scaleW = buf.readUInt16LE(i+4) + common.scaleH = buf.readUInt16LE(i+6) + common.pages = buf.readUInt16LE(i+8) + var bitField = buf.readUInt8(i+10) + common.packed = 0 + common.alphaChnl = buf.readUInt8(i+11) + common.redChnl = buf.readUInt8(i+12) + common.greenChnl = buf.readUInt8(i+13) + common.blueChnl = buf.readUInt8(i+14) + return common +} + +function readPages(buf, i, size) { + var pages = [] + var text = readNameNT(buf, i) + var len = text.length+1 + var count = size / len + for (var c=0; c element') + var pages = pageRoot.getElementsByTagName('page') + for (var i=0; i 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function (path) { + if (typeof path !== 'string') path = path + ''; + if (path.length === 0) return '.'; + var code = path.charCodeAt(0); + var hasRoot = code === 47 /*/*/; + var end = -1; + var matchedSlash = true; + for (var i = path.length - 1; i >= 1; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? '/' : '.'; + if (hasRoot && end === 1) { + // return '//'; + // Backwards-compat fix: + return '/'; + } + return path.slice(0, end); +}; + +function basename(path) { + if (typeof path !== 'string') path = path + ''; + + var start = 0; + var end = -1; + var matchedSlash = true; + var i; + + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ''; + return path.slice(start, end); +} + +// Uses a mixed approach for backwards-compatibility, as ext behavior changed +// in new Node.js versions, so only basename() above is backported here +exports.basename = function (path, ext) { + var f = basename(path); + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + +exports.extname = function (path) { + if (typeof path !== 'string') path = path + ''; + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + for (var i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ''; + } + return path.slice(startDot, end); +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +}).call(this,require('_process')) +},{"_process":133}],108:[function(require,module,exports){ +(function (Buffer){ +'use strict';var _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};var http=require('http');var https=require('https');var url=require('url');var qs=require('querystring');var zlib=require('zlib');var util=require('util');var phin=function phin(opts,cb){if(typeof opts!=='string'){if(!opts.hasOwnProperty('url')){throw new Error('Missing url option from options for request method.')}}var addr=(typeof opts==='undefined'?'undefined':_typeof(opts))==='object'?url.parse(opts.url):url.parse(opts);var options={'hostname':addr.hostname,'port':addr.port||(addr.protocol.toLowerCase()==='http:'?80:443),'path':addr.path,'method':'GET','headers':{},'auth':addr.auth||null,'parse':'none','stream':false};if((typeof opts==='undefined'?'undefined':_typeof(opts))==='object'){options=Object.assign(options,opts)}options.port=Number(options.port);if(options.hasOwnProperty('timeout'))delete options.timeout;if(options.compressed===true){options.headers['accept-encoding']='gzip, deflate'}if(opts.hasOwnProperty('form')){if(_typeof(opts.form)!=='object'){throw new Error('phin \'form\' option must be of type Object if present.')}var formDataString=qs.stringify(opts.form);options.headers['Content-Type']='application/x-www-form-urlencoded';options.headers['Content-Length']=Buffer.byteLength(formDataString);opts.data=formDataString}var req=void 0;var resHandler=function resHandler(res){var stream=res;if(options.compressed===true){if(res.headers['content-encoding']==='gzip'){stream=res.pipe(zlib.createGunzip())}else if(res.headers['content-encoding']==='deflate'){stream=res.pipe(zlib.createInflate())}}if(options.stream===true){res.stream=stream;cb(null,res)}else{res.body=new Buffer([]);stream.on('data',function(chunk){res.body=Buffer.concat([res.body,chunk])});stream.on('end',function(){if(cb){if(options.parse==='json'){try{res.body=JSON.parse(res.body.toString())}catch(err){cb('Invalid JSON received.',res);return}}cb(null,res)}})}};switch(addr.protocol.toLowerCase()){case'http:':req=http.request(options,resHandler);break;case'https:':req=https.request(options,resHandler);break;default:if(cb){cb(new Error('Invalid / unknown URL protocol. Expected HTTP or HTTPS.'),null)}return;}if(typeof opts.timeout==='number'){req.setTimeout(opts.timeout,function(){req.abort();cb(new Error('Timeout has been reached.'),null);cb=null})}req.on('error',function(err){if(cb){cb(err,null)}});if(opts.hasOwnProperty('data')){var postData=opts.data;if(!(opts.data instanceof Buffer)&&_typeof(opts.data)==='object'){var contentType=options.headers['content-type']||options.headers['Content-Type'];if(contentType==='application/x-www-form-urlencoded'){postData=qs.stringify(opts.data)}else{try{postData=JSON.stringify(opts.data)}catch(err){cb(new Error('Couldn\'t stringify object. (Likely due to a circular reference.)'),null)}}}req.write(postData)}req.end()};phin.promisified=function(opts,http){return new Promise(function(resolve,reject){phin(opts,function(err,res){if(err){reject(err)}else{resolve(res)}},http)})};if(util.promisify){phin[util.promisify.custom]=phin.promisified}module.exports=phin; + +}).call(this,require("buffer").Buffer) +},{"buffer":48,"http":156,"https":72,"querystring":137,"url":180,"util":186,"zlib":35}],109:[function(require,module,exports){ +'use strict'; + +module.exports = pixelmatch; + +function pixelmatch(img1, img2, output, width, height, options) { + + if (!options) options = {}; + + var threshold = options.threshold === undefined ? 0.1 : options.threshold; + + // maximum acceptable square distance between two colors; + // 35215 is the maximum possible value for the YIQ difference metric + var maxDelta = 35215 * threshold * threshold, + diff = 0; + + // compare each pixel of one image against the other one + for (var y = 0; y < height; y++) { + for (var x = 0; x < width; x++) { + + var pos = (y * width + x) * 4; + + // squared YUV distance between colors at this pixel position + var delta = colorDelta(img1, img2, pos, pos); + + // the color difference is above the threshold + if (delta > maxDelta) { + // check it's a real rendering difference or just anti-aliasing + if (!options.includeAA && (antialiased(img1, x, y, width, height, img2) || + antialiased(img2, x, y, width, height, img1))) { + // one of the pixels is anti-aliasing; draw as yellow and do not count as difference + if (output) drawPixel(output, pos, 255, 255, 0); + + } else { + // found substantial difference not caused by anti-aliasing; draw it as red + if (output) drawPixel(output, pos, 255, 0, 0); + diff++; + } + + } else if (output) { + // pixels are similar; draw background as grayscale image blended with white + var val = blend(grayPixel(img1, pos), 0.1); + drawPixel(output, pos, val, val, val); + } + } + } + + // return the number of different pixels + return diff; +} + +// check if a pixel is likely a part of anti-aliasing; +// based on "Anti-aliased Pixel and Intensity Slope Detector" paper by V. Vysniauskas, 2009 + +function antialiased(img, x1, y1, width, height, img2) { + var x0 = Math.max(x1 - 1, 0), + y0 = Math.max(y1 - 1, 0), + x2 = Math.min(x1 + 1, width - 1), + y2 = Math.min(y1 + 1, height - 1), + pos = (y1 * width + x1) * 4, + zeroes = 0, + positives = 0, + negatives = 0, + min = 0, + max = 0, + minX, minY, maxX, maxY; + + // go through 8 adjacent pixels + for (var x = x0; x <= x2; x++) { + for (var y = y0; y <= y2; y++) { + if (x === x1 && y === y1) continue; + + // brightness delta between the center pixel and adjacent one + var delta = colorDelta(img, img, pos, (y * width + x) * 4, true); + + // count the number of equal, darker and brighter adjacent pixels + if (delta === 0) zeroes++; + else if (delta < 0) negatives++; + else if (delta > 0) positives++; + + // if found more than 2 equal siblings, it's definitely not anti-aliasing + if (zeroes > 2) return false; + + if (!img2) continue; + + // remember the darkest pixel + if (delta < min) { + min = delta; + minX = x; + minY = y; + } + // remember the brightest pixel + if (delta > max) { + max = delta; + maxX = x; + maxY = y; + } + } + } + + if (!img2) return true; + + // if there are no both darker and brighter pixels among siblings, it's not anti-aliasing + if (negatives === 0 || positives === 0) return false; + + // if either the darkest or the brightest pixel has more than 2 equal siblings in both images + // (definitely not anti-aliased), this pixel is anti-aliased + return (!antialiased(img, minX, minY, width, height) && !antialiased(img2, minX, minY, width, height)) || + (!antialiased(img, maxX, maxY, width, height) && !antialiased(img2, maxX, maxY, width, height)); +} + +// calculate color difference according to the paper "Measuring perceived color difference +// using YIQ NTSC transmission color space in mobile applications" by Y. Kotsarenko and F. Ramos + +function colorDelta(img1, img2, k, m, yOnly) { + var a1 = img1[k + 3] / 255, + a2 = img2[m + 3] / 255, + + r1 = blend(img1[k + 0], a1), + g1 = blend(img1[k + 1], a1), + b1 = blend(img1[k + 2], a1), + + r2 = blend(img2[m + 0], a2), + g2 = blend(img2[m + 1], a2), + b2 = blend(img2[m + 2], a2), + + y = rgb2y(r1, g1, b1) - rgb2y(r2, g2, b2); + + if (yOnly) return y; // brightness difference only + + var i = rgb2i(r1, g1, b1) - rgb2i(r2, g2, b2), + q = rgb2q(r1, g1, b1) - rgb2q(r2, g2, b2); + + return 0.5053 * y * y + 0.299 * i * i + 0.1957 * q * q; +} + +function rgb2y(r, g, b) { return r * 0.29889531 + g * 0.58662247 + b * 0.11448223; } +function rgb2i(r, g, b) { return r * 0.59597799 - g * 0.27417610 - b * 0.32180189; } +function rgb2q(r, g, b) { return r * 0.21147017 - g * 0.52261711 + b * 0.31114694; } + +// blend semi-transparent color with white +function blend(c, a) { + return 255 + (c - 255) * a; +} + +function drawPixel(output, pos, r, g, b) { + output[pos + 0] = r; + output[pos + 1] = g; + output[pos + 2] = b; + output[pos + 3] = 255; +} + +function grayPixel(img, i) { + var a = img[i + 3] / 255, + r = blend(img[i + 0], a), + g = blend(img[i + 1], a), + b = blend(img[i + 2], a); + return rgb2y(r, g, b); +} + +},{}],110:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var interlaceUtils = require('./interlace'); + +var pixelBppMap = { + 1: { // L + 0: 0, + 1: 0, + 2: 0, + 3: 0xff + }, + 2: { // LA + 0: 0, + 1: 0, + 2: 0, + 3: 1 + }, + 3: { // RGB + 0: 0, + 1: 1, + 2: 2, + 3: 0xff + }, + 4: { // RGBA + 0: 0, + 1: 1, + 2: 2, + 3: 3 + } +}; + +function bitRetriever(data, depth) { + + var leftOver = []; + var i = 0; + + function split() { + if (i === data.length) { + throw new Error('Ran out of data'); + } + var byte = data[i]; + i++; + var byte8, byte7, byte6, byte5, byte4, byte3, byte2, byte1; + switch (depth) { + default: + throw new Error('unrecognised depth'); + case 16: + byte2 = data[i]; + i++; + leftOver.push(((byte << 8) + byte2)); + break; + case 4: + byte2 = byte & 0x0f; + byte1 = byte >> 4; + leftOver.push(byte1, byte2); + break; + case 2: + byte4 = byte & 3; + byte3 = byte >> 2 & 3; + byte2 = byte >> 4 & 3; + byte1 = byte >> 6 & 3; + leftOver.push(byte1, byte2, byte3, byte4); + break; + case 1: + byte8 = byte & 1; + byte7 = byte >> 1 & 1; + byte6 = byte >> 2 & 1; + byte5 = byte >> 3 & 1; + byte4 = byte >> 4 & 1; + byte3 = byte >> 5 & 1; + byte2 = byte >> 6 & 1; + byte1 = byte >> 7 & 1; + leftOver.push(byte1, byte2, byte3, byte4, byte5, byte6, byte7, byte8); + break; + } + } + + return { + get: function(count) { + while (leftOver.length < count) { + split(); + } + var returner = leftOver.slice(0, count); + leftOver = leftOver.slice(count); + return returner; + }, + resetAfterLine: function() { + leftOver.length = 0; + }, + end: function() { + if (i !== data.length) { + throw new Error('extra data found'); + } + } + }; +} + +function mapImage8Bit(image, pxData, getPxPos, bpp, data, rawPos) { // eslint-disable-line max-params + var imageWidth = image.width; + var imageHeight = image.height; + var imagePass = image.index; + for (var y = 0; y < imageHeight; y++) { + for (var x = 0; x < imageWidth; x++) { + var pxPos = getPxPos(x, y, imagePass); + + for (var i = 0; i < 4; i++) { + var idx = pixelBppMap[bpp][i]; + if (idx === 0xff) { + pxData[pxPos + i] = 0xff; + } else { + var dataPos = idx + rawPos; + if (dataPos === data.length) { + throw new Error('Ran out of data'); + } + pxData[pxPos + i] = data[dataPos]; + } + } + rawPos += bpp; //eslint-disable-line no-param-reassign + } + } + return rawPos; +} + +function mapImageCustomBit(image, pxData, getPxPos, bpp, bits, maxBit) { // eslint-disable-line max-params + var imageWidth = image.width; + var imageHeight = image.height; + var imagePass = image.index; + for (var y = 0; y < imageHeight; y++) { + for (var x = 0; x < imageWidth; x++) { + var pixelData = bits.get(bpp); + var pxPos = getPxPos(x, y, imagePass); + + for (var i = 0; i < 4; i++) { + var idx = pixelBppMap[bpp][i]; + pxData[pxPos + i] = idx !== 0xff ? pixelData[idx] : maxBit; + } + } + bits.resetAfterLine(); + } +} + +exports.dataToBitMap = function(data, bitmapInfo) { + + var width = bitmapInfo.width; + var height = bitmapInfo.height; + var depth = bitmapInfo.depth; + var bpp = bitmapInfo.bpp; + var interlace = bitmapInfo.interlace; + + if (depth !== 8) { + var bits = bitRetriever(data, depth); + } + var pxData; + if (depth <= 8) { + pxData = new Buffer(width * height * 4); + } + else { + pxData = new Uint16Array(width * height * 4); + } + var maxBit = Math.pow(2, depth) - 1; + var rawPos = 0; + var images; + var getPxPos; + + if (interlace) { + images = interlaceUtils.getImagePasses(width, height); + getPxPos = interlaceUtils.getInterlaceIterator(width, height); + } + else { + var nonInterlacedPxPos = 0; + getPxPos = function() { + var returner = nonInterlacedPxPos; + nonInterlacedPxPos += 4; + return returner; + }; + images = [{ width: width, height: height }]; + } + + for (var imageIndex = 0; imageIndex < images.length; imageIndex++) { + if (depth === 8) { + rawPos = mapImage8Bit(images[imageIndex], pxData, getPxPos, bpp, data, rawPos); + } + else { + mapImageCustomBit(images[imageIndex], pxData, getPxPos, bpp, bits, maxBit); + } + } + if (depth === 8) { + if (rawPos !== data.length) { + throw new Error('extra data found'); + } + } + else { + bits.end(); + } + + return pxData; +}; + +}).call(this,require("buffer").Buffer) +},{"./interlace":120,"buffer":48}],111:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var constants = require('./constants'); + +module.exports = function(dataIn, width, height, options) { + var outHasAlpha = [constants.COLORTYPE_COLOR_ALPHA, constants.COLORTYPE_ALPHA].indexOf(options.colorType) !== -1; + if (options.colorType === options.inputColorType) { + var bigEndian = (function() { + var buffer = new ArrayBuffer(2); + new DataView(buffer).setInt16(0, 256, true /* littleEndian */); + // Int16Array uses the platform's endianness. + return new Int16Array(buffer)[0] !== 256; + })(); + // If no need to convert to grayscale and alpha is present/absent in both, take a fast route + if (options.bitDepth === 8 || (options.bitDepth === 16 && bigEndian)){ + return dataIn; + } + } + + // map to a UInt16 array if data is 16bit, fix endianness below + var data = options.bitDepth !== 16 ? dataIn : new Uint16Array(dataIn.buffer); + + var maxValue = 255; + var inBpp = constants.COLORTYPE_TO_BPP_MAP[options.inputColorType]; + if (inBpp == 4 && !options.inputHasAlpha) inBpp = 3; + var outBpp = constants.COLORTYPE_TO_BPP_MAP[options.colorType]; + if (options.bitDepth === 16) { + maxValue = 65535; + outBpp *= 2; + } + var outData = new Buffer(width * height * outBpp); + + var inIndex = 0; + var outIndex = 0; + + var bgColor = options.bgColor || {}; + if (bgColor.red === undefined) { + bgColor.red = maxValue; + } + if (bgColor.green === undefined) { + bgColor.green = maxValue; + } + if (bgColor.blue === undefined) { + bgColor.blue = maxValue; + } + + function getRGBA(data, inIndex) { + var red, green, blue, alpha = maxValue; + switch (options.inputColorType) { + case constants.COLORTYPE_COLOR_ALPHA: + alpha = data[inIndex + 3]; + red = data[inIndex]; + green = data[inIndex+1]; + blue = data[inIndex+2]; + break; + case constants.COLORTYPE_COLOR: + red = data[inIndex]; + green = data[inIndex+1]; + blue = data[inIndex+2]; + break; + case constants.COLORTYPE_ALPHA: + alpha = data[inIndex + 1]; + red = data[inIndex]; + green = red; + blue = red; + break; + case constants.COLORTYPE_GRAYSCALE: + red = data[inIndex]; + green = red; + blue = red; + break; + default: + throw new Error('input color type:' + options.inputColorType + ' is not supported at present'); + } + + if (options.inputHasAlpha) { + if (!outHasAlpha) { + alpha /= maxValue; + red = Math.min(Math.max(Math.round((1 - alpha) * bgColor.red + alpha * red), 0), maxValue); + green = Math.min(Math.max(Math.round((1 - alpha) * bgColor.green + alpha * green), 0), maxValue); + blue = Math.min(Math.max(Math.round((1 - alpha) * bgColor.blue + alpha * blue), 0), maxValue); + } + } + return {red: red, green: green, blue: blue, alpha: alpha}; + } + + for (var y = 0; y < height; y++) { + for (var x = 0; x < width; x++) { + var rgba = getRGBA(data, inIndex); + + switch (options.colorType) { + case constants.COLORTYPE_COLOR_ALPHA: + case constants.COLORTYPE_COLOR: + if (options.bitDepth === 8) { + outData[outIndex] = rgba.red; + outData[outIndex + 1] = rgba.green; + outData[outIndex + 2] = rgba.blue; + if (outHasAlpha) { + outData[outIndex + 3] = rgba.alpha; + } + } else { + outData.writeUInt16BE(rgba.red, outIndex); + outData.writeUInt16BE(rgba.green, outIndex + 2); + outData.writeUInt16BE(rgba.blue, outIndex + 4); + if (outHasAlpha) { + outData.writeUInt16BE(rgba.alpha, outIndex + 6); + } + } + break; + case constants.COLORTYPE_ALPHA: + case constants.COLORTYPE_GRAYSCALE: + // Convert to grayscale and alpha + var grayscale = (rgba.red + rgba.green + rgba.blue) / 3; + if (options.bitDepth === 8) { + outData[outIndex] = grayscale; + if (outHasAlpha) { + outData[outIndex + 1] = rgba.alpha; + } + } else { + outData.writeUInt16BE(grayscale, outIndex); + if (outHasAlpha) { + outData.writeUInt16BE(rgba.alpha, outIndex + 2); + } + } + break; + } + + inIndex += inBpp; + outIndex += outBpp; + } + } + + return outData; +}; + +}).call(this,require("buffer").Buffer) +},{"./constants":113,"buffer":48}],112:[function(require,module,exports){ +(function (process,Buffer){ +'use strict'; + + +var util = require('util'); +var Stream = require('stream'); + + +var ChunkStream = module.exports = function() { + Stream.call(this); + + this._buffers = []; + this._buffered = 0; + + this._reads = []; + this._paused = false; + + this._encoding = 'utf8'; + this.writable = true; +}; +util.inherits(ChunkStream, Stream); + + +ChunkStream.prototype.read = function(length, callback) { + + this._reads.push({ + length: Math.abs(length), // if length < 0 then at most this length + allowLess: length < 0, + func: callback + }); + + process.nextTick(function() { + this._process(); + + // its paused and there is not enought data then ask for more + if (this._paused && this._reads.length > 0) { + this._paused = false; + + this.emit('drain'); + } + }.bind(this)); +}; + +ChunkStream.prototype.write = function(data, encoding) { + + if (!this.writable) { + this.emit('error', new Error('Stream not writable')); + return false; + } + + var dataBuffer; + if (Buffer.isBuffer(data)) { + dataBuffer = data; + } + else { + dataBuffer = new Buffer(data, encoding || this._encoding); + } + + this._buffers.push(dataBuffer); + this._buffered += dataBuffer.length; + + this._process(); + + // ok if there are no more read requests + if (this._reads && this._reads.length === 0) { + this._paused = true; + } + + return this.writable && !this._paused; +}; + +ChunkStream.prototype.end = function(data, encoding) { + + if (data) { + this.write(data, encoding); + } + + this.writable = false; + + // already destroyed + if (!this._buffers) { + return; + } + + // enqueue or handle end + if (this._buffers.length === 0) { + this._end(); + } + else { + this._buffers.push(null); + this._process(); + } +}; + +ChunkStream.prototype.destroySoon = ChunkStream.prototype.end; + +ChunkStream.prototype._end = function() { + + if (this._reads.length > 0) { + this.emit('error', + new Error('There are some read requests waiting on finished stream') + ); + } + + this.destroy(); +}; + +ChunkStream.prototype.destroy = function() { + + if (!this._buffers) { + return; + } + + this.writable = false; + this._reads = null; + this._buffers = null; + + this.emit('close'); +}; + +ChunkStream.prototype._processReadAllowingLess = function(read) { + // ok there is any data so that we can satisfy this request + this._reads.shift(); // == read + + // first we need to peek into first buffer + var smallerBuf = this._buffers[0]; + + // ok there is more data than we need + if (smallerBuf.length > read.length) { + + this._buffered -= read.length; + this._buffers[0] = smallerBuf.slice(read.length); + + read.func.call(this, smallerBuf.slice(0, read.length)); + + } + else { + // ok this is less than maximum length so use it all + this._buffered -= smallerBuf.length; + this._buffers.shift(); // == smallerBuf + + read.func.call(this, smallerBuf); + } +}; + +ChunkStream.prototype._processRead = function(read) { + this._reads.shift(); // == read + + var pos = 0; + var count = 0; + var data = new Buffer(read.length); + + // create buffer for all data + while (pos < read.length) { + + var buf = this._buffers[count++]; + var len = Math.min(buf.length, read.length - pos); + + buf.copy(data, pos, 0, len); + pos += len; + + // last buffer wasn't used all so just slice it and leave + if (len !== buf.length) { + this._buffers[--count] = buf.slice(len); + } + } + + // remove all used buffers + if (count > 0) { + this._buffers.splice(0, count); + } + + this._buffered -= read.length; + + read.func.call(this, data); +}; + +ChunkStream.prototype._process = function() { + + try { + // as long as there is any data and read requests + while (this._buffered > 0 && this._reads && this._reads.length > 0) { + + var read = this._reads[0]; + + // read any data (but no more than length) + if (read.allowLess) { + this._processReadAllowingLess(read); + + } + else if (this._buffered >= read.length) { + // ok we can meet some expectations + + this._processRead(read); + } + else { + // not enought data to satisfy first request in queue + // so we need to wait for more + break; + } + } + + if (this._buffers && this._buffers.length > 0 && this._buffers[0] === null) { + this._end(); + } + } + catch (ex) { + this.emit('error', ex); + } +}; + +}).call(this,require('_process'),require("buffer").Buffer) +},{"_process":133,"buffer":48,"stream":155,"util":186}],113:[function(require,module,exports){ +'use strict'; + + +module.exports = { + + PNG_SIGNATURE: [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], + + TYPE_IHDR: 0x49484452, + TYPE_IEND: 0x49454e44, + TYPE_IDAT: 0x49444154, + TYPE_PLTE: 0x504c5445, + TYPE_tRNS: 0x74524e53, // eslint-disable-line camelcase + TYPE_gAMA: 0x67414d41, // eslint-disable-line camelcase + + // color-type bits + COLORTYPE_GRAYSCALE: 0, + COLORTYPE_PALETTE: 1, + COLORTYPE_COLOR: 2, + COLORTYPE_ALPHA: 4, // e.g. grayscale and alpha + + // color-type combinations + COLORTYPE_PALETTE_COLOR: 3, + COLORTYPE_COLOR_ALPHA: 6, + + COLORTYPE_TO_BPP_MAP: { + 0: 1, + 2: 3, + 3: 1, + 4: 2, + 6: 4 + }, + + GAMMA_DIVISION: 100000 +}; + +},{}],114:[function(require,module,exports){ +'use strict'; + +var crcTable = []; + +(function() { + for (var i = 0; i < 256; i++) { + var currentCrc = i; + for (var j = 0; j < 8; j++) { + if (currentCrc & 1) { + currentCrc = 0xedb88320 ^ (currentCrc >>> 1); + } + else { + currentCrc = currentCrc >>> 1; + } + } + crcTable[i] = currentCrc; + } +}()); + +var CrcCalculator = module.exports = function() { + this._crc = -1; +}; + +CrcCalculator.prototype.write = function(data) { + + for (var i = 0; i < data.length; i++) { + this._crc = crcTable[(this._crc ^ data[i]) & 0xff] ^ (this._crc >>> 8); + } + return true; +}; + +CrcCalculator.prototype.crc32 = function() { + return this._crc ^ -1; +}; + + +CrcCalculator.crc32 = function(buf) { + + var crc = -1; + for (var i = 0; i < buf.length; i++) { + crc = crcTable[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8); + } + return crc ^ -1; +}; + +},{}],115:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var paethPredictor = require('./paeth-predictor'); + +function filterNone(pxData, pxPos, byteWidth, rawData, rawPos) { + + for (var x = 0; x < byteWidth; x++) { + rawData[rawPos + x] = pxData[pxPos + x]; + } +} + +function filterSumNone(pxData, pxPos, byteWidth) { + + var sum = 0; + var length = pxPos + byteWidth; + + for (var i = pxPos; i < length; i++) { + sum += Math.abs(pxData[i]); + } + return sum; +} + +function filterSub(pxData, pxPos, byteWidth, rawData, rawPos, bpp) { + + for (var x = 0; x < byteWidth; x++) { + + var left = x >= bpp ? pxData[pxPos + x - bpp] : 0; + var val = pxData[pxPos + x] - left; + + rawData[rawPos + x] = val; + } +} + +function filterSumSub(pxData, pxPos, byteWidth, bpp) { + + var sum = 0; + for (var x = 0; x < byteWidth; x++) { + + var left = x >= bpp ? pxData[pxPos + x - bpp] : 0; + var val = pxData[pxPos + x] - left; + + sum += Math.abs(val); + } + + return sum; +} + +function filterUp(pxData, pxPos, byteWidth, rawData, rawPos) { + + for (var x = 0; x < byteWidth; x++) { + + var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0; + var val = pxData[pxPos + x] - up; + + rawData[rawPos + x] = val; + } +} + +function filterSumUp(pxData, pxPos, byteWidth) { + + var sum = 0; + var length = pxPos + byteWidth; + for (var x = pxPos; x < length; x++) { + + var up = pxPos > 0 ? pxData[x - byteWidth] : 0; + var val = pxData[x] - up; + + sum += Math.abs(val); + } + + return sum; +} + +function filterAvg(pxData, pxPos, byteWidth, rawData, rawPos, bpp) { + + for (var x = 0; x < byteWidth; x++) { + + var left = x >= bpp ? pxData[pxPos + x - bpp] : 0; + var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0; + var val = pxData[pxPos + x] - ((left + up) >> 1); + + rawData[rawPos + x] = val; + } +} + +function filterSumAvg(pxData, pxPos, byteWidth, bpp) { + + var sum = 0; + for (var x = 0; x < byteWidth; x++) { + + var left = x >= bpp ? pxData[pxPos + x - bpp] : 0; + var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0; + var val = pxData[pxPos + x] - ((left + up) >> 1); + + sum += Math.abs(val); + } + + return sum; +} + +function filterPaeth(pxData, pxPos, byteWidth, rawData, rawPos, bpp) { + + for (var x = 0; x < byteWidth; x++) { + + var left = x >= bpp ? pxData[pxPos + x - bpp] : 0; + var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0; + var upleft = pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0; + var val = pxData[pxPos + x] - paethPredictor(left, up, upleft); + + rawData[rawPos + x] = val; + } +} + +function filterSumPaeth(pxData, pxPos, byteWidth, bpp) { + var sum = 0; + for (var x = 0; x < byteWidth; x++) { + + var left = x >= bpp ? pxData[pxPos + x - bpp] : 0; + var up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0; + var upleft = pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0; + var val = pxData[pxPos + x] - paethPredictor(left, up, upleft); + + sum += Math.abs(val); + } + + return sum; +} + +var filters = { + 0: filterNone, + 1: filterSub, + 2: filterUp, + 3: filterAvg, + 4: filterPaeth +}; + +var filterSums = { + 0: filterSumNone, + 1: filterSumSub, + 2: filterSumUp, + 3: filterSumAvg, + 4: filterSumPaeth +}; + +module.exports = function(pxData, width, height, options, bpp) { + + var filterTypes; + if (!('filterType' in options) || options.filterType === -1) { + filterTypes = [0, 1, 2, 3, 4]; + } + else if (typeof options.filterType === 'number') { + filterTypes = [options.filterType]; + } + else { + throw new Error('unrecognised filter types'); + } + + if (options.bitDepth === 16) bpp *= 2; + var byteWidth = width * bpp; + var rawPos = 0; + var pxPos = 0; + var rawData = new Buffer((byteWidth + 1) * height); + + var sel = filterTypes[0]; + + for (var y = 0; y < height; y++) { + + if (filterTypes.length > 1) { + // find best filter for this line (with lowest sum of values) + var min = Infinity; + + for (var i = 0; i < filterTypes.length; i++) { + var sum = filterSums[filterTypes[i]](pxData, pxPos, byteWidth, bpp); + if (sum < min) { + sel = filterTypes[i]; + min = sum; + } + } + } + + rawData[rawPos] = sel; + rawPos++; + filters[sel](pxData, pxPos, byteWidth, rawData, rawPos, bpp); + rawPos += byteWidth; + pxPos += byteWidth; + } + return rawData; +}; + +}).call(this,require("buffer").Buffer) +},{"./paeth-predictor":124,"buffer":48}],116:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var util = require('util'); +var ChunkStream = require('./chunkstream'); +var Filter = require('./filter-parse'); + + +var FilterAsync = module.exports = function(bitmapInfo) { + ChunkStream.call(this); + + var buffers = []; + var that = this; + this._filter = new Filter(bitmapInfo, { + read: this.read.bind(this), + write: function(buffer) { + buffers.push(buffer); + }, + complete: function() { + that.emit('complete', Buffer.concat(buffers)); + } + }); + + this._filter.start(); +}; +util.inherits(FilterAsync, ChunkStream); + +}).call(this,require("buffer").Buffer) +},{"./chunkstream":112,"./filter-parse":118,"buffer":48,"util":186}],117:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var SyncReader = require('./sync-reader'); +var Filter = require('./filter-parse'); + + +exports.process = function(inBuffer, bitmapInfo) { + + var outBuffers = []; + var reader = new SyncReader(inBuffer); + var filter = new Filter(bitmapInfo, { + read: reader.read.bind(reader), + write: function(bufferPart) { + outBuffers.push(bufferPart); + }, + complete: function() { + } + }); + + filter.start(); + reader.process(); + + return Buffer.concat(outBuffers); +}; +}).call(this,require("buffer").Buffer) +},{"./filter-parse":118,"./sync-reader":131,"buffer":48}],118:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var interlaceUtils = require('./interlace'); +var paethPredictor = require('./paeth-predictor'); + +function getByteWidth(width, bpp, depth) { + var byteWidth = width * bpp; + if (depth !== 8) { + byteWidth = Math.ceil(byteWidth / (8 / depth)); + } + return byteWidth; +} + +var Filter = module.exports = function(bitmapInfo, dependencies) { + + var width = bitmapInfo.width; + var height = bitmapInfo.height; + var interlace = bitmapInfo.interlace; + var bpp = bitmapInfo.bpp; + var depth = bitmapInfo.depth; + + this.read = dependencies.read; + this.write = dependencies.write; + this.complete = dependencies.complete; + + this._imageIndex = 0; + this._images = []; + if (interlace) { + var passes = interlaceUtils.getImagePasses(width, height); + for (var i = 0; i < passes.length; i++) { + this._images.push({ + byteWidth: getByteWidth(passes[i].width, bpp, depth), + height: passes[i].height, + lineIndex: 0 + }); + } + } + else { + this._images.push({ + byteWidth: getByteWidth(width, bpp, depth), + height: height, + lineIndex: 0 + }); + } + + // when filtering the line we look at the pixel to the left + // the spec also says it is done on a byte level regardless of the number of pixels + // so if the depth is byte compatible (8 or 16) we subtract the bpp in order to compare back + // a pixel rather than just a different byte part. However if we are sub byte, we ignore. + if (depth === 8) { + this._xComparison = bpp; + } + else if (depth === 16) { + this._xComparison = bpp * 2; + } + else { + this._xComparison = 1; + } +}; + +Filter.prototype.start = function() { + this.read(this._images[this._imageIndex].byteWidth + 1, this._reverseFilterLine.bind(this)); +}; + +Filter.prototype._unFilterType1 = function(rawData, unfilteredLine, byteWidth) { + + var xComparison = this._xComparison; + var xBiggerThan = xComparison - 1; + + for (var x = 0; x < byteWidth; x++) { + var rawByte = rawData[1 + x]; + var f1Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0; + unfilteredLine[x] = rawByte + f1Left; + } +}; + +Filter.prototype._unFilterType2 = function(rawData, unfilteredLine, byteWidth) { + + var lastLine = this._lastLine; + + for (var x = 0; x < byteWidth; x++) { + var rawByte = rawData[1 + x]; + var f2Up = lastLine ? lastLine[x] : 0; + unfilteredLine[x] = rawByte + f2Up; + } +}; + +Filter.prototype._unFilterType3 = function(rawData, unfilteredLine, byteWidth) { + + var xComparison = this._xComparison; + var xBiggerThan = xComparison - 1; + var lastLine = this._lastLine; + + for (var x = 0; x < byteWidth; x++) { + var rawByte = rawData[1 + x]; + var f3Up = lastLine ? lastLine[x] : 0; + var f3Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0; + var f3Add = Math.floor((f3Left + f3Up) / 2); + unfilteredLine[x] = rawByte + f3Add; + } +}; + +Filter.prototype._unFilterType4 = function(rawData, unfilteredLine, byteWidth) { + + var xComparison = this._xComparison; + var xBiggerThan = xComparison - 1; + var lastLine = this._lastLine; + + for (var x = 0; x < byteWidth; x++) { + var rawByte = rawData[1 + x]; + var f4Up = lastLine ? lastLine[x] : 0; + var f4Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0; + var f4UpLeft = x > xBiggerThan && lastLine ? lastLine[x - xComparison] : 0; + var f4Add = paethPredictor(f4Left, f4Up, f4UpLeft); + unfilteredLine[x] = rawByte + f4Add; + } +}; + +Filter.prototype._reverseFilterLine = function(rawData) { + + var filter = rawData[0]; + var unfilteredLine; + var currentImage = this._images[this._imageIndex]; + var byteWidth = currentImage.byteWidth; + + if (filter === 0) { + unfilteredLine = rawData.slice(1, byteWidth + 1); + } + else { + + unfilteredLine = new Buffer(byteWidth); + + switch (filter) { + case 1: + this._unFilterType1(rawData, unfilteredLine, byteWidth); + break; + case 2: + this._unFilterType2(rawData, unfilteredLine, byteWidth); + break; + case 3: + this._unFilterType3(rawData, unfilteredLine, byteWidth); + break; + case 4: + this._unFilterType4(rawData, unfilteredLine, byteWidth); + break; + default: + throw new Error('Unrecognised filter type - ' + filter); + } + } + + this.write(unfilteredLine); + + currentImage.lineIndex++; + if (currentImage.lineIndex >= currentImage.height) { + this._lastLine = null; + this._imageIndex++; + currentImage = this._images[this._imageIndex]; + } + else { + this._lastLine = unfilteredLine; + } + + if (currentImage) { + // read, using the byte width that may be from the new current image + this.read(currentImage.byteWidth + 1, this._reverseFilterLine.bind(this)); + } + else { + this._lastLine = null; + this.complete(); + } +}; + +}).call(this,require("buffer").Buffer) +},{"./interlace":120,"./paeth-predictor":124,"buffer":48}],119:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +function dePalette(indata, outdata, width, height, palette) { + var pxPos = 0; + // use values from palette + for (var y = 0; y < height; y++) { + for (var x = 0; x < width; x++) { + var color = palette[indata[pxPos]]; + + if (!color) { + throw new Error('index ' + indata[pxPos] + ' not in palette'); + } + + for (var i = 0; i < 4; i++) { + outdata[pxPos + i] = color[i]; + } + pxPos += 4; + } + } +} + +function replaceTransparentColor(indata, outdata, width, height, transColor) { + var pxPos = 0; + for (var y = 0; y < height; y++) { + for (var x = 0; x < width; x++) { + var makeTrans = false; + + if (transColor.length === 1) { + if (transColor[0] === indata[pxPos]) { + makeTrans = true; + } + } + else if (transColor[0] === indata[pxPos] && transColor[1] === indata[pxPos + 1] && transColor[2] === indata[pxPos + 2]) { + makeTrans = true; + } + if (makeTrans) { + for (var i = 0; i < 4; i++) { + outdata[pxPos + i] = 0; + } + } + pxPos += 4; + } + } +} + +function scaleDepth(indata, outdata, width, height, depth) { + var maxOutSample = 255; + var maxInSample = Math.pow(2, depth) - 1; + var pxPos = 0; + + for (var y = 0; y < height; y++) { + for (var x = 0; x < width; x++) { + for (var i = 0; i < 4; i++) { + outdata[pxPos + i] = Math.floor((indata[pxPos + i] * maxOutSample) / maxInSample + 0.5); + } + pxPos += 4; + } + } +} + +module.exports = function(indata, imageData) { + + var depth = imageData.depth; + var width = imageData.width; + var height = imageData.height; + var colorType = imageData.colorType; + var transColor = imageData.transColor; + var palette = imageData.palette; + + var outdata = indata; // only different for 16 bits + + if (colorType === 3) { // paletted + dePalette(indata, outdata, width, height, palette); + } + else { + if (transColor) { + replaceTransparentColor(indata, outdata, width, height, transColor); + } + // if it needs scaling + if (depth !== 8) { + // if we need to change the buffer size + if (depth === 16) { + outdata = new Buffer(width * height * 4); + } + scaleDepth(indata, outdata, width, height, depth); + } + } + return outdata; +}; + +}).call(this,require("buffer").Buffer) +},{"buffer":48}],120:[function(require,module,exports){ +'use strict'; + +// Adam 7 +// 0 1 2 3 4 5 6 7 +// 0 x 6 4 6 x 6 4 6 +// 1 7 7 7 7 7 7 7 7 +// 2 5 6 5 6 5 6 5 6 +// 3 7 7 7 7 7 7 7 7 +// 4 3 6 4 6 3 6 4 6 +// 5 7 7 7 7 7 7 7 7 +// 6 5 6 5 6 5 6 5 6 +// 7 7 7 7 7 7 7 7 7 + + +var imagePasses = [ + { // pass 1 - 1px + x: [0], + y: [0] + }, + { // pass 2 - 1px + x: [4], + y: [0] + }, + { // pass 3 - 2px + x: [0, 4], + y: [4] + }, + { // pass 4 - 4px + x: [2, 6], + y: [0, 4] + }, + { // pass 5 - 8px + x: [0, 2, 4, 6], + y: [2, 6] + }, + { // pass 6 - 16px + x: [1, 3, 5, 7], + y: [0, 2, 4, 6] + }, + { // pass 7 - 32px + x: [0, 1, 2, 3, 4, 5, 6, 7], + y: [1, 3, 5, 7] + } +]; + +exports.getImagePasses = function(width, height) { + var images = []; + var xLeftOver = width % 8; + var yLeftOver = height % 8; + var xRepeats = (width - xLeftOver) / 8; + var yRepeats = (height - yLeftOver) / 8; + for (var i = 0; i < imagePasses.length; i++) { + var pass = imagePasses[i]; + var passWidth = xRepeats * pass.x.length; + var passHeight = yRepeats * pass.y.length; + for (var j = 0; j < pass.x.length; j++) { + if (pass.x[j] < xLeftOver) { + passWidth++; + } + else { + break; + } + } + for (j = 0; j < pass.y.length; j++) { + if (pass.y[j] < yLeftOver) { + passHeight++; + } + else { + break; + } + } + if (passWidth > 0 && passHeight > 0) { + images.push({ width: passWidth, height: passHeight, index: i }); + } + } + return images; +}; + +exports.getInterlaceIterator = function(width) { + return function(x, y, pass) { + var outerXLeftOver = x % imagePasses[pass].x.length; + var outerX = (((x - outerXLeftOver) / imagePasses[pass].x.length) * 8) + imagePasses[pass].x[outerXLeftOver]; + var outerYLeftOver = y % imagePasses[pass].y.length; + var outerY = (((y - outerYLeftOver) / imagePasses[pass].y.length) * 8) + imagePasses[pass].y[outerYLeftOver]; + return (outerX * 4) + (outerY * width * 4); + }; +}; +},{}],121:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var util = require('util'); +var Stream = require('stream'); +var constants = require('./constants'); +var Packer = require('./packer'); + +var PackerAsync = module.exports = function(opt) { + Stream.call(this); + + var options = opt || {}; + + this._packer = new Packer(options); + this._deflate = this._packer.createDeflate(); + + this.readable = true; +}; +util.inherits(PackerAsync, Stream); + + +PackerAsync.prototype.pack = function(data, width, height, gamma) { + // Signature + this.emit('data', new Buffer(constants.PNG_SIGNATURE)); + this.emit('data', this._packer.packIHDR(width, height)); + + if (gamma) { + this.emit('data', this._packer.packGAMA(gamma)); + } + + var filteredData = this._packer.filterData(data, width, height); + + // compress it + this._deflate.on('error', this.emit.bind(this, 'error')); + + this._deflate.on('data', function(compressedData) { + this.emit('data', this._packer.packIDAT(compressedData)); + }.bind(this)); + + this._deflate.on('end', function() { + this.emit('data', this._packer.packIEND()); + this.emit('end'); + }.bind(this)); + + this._deflate.end(filteredData); +}; + +}).call(this,require("buffer").Buffer) +},{"./constants":113,"./packer":123,"buffer":48,"stream":155,"util":186}],122:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var hasSyncZlib = true; +var zlib = require('zlib'); +if (!zlib.deflateSync) { + hasSyncZlib = false; +} +var constants = require('./constants'); +var Packer = require('./packer'); + +module.exports = function(metaData, opt) { + + if (!hasSyncZlib) { + throw new Error('To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0'); + } + + var options = opt || {}; + + var packer = new Packer(options); + + var chunks = []; + + // Signature + chunks.push(new Buffer(constants.PNG_SIGNATURE)); + + // Header + chunks.push(packer.packIHDR(metaData.width, metaData.height)); + + if (metaData.gamma) { + chunks.push(packer.packGAMA(metaData.gamma)); + } + + var filteredData = packer.filterData(metaData.data, metaData.width, metaData.height); + + // compress it + var compressedData = zlib.deflateSync(filteredData, packer.getDeflateOptions()); + filteredData = null; + + if (!compressedData || !compressedData.length) { + throw new Error('bad png - invalid compressed data response'); + } + chunks.push(packer.packIDAT(compressedData)); + + // End + chunks.push(packer.packIEND()); + + return Buffer.concat(chunks); +}; + +}).call(this,require("buffer").Buffer) +},{"./constants":113,"./packer":123,"buffer":48,"zlib":35}],123:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var constants = require('./constants'); +var CrcStream = require('./crc'); +var bitPacker = require('./bitpacker'); +var filter = require('./filter-pack'); +var zlib = require('zlib'); + +var Packer = module.exports = function(options) { + this._options = options; + + options.deflateChunkSize = options.deflateChunkSize || 32 * 1024; + options.deflateLevel = options.deflateLevel != null ? options.deflateLevel : 9; + options.deflateStrategy = options.deflateStrategy != null ? options.deflateStrategy : 3; + options.inputHasAlpha = options.inputHasAlpha != null ? options.inputHasAlpha : true; + options.deflateFactory = options.deflateFactory || zlib.createDeflate; + options.bitDepth = options.bitDepth || 8; + // This is outputColorType + options.colorType = (typeof options.colorType === 'number') ? options.colorType : constants.COLORTYPE_COLOR_ALPHA; + options.inputColorType = (typeof options.inputColorType === 'number') ? options.inputColorType : constants.COLORTYPE_COLOR_ALPHA; + + if ([ + constants.COLORTYPE_GRAYSCALE, + constants.COLORTYPE_COLOR, + constants.COLORTYPE_COLOR_ALPHA, + constants.COLORTYPE_ALPHA + ].indexOf(options.colorType) === -1) { + throw new Error('option color type:' + options.colorType + ' is not supported at present'); + } + if ([ + constants.COLORTYPE_GRAYSCALE, + constants.COLORTYPE_COLOR, + constants.COLORTYPE_COLOR_ALPHA, + constants.COLORTYPE_ALPHA + ].indexOf(options.inputColorType) === -1) { + throw new Error('option input color type:' + options.inputColorType + ' is not supported at present'); + } + if (options.bitDepth !== 8 && options.bitDepth !== 16) { + throw new Error('option bit depth:' + options.bitDepth + ' is not supported at present'); + } +}; + +Packer.prototype.getDeflateOptions = function() { + return { + chunkSize: this._options.deflateChunkSize, + level: this._options.deflateLevel, + strategy: this._options.deflateStrategy + }; +}; + +Packer.prototype.createDeflate = function() { + return this._options.deflateFactory(this.getDeflateOptions()); +}; + +Packer.prototype.filterData = function(data, width, height) { + // convert to correct format for filtering (e.g. right bpp and bit depth) + var packedData = bitPacker(data, width, height, this._options); + + // filter pixel data + var bpp = constants.COLORTYPE_TO_BPP_MAP[this._options.colorType]; + var filteredData = filter(packedData, width, height, this._options, bpp); + return filteredData; +}; + +Packer.prototype._packChunk = function(type, data) { + + var len = (data ? data.length : 0); + var buf = new Buffer(len + 12); + + buf.writeUInt32BE(len, 0); + buf.writeUInt32BE(type, 4); + + if (data) { + data.copy(buf, 8); + } + + buf.writeInt32BE(CrcStream.crc32(buf.slice(4, buf.length - 4)), buf.length - 4); + return buf; +}; + +Packer.prototype.packGAMA = function(gamma) { + var buf = new Buffer(4); + buf.writeUInt32BE(Math.floor(gamma * constants.GAMMA_DIVISION), 0); + return this._packChunk(constants.TYPE_gAMA, buf); +}; + +Packer.prototype.packIHDR = function(width, height) { + + var buf = new Buffer(13); + buf.writeUInt32BE(width, 0); + buf.writeUInt32BE(height, 4); + buf[8] = this._options.bitDepth; // Bit depth + buf[9] = this._options.colorType; // colorType + buf[10] = 0; // compression + buf[11] = 0; // filter + buf[12] = 0; // interlace + + return this._packChunk(constants.TYPE_IHDR, buf); +}; + +Packer.prototype.packIDAT = function(data) { + return this._packChunk(constants.TYPE_IDAT, data); +}; + +Packer.prototype.packIEND = function() { + return this._packChunk(constants.TYPE_IEND, null); +}; + +}).call(this,require("buffer").Buffer) +},{"./bitpacker":111,"./constants":113,"./crc":114,"./filter-pack":115,"buffer":48,"zlib":35}],124:[function(require,module,exports){ +'use strict'; + +module.exports = function paethPredictor(left, above, upLeft) { + + var paeth = left + above - upLeft; + var pLeft = Math.abs(paeth - left); + var pAbove = Math.abs(paeth - above); + var pUpLeft = Math.abs(paeth - upLeft); + + if (pLeft <= pAbove && pLeft <= pUpLeft) { + return left; + } + if (pAbove <= pUpLeft) { + return above; + } + return upLeft; +}; +},{}],125:[function(require,module,exports){ +'use strict'; + +var util = require('util'); +var zlib = require('zlib'); +var ChunkStream = require('./chunkstream'); +var FilterAsync = require('./filter-parse-async'); +var Parser = require('./parser'); +var bitmapper = require('./bitmapper'); +var formatNormaliser = require('./format-normaliser'); + +var ParserAsync = module.exports = function(options) { + ChunkStream.call(this); + + this._parser = new Parser(options, { + read: this.read.bind(this), + error: this._handleError.bind(this), + metadata: this._handleMetaData.bind(this), + gamma: this.emit.bind(this, 'gamma'), + palette: this._handlePalette.bind(this), + transColor: this._handleTransColor.bind(this), + finished: this._finished.bind(this), + inflateData: this._inflateData.bind(this) + }); + this._options = options; + this.writable = true; + + this._parser.start(); +}; +util.inherits(ParserAsync, ChunkStream); + + +ParserAsync.prototype._handleError = function(err) { + + this.emit('error', err); + + this.writable = false; + + this.destroy(); + + if (this._inflate && this._inflate.destroy) { + this._inflate.destroy(); + } + + if (this._filter) { + this._filter.destroy(); + // For backward compatibility with Node 7 and below. + // Suppress errors due to _inflate calling write() even after + // it's destroy()'ed. + this._filter.on('error', function() {}); + } + + this.errord = true; +}; + +ParserAsync.prototype._inflateData = function(data) { + if (!this._inflate) { + if (this._bitmapInfo.interlace) { + this._inflate = zlib.createInflate(); + + this._inflate.on('error', this.emit.bind(this, 'error')); + this._filter.on('complete', this._complete.bind(this)); + + this._inflate.pipe(this._filter); + } else { + var rowSize = ((this._bitmapInfo.width * this._bitmapInfo.bpp * this._bitmapInfo.depth + 7) >> 3) + 1; + var imageSize = rowSize * this._bitmapInfo.height; + var chunkSize = Math.max(imageSize, zlib.Z_MIN_CHUNK); + + this._inflate = zlib.createInflate({ chunkSize: chunkSize }); + var leftToInflate = imageSize; + + var emitError = this.emit.bind(this, 'error'); + this._inflate.on('error', function(err) { + if (!leftToInflate) { + return; + } + + emitError(err); + }); + this._filter.on('complete', this._complete.bind(this)); + + var filterWrite = this._filter.write.bind(this._filter); + this._inflate.on('data', function(chunk) { + if (!leftToInflate) { + return; + } + + if (chunk.length > leftToInflate) { + chunk = chunk.slice(0, leftToInflate); + } + + leftToInflate -= chunk.length; + + filterWrite(chunk); + }); + + this._inflate.on('end', this._filter.end.bind(this._filter)); + } + } + this._inflate.write(data); +}; + +ParserAsync.prototype._handleMetaData = function(metaData) { + + this.emit('metadata', metaData); + + this._bitmapInfo = Object.create(metaData); + + this._filter = new FilterAsync(this._bitmapInfo); +}; + +ParserAsync.prototype._handleTransColor = function(transColor) { + this._bitmapInfo.transColor = transColor; +}; + +ParserAsync.prototype._handlePalette = function(palette) { + this._bitmapInfo.palette = palette; +}; + + +ParserAsync.prototype._finished = function() { + if (this.errord) { + return; + } + + if (!this._inflate) { + this.emit('error', 'No Inflate block'); + } + else { + // no more data to inflate + this._inflate.end(); + } + this.destroySoon(); +}; + +ParserAsync.prototype._complete = function(filteredData) { + + if (this.errord) { + return; + } + + try { + var bitmapData = bitmapper.dataToBitMap(filteredData, this._bitmapInfo); + + var normalisedBitmapData = formatNormaliser(bitmapData, this._bitmapInfo); + bitmapData = null; + } + catch (ex) { + this._handleError(ex); + return; + } + + this.emit('parsed', normalisedBitmapData); +}; + +},{"./bitmapper":110,"./chunkstream":112,"./filter-parse-async":116,"./format-normaliser":119,"./parser":127,"util":186,"zlib":35}],126:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var hasSyncZlib = true; +var zlib = require('zlib'); +var inflateSync = require('./sync-inflate'); +if (!zlib.deflateSync) { + hasSyncZlib = false; +} +var SyncReader = require('./sync-reader'); +var FilterSync = require('./filter-parse-sync'); +var Parser = require('./parser'); +var bitmapper = require('./bitmapper'); +var formatNormaliser = require('./format-normaliser'); + + +module.exports = function(buffer, options) { + + if (!hasSyncZlib) { + throw new Error('To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0'); + } + + var err; + function handleError(_err_) { + err = _err_; + } + + var metaData; + function handleMetaData(_metaData_) { + metaData = _metaData_; + } + + function handleTransColor(transColor) { + metaData.transColor = transColor; + } + + function handlePalette(palette) { + metaData.palette = palette; + } + + var gamma; + function handleGamma(_gamma_) { + gamma = _gamma_; + } + + var inflateDataList = []; + function handleInflateData(inflatedData) { + inflateDataList.push(inflatedData); + } + + var reader = new SyncReader(buffer); + + var parser = new Parser(options, { + read: reader.read.bind(reader), + error: handleError, + metadata: handleMetaData, + gamma: handleGamma, + palette: handlePalette, + transColor: handleTransColor, + inflateData: handleInflateData + }); + + parser.start(); + reader.process(); + + if (err) { + throw err; + } + + //join together the inflate datas + var inflateData = Buffer.concat(inflateDataList); + inflateDataList.length = 0; + + var inflatedData; + if (metaData.interlace) { + inflatedData = zlib.inflateSync(inflateData); + } else { + var rowSize = ((metaData.width * metaData.bpp * metaData.depth + 7) >> 3) + 1; + var imageSize = rowSize * metaData.height; + inflatedData = inflateSync(inflateData, { chunkSize: imageSize, maxLength: imageSize }); + } + inflateData = null; + + if (!inflatedData || !inflatedData.length) { + throw new Error('bad png - invalid inflate data response'); + } + + var unfilteredData = FilterSync.process(inflatedData, metaData); + inflateData = null; + + var bitmapData = bitmapper.dataToBitMap(unfilteredData, metaData); + unfilteredData = null; + + var normalisedBitmapData = formatNormaliser(bitmapData, metaData); + + metaData.data = normalisedBitmapData; + metaData.gamma = gamma || 0; + + return metaData; +}; + +}).call(this,require("buffer").Buffer) +},{"./bitmapper":110,"./filter-parse-sync":117,"./format-normaliser":119,"./parser":127,"./sync-inflate":130,"./sync-reader":131,"buffer":48,"zlib":35}],127:[function(require,module,exports){ +(function (Buffer){ +'use strict'; + +var constants = require('./constants'); +var CrcCalculator = require('./crc'); + + +var Parser = module.exports = function(options, dependencies) { + + this._options = options; + options.checkCRC = options.checkCRC !== false; + + this._hasIHDR = false; + this._hasIEND = false; + + // input flags/metadata + this._palette = []; + this._colorType = 0; + + this._chunks = {}; + this._chunks[constants.TYPE_IHDR] = this._handleIHDR.bind(this); + this._chunks[constants.TYPE_IEND] = this._handleIEND.bind(this); + this._chunks[constants.TYPE_IDAT] = this._handleIDAT.bind(this); + this._chunks[constants.TYPE_PLTE] = this._handlePLTE.bind(this); + this._chunks[constants.TYPE_tRNS] = this._handleTRNS.bind(this); + this._chunks[constants.TYPE_gAMA] = this._handleGAMA.bind(this); + + this.read = dependencies.read; + this.error = dependencies.error; + this.metadata = dependencies.metadata; + this.gamma = dependencies.gamma; + this.transColor = dependencies.transColor; + this.palette = dependencies.palette; + this.parsed = dependencies.parsed; + this.inflateData = dependencies.inflateData; + this.finished = dependencies.finished; +}; + +Parser.prototype.start = function() { + this.read(constants.PNG_SIGNATURE.length, + this._parseSignature.bind(this) + ); +}; + +Parser.prototype._parseSignature = function(data) { + + var signature = constants.PNG_SIGNATURE; + + for (var i = 0; i < signature.length; i++) { + if (data[i] !== signature[i]) { + this.error(new Error('Invalid file signature')); + return; + } + } + this.read(8, this._parseChunkBegin.bind(this)); +}; + +Parser.prototype._parseChunkBegin = function(data) { + + // chunk content length + var length = data.readUInt32BE(0); + + // chunk type + var type = data.readUInt32BE(4); + var name = ''; + for (var i = 4; i < 8; i++) { + name += String.fromCharCode(data[i]); + } + + //console.log('chunk ', name, length); + + // chunk flags + var ancillary = Boolean(data[4] & 0x20); // or critical +// priv = Boolean(data[5] & 0x20), // or public +// safeToCopy = Boolean(data[7] & 0x20); // or unsafe + + if (!this._hasIHDR && type !== constants.TYPE_IHDR) { + this.error(new Error('Expected IHDR on beggining')); + return; + } + + this._crc = new CrcCalculator(); + this._crc.write(new Buffer(name)); + + if (this._chunks[type]) { + return this._chunks[type](length); + } + + if (!ancillary) { + this.error(new Error('Unsupported critical chunk type ' + name)); + return; + } + + this.read(length + 4, this._skipChunk.bind(this)); +}; + +Parser.prototype._skipChunk = function(/*data*/) { + this.read(8, this._parseChunkBegin.bind(this)); +}; + +Parser.prototype._handleChunkEnd = function() { + this.read(4, this._parseChunkEnd.bind(this)); +}; + +Parser.prototype._parseChunkEnd = function(data) { + + var fileCrc = data.readInt32BE(0); + var calcCrc = this._crc.crc32(); + + // check CRC + if (this._options.checkCRC && calcCrc !== fileCrc) { + this.error(new Error('Crc error - ' + fileCrc + ' - ' + calcCrc)); + return; + } + + if (!this._hasIEND) { + this.read(8, this._parseChunkBegin.bind(this)); + } +}; + +Parser.prototype._handleIHDR = function(length) { + this.read(length, this._parseIHDR.bind(this)); +}; +Parser.prototype._parseIHDR = function(data) { + + this._crc.write(data); + + var width = data.readUInt32BE(0); + var height = data.readUInt32BE(4); + var depth = data[8]; + var colorType = data[9]; // bits: 1 palette, 2 color, 4 alpha + var compr = data[10]; + var filter = data[11]; + var interlace = data[12]; + + // console.log(' width', width, 'height', height, + // 'depth', depth, 'colorType', colorType, + // 'compr', compr, 'filter', filter, 'interlace', interlace + // ); + + if (depth !== 8 && depth !== 4 && depth !== 2 && depth !== 1 && depth !== 16) { + this.error(new Error('Unsupported bit depth ' + depth)); + return; + } + if (!(colorType in constants.COLORTYPE_TO_BPP_MAP)) { + this.error(new Error('Unsupported color type')); + return; + } + if (compr !== 0) { + this.error(new Error('Unsupported compression method')); + return; + } + if (filter !== 0) { + this.error(new Error('Unsupported filter method')); + return; + } + if (interlace !== 0 && interlace !== 1) { + this.error(new Error('Unsupported interlace method')); + return; + } + + this._colorType = colorType; + + var bpp = constants.COLORTYPE_TO_BPP_MAP[this._colorType]; + + this._hasIHDR = true; + + this.metadata({ + width: width, + height: height, + depth: depth, + interlace: Boolean(interlace), + palette: Boolean(colorType & constants.COLORTYPE_PALETTE), + color: Boolean(colorType & constants.COLORTYPE_COLOR), + alpha: Boolean(colorType & constants.COLORTYPE_ALPHA), + bpp: bpp, + colorType: colorType + }); + + this._handleChunkEnd(); +}; + + +Parser.prototype._handlePLTE = function(length) { + this.read(length, this._parsePLTE.bind(this)); +}; +Parser.prototype._parsePLTE = function(data) { + + this._crc.write(data); + + var entries = Math.floor(data.length / 3); + // console.log('Palette:', entries); + + for (var i = 0; i < entries; i++) { + this._palette.push([ + data[i * 3], + data[i * 3 + 1], + data[i * 3 + 2], + 0xff + ]); + } + + this.palette(this._palette); + + this._handleChunkEnd(); +}; + +Parser.prototype._handleTRNS = function(length) { + this.read(length, this._parseTRNS.bind(this)); +}; +Parser.prototype._parseTRNS = function(data) { + + this._crc.write(data); + + // palette + if (this._colorType === constants.COLORTYPE_PALETTE_COLOR) { + if (this._palette.length === 0) { + this.error(new Error('Transparency chunk must be after palette')); + return; + } + if (data.length > this._palette.length) { + this.error(new Error('More transparent colors than palette size')); + return; + } + for (var i = 0; i < data.length; i++) { + this._palette[i][3] = data[i]; + } + this.palette(this._palette); + } + + // for colorType 0 (grayscale) and 2 (rgb) + // there might be one gray/color defined as transparent + if (this._colorType === constants.COLORTYPE_GRAYSCALE) { + // grey, 2 bytes + this.transColor([data.readUInt16BE(0)]); + } + if (this._colorType === constants.COLORTYPE_COLOR) { + this.transColor([data.readUInt16BE(0), data.readUInt16BE(2), data.readUInt16BE(4)]); + } + + this._handleChunkEnd(); +}; + +Parser.prototype._handleGAMA = function(length) { + this.read(length, this._parseGAMA.bind(this)); +}; +Parser.prototype._parseGAMA = function(data) { + + this._crc.write(data); + this.gamma(data.readUInt32BE(0) / constants.GAMMA_DIVISION); + + this._handleChunkEnd(); +}; + +Parser.prototype._handleIDAT = function(length) { + this.read(-length, this._parseIDAT.bind(this, length)); +}; +Parser.prototype._parseIDAT = function(length, data) { + + this._crc.write(data); + + if (this._colorType === constants.COLORTYPE_PALETTE_COLOR && this._palette.length === 0) { + throw new Error('Expected palette not found'); + } + + this.inflateData(data); + var leftOverLength = length - data.length; + + if (leftOverLength > 0) { + this._handleIDAT(leftOverLength); + } + else { + this._handleChunkEnd(); + } +}; + +Parser.prototype._handleIEND = function(length) { + this.read(length, this._parseIEND.bind(this)); +}; +Parser.prototype._parseIEND = function(data) { + + this._crc.write(data); + + this._hasIEND = true; + this._handleChunkEnd(); + + if (this.finished) { + this.finished(); + } +}; + +}).call(this,require("buffer").Buffer) +},{"./constants":113,"./crc":114,"buffer":48}],128:[function(require,module,exports){ +'use strict'; + + +var parse = require('./parser-sync'); +var pack = require('./packer-sync'); + + +exports.read = function(buffer, options) { + + return parse(buffer, options || {}); +}; + +exports.write = function(png, options) { + + return pack(png, options); +}; + +},{"./packer-sync":122,"./parser-sync":126}],129:[function(require,module,exports){ +(function (process,Buffer){ +'use strict'; + +var util = require('util'); +var Stream = require('stream'); +var Parser = require('./parser-async'); +var Packer = require('./packer-async'); +var PNGSync = require('./png-sync'); + + +var PNG = exports.PNG = function(options) { + Stream.call(this); + + options = options || {}; // eslint-disable-line no-param-reassign + + // coerce pixel dimensions to integers (also coerces undefined -> 0): + this.width = options.width | 0; + this.height = options.height | 0; + + this.data = this.width > 0 && this.height > 0 ? + new Buffer(4 * this.width * this.height) : null; + + if (options.fill && this.data) { + this.data.fill(0); + } + + this.gamma = 0; + this.readable = this.writable = true; + + this._parser = new Parser(options); + + this._parser.on('error', this.emit.bind(this, 'error')); + this._parser.on('close', this._handleClose.bind(this)); + this._parser.on('metadata', this._metadata.bind(this)); + this._parser.on('gamma', this._gamma.bind(this)); + this._parser.on('parsed', function(data) { + this.data = data; + this.emit('parsed', data); + }.bind(this)); + + this._packer = new Packer(options); + this._packer.on('data', this.emit.bind(this, 'data')); + this._packer.on('end', this.emit.bind(this, 'end')); + this._parser.on('close', this._handleClose.bind(this)); + this._packer.on('error', this.emit.bind(this, 'error')); + +}; +util.inherits(PNG, Stream); + +PNG.sync = PNGSync; + +PNG.prototype.pack = function() { + + if (!this.data || !this.data.length) { + this.emit('error', 'No data provided'); + return this; + } + + process.nextTick(function() { + this._packer.pack(this.data, this.width, this.height, this.gamma); + }.bind(this)); + + return this; +}; + + +PNG.prototype.parse = function(data, callback) { + + if (callback) { + var onParsed, onError; + + onParsed = function(parsedData) { + this.removeListener('error', onError); + + this.data = parsedData; + callback(null, this); + }.bind(this); + + onError = function(err) { + this.removeListener('parsed', onParsed); + + callback(err, null); + }.bind(this); + + this.once('parsed', onParsed); + this.once('error', onError); + } + + this.end(data); + return this; +}; + +PNG.prototype.write = function(data) { + this._parser.write(data); + return true; +}; + +PNG.prototype.end = function(data) { + this._parser.end(data); +}; + +PNG.prototype._metadata = function(metadata) { + this.width = metadata.width; + this.height = metadata.height; + + this.emit('metadata', metadata); +}; + +PNG.prototype._gamma = function(gamma) { + this.gamma = gamma; +}; + +PNG.prototype._handleClose = function() { + if (!this._parser.writable && !this._packer.readable) { + this.emit('close'); + } +}; + + +PNG.bitblt = function(src, dst, srcX, srcY, width, height, deltaX, deltaY) { // eslint-disable-line max-params + // coerce pixel dimensions to integers (also coerces undefined -> 0): + /* eslint-disable no-param-reassign */ + srcX |= 0; + srcY |= 0; + width |= 0; + height |= 0; + deltaX |= 0; + deltaY |= 0; + /* eslint-enable no-param-reassign */ + + if (srcX > src.width || srcY > src.height || srcX + width > src.width || srcY + height > src.height) { + throw new Error('bitblt reading outside image'); + } + + if (deltaX > dst.width || deltaY > dst.height || deltaX + width > dst.width || deltaY + height > dst.height) { + throw new Error('bitblt writing outside image'); + } + + for (var y = 0; y < height; y++) { + src.data.copy(dst.data, + ((deltaY + y) * dst.width + deltaX) << 2, + ((srcY + y) * src.width + srcX) << 2, + ((srcY + y) * src.width + srcX + width) << 2 + ); + } +}; + + +PNG.prototype.bitblt = function(dst, srcX, srcY, width, height, deltaX, deltaY) { // eslint-disable-line max-params + + PNG.bitblt(this, dst, srcX, srcY, width, height, deltaX, deltaY); + return this; +}; + +PNG.adjustGamma = function(src) { + if (src.gamma) { + for (var y = 0; y < src.height; y++) { + for (var x = 0; x < src.width; x++) { + var idx = (src.width * y + x) << 2; + + for (var i = 0; i < 3; i++) { + var sample = src.data[idx + i] / 255; + sample = Math.pow(sample, 1 / 2.2 / src.gamma); + src.data[idx + i] = Math.round(sample * 255); + } + } + } + src.gamma = 0; + } +}; + +PNG.prototype.adjustGamma = function() { + PNG.adjustGamma(this); +}; + +}).call(this,require('_process'),require("buffer").Buffer) +},{"./packer-async":121,"./parser-async":125,"./png-sync":128,"_process":133,"buffer":48,"stream":155,"util":186}],130:[function(require,module,exports){ +(function (process,Buffer){ +'use strict'; + +var assert = require('assert').ok; +var zlib = require('zlib'); +var util = require('util'); + +var kMaxLength = require('buffer').kMaxLength; + +function Inflate(opts) { + if (!(this instanceof Inflate)) { + return new Inflate(opts); + } + + if (opts && opts.chunkSize < zlib.Z_MIN_CHUNK) { + opts.chunkSize = zlib.Z_MIN_CHUNK; + } + + zlib.Inflate.call(this, opts); + + // Node 8 --> 9 compatibility check + this._offset = this._offset === undefined ? this._outOffset : this._offset; + this._buffer = this._buffer || this._outBuffer; + + if (opts && opts.maxLength != null) { + this._maxLength = opts.maxLength; + } +} + +function createInflate(opts) { + return new Inflate(opts); +} + +function _close(engine, callback) { + if (callback) { + process.nextTick(callback); + } + + // Caller may invoke .close after a zlib error (which will null _handle). + if (!engine._handle) { + return; + } + + engine._handle.close(); + engine._handle = null; +} + +Inflate.prototype._processChunk = function(chunk, flushFlag, asyncCb) { + if (typeof asyncCb === 'function') { + return zlib.Inflate._processChunk.call(this, chunk, flushFlag, asyncCb); + } + + var self = this; + + var availInBefore = chunk && chunk.length; + var availOutBefore = this._chunkSize - this._offset; + var leftToInflate = this._maxLength; + var inOff = 0; + + var buffers = []; + var nread = 0; + + var error; + this.on('error', function(err) { + error = err; + }); + + function handleChunk(availInAfter, availOutAfter) { + if (self._hadError) { + return; + } + + var have = availOutBefore - availOutAfter; + assert(have >= 0, 'have should not go down'); + + if (have > 0) { + var out = self._buffer.slice(self._offset, self._offset + have); + self._offset += have; + + if (out.length > leftToInflate) { + out = out.slice(0, leftToInflate); + } + + buffers.push(out); + nread += out.length; + leftToInflate -= out.length; + + if (leftToInflate === 0) { + return false; + } + } + + if (availOutAfter === 0 || self._offset >= self._chunkSize) { + availOutBefore = self._chunkSize; + self._offset = 0; + self._buffer = Buffer.allocUnsafe(self._chunkSize); + } + + if (availOutAfter === 0) { + inOff += (availInBefore - availInAfter); + availInBefore = availInAfter; + + return true; + } + + return false; + } + + assert(this._handle, 'zlib binding closed'); + do { + var res = this._handle.writeSync(flushFlag, + chunk, // in + inOff, // in_off + availInBefore, // in_len + this._buffer, // out + this._offset, //out_off + availOutBefore); // out_len + // Node 8 --> 9 compatibility check + res = res || this._writeState; + } while (!this._hadError && handleChunk(res[0], res[1])); + + if (this._hadError) { + throw error; + } + + if (nread >= kMaxLength) { + _close(this); + throw new RangeError('Cannot create final Buffer. It would be larger than 0x' + kMaxLength.toString(16) + ' bytes'); + } + + var buf = Buffer.concat(buffers, nread); + _close(this); + + return buf; +}; + +util.inherits(Inflate, zlib.Inflate); + +function zlibBufferSync(engine, buffer) { + if (typeof buffer === 'string') { + buffer = Buffer.from(buffer); + } + if (!(buffer instanceof Buffer)) { + throw new TypeError('Not a string or buffer'); + } + + var flushFlag = engine._finishFlushFlag; + if (flushFlag == null) { + flushFlag = zlib.Z_FINISH; + } + + return engine._processChunk(buffer, flushFlag); +} + +function inflateSync(buffer, opts) { + return zlibBufferSync(new Inflate(opts), buffer); +} + +module.exports = exports = inflateSync; +exports.Inflate = Inflate; +exports.createInflate = createInflate; +exports.inflateSync = inflateSync; + +}).call(this,require('_process'),require("buffer").Buffer) +},{"_process":133,"assert":25,"buffer":48,"util":186,"zlib":35}],131:[function(require,module,exports){ +'use strict'; + +var SyncReader = module.exports = function(buffer) { + + this._buffer = buffer; + this._reads = []; +}; + +SyncReader.prototype.read = function(length, callback) { + + this._reads.push({ + length: Math.abs(length), // if length < 0 then at most this length + allowLess: length < 0, + func: callback + }); +}; + +SyncReader.prototype.process = function() { + + // as long as there is any data and read requests + while (this._reads.length > 0 && this._buffer.length) { + + var read = this._reads[0]; + + if (this._buffer.length && (this._buffer.length >= read.length || read.allowLess)) { + + // ok there is any data so that we can satisfy this request + this._reads.shift(); // == read + + var buf = this._buffer; + + this._buffer = buf.slice(read.length); + + read.func.call(this, buf.slice(0, read.length)); + + } + else { + break; + } + + } + + if (this._reads.length > 0) { + return new Error('There are some read requests waitng on finished stream'); + } + + if (this._buffer.length > 0) { + return new Error('unrecognised content at end of stream'); + } + +}; + +},{}],132:[function(require,module,exports){ +(function (process){ +'use strict'; + +if (typeof process === 'undefined' || + !process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + + +}).call(this,require('_process')) +},{"_process":133}],133:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],134:[function(require,module,exports){ +(function (global){ +/*! https://mths.be/punycode v1.4.1 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } + +}(this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],135:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +// If obj.hasOwnProperty has been overridden, then calling +// obj.hasOwnProperty(prop) will break. +// See: https://github.com/joyent/node/issues/1707 +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],136:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (isArray(obj[k])) { + return map(obj[k], function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +function map (xs, f) { + if (xs.map) return xs.map(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + return res; +} + +var objectKeys = Object.keys || function (obj) { + var res = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + return res; +}; + +},{}],137:[function(require,module,exports){ +'use strict'; + +exports.decode = exports.parse = require('./decode'); +exports.encode = exports.stringify = require('./encode'); + +},{"./decode":135,"./encode":136}],138:[function(require,module,exports){ +module.exports = require('./lib/_stream_duplex.js'); + +},{"./lib/_stream_duplex.js":139}],139:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; +},{"./_stream_readable":141,"./_stream_writable":143,"core-util-is":51,"inherits":75,"process-nextick-args":132}],140:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":142,"core-util-is":51,"inherits":75}],141:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +module.exports = Readable; + +/**/ +var isArray = require('isarray'); +/**/ + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = require('events').EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = require('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +/**/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + +var BufferList = require('./internal/streams/BufferList'); +var destroyImpl = require('./internal/streams/destroy'); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, unpipeInfo); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./_stream_duplex":139,"./internal/streams/BufferList":144,"./internal/streams/destroy":145,"./internal/streams/stream":146,"_process":133,"core-util-is":51,"events":52,"inherits":75,"isarray":79,"process-nextick-args":132,"safe-buffer":147,"string_decoder/":148,"util":33}],142:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +'use strict'; + +module.exports = Transform; + +var Duplex = require('./_stream_duplex'); + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} +},{"./_stream_duplex":139,"core-util-is":51,"inherits":75}],143:[function(require,module,exports){ +(function (process,global,setImmediate){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/**/ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var util = require('core-util-is'); +util.inherits = require('inherits'); +/**/ + +/**/ +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ +var Stream = require('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +var destroyImpl = require('./internal/streams/destroy'); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = corkReq; + } else { + state.corkedRequestsFree = corkReq; + } +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) +},{"./_stream_duplex":139,"./internal/streams/destroy":145,"./internal/streams/stream":146,"_process":133,"core-util-is":51,"inherits":75,"process-nextick-args":132,"safe-buffer":147,"timers":176,"util-deprecate":183}],144:[function(require,module,exports){ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = require('safe-buffer').Buffer; +var util = require('util'); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + if (this.length === 1) return this.head.data; + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; + + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} +},{"safe-buffer":147,"util":33}],145:[function(require,module,exports){ +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { + pna.nextTick(emitErrorNT, this, err); + } + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + pna.nextTick(emitErrorNT, _this, err); + if (_this._writableState) { + _this._writableState.errorEmitted = true; + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; +},{"process-nextick-args":132}],146:[function(require,module,exports){ +module.exports = require('events').EventEmitter; + +},{"events":52}],147:[function(require,module,exports){ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":48}],148:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var Buffer = require('safe-buffer').Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"safe-buffer":147}],149:[function(require,module,exports){ +module.exports = require('./readable').PassThrough + +},{"./readable":150}],150:[function(require,module,exports){ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); + +},{"./lib/_stream_duplex.js":139,"./lib/_stream_passthrough.js":140,"./lib/_stream_readable.js":141,"./lib/_stream_transform.js":142,"./lib/_stream_writable.js":143}],151:[function(require,module,exports){ +module.exports = require('./readable').Transform + +},{"./readable":150}],152:[function(require,module,exports){ +module.exports = require('./lib/_stream_writable.js'); + +},{"./lib/_stream_writable.js":143}],153:[function(require,module,exports){ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var runtime = (function (exports) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + exports.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + exports.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + exports.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + exports.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return Promise.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. + result.value = unwrapped; + resolve(result); + }, function(error) { + // If a rejected Promise was yielded, throw the rejection back + // into the async generator function so it can be handled there. + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + exports.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + exports.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return exports.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[toStringTagSymbol] = "Generator"; + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + exports.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + exports.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; + +}( + // If this script is executing as a CommonJS module, use module.exports + // as the regeneratorRuntime namespace. Otherwise create a new empty + // object. Either way, the resulting object will be used to initialize + // the regeneratorRuntime variable at the top of this file. + typeof module === "object" ? module.exports : {} +)); + +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + // This module should not be running in strict mode, so the above + // assignment should always work unless something is misconfigured. Just + // in case runtime.js accidentally runs in strict mode, we can escape + // strict mode using a global Function call. This could conceivably fail + // if a Content Security Policy forbids using Function, but in that case + // the proper solution is to fix the accidental strict mode problem. If + // you've misconfigured your bundler to force strict mode and applied a + // CSP to forbid Function, and you're not willing to fix either of those + // problems, please detail your unique predicament in a GitHub issue. + Function("r", "regeneratorRuntime = r")(runtime); +} + +},{}],154:[function(require,module,exports){ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":48}],155:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = require('events').EventEmitter; +var inherits = require('inherits'); + +inherits(Stream, EE); +Stream.Readable = require('readable-stream/readable.js'); +Stream.Writable = require('readable-stream/writable.js'); +Stream.Duplex = require('readable-stream/duplex.js'); +Stream.Transform = require('readable-stream/transform.js'); +Stream.PassThrough = require('readable-stream/passthrough.js'); + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + +},{"events":52,"inherits":75,"readable-stream/duplex.js":138,"readable-stream/passthrough.js":149,"readable-stream/readable.js":150,"readable-stream/transform.js":151,"readable-stream/writable.js":152}],156:[function(require,module,exports){ +(function (global){ +var ClientRequest = require('./lib/request') +var response = require('./lib/response') +var extend = require('xtend') +var statusCodes = require('builtin-status-codes') +var url = require('url') + +var http = exports + +http.request = function (opts, cb) { + if (typeof opts === 'string') + opts = url.parse(opts) + else + opts = extend(opts) + + // Normally, the page is loaded from http or https, so not specifying a protocol + // will result in a (valid) protocol-relative url. However, this won't work if + // the protocol is something else, like 'file:' + var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : '' + + var protocol = opts.protocol || defaultProtocol + var host = opts.hostname || opts.host + var port = opts.port + var path = opts.path || '/' + + // Necessary for IPv6 addresses + if (host && host.indexOf(':') !== -1) + host = '[' + host + ']' + + // This may be a relative url. The browser should always be able to interpret it correctly. + opts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path + opts.method = (opts.method || 'GET').toUpperCase() + opts.headers = opts.headers || {} + + // Also valid opts.auth, opts.mode + + var req = new ClientRequest(opts) + if (cb) + req.on('response', cb) + return req +} + +http.get = function get (opts, cb) { + var req = http.request(opts, cb) + req.end() + return req +} + +http.ClientRequest = ClientRequest +http.IncomingMessage = response.IncomingMessage + +http.Agent = function () {} +http.Agent.defaultMaxSockets = 4 + +http.globalAgent = new http.Agent() + +http.STATUS_CODES = statusCodes + +http.METHODS = [ + 'CHECKOUT', + 'CONNECT', + 'COPY', + 'DELETE', + 'GET', + 'HEAD', + 'LOCK', + 'M-SEARCH', + 'MERGE', + 'MKACTIVITY', + 'MKCOL', + 'MOVE', + 'NOTIFY', + 'OPTIONS', + 'PATCH', + 'POST', + 'PROPFIND', + 'PROPPATCH', + 'PURGE', + 'PUT', + 'REPORT', + 'SEARCH', + 'SUBSCRIBE', + 'TRACE', + 'UNLOCK', + 'UNSUBSCRIBE' +] +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./lib/request":158,"./lib/response":159,"builtin-status-codes":50,"url":180,"xtend":189}],157:[function(require,module,exports){ +(function (global){ +exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream) + +exports.writableStream = isFunction(global.WritableStream) + +exports.abortController = isFunction(global.AbortController) + +// The xhr request to example.com may violate some restrictive CSP configurations, +// so if we're running in a browser that supports `fetch`, avoid calling getXHR() +// and assume support for certain features below. +var xhr +function getXHR () { + // Cache the xhr value + if (xhr !== undefined) return xhr + + if (global.XMLHttpRequest) { + xhr = new global.XMLHttpRequest() + // If XDomainRequest is available (ie only, where xhr might not work + // cross domain), use the page location. Otherwise use example.com + // Note: this doesn't actually make an http request. + try { + xhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com') + } catch(e) { + xhr = null + } + } else { + // Service workers don't have XHR + xhr = null + } + return xhr +} + +function checkTypeSupport (type) { + var xhr = getXHR() + if (!xhr) return false + try { + xhr.responseType = type + return xhr.responseType === type + } catch (e) {} + return false +} + +// If fetch is supported, then arraybuffer will be supported too. Skip calling +// checkTypeSupport(), since that calls getXHR(). +exports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer') + +// These next two tests unavoidably show warnings in Chrome. Since fetch will always +// be used if it's available, just return false for these to avoid the warnings. +exports.msstream = !exports.fetch && checkTypeSupport('ms-stream') +exports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer') + +// If fetch is supported, then overrideMimeType will be supported too. Skip calling +// getXHR(). +exports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false) + +function isFunction (value) { + return typeof value === 'function' +} + +xhr = null // Help gc + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],158:[function(require,module,exports){ +(function (process,global,Buffer){ +var capability = require('./capability') +var inherits = require('inherits') +var response = require('./response') +var stream = require('readable-stream') + +var IncomingMessage = response.IncomingMessage +var rStates = response.readyStates + +function decideMode (preferBinary, useFetch) { + if (capability.fetch && useFetch) { + return 'fetch' + } else if (capability.mozchunkedarraybuffer) { + return 'moz-chunked-arraybuffer' + } else if (capability.msstream) { + return 'ms-stream' + } else if (capability.arraybuffer && preferBinary) { + return 'arraybuffer' + } else { + return 'text' + } +} + +var ClientRequest = module.exports = function (opts) { + var self = this + stream.Writable.call(self) + + self._opts = opts + self._body = [] + self._headers = {} + if (opts.auth) + self.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64')) + Object.keys(opts.headers).forEach(function (name) { + self.setHeader(name, opts.headers[name]) + }) + + var preferBinary + var useFetch = true + if (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) { + // If the use of XHR should be preferred. Not typically needed. + useFetch = false + preferBinary = true + } else if (opts.mode === 'prefer-streaming') { + // If streaming is a high priority but binary compatibility and + // the accuracy of the 'content-type' header aren't + preferBinary = false + } else if (opts.mode === 'allow-wrong-content-type') { + // If streaming is more important than preserving the 'content-type' header + preferBinary = !capability.overrideMimeType + } else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') { + // Use binary if text streaming may corrupt data or the content-type header, or for speed + preferBinary = true + } else { + throw new Error('Invalid value for opts.mode') + } + self._mode = decideMode(preferBinary, useFetch) + self._fetchTimer = null + + self.on('finish', function () { + self._onFinish() + }) +} + +inherits(ClientRequest, stream.Writable) + +ClientRequest.prototype.setHeader = function (name, value) { + var self = this + var lowerName = name.toLowerCase() + // This check is not necessary, but it prevents warnings from browsers about setting unsafe + // headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but + // http-browserify did it, so I will too. + if (unsafeHeaders.indexOf(lowerName) !== -1) + return + + self._headers[lowerName] = { + name: name, + value: value + } +} + +ClientRequest.prototype.getHeader = function (name) { + var header = this._headers[name.toLowerCase()] + if (header) + return header.value + return null +} + +ClientRequest.prototype.removeHeader = function (name) { + var self = this + delete self._headers[name.toLowerCase()] +} + +ClientRequest.prototype._onFinish = function () { + var self = this + + if (self._destroyed) + return + var opts = self._opts + + var headersObj = self._headers + var body = null + if (opts.method !== 'GET' && opts.method !== 'HEAD') { + body = new Blob(self._body, { + type: (headersObj['content-type'] || {}).value || '' + }); + } + + // create flattened list of headers + var headersList = [] + Object.keys(headersObj).forEach(function (keyName) { + var name = headersObj[keyName].name + var value = headersObj[keyName].value + if (Array.isArray(value)) { + value.forEach(function (v) { + headersList.push([name, v]) + }) + } else { + headersList.push([name, value]) + } + }) + + if (self._mode === 'fetch') { + var signal = null + var fetchTimer = null + if (capability.abortController) { + var controller = new AbortController() + signal = controller.signal + self._fetchAbortController = controller + + if ('requestTimeout' in opts && opts.requestTimeout !== 0) { + self._fetchTimer = global.setTimeout(function () { + self.emit('requestTimeout') + if (self._fetchAbortController) + self._fetchAbortController.abort() + }, opts.requestTimeout) + } + } + + global.fetch(self._opts.url, { + method: self._opts.method, + headers: headersList, + body: body || undefined, + mode: 'cors', + credentials: opts.withCredentials ? 'include' : 'same-origin', + signal: signal + }).then(function (response) { + self._fetchResponse = response + self._connect() + }, function (reason) { + global.clearTimeout(self._fetchTimer) + if (!self._destroyed) + self.emit('error', reason) + }) + } else { + var xhr = self._xhr = new global.XMLHttpRequest() + try { + xhr.open(self._opts.method, self._opts.url, true) + } catch (err) { + process.nextTick(function () { + self.emit('error', err) + }) + return + } + + // Can't set responseType on really old browsers + if ('responseType' in xhr) + xhr.responseType = self._mode + + if ('withCredentials' in xhr) + xhr.withCredentials = !!opts.withCredentials + + if (self._mode === 'text' && 'overrideMimeType' in xhr) + xhr.overrideMimeType('text/plain; charset=x-user-defined') + + if ('requestTimeout' in opts) { + xhr.timeout = opts.requestTimeout + xhr.ontimeout = function () { + self.emit('requestTimeout') + } + } + + headersList.forEach(function (header) { + xhr.setRequestHeader(header[0], header[1]) + }) + + self._response = null + xhr.onreadystatechange = function () { + switch (xhr.readyState) { + case rStates.LOADING: + case rStates.DONE: + self._onXHRProgress() + break + } + } + // Necessary for streaming in Firefox, since xhr.response is ONLY defined + // in onprogress, not in onreadystatechange with xhr.readyState = 3 + if (self._mode === 'moz-chunked-arraybuffer') { + xhr.onprogress = function () { + self._onXHRProgress() + } + } + + xhr.onerror = function () { + if (self._destroyed) + return + self.emit('error', new Error('XHR error')) + } + + try { + xhr.send(body) + } catch (err) { + process.nextTick(function () { + self.emit('error', err) + }) + return + } + } +} + +/** + * Checks if xhr.status is readable and non-zero, indicating no error. + * Even though the spec says it should be available in readyState 3, + * accessing it throws an exception in IE8 + */ +function statusValid (xhr) { + try { + var status = xhr.status + return (status !== null && status !== 0) + } catch (e) { + return false + } +} + +ClientRequest.prototype._onXHRProgress = function () { + var self = this + + if (!statusValid(self._xhr) || self._destroyed) + return + + if (!self._response) + self._connect() + + self._response._onXHRProgress() +} + +ClientRequest.prototype._connect = function () { + var self = this + + if (self._destroyed) + return + + self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer) + self._response.on('error', function(err) { + self.emit('error', err) + }) + + self.emit('response', self._response) +} + +ClientRequest.prototype._write = function (chunk, encoding, cb) { + var self = this + + self._body.push(chunk) + cb() +} + +ClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () { + var self = this + self._destroyed = true + global.clearTimeout(self._fetchTimer) + if (self._response) + self._response._destroyed = true + if (self._xhr) + self._xhr.abort() + else if (self._fetchAbortController) + self._fetchAbortController.abort() +} + +ClientRequest.prototype.end = function (data, encoding, cb) { + var self = this + if (typeof data === 'function') { + cb = data + data = undefined + } + + stream.Writable.prototype.end.call(self, data, encoding, cb) +} + +ClientRequest.prototype.flushHeaders = function () {} +ClientRequest.prototype.setTimeout = function () {} +ClientRequest.prototype.setNoDelay = function () {} +ClientRequest.prototype.setSocketKeepAlive = function () {} + +// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method +var unsafeHeaders = [ + 'accept-charset', + 'accept-encoding', + 'access-control-request-headers', + 'access-control-request-method', + 'connection', + 'content-length', + 'cookie', + 'cookie2', + 'date', + 'dnt', + 'expect', + 'host', + 'keep-alive', + 'origin', + 'referer', + 'te', + 'trailer', + 'transfer-encoding', + 'upgrade', + 'via' +] + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) +},{"./capability":157,"./response":159,"_process":133,"buffer":48,"inherits":75,"readable-stream":174}],159:[function(require,module,exports){ +(function (process,global,Buffer){ +var capability = require('./capability') +var inherits = require('inherits') +var stream = require('readable-stream') + +var rStates = exports.readyStates = { + UNSENT: 0, + OPENED: 1, + HEADERS_RECEIVED: 2, + LOADING: 3, + DONE: 4 +} + +var IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) { + var self = this + stream.Readable.call(self) + + self._mode = mode + self.headers = {} + self.rawHeaders = [] + self.trailers = {} + self.rawTrailers = [] + + // Fake the 'close' event, but only once 'end' fires + self.on('end', function () { + // The nextTick is necessary to prevent the 'request' module from causing an infinite loop + process.nextTick(function () { + self.emit('close') + }) + }) + + if (mode === 'fetch') { + self._fetchResponse = response + + self.url = response.url + self.statusCode = response.status + self.statusMessage = response.statusText + + response.headers.forEach(function (header, key){ + self.headers[key.toLowerCase()] = header + self.rawHeaders.push(key, header) + }) + + if (capability.writableStream) { + var writable = new WritableStream({ + write: function (chunk) { + return new Promise(function (resolve, reject) { + if (self._destroyed) { + reject() + } else if(self.push(Buffer.from(chunk))) { + resolve() + } else { + self._resumeFetch = resolve + } + }) + }, + close: function () { + global.clearTimeout(fetchTimer) + if (!self._destroyed) + self.push(null) + }, + abort: function (err) { + if (!self._destroyed) + self.emit('error', err) + } + }) + + try { + response.body.pipeTo(writable).catch(function (err) { + global.clearTimeout(fetchTimer) + if (!self._destroyed) + self.emit('error', err) + }) + return + } catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this + } + // fallback for when writableStream or pipeTo aren't available + var reader = response.body.getReader() + function read () { + reader.read().then(function (result) { + if (self._destroyed) + return + if (result.done) { + global.clearTimeout(fetchTimer) + self.push(null) + return + } + self.push(Buffer.from(result.value)) + read() + }).catch(function (err) { + global.clearTimeout(fetchTimer) + if (!self._destroyed) + self.emit('error', err) + }) + } + read() + } else { + self._xhr = xhr + self._pos = 0 + + self.url = xhr.responseURL + self.statusCode = xhr.status + self.statusMessage = xhr.statusText + var headers = xhr.getAllResponseHeaders().split(/\r?\n/) + headers.forEach(function (header) { + var matches = header.match(/^([^:]+):\s*(.*)/) + if (matches) { + var key = matches[1].toLowerCase() + if (key === 'set-cookie') { + if (self.headers[key] === undefined) { + self.headers[key] = [] + } + self.headers[key].push(matches[2]) + } else if (self.headers[key] !== undefined) { + self.headers[key] += ', ' + matches[2] + } else { + self.headers[key] = matches[2] + } + self.rawHeaders.push(matches[1], matches[2]) + } + }) + + self._charset = 'x-user-defined' + if (!capability.overrideMimeType) { + var mimeType = self.rawHeaders['mime-type'] + if (mimeType) { + var charsetMatch = mimeType.match(/;\s*charset=([^;])(;|$)/) + if (charsetMatch) { + self._charset = charsetMatch[1].toLowerCase() + } + } + if (!self._charset) + self._charset = 'utf-8' // best guess + } + } +} + +inherits(IncomingMessage, stream.Readable) + +IncomingMessage.prototype._read = function () { + var self = this + + var resolve = self._resumeFetch + if (resolve) { + self._resumeFetch = null + resolve() + } +} + +IncomingMessage.prototype._onXHRProgress = function () { + var self = this + + var xhr = self._xhr + + var response = null + switch (self._mode) { + case 'text': + response = xhr.responseText + if (response.length > self._pos) { + var newData = response.substr(self._pos) + if (self._charset === 'x-user-defined') { + var buffer = Buffer.alloc(newData.length) + for (var i = 0; i < newData.length; i++) + buffer[i] = newData.charCodeAt(i) & 0xff + + self.push(buffer) + } else { + self.push(newData, self._charset) + } + self._pos = response.length + } + break + case 'arraybuffer': + if (xhr.readyState !== rStates.DONE || !xhr.response) + break + response = xhr.response + self.push(Buffer.from(new Uint8Array(response))) + break + case 'moz-chunked-arraybuffer': // take whole + response = xhr.response + if (xhr.readyState !== rStates.LOADING || !response) + break + self.push(Buffer.from(new Uint8Array(response))) + break + case 'ms-stream': + response = xhr.response + if (xhr.readyState !== rStates.LOADING) + break + var reader = new global.MSStreamReader() + reader.onprogress = function () { + if (reader.result.byteLength > self._pos) { + self.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos)))) + self._pos = reader.result.byteLength + } + } + reader.onload = function () { + self.push(null) + } + // reader.onerror = ??? // TODO: this + reader.readAsArrayBuffer(response) + break + } + + // The ms-stream case handles end separately in reader.onload() + if (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') { + self.push(null) + } +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) +},{"./capability":157,"_process":133,"buffer":48,"inherits":75,"readable-stream":174}],160:[function(require,module,exports){ +'use strict'; + +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + +var codes = {}; + +function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + + function getMessage(arg1, arg2, arg3) { + if (typeof message === 'string') { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + + var NodeError = + /*#__PURE__*/ + function (_Base) { + _inheritsLoose(NodeError, _Base); + + function NodeError(arg1, arg2, arg3) { + return _Base.call(this, getMessage(arg1, arg2, arg3)) || this; + } + + return NodeError; + }(Base); + + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; +} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js + + +function oneOf(expected, thing) { + if (Array.isArray(expected)) { + var len = expected.length; + expected = expected.map(function (i) { + return String(i); + }); + + if (len > 2) { + return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1]; + } else if (len === 2) { + return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]); + } else { + return "of ".concat(thing, " ").concat(expected[0]); + } + } else { + return "of ".concat(thing, " ").concat(String(expected)); + } +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + + +function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + + +function endsWith(str, search, this_len) { + if (this_len === undefined || this_len > str.length) { + this_len = str.length; + } + + return str.substring(this_len - search.length, this_len) === search; +} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + + +function includes(str, search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } +} + +createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; +}, TypeError); +createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) { + // determiner: 'must be' or 'must not be' + var determiner; + + if (typeof expected === 'string' && startsWith(expected, 'not ')) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } else { + determiner = 'must be'; + } + + var msg; + + if (endsWith(name, ' argument')) { + // For cases like 'first argument' + msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } else { + var type = includes(name, '.') ? 'property' : 'argument'; + msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type')); + } + + msg += ". Received type ".concat(typeof actual); + return msg; +}, TypeError); +createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF'); +createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) { + return 'The ' + name + ' method is not implemented'; +}); +createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close'); +createErrorType('ERR_STREAM_DESTROYED', function (name) { + return 'Cannot call ' + name + ' after a stream was destroyed'; +}); +createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times'); +createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable'); +createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end'); +createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError); +createErrorType('ERR_UNKNOWN_ENCODING', function (arg) { + return 'Unknown encoding: ' + arg; +}, TypeError); +createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event'); +module.exports.codes = codes; + +},{}],161:[function(require,module,exports){ +(function (process){ +'use strict' + +var experimentalWarnings = new Set(); + +function emitExperimentalWarning(feature) { + if (experimentalWarnings.has(feature)) return; + var msg = feature + ' is an experimental feature. This feature could ' + + 'change at any time'; + experimentalWarnings.add(feature); + process.emitWarning(msg, 'ExperimentalWarning'); +} + +function noop() {} + +module.exports.emitExperimentalWarning = process.emitWarning + ? emitExperimentalWarning + : noop; + +}).call(this,require('_process')) +},{"_process":133}],162:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. +'use strict'; +/**/ + +var objectKeys = Object.keys || function (obj) { + var keys = []; + + for (var key in obj) { + keys.push(key); + } + + return keys; +}; +/**/ + + +module.exports = Duplex; + +var Readable = require('./_stream_readable'); + +var Writable = require('./_stream_writable'); + +require('inherits')(Duplex, Readable); + +{ + // Allow the keys array to be GC'ed. + var keys = objectKeys(Writable.prototype); + + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once('end', onend); + } + } +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); +Object.defineProperty(Duplex.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); +Object.defineProperty(Duplex.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); // the no-half-open enforcer + +function onend() { + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. + // But allow more writes to happen in this tick. + + process.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); +}).call(this,require('_process')) +},{"./_stream_readable":164,"./_stream_writable":166,"_process":133,"inherits":75}],163:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +require('inherits')(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; +},{"./_stream_transform":165,"inherits":75}],164:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +'use strict'; + +module.exports = Readable; +/**/ + +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; +/**/ + +var EE = require('events').EventEmitter; + +var EElistenerCount = function EElistenerCount(emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ + + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} +/**/ + + +var debugUtil = require('util'); + +var debug; + +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function debug() {}; +} +/**/ + + +var BufferList = require('./internal/streams/buffer_list'); + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; + +var _require2 = require('../experimentalWarning'), + emitExperimentalWarning = _require2.emitExperimentalWarning; // Lazy loaded to improve the startup performance. + + +var StringDecoder; +var createReadableStreamAsyncIterator; + +require('inherits')(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + + this.sync = true; // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // has it been destroyed + + this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s + + this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + + this.readingMore = false; + this.decoder = null; + this.encoding = null; + + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); // legacy + + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === undefined) { + return false; + } + + return this._readableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._readableState.destroyed = value; + } +}); +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; + +Readable.prototype._destroy = function (err, cb) { + cb(err); +}; // Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. + + +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; // Unshift should *always* be something directly out of read() + + +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug('readableAddChunk', chunk); + var state = stream._readableState; + + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } // We can push more data if we are below the highWaterMark. + // Also, if we have no data yet, we can stand some more bytes. + // This is to work around cases where hwm=0, such as the repl. + + + return !state.ended && (state.length < state.highWaterMark || state.length === 0); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit('data', chunk); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); + } + + return er; +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; // backwards compatibility. + + +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); // if setEncoding(null), decoder.encoding equals utf8 + + this._readableState.encoding = this._readableState.decoder.encoding; + return this; +}; // Don't raise the hwm > 8MB + + +var MAX_HWM = 0x800000; + +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + + return n; +} // This function is designed to be inlinable, so please take care when making +// changes to the function body. + + +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } // If we're asking for more than the current hwm, then raise the hwm. + + + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; // Don't have enough + + if (!state.ended) { + state.needReadable = true; + return 0; + } + + return state.length; +} // you can override either this method, or the async _read(n) below. + + +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. + + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + // if we need a readable event, then we need to do some reading. + + + var doRead = state.needReadable; + debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + + + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; // if the length is currently zero, then we *need* a readable event. + + if (state.length === 0) state.needReadable = true; // call internal read method + + this._read(state.highWaterMark); + + state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + + if (state.decoder) { + var chunk = state.decoder.end(); + + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + + state.ended = true; + + if (state.sync) { + // if we are sync, wait until next tick to emit the data. + // Otherwise we risk emitting data in the flow() + // the readable code triggers during a read() call + emitReadable(stream); + } else { + // emit 'readable' now to make sure it gets picked up. + state.needReadable = false; + + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } +} // Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. + + +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } +} + +function emitReadable_(stream) { + var state = stream._readableState; + debug('emitReadable_', state.destroyed, state.length, state.ended); + + if (!state.destroyed && (state.length || state.ended)) { + stream.emit('readable'); + } // The stream needs another readable event if + // 1. It is not flowing, as the flow mechanism will take + // care of it. + // 2. It is not ended. + // 3. It is below the highWaterMark, so we can schedule + // another readable later. + + + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); +} // at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. + + +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + // Attempt to read more data if we should. + // + // The conditions for reading more data are (one of): + // - Not enough data buffered (state.length < state.highWaterMark). The loop + // is responsible for filling the buffer with enough data if such data + // is available. If highWaterMark is 0 and we are not in the flowing mode + // we should _not_ attempt to buffer any extra data. We'll get more data + // when the stream consumer calls read() instead. + // - No data in the buffer, and the stream is in flowing mode. In this mode + // the loop below is responsible for ensuring read() is called. Failing to + // call read here would abort the flow and there's no other mechanism for + // continuing the flow if the stream consumer has just subscribed to the + // 'data' event. + // + // In addition to the above conditions to keep reading data, the following + // conditions prevent the data from being read: + // - The stream has ended (state.ended). + // - There is already a pending 'read' operation (state.reading). This is a + // case where the the stream has called the implementation defined _read() + // method, but they are processing the call asynchronously and have _not_ + // called push() with new data. In this case we skip performing more + // read()s. The execution ends in this method again after the _read() ends + // up calling push() with more data. + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) // didn't get any data, stop spinning. + break; + } + + state.readingMore = false; +} // abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. + + +Readable.prototype._read = function (n) { + this.emit('error', new ERR_METHOD_NOT_IMPLEMENTED('_read()')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + + case 1: + state.pipes = [state.pipes, dest]; + break; + + default: + state.pipes.push(dest); + break; + } + + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); + dest.on('unpipe', onunpipe); + + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + + + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + var cleanedUp = false; + + function cleanup() { + debug('cleanup'); // cleanup event handlers once the pipe is broken + + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + cleanedUp = true; // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + src.on('data', ondata); + + function ondata(chunk) { + debug('ondata'); + var ret = dest.write(chunk); + debug('dest.write', ret); + + if (ret === false) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + } + + src.pause(); + } + } // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + + + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } // Make sure our error handler is attached before userland ones. + + + prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + + dest.once('close', onclose); + + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } // tell the dest that it's being piped to + + + dest.emit('pipe', src); // start the flow if it hasn't been started already. + + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; // if we're not piping anywhere, then do nothing. + + if (state.pipesCount === 0) return this; // just one destination. most common case. + + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; // got a match. + + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } // slow case. multiple pipe destinations. + + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { + hasUnpiped: false + }); + } + + return this; + } // try to find the right one. + + + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit('unpipe', this, unpipeInfo); + return this; +}; // set up data events if they are asked for +// Ensure readable listeners eventually get something + + +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + + if (ev === 'data') { + // update readableListening so that resume() may be a no-op + // a few lines down. This is needed to support once('readable'). + state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + + if (state.flowing !== false) this.resume(); + } else if (ev === 'readable') { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug('on readable', state.length, state.reading); + + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + + return res; +}; + +Readable.prototype.addListener = Readable.prototype.on; + +Readable.prototype.removeListener = function (ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + + if (ev === 'readable') { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +Readable.prototype.removeAllListeners = function (ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + + if (ev === 'readable' || ev === undefined) { + // We need to check if there is someone still listening to + // readable and reset the state. However this needs to happen + // after readable has been emitted but before I/O (nextTick) to + // support once('readable', fn) cycles. This means that calling + // resume within the same tick will have no + // effect. + process.nextTick(updateReadableListening, this); + } + + return res; +}; + +function updateReadableListening(self) { + var state = self._readableState; + state.readableListening = self.listenerCount('readable') > 0; + + if (state.resumeScheduled && !state.paused) { + // flowing needs to be set to true now, otherwise + // the upcoming resume will not flow. + state.flowing = true; // crude way to check if we should resume + } else if (self.listenerCount('data') > 0) { + self.resume(); + } +} + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} // pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. + + +Readable.prototype.resume = function () { + var state = this._readableState; + + if (!state.flowing) { + debug('resume'); // we flow only if there is no one listening + // for readable, but we still have to call + // resume() + + state.flowing = !state.readableListening; + resume(this, state); + } + + state.paused = false; + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + debug('resume', state.reading); + + if (!state.reading) { + stream.read(0); + } + + state.resumeScheduled = false; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + + if (this._readableState.flowing !== false) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + + this._readableState.paused = true; + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + + while (state.flowing && stream.read() !== null) { + ; + } +} // wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. + + +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + stream.on('end', function () { + debug('wrapped end'); + + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + + if (!ret) { + paused = true; + stream.pause(); + } + }); // proxy all the other methods. + // important when wrapping filters and duplexes. + + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } // proxy certain important events. + + + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the + // underlying stream. + + + this._read = function (n) { + debug('wrapped _read', n); + + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + emitExperimentalWarning('Readable[Symbol.asyncIterator]'); + + if (createReadableStreamAsyncIterator === undefined) { + createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); + } + + return createReadableStreamAsyncIterator(this); + }; +} + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } +}); +Object.defineProperty(Readable.prototype, 'readableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } +}); +Object.defineProperty(Readable.prototype, 'readableFlowing', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } +}); // exposed for testing purposes only. + +Readable._fromList = fromList; +Object.defineProperty(Readable.prototype, 'readableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } +}); // Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. + +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = state.buffer.consume(n, state.decoder); + } + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + debug('endReadable', state.endEmitted); + + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + + return -1; +} +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":160,"../experimentalWarning":161,"./_stream_duplex":162,"./internal/streams/async_iterator":167,"./internal/streams/buffer_list":168,"./internal/streams/destroy":169,"./internal/streams/state":172,"./internal/streams/stream":173,"_process":133,"buffer":48,"events":52,"inherits":75,"string_decoder/":175,"util":33}],165:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. +'use strict'; + +module.exports = Transform; + +var _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + +var Duplex = require('./_stream_duplex'); + +require('inherits')(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + + if (cb === null) { + return this.emit('error', new ERR_MULTIPLE_CALLBACK()); + } + + ts.writechunk = null; + ts.writecb = null; + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; // start out asking for a readable event once data is transformed. + + this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + if (typeof options.flush === 'function') this._flush = options.flush; + } // When the writable side finishes, then flush out anything remaining. + + + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function' && !this._readableState.destroyed) { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; // This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. + + +Transform.prototype._transform = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; // Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. + + +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); +} +},{"../errors":160,"./_stream_duplex":162,"inherits":75}],166:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. +'use strict'; + +module.exports = Writable; +/* */ + +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} // It seems a linked list but it is not +// there will be only 2 of these for each stream + + +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ + + +var Duplex; +/**/ + +Writable.WritableState = WritableState; +/**/ + +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ + +var Stream = require('./internal/streams/stream'); +/**/ + + +var Buffer = require('buffer').Buffer; + +var OurUint8Array = global.Uint8Array || function () {}; + +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} + +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +var destroyImpl = require('./internal/streams/destroy'); + +var _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; + +var _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + +require('inherits')(Writable, Stream); + +function nop() {} + +function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require('./_stream_duplex'); + options = options || {}; // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream, + // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // contains buffers or objects. + + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + + this.finalCalled = false; // drain event flag. + + this.needDrain = false; // at the start of calling end() + + this.ending = false; // when end() has been called, and returned + + this.ended = false; // when 'finish' is emitted + + this.finished = false; // has it been destroyed + + this.destroyed = false; // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + + this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + + this.length = 0; // a flag to see when we're in the middle of a write. + + this.writing = false; // when true all writes will be buffered until .uncork() call + + this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + + this.sync = true; // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + + this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) + + this.onwrite = function (er) { + onwrite(stream, er); + }; // the callback that the user supplies to write(chunk,encoding,cb) + + + this.writecb = null; // the amount that is being written when _write is called. + + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + + this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + + this.prefinished = false; // True if the error was already emitted and should not be thrown again + + this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + + this.emitClose = options.emitClose !== false; // count buffered requests + + this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + + while (current) { + out.push(current); + current = current.next; + } + + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); // Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. + + +var realHasInstance; + +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function realHasInstance(object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside + // the WritableState constructor, at least with V8 6.5 + + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); // legacy. + + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + if (typeof options.writev === 'function') this._writev = options.writev; + if (typeof options.destroy === 'function') this._destroy = options.destroy; + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} // Otherwise people can pipe Writable streams, which is just wrong. + + +Writable.prototype.pipe = function () { + this.emit('error', new ERR_STREAM_CANNOT_PIPE()); +}; + +function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb + + stream.emit('error', er); + process.nextTick(cb, er); +} // Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. + + +function validChunk(stream, state, chunk, cb) { + var er; + + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== 'string' && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); + } + + if (er) { + stream.emit('error', er); + process.nextTick(cb, er); + return false; + } + + return true; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== 'function') cb = nop; + if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; +}; + +Writable.prototype.cork = function () { + this._writableState.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableBuffer', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } +}); + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } +}); // if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. + +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. + + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + process.nextTick(cb, er); // this can emit finish, and it will always happen + // after error + + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); // this can emit finish, but finish must + // always follow error + + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state) || stream.destroyed; + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} // Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. + + +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} // if there's something in the buffer waiting, then process it + + +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + + state.pendingcb++; + state.lastBufferedRequest = null; + + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks + + if (state.corked) { + state.corked = 1; + this.uncork(); + } // ignore unnecessary end() calls. + + + if (!state.ending) endWritable(this, state, cb); + return this; +}; + +Object.defineProperty(Writable.prototype, 'writableLength', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } +}); + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} + +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + + if (err) { + stream.emit('error', err); + } + + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} + +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function' && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + + if (need) { + prefinish(stream, state); + + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + + if (cb) { + if (state.finished) process.nextTick(cb);else stream.once('finish', cb); + } + + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } // reuse the free corkReq. + + + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === undefined) { + return false; + } + + return this._writableState.destroyed; + }, + set: function set(value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } // backward compatibility, the user is explicitly + // managing destroyed + + + this._writableState.destroyed = value; + } +}); +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; + +Writable.prototype._destroy = function (err, cb) { + cb(err); +}; +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../errors":160,"./_stream_duplex":162,"./internal/streams/destroy":169,"./internal/streams/state":172,"./internal/streams/stream":173,"_process":133,"buffer":48,"inherits":75,"util-deprecate":183}],167:[function(require,module,exports){ +(function (process){ +'use strict'; + +var _Object$setPrototypeO; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var finished = require('./end-of-stream'); + +var kLastResolve = Symbol('lastResolve'); +var kLastReject = Symbol('lastReject'); +var kError = Symbol('error'); +var kEnded = Symbol('ended'); +var kLastPromise = Symbol('lastPromise'); +var kHandlePromise = Symbol('handlePromise'); +var kStream = Symbol('stream'); + +function createIterResult(value, done) { + return { + value: value, + done: done + }; +} + +function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + + if (resolve !== null) { + var data = iter[kStream].read(); // we defer if data is null + // we can be expecting either 'end' or + // 'error' + + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } +} + +function onReadable(iter) { + // we wait for the next tick, because it might + // emit an error with process.nextTick + process.nextTick(readAndResolve, iter); +} + +function wrapForNext(lastPromise, iter) { + return function (resolve, reject) { + lastPromise.then(function () { + if (iter[kEnded]) { + resolve(createIterResult(undefined, true)); + return; + } + + iter[kHandlePromise](resolve, reject); + }, reject); + }; +} + +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + + next: function next() { + var _this = this; + + // if we have detected an error in the meanwhile + // reject straight away + var error = this[kError]; + + if (error !== null) { + return Promise.reject(error); + } + + if (this[kEnded]) { + return Promise.resolve(createIterResult(undefined, true)); + } + + if (this[kStream].destroyed) { + // We need to defer via nextTick because if .destroy(err) is + // called, the error will be emitted via nextTick, and + // we cannot guarantee that there is no error lingering around + // waiting to be emitted. + return new Promise(function (resolve, reject) { + process.nextTick(function () { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(undefined, true)); + } + }); + }); + } // if we have multiple next() calls + // we will wait for the previous Promise to finish + // this logic is optimized to support for await loops, + // where next() is only called once at a time + + + var lastPromise = this[kLastPromise]; + var promise; + + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + // fast path needed to support multiple this.push() + // without triggering the next() queue + var data = this[kStream].read(); + + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + + promise = new Promise(this[kHandlePromise]); + } + + this[kLastPromise] = promise; + return promise; + } +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { + return this; +}), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise(function (resolve, reject) { + _this2[kStream].destroy(null, function (err) { + if (err) { + reject(err); + return; + } + + resolve(createIterResult(undefined, true)); + }); + }); +}), _Object$setPrototypeO), AsyncIteratorPrototype); + +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { + var _Object$create; + + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function (err) { + if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { + var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + // returned by next() and store the error + + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err); + } + + iterator[kError] = err; + return; + } + + var resolve = iterator[kLastResolve]; + + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(undefined, true)); + } + + iterator[kEnded] = true; + }); + stream.on('readable', onReadable.bind(null, iterator)); + return iterator; +}; + +module.exports = createReadableStreamAsyncIterator; +}).call(this,require('_process')) +},{"./end-of-stream":170,"_process":133}],168:[function(require,module,exports){ +'use strict'; + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var _require = require('buffer'), + Buffer = _require.Buffer; + +var _require2 = require('util'), + inspect = _require2.inspect; + +var custom = inspect && inspect.custom || 'inspect'; + +function copyBuffer(src, target, offset) { + Buffer.prototype.copy.call(src, target, offset); +} + +module.exports = +/*#__PURE__*/ +function () { + function BufferList() { + this.head = null; + this.tail = null; + this.length = 0; + } + + var _proto = BufferList.prototype; + + _proto.push = function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + _proto.unshift = function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + _proto.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + _proto.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + _proto.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + + while (p = p.next) { + ret += s + p.data; + } + + return ret; + }; + + _proto.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + + return ret; + } // Consumes a specified amount of bytes or characters from the buffered data. + ; + + _proto.consume = function consume(n, hasStrings) { + var ret; + + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + + return ret; + }; + + _proto.first = function first() { + return this.head.data; + } // Consumes a specified amount of characters from the buffered data. + ; + + _proto._getString = function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Consumes a specified amount of bytes from the buffered data. + ; + + _proto._getBuffer = function _getBuffer(n) { + var ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + + break; + } + + ++c; + } + + this.length -= c; + return ret; + } // Make sure the linked list only shows the minimal necessary information. + ; + + _proto[custom] = function (_, options) { + return inspect(this, _objectSpread({}, options, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + }; + + return BufferList; +}(); +},{"buffer":48,"util":33}],169:[function(require,module,exports){ +(function (process){ +'use strict'; // undocumented cb() API, needed for core, not for public API + +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { + process.nextTick(emitErrorNT, this, err); + } + + return this; + } // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + + if (this._readableState) { + this._readableState.destroyed = true; + } // if this is a duplex stream mark the writable part as destroyed as well + + + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + process.nextTick(emitErrorAndCloseNT, _this, err); + + if (_this._writableState) { + _this._writableState.errorEmitted = true; + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + + return this; +} + +function emitErrorAndCloseNT(self, err) { + emitErrorNT(self, err); + emitCloseNT(self); +} + +function emitCloseNT(self) { + if (self._writableState && !self._writableState.emitClose) return; + if (self._readableState && !self._readableState.emitClose) return; + self.emit('close'); +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; +}).call(this,require('_process')) +},{"_process":133}],170:[function(require,module,exports){ +// Ported from https://github.com/mafintosh/end-of-stream with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + callback.apply(this, args); + }; +} + +function noop() {} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function eos(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + + var onlegacyfinish = function onlegacyfinish() { + if (!stream.writable) onfinish(); + }; + + var writableEnded = stream._writableState && stream._writableState.finished; + + var onfinish = function onfinish() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + + var readableEnded = stream._readableState && stream._readableState.endEmitted; + + var onend = function onend() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + + var onerror = function onerror(err) { + callback.call(stream, err); + }; + + var onclose = function onclose() { + var err; + + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err); + } + }; + + var onrequest = function onrequest() { + stream.req.on('finish', onfinish); + }; + + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest();else stream.on('request', onrequest); + } else if (writable && !stream._writableState) { + // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + return function () { + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +} + +module.exports = eos; +},{"../../../errors":160}],171:[function(require,module,exports){ +// Ported from https://github.com/mafintosh/pump with +// permission from the author, Mathias Buus (@mafintosh). +'use strict'; + +var eos; + +function once(callback) { + var called = false; + return function () { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; +} + +var _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + +function noop(err) { + // Rethrow the error if it exists to avoid swallowing it + if (err) throw err; +} + +function isRequest(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +} + +function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on('close', function () { + closed = true; + }); + if (eos === undefined) eos = require('./end-of-stream'); + eos(stream, { + readable: reading, + writable: writing + }, function (err) { + if (err) return callback(err); + closed = true; + callback(); + }); + var destroyed = false; + return function (err) { + if (closed) return; + if (destroyed) return; + destroyed = true; // request.destroy just do .end - .abort is what we want + + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === 'function') return stream.destroy(); + callback(err || new ERR_STREAM_DESTROYED('pipe')); + }; +} + +function call(fn) { + fn(); +} + +function pipe(from, to) { + return from.pipe(to); +} + +function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== 'function') return noop; + return streams.pop(); +} + +function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + + if (streams.length < 2) { + throw new ERR_MISSING_ARGS('streams'); + } + + var error; + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err; + if (err) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); +} + +module.exports = pipeline; +},{"../../../errors":160,"./end-of-stream":170}],172:[function(require,module,exports){ +'use strict'; + +var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; + +function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; +} + +function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : 'highWaterMark'; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + + return Math.floor(hwm); + } // Default value + + + return state.objectMode ? 16 : 16 * 1024; +} + +module.exports = { + getHighWaterMark: getHighWaterMark +}; +},{"../../../errors":160}],173:[function(require,module,exports){ +arguments[4][146][0].apply(exports,arguments) +},{"dup":146,"events":52}],174:[function(require,module,exports){ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); +exports.finished = require('./lib/internal/streams/end-of-stream.js'); +exports.pipeline = require('./lib/internal/streams/pipeline.js'); + +},{"./lib/_stream_duplex.js":162,"./lib/_stream_passthrough.js":163,"./lib/_stream_readable.js":164,"./lib/_stream_transform.js":165,"./lib/_stream_writable.js":166,"./lib/internal/streams/end-of-stream.js":170,"./lib/internal/streams/pipeline.js":171}],175:[function(require,module,exports){ +arguments[4][148][0].apply(exports,arguments) +},{"dup":148,"safe-buffer":154}],176:[function(require,module,exports){ +(function (setImmediate,clearImmediate){ +var nextTick = require('process/browser.js').nextTick; +var apply = Function.prototype.apply; +var slice = Array.prototype.slice; +var immediateIds = {}; +var nextImmediateId = 0; + +// DOM APIs, for completeness + +exports.setTimeout = function() { + return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout); +}; +exports.setInterval = function() { + return new Timeout(apply.call(setInterval, window, arguments), clearInterval); +}; +exports.clearTimeout = +exports.clearInterval = function(timeout) { timeout.close(); }; + +function Timeout(id, clearFn) { + this._id = id; + this._clearFn = clearFn; +} +Timeout.prototype.unref = Timeout.prototype.ref = function() {}; +Timeout.prototype.close = function() { + this._clearFn.call(window, this._id); +}; + +// Does not start the time, just sets up the members needed. +exports.enroll = function(item, msecs) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = msecs; +}; + +exports.unenroll = function(item) { + clearTimeout(item._idleTimeoutId); + item._idleTimeout = -1; +}; + +exports._unrefActive = exports.active = function(item) { + clearTimeout(item._idleTimeoutId); + + var msecs = item._idleTimeout; + if (msecs >= 0) { + item._idleTimeoutId = setTimeout(function onTimeout() { + if (item._onTimeout) + item._onTimeout(); + }, msecs); + } +}; + +// That's not how node.js implements it but the exposed api is the same. +exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) { + var id = nextImmediateId++; + var args = arguments.length < 2 ? false : slice.call(arguments, 1); + + immediateIds[id] = true; + + nextTick(function onNextTick() { + if (immediateIds[id]) { + // fn.call() is faster so we optimize for the common use-case + // @see http://jsperf.com/call-apply-segu + if (args) { + fn.apply(null, args); + } else { + fn.call(null); + } + // Prevent ids from leaking + exports.clearImmediate(id); + } + }); + + return id; +}; + +exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) { + delete immediateIds[id]; +}; +}).call(this,require("timers").setImmediate,require("timers").clearImmediate) +},{"process/browser.js":133,"timers":176}],177:[function(require,module,exports){ +(function (process){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _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; }; + +exports.clone = clone; +exports.addLast = addLast; +exports.addFirst = addFirst; +exports.removeLast = removeLast; +exports.removeFirst = removeFirst; +exports.insert = insert; +exports.removeAt = removeAt; +exports.replaceAt = replaceAt; +exports.getIn = getIn; +exports.set = set; +exports.setIn = setIn; +exports.update = update; +exports.updateIn = updateIn; +exports.merge = merge; +exports.mergeDeep = mergeDeep; +exports.mergeIn = mergeIn; +exports.omit = omit; +exports.addDefaults = addDefaults; + + +/*! + * Timm + * + * Immutability helpers with fast reads and acceptable writes. + * + * @copyright Guillermo Grau Panea 2016 + * @license MIT + */ + +var INVALID_ARGS = 'INVALID_ARGS'; + +// =============================================== +// ### Helpers +// =============================================== + + +function throwStr(msg) { + throw new Error(msg); +} + +function getKeysAndSymbols(obj) { + var keys = Object.keys(obj); + if (Object.getOwnPropertySymbols) { + return keys.concat(Object.getOwnPropertySymbols(obj)); + } + return keys; +} + +var hasOwnProperty = {}.hasOwnProperty; + +function clone(obj) { + if (Array.isArray(obj)) return obj.slice(); + var keys = getKeysAndSymbols(obj); + var out = {}; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + out[key] = obj[key]; + } + return out; +} + +function doMerge(fAddDefaults, fDeep, first) { + var out = first; + !(out != null) && throwStr(process.env.NODE_ENV !== 'production' ? 'At least one object should be provided to merge()' : INVALID_ARGS); + var fChanged = false; + + for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + rest[_key - 3] = arguments[_key]; + } + + for (var idx = 0; idx < rest.length; idx++) { + var obj = rest[idx]; + if (obj == null) continue; + var keys = getKeysAndSymbols(obj); + if (!keys.length) continue; + for (var j = 0; j <= keys.length; j++) { + var key = keys[j]; + if (fAddDefaults && out[key] !== undefined) continue; + var nextVal = obj[key]; + if (fDeep && isObject(out[key]) && isObject(nextVal)) { + nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal); + } + if (nextVal === undefined || nextVal === out[key]) continue; + if (!fChanged) { + fChanged = true; + out = clone(out); + } + out[key] = nextVal; + } + } + return out; +} + +function isObject(o) { + var type = typeof o === 'undefined' ? 'undefined' : _typeof(o); + return o != null && type === 'object'; +} + +// _deepFreeze = (obj) -> +// Object.freeze obj +// for key in Object.getOwnPropertyNames obj +// val = obj[key] +// if isObject(val) and not Object.isFrozen val +// _deepFreeze val +// obj + +// =============================================== +// -- ### Arrays +// =============================================== + +// -- #### addLast() +// -- Returns a new array with an appended item or items. +// -- +// -- Usage: `addLast(array: Array, val: Array|T): Array` +// -- +// -- ```js +// -- arr = ['a', 'b'] +// -- arr2 = addLast(arr, 'c') +// -- // ['a', 'b', 'c'] +// -- arr2 === arr +// -- // false +// -- arr3 = addLast(arr, ['c', 'd']) +// -- // ['a', 'b', 'c', 'd'] +// -- ``` +// `array.concat(val)` also handles the scalar case, +// but is apparently very slow +function addLast(array, val) { + if (Array.isArray(val)) return array.concat(val); + return array.concat([val]); +} + +// -- #### addFirst() +// -- Returns a new array with a prepended item or items. +// -- +// -- Usage: `addFirst(array: Array, val: Array|T): Array` +// -- +// -- ```js +// -- arr = ['a', 'b'] +// -- arr2 = addFirst(arr, 'c') +// -- // ['c', 'a', 'b'] +// -- arr2 === arr +// -- // false +// -- arr3 = addFirst(arr, ['c', 'd']) +// -- // ['c', 'd', 'a', 'b'] +// -- ``` +function addFirst(array, val) { + if (Array.isArray(val)) return val.concat(array); + return [val].concat(array); +} + +// -- #### removeLast() +// -- Returns a new array removing the last item. +// -- +// -- Usage: `removeLast(array: Array): Array` +// -- +// -- ```js +// -- arr = ['a', 'b'] +// -- arr2 = removeLast(arr) +// -- // ['a'] +// -- arr2 === arr +// -- // false +// -- +// -- // The same array is returned if there are no changes: +// -- arr3 = [] +// -- removeLast(arr3) === arr3 +// -- // true +// -- ``` +function removeLast(array) { + if (!array.length) return array; + return array.slice(0, array.length - 1); +} + +// -- #### removeFirst() +// -- Returns a new array removing the first item. +// -- +// -- Usage: `removeFirst(array: Array): Array` +// -- +// -- ```js +// -- arr = ['a', 'b'] +// -- arr2 = removeFirst(arr) +// -- // ['b'] +// -- arr2 === arr +// -- // false +// -- +// -- // The same array is returned if there are no changes: +// -- arr3 = [] +// -- removeFirst(arr3) === arr3 +// -- // true +// -- ``` +function removeFirst(array) { + if (!array.length) return array; + return array.slice(1); +} + +// -- #### insert() +// -- Returns a new array obtained by inserting an item or items +// -- at a specified index. +// -- +// -- Usage: `insert(array: Array, idx: number, val: Array|T): Array` +// -- +// -- ```js +// -- arr = ['a', 'b', 'c'] +// -- arr2 = insert(arr, 1, 'd') +// -- // ['a', 'd', 'b', 'c'] +// -- arr2 === arr +// -- // false +// -- insert(arr, 1, ['d', 'e']) +// -- // ['a', 'd', 'e', 'b', 'c'] +// -- ``` +function insert(array, idx, val) { + return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx)); +} + +// -- #### removeAt() +// -- Returns a new array obtained by removing an item at +// -- a specified index. +// -- +// -- Usage: `removeAt(array: Array, idx: number): Array` +// -- +// -- ```js +// -- arr = ['a', 'b', 'c'] +// -- arr2 = removeAt(arr, 1) +// -- // ['a', 'c'] +// -- arr2 === arr +// -- // false +// -- +// -- // The same array is returned if there are no changes: +// -- removeAt(arr, 4) === arr +// -- // true +// -- ``` +function removeAt(array, idx) { + if (idx >= array.length || idx < 0) return array; + return array.slice(0, idx).concat(array.slice(idx + 1)); +} + +// -- #### replaceAt() +// -- Returns a new array obtained by replacing an item at +// -- a specified index. If the provided item is the same as +// -- (*referentially equal to*) the previous item at that position, +// -- the original array is returned. +// -- +// -- Usage: `replaceAt(array: Array, idx: number, newItem: T): Array` +// -- +// -- ```js +// -- arr = ['a', 'b', 'c'] +// -- arr2 = replaceAt(arr, 1, 'd') +// -- // ['a', 'd', 'c'] +// -- arr2 === arr +// -- // false +// -- +// -- // The same object is returned if there are no changes: +// -- replaceAt(arr, 1, 'b') === arr +// -- // true +// -- ``` +function replaceAt(array, idx, newItem) { + if (array[idx] === newItem) return array; + var len = array.length; + var result = Array(len); + for (var i = 0; i < len; i++) { + result[i] = array[i]; + } + result[idx] = newItem; + return result; +} + +// =============================================== +// -- ### Collections (objects and arrays) +// =============================================== +// -- The following types are used throughout this section +// -- ```js +// -- type ArrayOrObject = Array|Object; +// -- type Key = number|string; +// -- ``` + +// -- #### getIn() +// -- Returns a value from an object at a given path. Works with +// -- nested arrays and objects. If the path does not exist, it returns +// -- `undefined`. +// -- +// -- Usage: `getIn(obj: ?ArrayOrObject, path: Array): any` +// -- +// -- ```js +// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] } +// -- getIn(obj, ['d', 'd1']) +// -- // 3 +// -- getIn(obj, ['e', 1]) +// -- // 'b' +// -- ``` +function getIn(obj, path) { + !Array.isArray(path) && throwStr(process.env.NODE_ENV !== 'production' ? 'A path array should be provided when calling getIn()' : INVALID_ARGS); + if (obj == null) return undefined; + var ptr = obj; + for (var i = 0; i < path.length; i++) { + var key = path[i]; + ptr = ptr != null ? ptr[key] : undefined; + if (ptr === undefined) return ptr; + } + return ptr; +} + +// -- #### set() +// -- Returns a new object with a modified attribute. +// -- If the provided value is the same as (*referentially equal to*) +// -- the previous value, the original object is returned. +// -- +// -- Usage: `set(obj: ?T, key: Key, val: any): T` +// -- +// -- ```js +// -- obj = { a: 1, b: 2, c: 3 } +// -- obj2 = set(obj, 'b', 5) +// -- // { a: 1, b: 5, c: 3 } +// -- obj2 === obj +// -- // false +// -- +// -- // The same object is returned if there are no changes: +// -- set(obj, 'b', 2) === obj +// -- // true +// -- ``` +function set(obj, key, val) { + var fallback = typeof key === 'number' ? [] : {}; + var finalObj = obj == null ? fallback : obj; + if (finalObj[key] === val) return finalObj; + var obj2 = clone(finalObj); + obj2[key] = val; + return obj2; +} + +// -- #### setIn() +// -- Returns a new object with a modified **nested** attribute. +// -- +// -- Notes: +// -- +// -- * If the provided value is the same as (*referentially equal to*) +// -- the previous value, the original object is returned. +// -- * If the path does not exist, it will be created before setting +// -- the new value. +// -- +// -- Usage: `setIn(obj: T, path: Array, val: any): T` +// -- +// -- ```js +// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } +// -- obj2 = setIn(obj, ['d', 'd1'], 4) +// -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } +// -- obj2 === obj +// -- // false +// -- obj2.d === obj.d +// -- // false +// -- obj2.e === obj.e +// -- // true +// -- +// -- // The same object is returned if there are no changes: +// -- obj3 = setIn(obj, ['d', 'd1'], 3) +// -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } +// -- obj3 === obj +// -- // true +// -- obj3.d === obj.d +// -- // true +// -- obj3.e === obj.e +// -- // true +// -- +// -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices: +// -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4) +// -- // { a: 3, unknown: [{ path: 4 }] } +// -- ``` +function doSetIn(obj, path, val, idx) { + var newValue = void 0; + var key = path[idx]; + if (idx === path.length - 1) { + newValue = val; + } else { + var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {}; + newValue = doSetIn(nestedObj, path, val, idx + 1); + } + return set(obj, key, newValue); +} + +function setIn(obj, path, val) { + if (!path.length) return val; + return doSetIn(obj, path, val, 0); +} + +// -- #### update() +// -- Returns a new object with a modified attribute, +// -- calculated via a user-provided callback based on the current value. +// -- If the calculated value is the same as (*referentially equal to*) +// -- the previous value, the original object is returned. +// -- +// -- Usage: `update(obj: T, key: Key, +// -- fnUpdate: (prevValue: any) => any): T` +// -- +// -- ```js +// -- obj = { a: 1, b: 2, c: 3 } +// -- obj2 = update(obj, 'b', (val) => val + 1) +// -- // { a: 1, b: 3, c: 3 } +// -- obj2 === obj +// -- // false +// -- +// -- // The same object is returned if there are no changes: +// -- update(obj, 'b', (val) => val) === obj +// -- // true +// -- ``` +function update(obj, key, fnUpdate) { + var prevVal = obj == null ? undefined : obj[key]; + var nextVal = fnUpdate(prevVal); + return set(obj, key, nextVal); +} + +// -- #### updateIn() +// -- Returns a new object with a modified **nested** attribute, +// -- calculated via a user-provided callback based on the current value. +// -- If the calculated value is the same as (*referentially equal to*) +// -- the previous value, the original object is returned. +// -- +// -- Usage: `updateIn(obj: T, path: Array, +// -- fnUpdate: (prevValue: any) => any): T` +// -- +// -- ```js +// -- obj = { a: 1, d: { d1: 3, d2: 4 } } +// -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1) +// -- // { a: 1, d: { d1: 4, d2: 4 } } +// -- obj2 === obj +// -- // false +// -- +// -- // The same object is returned if there are no changes: +// -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val) +// -- // { a: 1, d: { d1: 3, d2: 4 } } +// -- obj3 === obj +// -- // true +// -- ``` +function updateIn(obj, path, fnUpdate) { + var prevVal = getIn(obj, path); + var nextVal = fnUpdate(prevVal); + return setIn(obj, path, nextVal); +} + +// -- #### merge() +// -- Returns a new object built as follows: the overlapping keys from the +// -- second one overwrite the corresponding entries from the first one. +// -- Similar to `Object.assign()`, but immutable. +// -- +// -- Usage: +// -- +// -- * `merge(obj1: Object, obj2: ?Object): Object` +// -- * `merge(obj1: Object, ...objects: Array): Object` +// -- +// -- The unmodified `obj1` is returned if `obj2` does not *provide something +// -- new to* `obj1`, i.e. if either of the following +// -- conditions are true: +// -- +// -- * `obj2` is `null` or `undefined` +// -- * `obj2` is an object, but it is empty +// -- * All attributes of `obj2` are `undefined` +// -- * All attributes of `obj2` are referentially equal to the +// -- corresponding attributes of `obj1` +// -- +// -- Note that `undefined` attributes in `obj2` do not modify the +// -- corresponding attributes in `obj1`. +// -- +// -- ```js +// -- obj1 = { a: 1, b: 2, c: 3 } +// -- obj2 = { c: 4, d: 5 } +// -- obj3 = merge(obj1, obj2) +// -- // { a: 1, b: 2, c: 4, d: 5 } +// -- obj3 === obj1 +// -- // false +// -- +// -- // The same object is returned if there are no changes: +// -- merge(obj1, { c: 3 }) === obj1 +// -- // true +// -- ``` +function merge(a, b, c, d, e, f) { + for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) { + rest[_key2 - 6] = arguments[_key2]; + } + + return rest.length ? doMerge.call.apply(doMerge, [null, false, false, a, b, c, d, e, f].concat(rest)) : doMerge(false, false, a, b, c, d, e, f); +} + +// -- #### mergeDeep() +// -- Returns a new object built as follows: the overlapping keys from the +// -- second one overwrite the corresponding entries from the first one. +// -- If both the first and second entries are objects they are merged recursively. +// -- Similar to `Object.assign()`, but immutable, and deeply merging. +// -- +// -- Usage: +// -- +// -- * `mergeDeep(obj1: Object, obj2: ?Object): Object` +// -- * `mergeDeep(obj1: Object, ...objects: Array): Object` +// -- +// -- The unmodified `obj1` is returned if `obj2` does not *provide something +// -- new to* `obj1`, i.e. if either of the following +// -- conditions are true: +// -- +// -- * `obj2` is `null` or `undefined` +// -- * `obj2` is an object, but it is empty +// -- * All attributes of `obj2` are `undefined` +// -- * All attributes of `obj2` are referentially equal to the +// -- corresponding attributes of `obj1` +// -- +// -- Note that `undefined` attributes in `obj2` do not modify the +// -- corresponding attributes in `obj1`. +// -- +// -- ```js +// -- obj1 = { a: 1, b: 2, c: { a: 1 } } +// -- obj2 = { b: 3, c: { b: 2 } } +// -- obj3 = mergeDeep(obj1, obj2) +// -- // { a: 1, b: 3, c: { a: 1, b: 2 } } +// -- obj3 === obj1 +// -- // false +// -- +// -- // The same object is returned if there are no changes: +// -- mergeDeep(obj1, { c: { a: 1 } }) === obj1 +// -- // true +// -- ``` +function mergeDeep(a, b, c, d, e, f) { + for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) { + rest[_key3 - 6] = arguments[_key3]; + } + + return rest.length ? doMerge.call.apply(doMerge, [null, false, true, a, b, c, d, e, f].concat(rest)) : doMerge(false, true, a, b, c, d, e, f); +} + +// -- #### mergeIn() +// -- Similar to `merge()`, but merging the value at a given nested path. +// -- Note that the returned type is the same as that of the first argument. +// -- +// -- Usage: +// -- +// -- * `mergeIn(obj1: T, path: Array, obj2: ?Object): T` +// -- * `mergeIn(obj1: T, path: Array, +// -- ...objects: Array): T` +// -- +// -- ```js +// -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } } +// -- obj2 = { d3: 5 } +// -- obj3 = mergeIn(obj1, ['d', 'b'], obj2) +// -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } } +// -- obj3 === obj1 +// -- // false +// -- +// -- // The same object is returned if there are no changes: +// -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1 +// -- // true +// -- ``` +function mergeIn(a, path, b, c, d, e, f) { + var prevVal = getIn(a, path); + if (prevVal == null) prevVal = {}; + var nextVal = void 0; + + for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) { + rest[_key4 - 7] = arguments[_key4]; + } + + if (rest.length) { + nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest)); + } else { + nextVal = doMerge(false, false, prevVal, b, c, d, e, f); + } + return setIn(a, path, nextVal); +} + +// -- #### omit() +// -- Returns an object excluding one or several attributes. +// -- +// -- Usage: `omit(obj: Object, attrs: Array|string): Object` +// +// -- ```js +// -- obj = { a: 1, b: 2, c: 3, d: 4 } +// -- omit(obj, 'a') +// -- // { b: 2, c: 3, d: 4 } +// -- omit(obj, ['b', 'c']) +// -- // { a: 1, d: 4 } +// -- +// -- // The same object is returned if there are no changes: +// -- omit(obj, 'z') === obj1 +// -- // true +// -- ``` +function omit(obj, attrs) { + var omitList = Array.isArray(attrs) ? attrs : [attrs]; + var fDoSomething = false; + for (var i = 0; i < omitList.length; i++) { + if (hasOwnProperty.call(obj, omitList[i])) { + fDoSomething = true; + break; + } + } + if (!fDoSomething) return obj; + var out = {}; + var keys = getKeysAndSymbols(obj); + for (var _i = 0; _i < keys.length; _i++) { + var key = keys[_i]; + if (omitList.indexOf(key) >= 0) continue; + out[key] = obj[key]; + } + return out; +} + +// -- #### addDefaults() +// -- Returns a new object built as follows: `undefined` keys in the first one +// -- are filled in with the corresponding values from the second one +// -- (even if they are `null`). +// -- +// -- Usage: +// -- +// -- * `addDefaults(obj: Object, defaults: Object): Object` +// -- * `addDefaults(obj: Object, ...defaultObjects: Array): Object` +// -- +// -- ```js +// -- obj1 = { a: 1, b: 2, c: 3 } +// -- obj2 = { c: 4, d: 5, e: null } +// -- obj3 = addDefaults(obj1, obj2) +// -- // { a: 1, b: 2, c: 3, d: 5, e: null } +// -- obj3 === obj1 +// -- // false +// -- +// -- // The same object is returned if there are no changes: +// -- addDefaults(obj1, { c: 4 }) === obj1 +// -- // true +// -- ``` +function addDefaults(a, b, c, d, e, f) { + for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) { + rest[_key5 - 6] = arguments[_key5]; + } + + return rest.length ? doMerge.call.apply(doMerge, [null, true, false, a, b, c, d, e, f].concat(rest)) : doMerge(true, false, a, b, c, d, e, f); +} + +// =============================================== +// ### Public API +// =============================================== +var timm = { + clone: clone, + addLast: addLast, + addFirst: addFirst, + removeLast: removeLast, + removeFirst: removeFirst, + insert: insert, + removeAt: removeAt, + replaceAt: replaceAt, + + getIn: getIn, + // eslint-disable-next-line object-shorthand + set: set, // so that flow doesn't complain + setIn: setIn, + update: update, + updateIn: updateIn, + merge: merge, + mergeDeep: mergeDeep, + mergeIn: mergeIn, + omit: omit, + addDefaults: addDefaults +}; + +exports.default = timm; + +}).call(this,require('_process')) +},{"_process":133}],178:[function(require,module,exports){ +// TinyColor v1.4.1 +// https://github.com/bgrins/TinyColor +// Brian Grinstead, MIT License + +(function(Math) { + +var trimLeft = /^\s+/, + trimRight = /\s+$/, + tinyCounter = 0, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + this._tc_id = tinyCounter++; +} + +tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r/255; + GsRGB = rgb.g/255; + BsRGB = rgb.b/255; + + if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function(allow4Char) { + return '#' + this.toHex8(allow4Char); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + clone: function() { + return tinycolor(this.toString()); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } +}; + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "#ff000000" or "ff000000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + + +// Conversion Functions +// -------------------- + +// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: +// + +// `rgbToRgb` +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// `rgbToHsl` +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// `hslToRgb` +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHsv` +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// `hsvToRgb` +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// `rgbToHex` +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// `rgbaToHex` +// Converts an RGBA color plus alpha transparency to hex +// Assumes r, g, b are contained in the set [0, 255] and +// a in [0, 1]. Returns a 4 or 8 character rgba hex +function rgbaToHex(r, g, b, a, allow4Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + + return hex.join(""); +} + +// `rgbaToArgbHex` +// Converts an RGBA color to an ARGB Hex8 string +// Rarely used, but required for "toFilter()" +function rgbaToArgbHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); +} + +// `equals` +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; + +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + +function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function greyscale(color) { + return tinycolor(color).desaturate(100); +} + +function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); +} + +function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. +// Values outside of this range will be wrapped into this range. +function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); +} + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +} + +function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +} + +function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +} + +function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +} + +// Utility Functions +// --------------------- + +tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + + var rgba = { + r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + }; + + return tinycolor(rgba); +}; + + +// Readability Functions +// --------------------- +// false +// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false +tinycolor.isReadable = function(color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + + out = false; + + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + +}; + +// `mostReadable` +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Optionally returns Black or White if the most readable color is unreadable. +// *Example* +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" +tinycolor.mostReadable = function(baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size ; + args = args || {}; + includeFallbackColors = args.includeFallbackColors ; + level = args.level; + size = args.size; + + for (var i= 0; i < colorList.length ; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { + return bestColor; + } + else { + args.includeFallbackColors=false; + return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); + } +}; + + +// Big List of Colors +// ------------------ +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via `hexNames[hex]` +var hexNames = tinycolor.hexNames = flip(names); + + +// Utilities +// --------- + +// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Return a valid alpha value [0,1] with all invalid values being set to 1 +function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((Math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse a base-16 hex value into a base-10 integer +function parseIntFromHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +// Converts a decimal to a hex value +function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); +} +// Converts a hex value to a decimal +function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// `isValidCSSUnit` +// Take in a single string / number and check to see if it looks like a CSS unit +// (see `matchers` above for definition). +function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); +} + +// `stringInputToObject` +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` +function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex4.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || {"level":"AA", "size":"small"}; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return {"level":level, "size":size}; +} + +// Node: Export function +if (typeof module !== "undefined" && module.exports) { + module.exports = tinycolor; +} +// AMD/requirejs: Define the module +else if (typeof define === 'function' && define.amd) { + define(function () {return tinycolor;}); +} +// Browser: Expose to window +else { + window.tinycolor = tinycolor; +} + +})(Math); + +},{}],179:[function(require,module,exports){ + +exports = module.exports = trim; + +function trim(str){ + return str.replace(/^\s*|\s*$/g, ''); +} + +exports.left = function(str){ + return str.replace(/^\s*/, ''); +}; + +exports.right = function(str){ + return str.replace(/\s*$/, ''); +}; + +},{}],180:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var punycode = require('punycode'); +var util = require('./util'); + +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; + +exports.Url = Url; + +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + +// Reference: RFC 3986, RFC 1808, RFC 2396 + +// define these here so at least they only have to be +// compiled once on the first module load. +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = require('querystring'); + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && util.isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} + +Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!util.isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + // Copy chrome, IE, opera backslash-handling behavior. + // Back slashes before the query string get converted to forward slashes + // See: https://code.google.com/p/chromium/issues/detail?id=25916 + var queryIndex = url.indexOf('?'), + splitter = + (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a punycoded representation of "domain". + // It only converts parts of the domain name that + // have non-ASCII characters, i.e. it doesn't matter if + // you call it with a domain that already is ASCII-only. + this.hostname = punycode.toASCII(this.hostname); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) + continue; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; +}; + +// format a parsed object into a url string +function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (util.isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); +} + +Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + util.isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function(relative) { + if (util.isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') + result[rkey] = relative[rkey]; + } + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!util.isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host || srcPath.length > 1) && + (last === '.' || last === '..') || last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especially happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!util.isNull(result.pathname) || !util.isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; +}; + +},{"./util":181,"punycode":134,"querystring":137}],181:[function(require,module,exports){ +'use strict'; + +module.exports = { + isString: function(arg) { + return typeof(arg) === 'string'; + }, + isObject: function(arg) { + return typeof(arg) === 'object' && arg !== null; + }, + isNull: function(arg) { + return arg === null; + }, + isNullOrUndefined: function(arg) { + return arg == null; + } +}; + +},{}],182:[function(require,module,exports){ +(function (process){ + + + + +;(function(){ +var UTIF = {}; + +// Make available for import by `require()` +if (typeof module == "object") {module.exports = UTIF;} +else {self.UTIF = UTIF;} + +var pako; +if (typeof require == "function") {pako = require("pako");} +else {pako = self.pako;} + +function log() { if (typeof process=="undefined" || process.env.NODE_ENV=="development") console.log.apply(console, arguments); } + +(function(UTIF, pako){ + +// Following lines add a JPEG decoder to UTIF.JpegDecoder +(function(){var V="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(g){return typeof g}:function(g){return g&&"function"===typeof Symbol&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},D=function(){function g(g){this.message="JPEG error: "+g}g.prototype=Error();g.prototype.name="JpegError";return g.constructor=g}(),P=function(){function g(g,D){this.message=g;this.g=D}g.prototype=Error();g.prototype.name="DNLMarkerError";return g.constructor=g}();(function(){function g(){this.M= +null;this.B=-1}function W(a,d){for(var f=0,e=[],b,B,k=16;0>x&1;z=a[d++];if(255=== +z){var c=a[d++];if(c){if(220===c&&g){d+=2;var b=a[d++]<<8|a[d++];if(0>>7}function q(a){for(;;){a=a[n()];if("number"===typeof a)return a;if("object"!==("undefined"===typeof a?"undefined":V(a)))throw new D("invalid huffman sequence");}}function h(a){for(var c=0;0= +1<d;){var h=q(a.o),k=h&15;h>>=4;if(0===k){if(15>h)break;d+=16}else d+=h,a.a[b+J[d]]=c(k),d++}}function w(a,d){var b=q(a.D);b=0===b?0:c(b)<>=4;if(0===f){if(15>e){A=h(e)+(1<a.a[f]? +-1:1;switch(E){case 0:e=q(a.o);f=e&15;e>>=4;if(0===f)15>e?(A=h(e)+(1<=y)throw new D("marker was not found"); +if(65488<=y&&65495>=y)d+=2;else break}(y=N(a,d))&&y.f&&((0,_util.warn)("decodeScan - unexpected Scan data, current marker is: "+y.f),d=y.offset);return d-v}function Y(a,d){for(var f=d.c,e=d.l,b=new Int16Array(64),B=0;Bh;h+=8){var c=q[l+h];var C=q[l+h+1];var w=q[l+h+2];var p=q[l+h+3];var m=q[l+h+4];var t=q[l+h+5];var g=q[l+h+6];var u=q[l+h+7];c*=n[h];if(0===(C| +w|p|m|t|g|u))c=5793*c+512>>10,r[h]=c,r[h+1]=c,r[h+2]=c,r[h+3]=c,r[h+4]=c,r[h+5]=c,r[h+6]=c,r[h+7]=c;else{C*=n[h+1];w*=n[h+2];p*=n[h+3];m*=n[h+4];t*=n[h+5];g*=n[h+6];u*=n[h+7];var v=5793*c+128>>8;var z=5793*m+128>>8;var x=w;var A=g;m=2896*(C-u)+128>>8;u=2896*(C+u)+128>>8;p<<=4;t<<=4;v=v+z+1>>1;z=v-z;c=3784*x+1567*A+128>>8;x=1567*x-3784*A+128>>8;A=c;m=m+t+1>>1;t=m-t;u=u+p+1>>1;p=u-p;v=v+A+1>>1;A=v-A;z=z+x+1>>1;x=z-x;c=2276*m+3406*u+2048>>12;m=3406*m-2276*u+2048>>12;u=c;c=799*p+4017*t+2048>>12;p=4017* +p-799*t+2048>>12;t=c;r[h]=v+u;r[h+7]=v-u;r[h+1]=z+t;r[h+6]=z-t;r[h+2]=x+p;r[h+5]=x-p;r[h+3]=A+m;r[h+4]=A-m}}for(n=0;8>n;++n)c=r[n],C=r[n+8],w=r[n+16],p=r[n+24],m=r[n+32],t=r[n+40],g=r[n+48],u=r[n+56],0===(C|w|p|m|t|g|u)?(c=5793*c+8192>>14,c=-2040>c?0:2024<=c?255:c+2056>>4,q[l+n]=c,q[l+n+8]=c,q[l+n+16]=c,q[l+n+24]=c,q[l+n+32]=c,q[l+n+40]=c,q[l+n+48]=c,q[l+n+56]=c):(v=5793*c+2048>>12,z=5793*m+2048>>12,x=w,A=g,m=2896*(C-u)+2048>>12,u=2896*(C+u)+2048>>12,v=(v+z+1>>1)+4112,z=v-z,c=3784*x+1567*A+2048>> +12,x=1567*x-3784*A+2048>>12,A=c,m=m+t+1>>1,t=m-t,u=u+p+1>>1,p=u-p,v=v+A+1>>1,A=v-A,z=z+x+1>>1,x=z-x,c=2276*m+3406*u+2048>>12,m=3406*m-2276*u+2048>>12,u=c,c=799*p+4017*t+2048>>12,p=4017*p-799*t+2048>>12,t=c,c=v+u,u=v-u,C=z+t,g=z-t,w=x+p,t=x-p,p=A+m,m=A-m,c=16>c?0:4080<=c?255:c>>4,C=16>C?0:4080<=C?255:C>>4,w=16>w?0:4080<=w?255:w>>4,p=16>p?0:4080<=p?255:p>>4,m=16>m?0:4080<=m?255:m>>4,t=16>t?0:4080<=t?255:t>>4,g=16>g?0:4080<=g?255:g>>4,u=16>u?0:4080<=u?255:u>>4,q[l+n]=c,q[l+n+8]=C,q[l+n+16]=w,q[l+n+24]= +p,q[l+n+32]=m,q[l+n+40]=t,q[l+n+48]=g,q[l+n+56]=u)}return d.a}function N(a,d){var f=2=e)return null;var b=a[d]<<8|a[d+1];if(65472<=b&&65534>=b)return{f:null,F:b,offset:d};for(var B=a[f]<<8|a[f+1];!(65472<=B&&65534>=B);){if(++f>=e)return null;B=a[f]<<8|a[f+1]}return{f:b.toString(16),F:B,offset:f}}var J=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56, +57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);g.prototype={parse:function(a){function d(){var d=a[k]<<8|a[k+1];k+=2;return d}function f(){var b=d();b=k+b-2;var c=N(a,b,k);c&&c.f&&((0,_util.warn)("readDataBlock - incorrect length, current marker is: "+c.f),b=c.offset);b=a.subarray(k,b);k+=b.length;return b}function e(a){for(var b=Math.ceil(a.v/8/a.s),c=Math.ceil(a.g/8/a.u),d=0;d>4)for(c=0;64>c;c++)g=J[c],p[g]=a[k++];else if(1===w>>4)for(c=0;64>c;c++)g=J[c],p[g]=d();else throw new D("DQT - invalid table spec");b[w&15]=p}break;case 65472:case 65473:case 65474:if(m)throw new D("Only single frame JPEGs supported");d();var m={};m.X=65473===h;m.S=65474===h;m.precision=a[k++];h=d();m.g= +B||h;m.v=d();m.b=[];m.C={};c=a[k++];for(h=p=w=0;h>4;var H=a[k+1]&15;wc;c++,k++)t+=p[c]=a[k];H=new Uint8Array(t);for(c=0;c>4?q:n)[w&15]=W(p,H)}break;case 65501:d();var u=d();break;case 65498:c=1===++r&&!B;d();w=a[k++];g=[];for(h=0;h>4];v.o=n[p&15];g.push(v)}h=a[k++];w=a[k++];p=a[k++];try{var z=X(a,k,m,g,u,h,w,p>>4,p&15,c);k+=z}catch(x){if(x instanceof P)return(0,_util.warn)('Attempting to re-parse JPEG image using "scanLines" parameter found in DNL marker (0xFFDC) segment.'),this.parse(a,{N:x.g});throw x;}break;case 65500:k+=4;break;case 65535:255!==a[k]&&k--;break;default:if(255===a[k-3]&&192<=a[k-2]&&254>=a[k-2])k-=3;else if((c=N(a,k-2))&&c.f)(0,_util.warn)("JpegImage.parse - unexpected data, current marker is: "+ +c.f),k=c.offset;else throw new D("unknown marker "+h.toString(16));}h=d()}this.width=m.v;this.height=m.g;this.A=l;this.b=[];for(h=0;h>8)+e[f+1];return r},w:function(){return this.A?!!this.A.W:3===this.i?0===this.B?!1:!0:1===this.B?!0:!1},I:function(a){for(var d,f,e,b=0,g=a.length;b>>3)]; if(bcnt==null) bcnt = img["t325"]; + var bytes = new Uint8Array(img.height*(bipl>>>3)), bilen = 0; + + if(img["t322"]!=null) // tiled + { + var tw = img["t322"][0], th = img["t323"][0]; + var tx = Math.floor((img.width + tw - 1) / tw); + var ty = Math.floor((img.height + th - 1) / th); + var tbuff = new Uint8Array(Math.ceil(tw*th*bipp/8)|0); + for(var y=0; y>>8); } + else if(bps==12) for(var i=0; i>>4); tgt[toff++] = ((out[i]<<4)|(out[i+1]>>>8))&255; tgt[toff++] = out[i+1]&255; } + else throw new Error("unsupported bit depth "+bps); + } + else + { + var parser = new UTIF.JpegDecoder(); parser.parse(buff); + var decoded = parser.getData(parser.width, parser.height); + for (var i=0; i 1); + } + + if(!isTiled) + { + if(data[off]==255 && data[off+1]==SOI) return { jpegOffset: off }; + if(jpgIchgFmt!=null) + { + if(data[off+jifoff]==255 && data[off+jifoff+1]==SOI) joff = off+jifoff; + else log("JPEGInterchangeFormat does not point to SOI"); + + if(jpgIchgFmtLen==null) log("JPEGInterchangeFormatLength field is missing"); + else if(jifoff >= soff || (jifoff+jiflen) <= soff) log("JPEGInterchangeFormatLength field value is invalid"); + + if(joff != null) return { jpegOffset: joff }; + } + } + + if(ycbcrss!=null) { ssx = ycbcrss[0]; ssy = ycbcrss[1]; } + + if(jpgIchgFmt!=null) + if(jpgIchgFmtLen!=null) + if(jiflen >= 2 && (jifoff+jiflen) <= soff) + { + if(data[off+jifoff+jiflen-2]==255 && data[off+jifoff+jiflen-1]==SOI) tables = new Uint8Array(jiflen-2); + else tables = new Uint8Array(jiflen); + + for(i=0; i offset to first strip or tile"); + + if(tables == null) + { + var ooff = 0, out = []; + out[ooff++] = 255; out[ooff++] = SOI; + + var qtables = img["t519"]; + if(qtables==null) throw new Error("JPEGQTables tag is missing"); + for(i=0; i>> 8); out[ooff++] = nc & 255; + out[ooff++] = (i | (k << 4)); + for(j=0; j<16; j++) out[ooff++] = data[off+htables[i]+j]; + for(j=0; j>> 8) & 255; out[ooff++] = img.height & 255; + out[ooff++] = (img.width >>> 8) & 255; out[ooff++] = img.width & 255; + out[ooff++] = spp; + if(spp==1) { out[ooff++] = 1; out[ooff++] = 17; out[ooff++] = 0; } + else for(i=0; i<3; i++) + { + out[ooff++] = i + 1; + out[ooff++] = (i != 0) ? 17 : (((ssx & 15) << 4) | (ssy & 15)); + out[ooff++] = i; + } + + if(jpgresint!=null && jpgresint[0]!=0) + { + out[ooff++] = 255; out[ooff++] = DRI; out[ooff++] = 0; out[ooff++] = 4; + out[ooff++] = (jpgresint[0] >>> 8) & 255; + out[ooff++] = jpgresint[0] & 255; + } + + tables = new Uint8Array(out); + } + + var sofpos = -1; + i = 0; + while(i < (tables.length - 1)) { + if(tables[i]==255 && tables[i+1]==SOF0) { sofpos = i; break; } + i++; + } + + if(sofpos == -1) + { + var tmptab = new Uint8Array(tables.length + 10 + 3*spp); + tmptab.set(tables); + var tmpoff = tables.length; + sofpos = tables.length; + tables = tmptab; + + tables[tmpoff++] = 255; tables[tmpoff++] = SOF0; + tables[tmpoff++] = 0; tables[tmpoff++] = 8 + 3*spp; tables[tmpoff++] = 8; + tables[tmpoff++] = (img.height >>> 8) & 255; tables[tmpoff++] = img.height & 255; + tables[tmpoff++] = (img.width >>> 8) & 255; tables[tmpoff++] = img.width & 255; + tables[tmpoff++] = spp; + if(spp==1) { tables[tmpoff++] = 1; tables[tmpoff++] = 17; tables[tmpoff++] = 0; } + else for(i=0; i<3; i++) + { + tables[tmpoff++] = i + 1; + tables[tmpoff++] = (i != 0) ? 17 : (((ssx & 15) << 4) | (ssy & 15)); + tables[tmpoff++] = i; + } + } + + if(data[soff]==255 && data[soff+1]==SOS) + { + var soslen = (data[soff+2]<<8) | data[soff+3]; + sosMarker = new Uint8Array(soslen+2); + sosMarker[0] = data[soff]; sosMarker[1] = data[soff+1]; sosMarker[2] = data[soff+2]; sosMarker[3] = data[soff+3]; + for(i=0; i<(soslen-2); i++) sosMarker[i+4] = data[soff+i+4]; + } + else + { + sosMarker = new Uint8Array(2 + 6 + 2*spp); + var sosoff = 0; + sosMarker[sosoff++] = 255; sosMarker[sosoff++] = SOS; + sosMarker[sosoff++] = 0; sosMarker[sosoff++] = 6 + 2*spp; sosMarker[sosoff++] = spp; + if(spp==1) { sosMarker[sosoff++] = 1; sosMarker[sosoff++] = 0; } + else for(i=0; i<3; i++) + { + sosMarker[sosoff++] = i+1; sosMarker[sosoff++] = (i << 4) | i; + } + sosMarker[sosoff++] = 0; sosMarker[sosoff++] = 63; sosMarker[sosoff++] = 0; + } + + return { jpegOffset: off, tables: tables, sosMarker: sosMarker, sofPosition: sofpos }; +} + +UTIF.decode._decodeOldJPEG = function(img, data, off, len, tgt, toff) +{ + var i, dlen, tlen, buff, buffoff; + var jpegData = UTIF.decode._decodeOldJPEGInit(img, data, off, len); + + if(jpegData.jpegOffset!=null) + { + dlen = off+len-jpegData.jpegOffset; + buff = new Uint8Array(dlen); + for(i=0; i>> 8) & 255; buff[jpegData.sofPosition+6] = img.height & 255; + buff[jpegData.sofPosition+7] = (img.width >>> 8) & 255; buff[jpegData.sofPosition+8] = img.width & 255; + + if(data[off]!=255 || data[off+1]!=SOS) + { + buff.set(jpegData.sosMarker, bufoff); + bufoff += sosMarker.length; + } + for(i=0; i=0 && n<128) for(var i=0; i< n+1; i++) { ta[toff]=sa[off]; toff++; off++; } + if(n>=-127 && n<0) { for(var i=0; i<-n+1; i++) { ta[toff]=sa[off]; toff++; } off++; } + } +} + +UTIF.decode._decodeThunder = function(data, off, len, tgt, toff) +{ + var d2 = [ 0, 1, 0, -1 ], d3 = [ 0, 1, 2, 3, 0, -3, -2, -1 ]; + var lim = off+len, qoff = toff*2, px = 0; + while(off>>6), n = (b&63); off++; + if(msk==3) { px=(n&15); tgt[qoff>>>1] |= (px<<(4*(1-qoff&1))); qoff++; } + if(msk==0) for(var i=0; i>>1] |= (px<<(4*(1-qoff&1))); qoff++; } + if(msk==2) for(var i=0; i<2; i++) { var d=(n>>>(3*(1-i)))&7; if(d!=4) { px+=d3[d]; tgt[qoff>>>1] |= (px<<(4*(1-qoff&1))); qoff++; } } + if(msk==1) for(var i=0; i<3; i++) { var d=(n>>>(2*(2-i)))&3; if(d!=2) { px+=d2[d]; tgt[qoff>>>1] |= (px<<(4*(1-qoff&1))); qoff++; } } + } +} + +UTIF.decode._dmap = { "1":0,"011":1,"000011":2,"0000011":3, "010":-1,"000010":-2,"0000010":-3 }; +UTIF.decode._lens = ( function() +{ + var addKeys = function(lens, arr, i0, inc) { for(var i=0; i>>3)>>3]>>>(7-(boff&7)))&1; + if(fo==2) bit = (data[boff>>>3]>>>( (boff&7)))&1; + boff++; wrd+=bit; + if(mode=="H") + { + if(U._lens[clr][wrd]!=null) + { + var dl=U._lens[clr][wrd]; wrd=""; len+=dl; + if(dl<64) { U._addNtimes(line,len,clr); a0+=len; clr=1-clr; len=0; toRead--; if(toRead==0) mode=""; } + } + } + else + { + if(wrd=="0001") { wrd=""; U._addNtimes(line,b2-a0,clr); a0=b2; } + if(wrd=="001" ) { wrd=""; mode="H"; toRead=2; } + if(U._dmap[wrd]!=null) { a1 = b1+U._dmap[wrd]; U._addNtimes(line, a1-a0, clr); a0=a1; wrd=""; clr=1-clr; } + } + if(line.length==w && mode=="") + { + U._writeBits(line, tgt, toff*8+y*bipl); + clr=0; y++; a0=0; + pline=U._makeDiff(line); line=[]; + } + //if(wrd.length>150) { log(wrd); break; throw "e"; } + } +} + +UTIF.decode._findDiff = function(line, x, clr) { for(var i=0; i=x && line[i+1]==clr) return line[i]; } + +UTIF.decode._makeDiff = function(line) +{ + var out = []; if(line[0]==1) out.push(0,1); + for(var i=1; i>>3)>>3]>>>(7-(boff&7)))&1; + if(fo==2) bit = (data[boff>>>3]>>>( (boff&7)))&1; + boff++; wrd+=bit; + + if(is1D) + { + if(U._lens[clr][wrd]!=null) + { + var dl=U._lens[clr][wrd]; wrd=""; len+=dl; + if(dl<64) { U._addNtimes(line,len,clr); clr=1-clr; len=0; } + } + } + else + { + if(mode=="H") + { + if(U._lens[clr][wrd]!=null) + { + var dl=U._lens[clr][wrd]; wrd=""; len+=dl; + if(dl<64) { U._addNtimes(line,len,clr); a0+=len; clr=1-clr; len=0; toRead--; if(toRead==0) mode=""; } + } + } + else + { + if(wrd=="0001") { wrd=""; U._addNtimes(line,b2-a0,clr); a0=b2; } + if(wrd=="001" ) { wrd=""; mode="H"; toRead=2; } + if(U._dmap[wrd]!=null) { a1 = b1+U._dmap[wrd]; U._addNtimes(line, a1-a0, clr); a0=a1; wrd=""; clr=1-clr; } + } + } + if(wrd.endsWith("000000000001")) // needed for some files + { + if(y>=0) U._writeBits(line, tgt, toff*8+y*bipl); + if(fo==1) is1D = ((data[boff>>>3]>>>(7-(boff&7)))&1)==1; + if(fo==2) is1D = ((data[boff>>>3]>>>( (boff&7)))&1)==1; + boff++; + if(U._decodeG3.allow2D==null) U._decodeG3.allow2D=is1D; + if(!U._decodeG3.allow2D) { is1D = true; boff--; } + //log("EOL",y, "next 1D:", is1D); + wrd=""; clr=0; y++; a0=0; + pline=U._makeDiff(line); line=[]; + } + } + if(line.length==w) U._writeBits(line, tgt, toff*8+y*bipl); +} + +UTIF.decode._addNtimes = function(arr, n, val) { for(var i=0; i>>3] |= (bits[i]<<(7-((boff+i)&7))); +} + +UTIF.decode._decodeLZW = function(data, off, tgt, toff) +{ + if(UTIF.decode._lzwTab==null) + { + var tb=new Uint32Array(0xffff), tn=new Uint16Array(0xffff), chr=new Uint8Array(2e6); + for(var i=0; i<256; i++) { chr[i<<2]=i; tb[i]=i<<2; tn[i]=1; } + UTIF.decode._lzwTab = [tb,tn,chr]; + } + var copy = UTIF.decode._copyData; + var tab = UTIF.decode._lzwTab[0], tln=UTIF.decode._lzwTab[1], chr=UTIF.decode._lzwTab[2], totl = 258, chrl = 258<<2; + var bits = 9, boff = off<<3; // offset in bits + + var ClearCode = 256, EoiCode = 257; + var v = 0, Code = 0, OldCode = 0; + while(true) + { + v = (data[boff>>>3]<<16) | (data[(boff+8)>>>3]<<8) | data[(boff+16)>>>3]; + Code = ( v>>(24-(boff&7)-bits) ) & ((1<>>3]<<16) | (data[(boff+8)>>>3]<<8) | data[(boff+16)>>>3]; + Code = ( v>>(24-(boff&7)-bits) ) & ((1<=totl) { tab[totl] = chrl; chr[tab[totl]] = cd[0]; tln[totl]=1; chrl=(chrl+1+3)&~0x03; totl++; } + else + { + tab[totl] = chrl; + var nit = tab[OldCode], nil = tln[OldCode]; + copy(chr,nit,chr,chrl,nil); + chr[chrl+nil]=chr[cd]; nil++; + tln[totl]=nil; totl++; + + chrl=(chrl+nil+3)&~0x03; + } + if(totl+1==(1<=totl) { tab[totl] = chrl; tln[totl]=0; totl++; } + else + { + tab[totl] = chrl; + var nit = tab[OldCode], nil = tln[OldCode]; + copy(chr,nit,chr,chrl,nil); + chr[chrl+nil]=chr[chrl]; nil++; + tln[totl]=nil; totl++; + + copy(chr,chrl,tgt,toff,nil); toff += nil; + chrl=(chrl+nil+3)&~0x03; + } + if(totl+1==(1<>>----------------"); + for(var i=0; i4) { bin.writeUint(data, offset, eoff); toff=eoff; } + + if(type==2) { bin.writeASCII(data, toff, val); } + if(type==3) { for(var i=0; i4) { dlen += (dlen&1); eoff += dlen; } + offset += 4; + } + return [offset, eoff]; +} + +UTIF.toRGBA8 = function(out) +{ + var w = out.width, h = out.height, area = w*h, qarea = area*4, data = out.data; + var img = new Uint8Array(area*4); + // 0: WhiteIsZero, 1: BlackIsZero, 2: RGB, 3: Palette color, 4: Transparency mask, 5: CMYK + var intp = out["t262"][0], bps = (out["t258"]?Math.min(32,out["t258"][0]):1), isLE = out.isLE ? 1 : 0; + //log("interpretation: ", intp, "bps", bps, out); + if(false) {} + else if(intp==0) + { + var bpl = Math.ceil(bps*w/8); + for(var y=0; y>3)])>>(7- (i&7)))& 1; img[qi]=img[qi+1]=img[qi+2]=( 1-px)*255; img[qi+3]=255; } + if(bps== 4) for(var i=0; i>1)])>>(4-4*(i&1)))&15; img[qi]=img[qi+1]=img[qi+2]=(15-px)* 17; img[qi+3]=255; } + if(bps== 8) for(var i=0; i>3)])>>(7- (i&7)))&1; img[qi]=img[qi+1]=img[qi+2]=(px)*255; img[qi+3]=255; } + if(bps== 2) for(var i=0; i>2)])>>(6-2*(i&3)))&3; img[qi]=img[qi+1]=img[qi+2]=(px)* 85; img[qi+3]=255; } + if(bps== 8) for(var i=0; i0) for(var i=0; i>8); img[qi+1]=(map[256+mi]>>8); img[qi+2]=(map[512+mi]>>8); img[qi+3]=255; } + } + else if(intp==5) + { + var smpls = out["t258"]?out["t258"].length : 4; + var gotAlpha = smpls>4 ? 1 : 0; + for(var i=0; i> 8)&255; buff[p+1] = n&255; }, + writeUint : function(buff, p, n) { buff[p] = (n>>24)&255; buff[p+1] = (n>>16)&255; buff[p+2] = (n>>8)&255; buff[p+3] = (n>>0)&255; }, + writeASCII : function(buff, p, s) { for(var i = 0; i < s.length; i++) buff[p+i] = s.charCodeAt(i); }, + writeDouble: function(buff, p, n) + { + UTIF._binBE.fl64[0] = n; + for (var i = 0; i < 8; i++) buff[p + i] = UTIF._binBE.ui8[7 - i]; + } +} +UTIF._binBE.ui8 = new Uint8Array (8); +UTIF._binBE.i16 = new Int16Array (UTIF._binBE.ui8.buffer); +UTIF._binBE.i32 = new Int32Array (UTIF._binBE.ui8.buffer); +UTIF._binBE.ui32 = new Uint32Array (UTIF._binBE.ui8.buffer); +UTIF._binBE.fl32 = new Float32Array(UTIF._binBE.ui8.buffer); +UTIF._binBE.fl64 = new Float64Array(UTIF._binBE.ui8.buffer); + +UTIF._binLE = +{ + nextZero : UTIF._binBE.nextZero, + readUshort : function(buff, p) { return (buff[p+1]<< 8) | buff[p]; }, + readShort : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+0]; a[1]=buff[p+1]; return UTIF._binBE. i16[0]; }, + readInt : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+0]; a[1]=buff[p+1]; a[2]=buff[p+2]; a[3]=buff[p+3]; return UTIF._binBE. i32[0]; }, + readUint : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+0]; a[1]=buff[p+1]; a[2]=buff[p+2]; a[3]=buff[p+3]; return UTIF._binBE.ui32[0]; }, + readASCII : UTIF._binBE.readASCII, + readFloat : function(buff, p) { var a=UTIF._binBE.ui8; for(var i=0;i<4;i++) a[i]=buff[p+ i]; return UTIF._binBE.fl32[0]; }, + readDouble : function(buff, p) { var a=UTIF._binBE.ui8; for(var i=0;i<8;i++) a[i]=buff[p+ i]; return UTIF._binBE.fl64[0]; } +} +UTIF._copyTile = function(tb, tw, th, b, w, h, xoff, yoff) +{ + //log("copyTile", tw, th, w, h, xoff, yoff); + var xlim = Math.min(tw, w-xoff); + var ylim = Math.min(th, h-yoff); + for(var y=0; y 0 ) { + timeoutTimer = setTimeout(function(){ + if (aborted) return + aborted = true//IE9 may still call readystatechange + xhr.abort("timeout") + var e = new Error("XMLHttpRequest timeout") + e.code = "ETIMEDOUT" + errorFunc(e) + }, options.timeout ) + } + + if (xhr.setRequestHeader) { + for(key in headers){ + if(headers.hasOwnProperty(key)){ + xhr.setRequestHeader(key, headers[key]) + } + } + } else if (options.headers && !isEmpty(options.headers)) { + throw new Error("Headers cannot be set on an XDomainRequest object") + } + + if ("responseType" in options) { + xhr.responseType = options.responseType + } + + if ("beforeSend" in options && + typeof options.beforeSend === "function" + ) { + options.beforeSend(xhr) + } + + // Microsoft Edge browser sends "undefined" when send is called with undefined value. + // XMLHttpRequest spec says to pass null as body to indicate no body + // See https://github.com/naugtur/xhr/issues/100. + xhr.send(body || null) + + return xhr + + +} + +function getXml(xhr) { + // xhr.responseXML will throw Exception "InvalidStateError" or "DOMException" + // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML. + try { + if (xhr.responseType === "document") { + return xhr.responseXML + } + var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === "parsererror" + if (xhr.responseType === "" && !firefoxBugTakenEffect) { + return xhr.responseXML + } + } catch (e) {} + + return null +} + +function noop() {} + +},{"global/window":71,"is-function":78,"parse-headers":106,"xtend":189}],188:[function(require,module,exports){ +module.exports = (function xmlparser() { + //common browsers + if (typeof self.DOMParser !== 'undefined') { + return function(str) { + var parser = new self.DOMParser() + return parser.parseFromString(str, 'application/xml') + } + } + + //IE8 fallback + if (typeof self.ActiveXObject !== 'undefined' + && new self.ActiveXObject('Microsoft.XMLDOM')) { + return function(str) { + var xmlDoc = new self.ActiveXObject("Microsoft.XMLDOM") + xmlDoc.async = "false" + xmlDoc.loadXML(str) + return xmlDoc + } + } + + //last resort fallback + return function(str) { + var div = document.createElement('div') + div.innerHTML = str + return div + } +})() + +},{}],189:[function(require,module,exports){ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend() { + var target = {} + + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} + +},{}],190:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.srcOver = srcOver; +exports.dstOver = dstOver; +exports.multiply = multiply; +exports.add = add; +exports.screen = screen; +exports.overlay = overlay; +exports.darken = darken; +exports.lighten = lighten; +exports.hardLight = hardLight; +exports.difference = difference; +exports.exclusion = exclusion; + +function srcOver(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var r = (src.r * src.a + dst.r * dst.a * (1 - src.a)) / a; + var g = (src.g * src.a + dst.g * dst.a * (1 - src.a)) / a; + var b = (src.b * src.a + dst.b * dst.a * (1 - src.a)) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function dstOver(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var r = (dst.r * dst.a + src.r * src.a * (1 - dst.a)) / a; + var g = (dst.g * dst.a + src.g * src.a * (1 - dst.a)) / a; + var b = (dst.b * dst.a + src.b * src.a * (1 - dst.a)) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function multiply(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (sra * dra + sra * (1 - dst.a) + dra * (1 - src.a)) / a; + var g = (sga * dga + sga * (1 - dst.a) + dga * (1 - src.a)) / a; + var b = (sba * dba + sba * (1 - dst.a) + dba * (1 - src.a)) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function add(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (sra + dra) / a; + var g = (sga + dga) / a; + var b = (sba + dba) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function screen(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (sra * dst.a + dra * src.a - sra * dra + sra * (1 - dst.a) + dra * (1 - src.a)) / a; + var g = (sga * dst.a + dga * src.a - sga * dga + sga * (1 - dst.a) + dga * (1 - src.a)) / a; + var b = (sba * dst.a + dba * src.a - sba * dba + sba * (1 - dst.a) + dba * (1 - src.a)) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function overlay(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (2 * dra <= dst.a ? 2 * sra * dra + sra * (1 - dst.a) + dra * (1 - src.a) : sra * (1 + dst.a) + dra * (1 + src.a) - 2 * dra * sra - dst.a * src.a) / a; + var g = (2 * dga <= dst.a ? 2 * sga * dga + sga * (1 - dst.a) + dga * (1 - src.a) : sga * (1 + dst.a) + dga * (1 + src.a) - 2 * dga * sga - dst.a * src.a) / a; + var b = (2 * dba <= dst.a ? 2 * sba * dba + sba * (1 - dst.a) + dba * (1 - src.a) : sba * (1 + dst.a) + dba * (1 + src.a) - 2 * dba * sba - dst.a * src.a) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function darken(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (Math.min(sra * dst.a, dra * src.a) + sra * (1 - dst.a) + dra * (1 - src.a)) / a; + var g = (Math.min(sga * dst.a, dga * src.a) + sga * (1 - dst.a) + dga * (1 - src.a)) / a; + var b = (Math.min(sba * dst.a, dba * src.a) + sba * (1 - dst.a) + dba * (1 - src.a)) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function lighten(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (Math.max(sra * dst.a, dra * src.a) + sra * (1 - dst.a) + dra * (1 - src.a)) / a; + var g = (Math.max(sga * dst.a, dga * src.a) + sga * (1 - dst.a) + dga * (1 - src.a)) / a; + var b = (Math.max(sba * dst.a, dba * src.a) + sba * (1 - dst.a) + dba * (1 - src.a)) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function hardLight(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (2 * sra <= src.a ? 2 * sra * dra + sra * (1 - dst.a) + dra * (1 - src.a) : sra * (1 + dst.a) + dra * (1 + src.a) - 2 * dra * sra - dst.a * src.a) / a; + var g = (2 * sga <= src.a ? 2 * sga * dga + sga * (1 - dst.a) + dga * (1 - src.a) : sga * (1 + dst.a) + dga * (1 + src.a) - 2 * dga * sga - dst.a * src.a) / a; + var b = (2 * sba <= src.a ? 2 * sba * dba + sba * (1 - dst.a) + dba * (1 - src.a) : sba * (1 + dst.a) + dba * (1 + src.a) - 2 * dba * sba - dst.a * src.a) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function difference(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (sra + dra - 2 * Math.min(sra * dst.a, dra * src.a)) / a; + var g = (sga + dga - 2 * Math.min(sga * dst.a, dga * src.a)) / a; + var b = (sba + dba - 2 * Math.min(sba * dst.a, dba * src.a)) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +function exclusion(src, dst) { + var ops = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + src.a *= ops; + var a = dst.a + src.a - dst.a * src.a; + var sra = src.r * src.a; + var sga = src.g * src.a; + var sba = src.b * src.a; + var dra = dst.r * dst.a; + var dga = dst.g * dst.a; + var dba = dst.b * dst.a; + var r = (sra * dst.a + dra * src.a - 2 * sra * dra + sra * (1 - dst.a) + dra * (1 - src.a)) / a; + var g = (sga * dst.a + dga * src.a - 2 * sga * dga + sga * (1 - dst.a) + dga * (1 - src.a)) / a; + var b = (sba * dst.a + dba * src.a - 2 * sba * dba + sba * (1 - dst.a) + dba * (1 - src.a)) / a; + return { + r: r, + g: g, + b: b, + a: a + }; +} + +},{}],191:[function(require,module,exports){ +"use strict"; + +var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = composite; + +var _utils = require("@jimp/utils"); + +var constants = _interopRequireWildcard(require("../constants")); + +var compositeModes = _interopRequireWildcard(require("./composite-modes")); + +/** + * Composites a source image over to this image respecting alpha channels + * @param {Jimp} src the source Jimp instance + * @param {number} x the x position to blit the image + * @param {number} y the y position to blit the image + * @param {object} options determine what mode to use + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +function composite(src, x, y) { + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var cb = arguments.length > 4 ? arguments[4] : undefined; + + if (typeof options === 'function') { + cb = options; + options = {}; + } + + if (!(src instanceof this.constructor)) { + return _utils.throwError.call(this, 'The source must be a Jimp image', cb); + } + + if (typeof x !== 'number' || typeof y !== 'number') { + return _utils.throwError.call(this, 'x and y must be numbers', cb); + } + + var _options = options, + mode = _options.mode, + opacitySource = _options.opacitySource, + opacityDest = _options.opacityDest; + + if (!mode) { + mode = constants.BLEND_SOURCE_OVER; + } + + if (typeof opacitySource !== 'number' || opacitySource < 0 || opacitySource > 1) { + opacitySource = 1.0; + } + + if (typeof opacityDest !== 'number' || opacityDest < 0 || opacityDest > 1) { + opacityDest = 1.0; + } + + var blendmode = compositeModes[mode]; // round input + + x = Math.round(x); + y = Math.round(y); + var baseImage = this; + + if (opacityDest !== 1.0) { + baseImage.opacity(opacityDest); + } + + src.scanQuiet(0, 0, src.bitmap.width, src.bitmap.height, function (sx, sy, idx) { + var dstIdx = baseImage.getPixelIndex(x + sx, y + sy, constants.EDGE_CROP); + var blended = blendmode({ + r: this.bitmap.data[idx + 0] / 255, + g: this.bitmap.data[idx + 1] / 255, + b: this.bitmap.data[idx + 2] / 255, + a: this.bitmap.data[idx + 3] / 255 + }, { + r: baseImage.bitmap.data[dstIdx + 0] / 255, + g: baseImage.bitmap.data[dstIdx + 1] / 255, + b: baseImage.bitmap.data[dstIdx + 2] / 255, + a: baseImage.bitmap.data[dstIdx + 3] / 255 + }, opacitySource); + baseImage.bitmap.data[dstIdx + 0] = this.constructor.limit255(blended.r * 255); + baseImage.bitmap.data[dstIdx + 1] = this.constructor.limit255(blended.g * 255); + baseImage.bitmap.data[dstIdx + 2] = this.constructor.limit255(blended.b * 255); + baseImage.bitmap.data[dstIdx + 3] = this.constructor.limit255(blended.a * 255); + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; +} + +module.exports = exports.default; + +},{"../constants":192,"./composite-modes":190,"@babel/runtime/helpers/interopRequireWildcard":12,"@jimp/utils":235}],192:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.EDGE_CROP = exports.EDGE_WRAP = exports.EDGE_EXTEND = exports.BLEND_EXCLUSION = exports.BLEND_DIFFERENCE = exports.BLEND_HARDLIGHT = exports.BLEND_LIGHTEN = exports.BLEND_DARKEN = exports.BLEND_OVERLAY = exports.BLEND_SCREEN = exports.BLEND_ADD = exports.BLEND_MULTIPLY = exports.BLEND_DESTINATION_OVER = exports.BLEND_SOURCE_OVER = exports.VERTICAL_ALIGN_BOTTOM = exports.VERTICAL_ALIGN_MIDDLE = exports.VERTICAL_ALIGN_TOP = exports.HORIZONTAL_ALIGN_RIGHT = exports.HORIZONTAL_ALIGN_CENTER = exports.HORIZONTAL_ALIGN_LEFT = exports.AUTO = void 0; +// used to auto resizing etc. +var AUTO = -1; // Align modes for cover, contain, bit masks + +exports.AUTO = AUTO; +var HORIZONTAL_ALIGN_LEFT = 1; +exports.HORIZONTAL_ALIGN_LEFT = HORIZONTAL_ALIGN_LEFT; +var HORIZONTAL_ALIGN_CENTER = 2; +exports.HORIZONTAL_ALIGN_CENTER = HORIZONTAL_ALIGN_CENTER; +var HORIZONTAL_ALIGN_RIGHT = 4; +exports.HORIZONTAL_ALIGN_RIGHT = HORIZONTAL_ALIGN_RIGHT; +var VERTICAL_ALIGN_TOP = 8; +exports.VERTICAL_ALIGN_TOP = VERTICAL_ALIGN_TOP; +var VERTICAL_ALIGN_MIDDLE = 16; +exports.VERTICAL_ALIGN_MIDDLE = VERTICAL_ALIGN_MIDDLE; +var VERTICAL_ALIGN_BOTTOM = 32; // blend modes + +exports.VERTICAL_ALIGN_BOTTOM = VERTICAL_ALIGN_BOTTOM; +var BLEND_SOURCE_OVER = 'srcOver'; +exports.BLEND_SOURCE_OVER = BLEND_SOURCE_OVER; +var BLEND_DESTINATION_OVER = 'dstOver'; +exports.BLEND_DESTINATION_OVER = BLEND_DESTINATION_OVER; +var BLEND_MULTIPLY = 'multiply'; +exports.BLEND_MULTIPLY = BLEND_MULTIPLY; +var BLEND_ADD = 'add'; +exports.BLEND_ADD = BLEND_ADD; +var BLEND_SCREEN = 'screen'; +exports.BLEND_SCREEN = BLEND_SCREEN; +var BLEND_OVERLAY = 'overlay'; +exports.BLEND_OVERLAY = BLEND_OVERLAY; +var BLEND_DARKEN = 'darken'; +exports.BLEND_DARKEN = BLEND_DARKEN; +var BLEND_LIGHTEN = 'lighten'; +exports.BLEND_LIGHTEN = BLEND_LIGHTEN; +var BLEND_HARDLIGHT = 'hardLight'; +exports.BLEND_HARDLIGHT = BLEND_HARDLIGHT; +var BLEND_DIFFERENCE = 'difference'; +exports.BLEND_DIFFERENCE = BLEND_DIFFERENCE; +var BLEND_EXCLUSION = 'exclusion'; // Edge Handling + +exports.BLEND_EXCLUSION = BLEND_EXCLUSION; +var EDGE_EXTEND = 1; +exports.EDGE_EXTEND = EDGE_EXTEND; +var EDGE_WRAP = 2; +exports.EDGE_WRAP = EDGE_WRAP; +var EDGE_CROP = 3; +exports.EDGE_CROP = EDGE_CROP; + +},{}],193:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.addConstants = addConstants; +exports.addJimpMethods = addJimpMethods; +exports.jimpEvMethod = jimpEvMethod; +exports.jimpEvChange = jimpEvChange; +Object.defineProperty(exports, "addType", { + enumerable: true, + get: function get() { + return MIME.addType; + } +}); +exports["default"] = void 0; + +var _construct2 = _interopRequireDefault(require("@babel/runtime/helpers/construct")); + +var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); + +var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); + +var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); + +var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); + +var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); + +var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); + +var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); + +var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); + +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); + +var _fs = _interopRequireDefault(require("fs")); + +var _path = _interopRequireDefault(require("path")); + +var _events = _interopRequireDefault(require("events")); + +var _utils = require("@jimp/utils"); + +var _anyBase = _interopRequireDefault(require("any-base")); + +var _mkdirp = _interopRequireDefault(require("mkdirp")); + +var _pixelmatch = _interopRequireDefault(require("pixelmatch")); + +var _tinycolor = _interopRequireDefault(require("tinycolor2")); + +var _phash = _interopRequireDefault(require("./modules/phash")); + +var _request = _interopRequireDefault(require("./request")); + +var _composite = _interopRequireDefault(require("./composite")); + +var _promisify = _interopRequireDefault(require("./utils/promisify")); + +var MIME = _interopRequireWildcard(require("./utils/mime")); + +var _imageBitmap = require("./utils/image-bitmap"); + +var constants = _interopRequireWildcard(require("./constants")); + +var alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'; // an array storing the maximum string length of hashes at various bases +// 0 and 1 do not exist as possible hash lengths + +var maxHashLength = [NaN, NaN]; + +for (var i = 2; i < 65; i++) { + var maxHash = (0, _anyBase["default"])(_anyBase["default"].BIN, alphabet.slice(0, i))(new Array(64 + 1).join('1')); + maxHashLength.push(maxHash.length); +} // no operation + + +function noop() {} // error checking methods + + +function isArrayBuffer(test) { + return Object.prototype.toString.call(test).toLowerCase().indexOf('arraybuffer') > -1; +} // Prepare a Buffer object from the arrayBuffer. Necessary in the browser > node conversion, +// But this function is not useful when running in node directly + + +function bufferFromArrayBuffer(arrayBuffer) { + var buffer = Buffer.alloc(arrayBuffer.byteLength); + var view = new Uint8Array(arrayBuffer); + + for (var _i = 0; _i < buffer.length; ++_i) { + buffer[_i] = view[_i]; + } + + return buffer; +} + +function loadFromURL(options, cb) { + (0, _request["default"])(options, function (err, response, data) { + if (err) { + return cb(err); + } + + if ('headers' in response && 'location' in response.headers) { + options.url = response.headers.location; + return loadFromURL(options, cb); + } + + if ((0, _typeof2["default"])(data) === 'object' && Buffer.isBuffer(data)) { + return cb(null, data); + } + + var msg = 'Could not load Buffer from <' + options.url + '> ' + '(HTTP: ' + response.statusCode + ')'; + return new Error(msg); + }); +} + +function loadBufferFromPath(src, cb) { + if (_fs["default"] && typeof _fs["default"].readFile === 'function' && !src.match(/^(http|ftp)s?:\/\/./)) { + _fs["default"].readFile(src, cb); + } else { + loadFromURL({ + url: src + }, cb); + } +} + +function isRawRGBAData(obj) { + return obj && (0, _typeof2["default"])(obj) === 'object' && typeof obj.width === 'number' && typeof obj.height === 'number' && (Buffer.isBuffer(obj.data) || obj.data instanceof Uint8Array || typeof Uint8ClampedArray === 'function' && obj.data instanceof Uint8ClampedArray) && (obj.data.length === obj.width * obj.height * 4 || obj.data.length === obj.width * obj.height * 3); +} + +function makeRGBABufferFromRGB(buffer) { + if (buffer.length % 3 !== 0) { + throw new Error('Buffer length is incorrect'); + } + + var rgbaBuffer = Buffer.allocUnsafe(buffer.length / 3 * 4); + var j = 0; + + for (var _i2 = 0; _i2 < buffer.length; _i2++) { + rgbaBuffer[j] = buffer[_i2]; + + if ((_i2 + 1) % 3 === 0) { + rgbaBuffer[++j] = 255; + } + + j++; + } + + return rgbaBuffer; +} + +var emptyBitmap = { + data: null, + width: null, + height: null +}; +/** + * Jimp constructor (from a file) + * @param path a path to the image + * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap + */ + +/** + * Jimp constructor (from a url with options) + * @param options { url, otherOptions} + * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap + */ + +/** + * Jimp constructor (from another Jimp image or raw image data) + * @param image a Jimp image to clone + * @param {function(Error, Jimp)} cb a function to call when the image is parsed to a bitmap + */ + +/** + * Jimp constructor (from a Buffer) + * @param data a Buffer containing the image data + * @param {function(Error, Jimp)} cb a function to call when the image is parsed to a bitmap + */ + +/** + * Jimp constructor (to generate a new image) + * @param w the width of the image + * @param h the height of the image + * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap + */ + +/** + * Jimp constructor (to generate a new image) + * @param w the width of the image + * @param h the height of the image + * @param background color to fill the image with + * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap + */ + +var Jimp = +/*#__PURE__*/ +function (_EventEmitter) { + (0, _inherits2["default"])(Jimp, _EventEmitter); + + // An object representing a bitmap in memory, comprising: + // - data: a buffer of the bitmap data + // - width: the width of the image in pixels + // - height: the height of the image in pixels + // Default colour to use for new pixels + // Default MIME is PNG + // Exif data for the image + // Whether Transparency supporting formats will be exported as RGB or RGBA + function Jimp() { + var _this; + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + (0, _classCallCheck2["default"])(this, Jimp); + _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(Jimp).call(this)); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bitmap", emptyBitmap); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_background", 0x00000000); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_originalMime", Jimp.MIME_PNG); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_exif", null); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_rgba", true); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "writeAsync", function (path) { + return (0, _promisify["default"])(_this.write, (0, _assertThisInitialized2["default"])(_this), path); + }); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getBase64Async", function (mime) { + return (0, _promisify["default"])(_this.getBase64, (0, _assertThisInitialized2["default"])(_this), mime); + }); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getBuffer", _imageBitmap.getBuffer); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getBufferAsync", _imageBitmap.getBufferAsync); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getPixelColour", _this.getPixelColor); + (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setPixelColour", _this.setPixelColor); + var jimpInstance = (0, _assertThisInitialized2["default"])(_this); + var cb = noop; + + if (isArrayBuffer(args[0])) { + args[0] = bufferFromArrayBuffer(args[0]); + } + + function finish() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + var err = args[0]; + var evData = err || {}; + evData.methodName = 'constructor'; + setTimeout(function () { + var _cb; + + // run on next tick. + if (err && cb === noop) { + jimpInstance.emitError('constructor', err); + } else if (!err) { + jimpInstance.emitMulti('constructor', 'initialized'); + } + + (_cb = cb).call.apply(_cb, [jimpInstance].concat(args)); + }, 1); + } + + if (typeof args[0] === 'number' && typeof args[1] === 'number' || parseInt(args[0], 10) && parseInt(args[1], 10)) { + // create a new image + var w = parseInt(args[0], 10); + var h = parseInt(args[1], 10); + cb = args[2]; // with a hex color + + if (typeof args[2] === 'number') { + _this._background = args[2]; + cb = args[3]; + } // with a css color + + + if (typeof args[2] === 'string') { + _this._background = Jimp.cssColorToHex(args[2]); + cb = args[3]; + } + + if (typeof cb === 'undefined') { + cb = noop; + } + + if (typeof cb !== 'function') { + return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), 'cb must be a function', finish)); + } + + _this.bitmap = { + data: Buffer.alloc(w * h * 4), + width: w, + height: h + }; + + for (var _i3 = 0; _i3 < _this.bitmap.data.length; _i3 += 4) { + _this.bitmap.data.writeUInt32BE(_this._background, _i3); + } + + finish(null, (0, _assertThisInitialized2["default"])(_this)); + } else if ((0, _typeof2["default"])(args[0]) === 'object' && args[0].url) { + cb = args[1] || noop; + + if (typeof cb !== 'function') { + return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), 'cb must be a function', finish)); + } + + loadFromURL(args[0], function (err, data) { + if (err) { + return _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), err, finish); + } + + _this.parseBitmap(data, args[0].url, finish); + }); + } else if (args[0] instanceof Jimp) { + // clone an existing Jimp + var original = args[0]; + cb = args[1]; + + if (typeof cb === 'undefined') { + cb = noop; + } + + if (typeof cb !== 'function') { + return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), 'cb must be a function', finish)); + } + + _this.bitmap = { + data: Buffer.from(original.bitmap.data), + width: original.bitmap.width, + height: original.bitmap.height + }; + _this._quality = original._quality; + _this._deflateLevel = original._deflateLevel; + _this._deflateStrategy = original._deflateStrategy; + _this._filterType = original._filterType; + _this._rgba = original._rgba; + _this._background = original._background; + _this._originalMime = original._originalMime; + finish(null, (0, _assertThisInitialized2["default"])(_this)); + } else if (isRawRGBAData(args[0])) { + var imageData = args[0]; + cb = args[1] || noop; + var isRGBA = imageData.width * imageData.height * 4 === imageData.data.length; + var buffer = isRGBA ? Buffer.from(imageData.data) : makeRGBABufferFromRGB(imageData.data); + _this.bitmap = { + data: buffer, + width: imageData.width, + height: imageData.height + }; + finish(null, (0, _assertThisInitialized2["default"])(_this)); + } else if (typeof args[0] === 'string') { + // read from a path + var path = args[0]; + cb = args[1]; + + if (typeof cb === 'undefined') { + cb = noop; + } + + if (typeof cb !== 'function') { + return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), 'cb must be a function', finish)); + } + + loadBufferFromPath(path, function (err, data) { + if (err) { + return _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), err, finish); + } + + _this.parseBitmap(data, path, finish); + }); + } else if ((0, _typeof2["default"])(args[0]) === 'object' && Buffer.isBuffer(args[0])) { + // read from a buffer + var data = args[0]; + cb = args[1]; + + if (typeof cb !== 'function') { + return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), 'cb must be a function', finish)); + } + + _this.parseBitmap(data, null, finish); + } else { + // Allow client libs to add new ways to build a Jimp object. + // Extra constructors must be added by `Jimp.appendConstructorOption()` + cb = args[args.length - 1]; + + if (typeof cb !== 'function') { + // TODO: try to solve the args after cb problem. + cb = args[args.length - 2]; + + if (typeof cb !== 'function') { + cb = noop; + } + } + + var extraConstructor = Jimp.__extraConstructors.find(function (c) { + return c.test.apply(c, args); + }); + + if (extraConstructor) { + new Promise(function (resolve, reject) { + var _extraConstructor$run; + + return (_extraConstructor$run = extraConstructor.run).call.apply(_extraConstructor$run, [(0, _assertThisInitialized2["default"])(_this), resolve, reject].concat(args)); + }).then(function () { + return finish(null, (0, _assertThisInitialized2["default"])(_this)); + })["catch"](finish); + } else { + return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), 'No matching constructor overloading was found. ' + 'Please see the docs for how to call the Jimp constructor.', finish)); + } + } + + return _this; + } + /** + * Parse a bitmap with the loaded image types. + * + * @param {Buffer} data raw image data + * @param {string} path optional path to file + * @param {function(Error, Jimp)} finish (optional) a callback for when complete + * @memberof Jimp + */ + + + (0, _createClass2["default"])(Jimp, [{ + key: "parseBitmap", + value: function parseBitmap(data, path, finish) { + _imageBitmap.parseBitmap.call(this, data, null, finish); + } + /** + * Sets the type of the image (RGB or RGBA) when saving in a format that supports transparency (default is RGBA) + * @param {boolean} bool A Boolean, true to use RGBA or false to use RGB + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + + }, { + key: "rgba", + value: function rgba(bool, cb) { + if (typeof bool !== 'boolean') { + return _utils.throwError.call(this, 'bool must be a boolean, true for RGBA or false for RGB', cb); + } + + this._rgba = bool; + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + /** + * Emit for multiple listeners + * @param {string} methodName name of the method to emit an error for + * @param {string} eventName name of the eventName to emit an error for + * @param {object} data to emit + */ + + }, { + key: "emitMulti", + value: function emitMulti(methodName, eventName) { + var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + data = Object.assign(data, { + methodName: methodName, + eventName: eventName + }); + this.emit('any', data); + + if (methodName) { + this.emit(methodName, data); + } + + this.emit(eventName, data); + } + }, { + key: "emitError", + value: function emitError(methodName, err) { + this.emitMulti(methodName, 'error', err); + } + /** + * Get the current height of the image + * @return {number} height of the image + */ + + }, { + key: "getHeight", + value: function getHeight() { + return this.bitmap.height; + } + /** + * Get the current width of the image + * @return {number} width of the image + */ + + }, { + key: "getWidth", + value: function getWidth() { + return this.bitmap.width; + } + /** + * Nicely format Jimp object when sent to the console e.g. console.log(image) + * @returns {string} pretty printed + */ + + }, { + key: "inspect", + value: function inspect() { + return ''; + } + /** + * Nicely format Jimp object when converted to a string + * @returns {string} pretty printed + */ + + }, { + key: "toString", + value: function toString() { + return '[object Jimp]'; + } + /** + * Returns the original MIME of the image (default: "image/png") + * @returns {string} the MIME + */ + + }, { + key: "getMIME", + value: function getMIME() { + var mime = this._originalMime || Jimp.MIME_PNG; + return mime; + } + /** + * Returns the appropriate file extension for the original MIME of the image (default: "png") + * @returns {string} the file extension + */ + + }, { + key: "getExtension", + value: function getExtension() { + var mime = this.getMIME(); + return MIME.getExtension(mime); + } + /** + * Writes the image to a file + * @param {string} path a path to the destination file + * @param {function(Error, Jimp)} cb (optional) a function to call when the image is saved to disk + * @returns {Jimp} this for chaining of methods + */ + + }, { + key: "write", + value: function write(path, cb) { + var _this2 = this; + + if (!_fs["default"] || !_fs["default"].createWriteStream) { + throw new Error('Cant access the filesystem. You can use the getBase64 method.'); + } + + if (typeof path !== 'string') { + return _utils.throwError.call(this, 'path must be a string', cb); + } + + if (typeof cb === 'undefined') { + cb = noop; + } + + if (typeof cb !== 'function') { + return _utils.throwError.call(this, 'cb must be a function', cb); + } + + var mime = MIME.getType(path) || this.getMIME(); + + var pathObj = _path["default"].parse(path); + + if (pathObj.dir) { + _mkdirp["default"].sync(pathObj.dir); + } + + this.getBuffer(mime, function (err, buffer) { + if (err) { + return _utils.throwError.call(_this2, err, cb); + } + + var stream = _fs["default"].createWriteStream(path); + + stream.on('open', function () { + stream.write(buffer); + stream.end(); + }).on('error', function (err) { + return _utils.throwError.call(_this2, err, cb); + }); + stream.on('finish', function () { + cb.call(_this2, null, _this2); + }); + }); + return this; + } + }, { + key: "getBase64", + + /** + * Converts the image to a base 64 string + * @param {string} mime the mime type of the image data to be created + * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument + * @returns {Jimp} this for chaining of methods + */ + value: function getBase64(mime, cb) { + if (mime === Jimp.AUTO) { + // allow auto MIME detection + mime = this.getMIME(); + } + + if (typeof mime !== 'string') { + return _utils.throwError.call(this, 'mime must be a string', cb); + } + + if (typeof cb !== 'function') { + return _utils.throwError.call(this, 'cb must be a function', cb); + } + + this.getBuffer(mime, function (err, data) { + if (err) { + return _utils.throwError.call(this, err, cb); + } + + var src = 'data:' + mime + ';base64,' + data.toString('base64'); + cb.call(this, null, src); + }); + return this; + } + }, { + key: "hash", + + /** + * Generates a perceptual hash of the image . And pads the string. Can configure base. + * @param {number} base (optional) a number between 2 and 64 representing the base for the hash (e.g. 2 is binary, 10 is decimal, 16 is hex, 64 is base 64). Defaults to 64. + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {string} a string representing the hash + */ + value: function hash(base, cb) { + base = base || 64; + + if (typeof base === 'function') { + cb = base; + base = 64; + } + + if (typeof base !== 'number') { + return _utils.throwError.call(this, 'base must be a number', cb); + } + + if (base < 2 || base > 64) { + return _utils.throwError.call(this, 'base must be a number between 2 and 64', cb); + } + + var hash = this.pHash(); + hash = (0, _anyBase["default"])(_anyBase["default"].BIN, alphabet.slice(0, base))(hash); + + while (hash.length < maxHashLength[base]) { + hash = '0' + hash; // pad out with leading zeros + } + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, hash); + } + + return hash; + } + /** + * Calculates the perceptual hash + * @returns {number} the perceptual hash + */ + + }, { + key: "pHash", + value: function pHash() { + var pHash = new _phash["default"](); + return pHash.getHash(this); + } + /** + * Calculates the hamming distance of the current image and a hash based on their perceptual hash + * @param {hash} compareHash hash to compare to + * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical + */ + + }, { + key: "distanceFromHash", + value: function distanceFromHash(compareHash) { + var pHash = new _phash["default"](); + var currentHash = pHash.getHash(this); + return pHash.distance(currentHash, compareHash); + } + /** + * Converts the image to a buffer + * @param {string} mime the mime type of the image buffer to be created + * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument + * @returns {Jimp} this for chaining of methods + */ + + }, { + key: "getPixelIndex", + + /** + * Returns the offset of a pixel in the bitmap buffer + * @param {number} x the x coordinate + * @param {number} y the y coordinate + * @param {string} edgeHandling (optional) define how to sum pixels from outside the border + * @param {number} cb (optional) a callback for when complete + * @returns {number} the index of the pixel or -1 if not found + */ + value: function getPixelIndex(x, y, edgeHandling, cb) { + var xi; + var yi; + + if (typeof edgeHandling === 'function' && typeof cb === 'undefined') { + cb = edgeHandling; + edgeHandling = null; + } + + if (!edgeHandling) { + edgeHandling = Jimp.EDGE_EXTEND; + } + + if (typeof x !== 'number' || typeof y !== 'number') { + return _utils.throwError.call(this, 'x and y must be numbers', cb); + } // round input + + + x = Math.round(x); + y = Math.round(y); + xi = x; + yi = y; + + if (edgeHandling === Jimp.EDGE_EXTEND) { + if (x < 0) xi = 0; + if (x >= this.bitmap.width) xi = this.bitmap.width - 1; + if (y < 0) yi = 0; + if (y >= this.bitmap.height) yi = this.bitmap.height - 1; + } + + if (edgeHandling === Jimp.EDGE_WRAP) { + if (x < 0) { + xi = this.bitmap.width + x; + } + + if (x >= this.bitmap.width) { + xi = x % this.bitmap.width; + } + + if (y < 0) { + xi = this.bitmap.height + y; + } + + if (y >= this.bitmap.height) { + yi = y % this.bitmap.height; + } + } + + var i = this.bitmap.width * yi + xi << 2; // if out of bounds index is -1 + + if (xi < 0 || xi >= this.bitmap.width) { + i = -1; + } + + if (yi < 0 || yi >= this.bitmap.height) { + i = -1; + } + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, i); + } + + return i; + } + /** + * Returns the hex colour value of a pixel + * @param {number} x the x coordinate + * @param {number} y the y coordinate + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {number} the color of the pixel + */ + + }, { + key: "getPixelColor", + value: function getPixelColor(x, y, cb) { + if (typeof x !== 'number' || typeof y !== 'number') return _utils.throwError.call(this, 'x and y must be numbers', cb); // round input + + x = Math.round(x); + y = Math.round(y); + var idx = this.getPixelIndex(x, y); + var hex = this.bitmap.data.readUInt32BE(idx); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, hex); + } + + return hex; + } + }, { + key: "setPixelColor", + + /** + * Returns the hex colour value of a pixel + * @param {number} hex color to set + * @param {number} x the x coordinate + * @param {number} y the y coordinate + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {number} the index of the pixel or -1 if not found + */ + value: function setPixelColor(hex, x, y, cb) { + if (typeof hex !== 'number' || typeof x !== 'number' || typeof y !== 'number') return _utils.throwError.call(this, 'hex, x and y must be numbers', cb); // round input + + x = Math.round(x); + y = Math.round(y); + var idx = this.getPixelIndex(x, y); + this.bitmap.data.writeUInt32BE(hex, idx); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }, { + key: "hasAlpha", + + /** + * Determine if the image contains opaque pixels. + * @return {boolean} hasAlpha whether the image contains opaque pixels + */ + value: function hasAlpha() { + for (var yIndex = 0; yIndex < this.bitmap.height; yIndex++) { + for (var xIndex = 0; xIndex < this.bitmap.width; xIndex++) { + var idx = this.bitmap.width * yIndex + xIndex << 2; + var alpha = this.bitmap.data[idx + 3]; + + if (alpha !== 0xff) { + return true; + } + } + } + + return false; + } + /** + * Iterate scan through a region of the bitmap + * @param {number} x the x coordinate to begin the scan at + * @param {number} y the y coordinate to begin the scan at + * @param w the width of the scan region + * @param h the height of the scan region + * @returns {IterableIterator<{x: number, y: number, idx: number, image: Jimp}>} + */ + + }, { + key: "scanIterator", + value: function scanIterator(x, y, w, h) { + if (typeof x !== 'number' || typeof y !== 'number') { + return _utils.throwError.call(this, 'x and y must be numbers'); + } + + if (typeof w !== 'number' || typeof h !== 'number') { + return _utils.throwError.call(this, 'w and h must be numbers'); + } + + return (0, _utils.scanIterator)(this, x, y, w, h); + } + }]); + return Jimp; +}(_events["default"]); + +function addConstants(constants) { + var jimpInstance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Jimp; + Object.entries(constants).forEach(function (_ref) { + var _ref2 = (0, _slicedToArray2["default"])(_ref, 2), + name = _ref2[0], + value = _ref2[1]; + + jimpInstance[name] = value; + }); +} + +function addJimpMethods(methods) { + var jimpInstance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Jimp; + Object.entries(methods).forEach(function (_ref3) { + var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2), + name = _ref4[0], + value = _ref4[1]; + + jimpInstance.prototype[name] = value; + }); +} + +addConstants(constants); +addJimpMethods({ + composite: _composite["default"] +}); +Jimp.__extraConstructors = []; +/** + * Allow client libs to add new ways to build a Jimp object. + * @param {string} name identify the extra constructor. + * @param {function} test a function that returns true when it accepts the arguments passed to the main constructor. + * @param {function} run where the magic happens. + */ + +Jimp.appendConstructorOption = function (name, test, run) { + Jimp.__extraConstructors.push({ + name: name, + test: test, + run: run + }); +}; +/** + * Read an image from a file or a Buffer. Takes the same args as the constructor + * @returns {Promise} a promise + */ + + +Jimp.read = function () { + for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + args[_key3] = arguments[_key3]; + } + + return new Promise(function (resolve, reject) { + (0, _construct2["default"])(Jimp, args.concat([function (err, image) { + if (err) reject(err);else resolve(image); + }])); + }); +}; + +Jimp.create = Jimp.read; +/** + * A static helper method that converts RGBA values to a single integer value + * @param {number} r the red value (0-255) + * @param {number} g the green value (0-255) + * @param {number} b the blue value (0-255) + * @param {number} a the alpha value (0-255) + * @param {function(Error, Jimp)} cb (optional) A callback for when complete + * @returns {number} an single integer colour value + */ + +Jimp.rgbaToInt = function (r, g, b, a, cb) { + if (typeof r !== 'number' || typeof g !== 'number' || typeof b !== 'number' || typeof a !== 'number') { + return _utils.throwError.call(this, 'r, g, b and a must be numbers', cb); + } + + if (r < 0 || r > 255) { + return _utils.throwError.call(this, 'r must be between 0 and 255', cb); + } + + if (g < 0 || g > 255) { + _utils.throwError.call(this, 'g must be between 0 and 255', cb); + } + + if (b < 0 || b > 255) { + return _utils.throwError.call(this, 'b must be between 0 and 255', cb); + } + + if (a < 0 || a > 255) { + return _utils.throwError.call(this, 'a must be between 0 and 255', cb); + } + + r = Math.round(r); + b = Math.round(b); + g = Math.round(g); + a = Math.round(a); + var i = r * Math.pow(256, 3) + g * Math.pow(256, 2) + b * Math.pow(256, 1) + a * Math.pow(256, 0); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, i); + } + + return i; +}; +/** + * A static helper method that converts RGBA values to a single integer value + * @param {number} i a single integer value representing an RGBA colour (e.g. 0xFF0000FF for red) + * @param {function(Error, Jimp)} cb (optional) A callback for when complete + * @returns {object} an object with the properties r, g, b and a representing RGBA values + */ + + +Jimp.intToRGBA = function (i, cb) { + if (typeof i !== 'number') { + return _utils.throwError.call(this, 'i must be a number', cb); + } + + var rgba = {}; + rgba.r = Math.floor(i / Math.pow(256, 3)); + rgba.g = Math.floor((i - rgba.r * Math.pow(256, 3)) / Math.pow(256, 2)); + rgba.b = Math.floor((i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2)) / Math.pow(256, 1)); + rgba.a = Math.floor((i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2) - rgba.b * Math.pow(256, 1)) / Math.pow(256, 0)); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, rgba); + } + + return rgba; +}; +/** + * Converts a css color (Hex, 8-digit (RGBA) Hex, RGB, RGBA, HSL, HSLA, HSV, HSVA, Named) to a hex number + * @param {string} cssColor a number + * @returns {number} a hex number representing a color + */ + + +Jimp.cssColorToHex = function (cssColor) { + cssColor = cssColor || 0; // 0, null, undefined, NaN + + if (typeof cssColor === 'number') return Number(cssColor); + return parseInt((0, _tinycolor["default"])(cssColor).toHex8(), 16); +}; +/** + * Limits a number to between 0 or 255 + * @param {number} n a number + * @returns {number} the number limited to between 0 or 255 + */ + + +Jimp.limit255 = function (n) { + n = Math.max(n, 0); + n = Math.min(n, 255); + return n; +}; +/** + * Diffs two images and returns + * @param {Jimp} img1 a Jimp image to compare + * @param {Jimp} img2 a Jimp image to compare + * @param {number} threshold (optional) a number, 0 to 1, the smaller the value the more sensitive the comparison (default: 0.1) + * @returns {object} an object { percent: percent similar, diff: a Jimp image highlighting differences } + */ + + +Jimp.diff = function (img1, img2) { + var threshold = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.1; + if (!(img1 instanceof Jimp) || !(img2 instanceof Jimp)) return _utils.throwError.call(this, 'img1 and img2 must be an Jimp images'); + var bmp1 = img1.bitmap; + var bmp2 = img2.bitmap; + + if (bmp1.width !== bmp2.width || bmp1.height !== bmp2.height) { + if (bmp1.width * bmp1.height > bmp2.width * bmp2.height) { + // img1 is bigger + img1 = img1.cloneQuiet().resize(bmp2.width, bmp2.height); + } else { + // img2 is bigger (or they are the same in area) + img2 = img2.cloneQuiet().resize(bmp1.width, bmp1.height); + } + } + + if (typeof threshold !== 'number' || threshold < 0 || threshold > 1) { + return _utils.throwError.call(this, 'threshold must be a number between 0 and 1'); + } + + var diff = new Jimp(bmp1.width, bmp1.height, 0xffffffff); + var numDiffPixels = (0, _pixelmatch["default"])(bmp1.data, bmp2.data, diff.bitmap.data, diff.bitmap.width, diff.bitmap.height, { + threshold: threshold + }); + return { + percent: numDiffPixels / (diff.bitmap.width * diff.bitmap.height), + image: diff + }; +}; +/** + * Calculates the hamming distance of two images based on their perceptual hash + * @param {Jimp} img1 a Jimp image to compare + * @param {Jimp} img2 a Jimp image to compare + * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical + */ + + +Jimp.distance = function (img1, img2) { + var phash = new _phash["default"](); + var hash1 = phash.getHash(img1); + var hash2 = phash.getHash(img2); + return phash.distance(hash1, hash2); +}; +/** + * Calculates the hamming distance of two images based on their perceptual hash + * @param {hash} hash1 a pHash + * @param {hash} hash2 a pHash + * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical + */ + + +Jimp.compareHashes = function (hash1, hash2) { + var phash = new _phash["default"](); + return phash.distance(hash1, hash2); +}; +/** + * Compute color difference + * 0 means no difference, 1 means maximum difference. + * @param {number} rgba1: first color to compare. + * @param {number} rgba2: second color to compare. + * Both parameters must be an color object {r:val, g:val, b:val, a:val} + * Where `a` is optional and `val` is an integer between 0 and 255. + * @returns {number} float between 0 and 1. + */ + + +Jimp.colorDiff = function (rgba1, rgba2) { + var pow = function pow(n) { + return Math.pow(n, 2); + }; + + var max = Math.max; + var maxVal = 255 * 255 * 3; + + if (rgba1.a !== 0 && !rgba1.a) { + rgba1.a = 255; + } + + if (rgba2.a !== 0 && !rgba2.a) { + rgba2.a = 255; + } + + return (max(pow(rgba1.r - rgba2.r), pow(rgba1.r - rgba2.r - rgba1.a + rgba2.a)) + max(pow(rgba1.g - rgba2.g), pow(rgba1.g - rgba2.g - rgba1.a + rgba2.a)) + max(pow(rgba1.b - rgba2.b), pow(rgba1.b - rgba2.b - rgba1.a + rgba2.a))) / maxVal; +}; +/** + * Helper to create Jimp methods that emit events before and after its execution. + * @param {string} methodName The name to be appended to Jimp prototype. + * @param {string} evName The event name to be called. + * It will be prefixed by `before-` and emitted when on method call. + * It will be appended by `ed` and emitted after the method run. + * @param {function} method A function implementing the method itself. + * It will also create a quiet version that will not emit events, to not + * mess the user code with many `changed` event calls. You can call with + * `methodName + "Quiet"`. + * + * The emitted event comes with a object parameter to the listener with the + * `methodName` as one attribute. + */ + + +function jimpEvMethod(methodName, evName, method) { + var evNameBefore = 'before-' + evName; + var evNameAfter = evName.replace(/e$/, '') + 'ed'; + + Jimp.prototype[methodName] = function () { + var wrappedCb; + + for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + args[_key4] = arguments[_key4]; + } + + var cb = args[method.length - 1]; + var jimpInstance = this; + + if (typeof cb === 'function') { + wrappedCb = function wrappedCb() { + for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + args[_key5] = arguments[_key5]; + } + + var err = args[0], + data = args[1]; + + if (err) { + jimpInstance.emitError(methodName, err); + } else { + jimpInstance.emitMulti(methodName, evNameAfter, (0, _defineProperty2["default"])({}, methodName, data)); + } + + cb.apply(this, args); + }; + + args[args.length - 1] = wrappedCb; + } else { + wrappedCb = false; + } + + this.emitMulti(methodName, evNameBefore); + var result; + + try { + result = method.apply(this, args); + + if (!wrappedCb) { + this.emitMulti(methodName, evNameAfter, (0, _defineProperty2["default"])({}, methodName, result)); + } + } catch (error) { + error.methodName = methodName; + this.emitError(methodName, error); + } + + return result; + }; + + Jimp.prototype[methodName + 'Quiet'] = method; +} +/** + * Creates a new image that is a clone of this one. + * @param {function(Error, Jimp)} cb (optional) A callback for when complete + * @returns the new image + */ + + +jimpEvMethod('clone', 'clone', function (cb) { + var clone = new Jimp(this); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(clone, null, clone); + } + + return clone; +}); +/** + * Simplify jimpEvMethod call for the common `change` evName. + * @param {string} methodName name of the method + * @param {function} method to watch changes for + */ + +function jimpEvChange(methodName, method) { + jimpEvMethod(methodName, 'change', method); +} +/** + * Sets the type of the image (RGB or RGBA) when saving as PNG format (default is RGBA) + * @param b A Boolean, true to use RGBA or false to use RGB + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + + +jimpEvChange('background', function (hex, cb) { + if (typeof hex !== 'number') { + return _utils.throwError.call(this, 'hex must be a hexadecimal rgba value', cb); + } + + this._background = hex; + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; +}); +/** + * Scans through a region of the bitmap, calling a function for each pixel. + * @param {number} x the x coordinate to begin the scan at + * @param {number} y the y coordinate to begin the scan at + * @param w the width of the scan region + * @param h the height of the scan region + * @param f a function to call on even pixel; the (x, y) position of the pixel + * and the index of the pixel in the bitmap buffer are passed to the function + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + +jimpEvChange('scan', function (x, y, w, h, f, cb) { + if (typeof x !== 'number' || typeof y !== 'number') { + return _utils.throwError.call(this, 'x and y must be numbers', cb); + } + + if (typeof w !== 'number' || typeof h !== 'number') { + return _utils.throwError.call(this, 'w and h must be numbers', cb); + } + + if (typeof f !== 'function') { + return _utils.throwError.call(this, 'f must be a function', cb); + } + + var result = (0, _utils.scan)(this, x, y, w, h, f); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, result); + } + + return result; +}); + +if ("BROWSER" === 'BROWSER') { + // For use in a web browser or web worker + + /* global self */ + var gl; + + if (typeof window !== 'undefined' && (typeof window === "undefined" ? "undefined" : (0, _typeof2["default"])(window)) === 'object') { + gl = window; + } + + if (typeof self !== 'undefined' && (typeof self === "undefined" ? "undefined" : (0, _typeof2["default"])(self)) === 'object') { + gl = self; + } + + gl.Jimp = Jimp; + gl.Buffer = Buffer; +} + +var _default = Jimp; +exports["default"] = _default; + +}).call(this,require("buffer").Buffer) +},{"./composite":191,"./constants":192,"./modules/phash":194,"./request":195,"./utils/image-bitmap":196,"./utils/mime":197,"./utils/promisify":198,"@babel/runtime/helpers/assertThisInitialized":3,"@babel/runtime/helpers/classCallCheck":4,"@babel/runtime/helpers/construct":5,"@babel/runtime/helpers/createClass":6,"@babel/runtime/helpers/defineProperty":7,"@babel/runtime/helpers/getPrototypeOf":9,"@babel/runtime/helpers/inherits":10,"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/interopRequireWildcard":12,"@babel/runtime/helpers/possibleConstructorReturn":17,"@babel/runtime/helpers/slicedToArray":19,"@babel/runtime/helpers/typeof":21,"@jimp/utils":235,"any-base":23,"buffer":48,"events":52,"fs":47,"mkdirp":83,"path":107,"pixelmatch":109,"tinycolor2":178}],194:[function(require,module,exports){ +"use strict"; + +/* +Copyright (c) 2011 Elliot Shepherd + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +// https://code.google.com/p/ironchef-team21/source/browse/ironchef_team21/src/ImagePHash.java + +/* + * pHash-like image hash. + * Author: Elliot Shepherd (elliot@jarofworms.com + * Based On: http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html + */ +function ImagePHash(size, smallerSize) { + this.size = this.size || size; + this.smallerSize = this.smallerSize || smallerSize; + initCoefficients(this.size); +} + +ImagePHash.prototype.size = 32; +ImagePHash.prototype.smallerSize = 8; + +ImagePHash.prototype.distance = function (s1, s2) { + var counter = 0; + + for (var k = 0; k < s1.length; k++) { + if (s1[k] !== s2[k]) { + counter++; + } + } + + return counter / s1.length; +}; // Returns a 'binary string' (like. 001010111011100010) which is easy to do a hamming distance on. + + +ImagePHash.prototype.getHash = function (img) { + /* 1. Reduce size. + * Like Average Hash, pHash starts with a small image. + * However, the image is larger than 8x8; 32x32 is a good size. + * This is really done to simplify the DCT computation and not + * because it is needed to reduce the high frequencies. + */ + img = img.clone().resize(this.size, this.size); + /* 2. Reduce color. + * The image is reduced to a grayscale just to further simplify + * the number of computations. + */ + + img.grayscale(); + var vals = []; + + for (var x = 0; x < img.bitmap.width; x++) { + vals[x] = []; + + for (var y = 0; y < img.bitmap.height; y++) { + vals[x][y] = intToRGBA(img.getPixelColor(x, y)).b; + } + } + /* 3. Compute the DCT. + * The DCT separates the image into a collection of frequencies + * and scalars. While JPEG uses an 8x8 DCT, this algorithm uses + * a 32x32 DCT. + */ + + + var dctVals = applyDCT(vals, this.size); + /* 4. Reduce the DCT. + * This is the magic step. While the DCT is 32x32, just keep the + * top-left 8x8. Those represent the lowest frequencies in the + * picture. + */ + + /* 5. Compute the average value. + * Like the Average Hash, compute the mean DCT value (using only + * the 8x8 DCT low-frequency values and excluding the first term + * since the DC coefficient can be significantly different from + * the other values and will throw off the average). + */ + + var total = 0; + + for (var _x = 0; _x < this.smallerSize; _x++) { + for (var _y = 0; _y < this.smallerSize; _y++) { + total += dctVals[_x][_y]; + } + } + + var avg = total / (this.smallerSize * this.smallerSize); + /* 6. Further reduce the DCT. + * This is the magic step. Set the 64 hash bits to 0 or 1 + * depending on whether each of the 64 DCT values is above or + * below the average value. The result doesn't tell us the + * actual low frequencies; it just tells us the very-rough + * relative scale of the frequencies to the mean. The result + * will not vary as long as the overall structure of the image + * remains the same; this can survive gamma and color histogram + * adjustments without a problem. + */ + + var hash = ''; + + for (var _x2 = 0; _x2 < this.smallerSize; _x2++) { + for (var _y2 = 0; _y2 < this.smallerSize; _y2++) { + hash += dctVals[_x2][_y2] > avg ? '1' : '0'; + } + } + + return hash; +}; // DCT function stolen from http://stackoverflow.com/questions/4240490/problems-with-dct-and-idct-algorithm-in-java + + +function intToRGBA(i) { + var rgba = {}; + rgba.r = Math.floor(i / Math.pow(256, 3)); + rgba.g = Math.floor((i - rgba.r * Math.pow(256, 3)) / Math.pow(256, 2)); + rgba.b = Math.floor((i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2)) / Math.pow(256, 1)); + rgba.a = Math.floor((i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2) - rgba.b * Math.pow(256, 1)) / Math.pow(256, 0)); + return rgba; +} + +var c = []; + +function initCoefficients(size) { + for (var i = 1; i < size; i++) { + c[i] = 1; + } + + c[0] = 1 / Math.sqrt(2.0); +} + +function applyDCT(f, size) { + var N = size; + var F = []; + + for (var u = 0; u < N; u++) { + F[u] = []; + + for (var v = 0; v < N; v++) { + var sum = 0; + + for (var i = 0; i < N; i++) { + for (var j = 0; j < N; j++) { + sum += Math.cos((2 * i + 1) / (2.0 * N) * u * Math.PI) * Math.cos((2 * j + 1) / (2.0 * N) * v * Math.PI) * f[i][j]; + } + } + + sum *= c[u] * c[v] / 4; + F[u][v] = sum; + } + } + + return F; +} + +module.exports = ImagePHash; + +},{}],195:[function(require,module,exports){ +(function (process,Buffer){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); + +var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +/* global XMLHttpRequest */ +if (process.browser || "BROWSER" === 'BROWSER' || typeof process.versions.electron !== 'undefined' && process.type === 'renderer' && typeof XMLHttpRequest === 'function') { + // If we run into a browser or the electron renderer process, + // use XHR method instead of Request node module. + module.exports = function (options, cb) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', options.url, true); + xhr.responseType = 'arraybuffer'; + xhr.addEventListener('load', function () { + if (xhr.status < 400) { + try { + var data = Buffer.from(this.response); + cb(null, xhr, data); + } catch (error) { + return cb(new Error('Response is not a buffer for url ' + options.url + '. Error: ' + error.message)); + } + } else { + cb(new Error('HTTP Status ' + xhr.status + ' for url ' + options.url)); + } + }); + xhr.addEventListener('error', function (e) { + cb(e); + }); + xhr.send(); + }; +} else { + module.exports = function (_ref, cb) { + var options = (0, _extends2["default"])({}, _ref); + + var p = require('phin'); + + p(_objectSpread({ + compression: true + }, options), function (err, res) { + if (err === null) { + cb(null, res, res.body); + } else { + cb(err); + } + }); + }; +} + +}).call(this,require('_process'),require("buffer").Buffer) +},{"@babel/runtime/helpers/defineProperty":7,"@babel/runtime/helpers/extends":8,"@babel/runtime/helpers/interopRequireDefault":11,"_process":133,"buffer":48,"phin":108}],196:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parseBitmap = parseBitmap; +exports.getBuffer = getBuffer; +exports.getBufferAsync = getBufferAsync; + +var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); + +var _fileType = _interopRequireDefault(require("file-type")); + +var _exifParser = _interopRequireDefault(require("exif-parser")); + +var _utils = require("@jimp/utils"); + +var constants = _interopRequireWildcard(require("../constants")); + +var MIME = _interopRequireWildcard(require("./mime")); + +var _promisify = _interopRequireDefault(require("./promisify")); + +function getMIMEFromBuffer(buffer, path) { + var fileTypeFromBuffer = (0, _fileType["default"])(buffer); + + if (fileTypeFromBuffer) { + // If fileType returns something for buffer, then return the mime given + return fileTypeFromBuffer.mime; + } + + if (path) { + // If a path is supplied, and fileType yields no results, then retry with MIME + // Path can be either a file path or a url + return MIME.getType(path); + } + + return null; +} +/* + * Obtains image orientation from EXIF metadata. + * + * @param img {Jimp} a Jimp image object + * @returns {number} a number 1-8 representing EXIF orientation, + * in particular 1 if orientation tag is missing + */ + + +function getExifOrientation(img) { + return img._exif && img._exif.tags && img._exif.tags.Orientation || 1; +} +/** + * Returns a function which translates EXIF-rotated coordinates into + * non-rotated ones. + * + * Transformation reference: http://sylvana.net/jpegcrop/exif_orientation.html. + * + * @param img {Jimp} a Jimp image object + * @returns {function} transformation function for transformBitmap(). + */ + + +function getExifOrientationTransformation(img) { + var w = img.getWidth(); + var h = img.getHeight(); + + switch (getExifOrientation(img)) { + case 1: + // Horizontal (normal) + // does not need to be supported here + return null; + + case 2: + // Mirror horizontal + return function (x, y) { + return [w - x - 1, y]; + }; + + case 3: + // Rotate 180 + return function (x, y) { + return [w - x - 1, h - y - 1]; + }; + + case 4: + // Mirror vertical + return function (x, y) { + return [x, h - y - 1]; + }; + + case 5: + // Mirror horizontal and rotate 270 CW + return function (x, y) { + return [y, x]; + }; + + case 6: + // Rotate 90 CW + return function (x, y) { + return [y, h - x - 1]; + }; + + case 7: + // Mirror horizontal and rotate 90 CW + return function (x, y) { + return [w - y - 1, h - x - 1]; + }; + + case 8: + // Rotate 270 CW + return function (x, y) { + return [w - y - 1, x]; + }; + + default: + return null; + } +} +/* + * Transforms bitmap in place (moves pixels around) according to given + * transformation function. + * + * @param img {Jimp} a Jimp image object, which bitmap is supposed to + * be transformed + * @param width {number} bitmap width after the transformation + * @param height {number} bitmap height after the transformation + * @param transformation {function} transformation function which defines pixel + * mapping between new and source bitmap. It takes a pair of coordinates + * in the target, and returns a respective pair of coordinates in + * the source bitmap, i.e. has following form: + * `function(new_x, new_y) { return [src_x, src_y] }`. + */ + + +function transformBitmap(img, width, height, transformation) { + // Underscore-prefixed values are related to the source bitmap + // Their counterparts with no prefix are related to the target bitmap + var _data = img.bitmap.data; + var _width = img.bitmap.width; + var data = Buffer.alloc(_data.length); + + for (var x = 0; x < width; x++) { + for (var y = 0; y < height; y++) { + var _transformation = transformation(x, y), + _transformation2 = (0, _slicedToArray2["default"])(_transformation, 2), + _x = _transformation2[0], + _y = _transformation2[1]; + + var idx = width * y + x << 2; + + var _idx = _width * _y + _x << 2; + + var pixel = _data.readUInt32BE(_idx); + + data.writeUInt32BE(pixel, idx); + } + } + + img.bitmap.data = data; + img.bitmap.width = width; + img.bitmap.height = height; +} +/* + * Automagically rotates an image based on its EXIF data (if present). + * @param img {Jimp} a Jimp image object + */ + + +function exifRotate(img) { + if (getExifOrientation(img) < 2) return; + var transformation = getExifOrientationTransformation(img); + var swapDimensions = getExifOrientation(img) > 4; + var newWidth = swapDimensions ? img.bitmap.height : img.bitmap.width; + var newHeight = swapDimensions ? img.bitmap.width : img.bitmap.height; + transformBitmap(img, newWidth, newHeight, transformation); +} // parses a bitmap from the constructor to the JIMP bitmap property + + +function parseBitmap(data, path, cb) { + var mime = getMIMEFromBuffer(data, path); + + if (typeof mime !== 'string') { + return cb(new Error('Could not find MIME for Buffer <' + path + '>')); + } + + this._originalMime = mime.toLowerCase(); + + try { + var _mime = this.getMIME(); + + if (this.constructor.decoders[_mime]) { + this.bitmap = this.constructor.decoders[_mime](data); + } else { + return _utils.throwError.call(this, 'Unsupported MIME type: ' + _mime, cb); + } + } catch (error) { + return cb.call(this, error, this); + } + + try { + this._exif = _exifParser["default"].create(data).parse(); + exifRotate(this); // EXIF data + } catch (error) { + /* meh */ + } + + cb.call(this, null, this); + return this; +} + +function compositeBitmapOverBackground(Jimp, image) { + return new Jimp(image.bitmap.width, image.bitmap.height, image._background).composite(image, 0, 0).bitmap; +} +/** + * Converts the image to a buffer + * @param {string} mime the mime type of the image buffer to be created + * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument + * @returns {Jimp} this for chaining of methods + */ + + +function getBuffer(mime, cb) { + if (mime === constants.AUTO) { + // allow auto MIME detection + mime = this.getMIME(); + } + + if (typeof mime !== 'string') { + return _utils.throwError.call(this, 'mime must be a string', cb); + } + + if (typeof cb !== 'function') { + return _utils.throwError.call(this, 'cb must be a function', cb); + } + + mime = mime.toLowerCase(); + + if (this._rgba && this.constructor.hasAlpha[mime]) { + this.bitmap.data = Buffer.from(this.bitmap.data); + } else { + // when format doesn't support alpha + // composite onto a new image so that the background shows through alpha channels + this.bitmap.data = compositeBitmapOverBackground(this.constructor, this).data; + } + + if (this.constructor.encoders[mime]) { + var buffer = this.constructor.encoders[mime](this); + cb.call(this, null, buffer); + } else { + cb.call(this, 'Unsupported MIME type: ' + mime); + } + + return this; +} + +function getBufferAsync(mime) { + return (0, _promisify["default"])(getBuffer, this, mime); +} + +}).call(this,require("buffer").Buffer) +},{"../constants":192,"./mime":197,"./promisify":198,"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/interopRequireWildcard":12,"@babel/runtime/helpers/slicedToArray":19,"@jimp/utils":235,"buffer":48,"exif-parser":53,"file-type":62}],197:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getExtension = exports.getType = exports.addType = void 0; +var mimeTypes = {}; + +var findType = function findType(extension) { + return Object.entries(mimeTypes).find(function (type) { + return type[1].includes(extension); + }) || []; +}; + +var addType = function addType(mime, extensions) { + mimeTypes[mime] = extensions; +}; +/** + * Lookup a mime type based on extension + * @param {string} path path to find extension for + * @returns {string} mime found mime type + */ + + +exports.addType = addType; + +var getType = function getType(path) { + var pathParts = path.split('/').slice(-1); + var extension = pathParts[pathParts.length - 1].split('.').pop(); + var type = findType(extension); + return type[0]; +}; +/** + * Return file extension associated with a mime type + * @param {string} type mime type to look up + * @returns {string} extension file extension + */ + + +exports.getType = getType; + +var getExtension = function getExtension(type) { + return (mimeTypes[type.toLowerCase()] || [])[0]; +}; + +exports.getExtension = getExtension; + +},{}],198:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var promisify = function promisify(fun, ctx) { + for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + args[_key - 2] = arguments[_key]; + } + + return new Promise(function (resolve, reject) { + args.push(function (err, data) { + if (err) { + reject(err); + } + + resolve(data); + }); + fun.bind(ctx).apply(void 0, args); + }); +}; + +var _default = promisify; +exports["default"] = _default; +module.exports = exports.default; + +},{}],199:[function(require,module,exports){ +"use strict"; + +var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = configure; + +var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); + +var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); + +var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); + +var _core = _interopRequireWildcard(require("@jimp/core")); + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function configure(configuration) { + var jimpInstance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _core["default"]; + var jimpConfig = { + hasAlpha: {}, + encoders: {}, + decoders: {}, + "class": {}, + constants: {} + }; + + function addToConfig(newConfig) { + Object.entries(newConfig).forEach(function (_ref) { + var _ref2 = (0, _slicedToArray2["default"])(_ref, 2), + key = _ref2[0], + value = _ref2[1]; + + jimpConfig[key] = _objectSpread({}, jimpConfig[key], {}, value); + }); + } + + function addImageType(typeModule) { + var type = typeModule(); + + if (Array.isArray(type.mime)) { + _core.addType.apply(void 0, (0, _toConsumableArray2["default"])(type.mime)); + } else { + Object.entries(type.mime).forEach(function (mimeType) { + return _core.addType.apply(void 0, (0, _toConsumableArray2["default"])(mimeType)); + }); + } + + delete type.mime; + addToConfig(type); + } + + function addPlugin(pluginModule) { + var plugin = pluginModule(_core.jimpEvChange) || {}; + + if (!plugin["class"] && !plugin.constants) { + // Default to class function + addToConfig({ + "class": plugin + }); + } else { + addToConfig(plugin); + } + } + + if (configuration.types) { + configuration.types.forEach(addImageType); + jimpInstance.decoders = _objectSpread({}, jimpInstance.decoders, {}, jimpConfig.decoders); + jimpInstance.encoders = _objectSpread({}, jimpInstance.encoders, {}, jimpConfig.encoders); + jimpInstance.hasAlpha = _objectSpread({}, jimpInstance.hasAlpha, {}, jimpConfig.hasAlpha); + } + + if (configuration.plugins) { + configuration.plugins.forEach(addPlugin); + } + + (0, _core.addJimpMethods)(jimpConfig["class"], jimpInstance); + (0, _core.addConstants)(jimpConfig.constants, jimpInstance); + return _core["default"]; +} + +module.exports = exports.default; + +},{"@babel/runtime/helpers/defineProperty":7,"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/interopRequireWildcard":12,"@babel/runtime/helpers/slicedToArray":19,"@babel/runtime/helpers/toConsumableArray":20,"@jimp/core":193}],200:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _custom = _interopRequireDefault(require("@jimp/custom")); + +var _types = _interopRequireDefault(require("@jimp/types")); + +var _plugins = _interopRequireDefault(require("@jimp/plugins")); + +var _default = (0, _custom["default"])({ + types: [_types["default"]], + plugins: [_plugins["default"]] +}); + +exports["default"] = _default; +module.exports = exports.default; + +},{"@babel/runtime/helpers/interopRequireDefault":11,"@jimp/custom":199,"@jimp/plugins":228,"@jimp/types":234}],201:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); + +var _utils = require("@jimp/utils"); + +var _default = function _default() { + return { + /** + * Blits a source image on to this image + * @param {Jimp} src the source Jimp instance + * @param {number} x the x position to blit the image + * @param {number} y the y position to blit the image + * @param {number} srcx (optional) the x position from which to crop the source image + * @param {number} srcy (optional) the y position from which to crop the source image + * @param {number} srcw (optional) the width to which to crop the source image + * @param {number} srch (optional) the height to which to crop the source image + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + blit: function blit(src, x, y, srcx, srcy, srcw, srch, cb) { + if (!(src instanceof this.constructor)) { + return _utils.throwError.call(this, 'The source must be a Jimp image', cb); + } + + if (typeof x !== 'number' || typeof y !== 'number') { + return _utils.throwError.call(this, 'x and y must be numbers', cb); + } + + if (typeof srcx === 'function') { + cb = srcx; + srcx = 0; + srcy = 0; + srcw = src.bitmap.width; + srch = src.bitmap.height; + } else if ((0, _typeof2["default"])(srcx) === (0, _typeof2["default"])(srcy) && (0, _typeof2["default"])(srcy) === (0, _typeof2["default"])(srcw) && (0, _typeof2["default"])(srcw) === (0, _typeof2["default"])(srch)) { + srcx = srcx || 0; + srcy = srcy || 0; + srcw = srcw || src.bitmap.width; + srch = srch || src.bitmap.height; + } else { + return _utils.throwError.call(this, 'srcx, srcy, srcw, srch must be numbers', cb); + } // round input + + + x = Math.round(x); + y = Math.round(y); // round input + + srcx = Math.round(srcx); + srcy = Math.round(srcy); + srcw = Math.round(srcw); + srch = Math.round(srch); + var maxWidth = this.bitmap.width; + var maxHeight = this.bitmap.height; + var baseImage = this; + src.scanQuiet(srcx, srcy, srcw, srch, function (sx, sy, idx) { + var xOffset = x + sx - srcx; + var yOffset = y + sy - srcy; + + if (xOffset >= 0 && yOffset >= 0 && maxWidth - xOffset > 0 && maxHeight - yOffset > 0) { + var dstIdx = baseImage.getPixelIndex(xOffset, yOffset); + var _src = { + r: this.bitmap.data[idx], + g: this.bitmap.data[idx + 1], + b: this.bitmap.data[idx + 2], + a: this.bitmap.data[idx + 3] + }; + var dst = { + r: baseImage.bitmap.data[dstIdx], + g: baseImage.bitmap.data[dstIdx + 1], + b: baseImage.bitmap.data[dstIdx + 2], + a: baseImage.bitmap.data[dstIdx + 3] + }; + baseImage.bitmap.data[dstIdx] = (_src.a * (_src.r - dst.r) - dst.r + 255 >> 8) + dst.r; + baseImage.bitmap.data[dstIdx + 1] = (_src.a * (_src.g - dst.g) - dst.g + 255 >> 8) + dst.g; + baseImage.bitmap.data[dstIdx + 2] = (_src.a * (_src.b - dst.b) - dst.b + 255 >> 8) + dst.b; + baseImage.bitmap.data[dstIdx + 3] = this.constructor.limit255(dst.a + _src.a); + } + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/typeof":21,"@jimp/utils":235}],202:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.shgTable = exports.mulTable = void 0; +var mulTable = [1, 57, 41, 21, 203, 34, 97, 73, 227, 91, 149, 62, 105, 45, 39, 137, 241, 107, 3, 173, 39, 71, 65, 238, 219, 101, 187, 87, 81, 151, 141, 133, 249, 117, 221, 209, 197, 187, 177, 169, 5, 153, 73, 139, 133, 127, 243, 233, 223, 107, 103, 99, 191, 23, 177, 171, 165, 159, 77, 149, 9, 139, 135, 131, 253, 245, 119, 231, 224, 109, 211, 103, 25, 195, 189, 23, 45, 175, 171, 83, 81, 79, 155, 151, 147, 9, 141, 137, 67, 131, 129, 251, 123, 30, 235, 115, 113, 221, 217, 53, 13, 51, 50, 49, 193, 189, 185, 91, 179, 175, 43, 169, 83, 163, 5, 79, 155, 19, 75, 147, 145, 143, 35, 69, 17, 67, 33, 65, 255, 251, 247, 243, 239, 59, 29, 229, 113, 111, 219, 27, 213, 105, 207, 51, 201, 199, 49, 193, 191, 47, 93, 183, 181, 179, 11, 87, 43, 85, 167, 165, 163, 161, 159, 157, 155, 77, 19, 75, 37, 73, 145, 143, 141, 35, 138, 137, 135, 67, 33, 131, 129, 255, 63, 250, 247, 61, 121, 239, 237, 117, 29, 229, 227, 225, 111, 55, 109, 216, 213, 211, 209, 207, 205, 203, 201, 199, 197, 195, 193, 48, 190, 47, 93, 185, 183, 181, 179, 178, 176, 175, 173, 171, 85, 21, 167, 165, 41, 163, 161, 5, 79, 157, 78, 154, 153, 19, 75, 149, 74, 147, 73, 144, 143, 71, 141, 140, 139, 137, 17, 135, 134, 133, 66, 131, 65, 129, 1]; +exports.mulTable = mulTable; +var shgTable = [0, 9, 10, 10, 14, 12, 14, 14, 16, 15, 16, 15, 16, 15, 15, 17, 18, 17, 12, 18, 16, 17, 17, 19, 19, 18, 19, 18, 18, 19, 19, 19, 20, 19, 20, 20, 20, 20, 20, 20, 15, 20, 19, 20, 20, 20, 21, 21, 21, 20, 20, 20, 21, 18, 21, 21, 21, 21, 20, 21, 17, 21, 21, 21, 22, 22, 21, 22, 22, 21, 22, 21, 19, 22, 22, 19, 20, 22, 22, 21, 21, 21, 22, 22, 22, 18, 22, 22, 21, 22, 22, 23, 22, 20, 23, 22, 22, 23, 23, 21, 19, 21, 21, 21, 23, 23, 23, 22, 23, 23, 21, 23, 22, 23, 18, 22, 23, 20, 22, 23, 23, 23, 21, 22, 20, 22, 21, 22, 24, 24, 24, 24, 24, 22, 21, 24, 23, 23, 24, 21, 24, 23, 24, 22, 24, 24, 22, 24, 24, 22, 23, 24, 24, 24, 20, 23, 22, 23, 24, 24, 24, 24, 24, 24, 24, 23, 21, 23, 22, 23, 24, 24, 24, 22, 24, 24, 24, 23, 22, 24, 24, 25, 23, 25, 25, 23, 24, 25, 25, 24, 22, 25, 25, 25, 24, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 23, 25, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 24, 22, 25, 25, 23, 25, 25, 20, 24, 25, 24, 25, 25, 22, 24, 25, 24, 25, 24, 25, 25, 24, 25, 25, 25, 25, 22, 25, 25, 25, 24, 25, 24, 25, 18]; +exports.shgTable = shgTable; + +},{}],203:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +var _blurTables = require("./blur-tables"); + +/* + Superfast Blur (0.5) + http://www.quasimondo.com/BoxBlurForCanvas/FastBlur.js + + Copyright (c) 2011 Mario Klingemann + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. +*/ +var _default = function _default() { + return { + /** + * A fast blur algorithm that produces similar effect to a Gaussian blur - but MUCH quicker + * @param {number} r the pixel radius of the blur + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + blur: function blur(r, cb) { + if (typeof r !== 'number') return _utils.throwError.call(this, 'r must be a number', cb); + if (r < 1) return _utils.throwError.call(this, 'r must be greater than 0', cb); + var rsum; + var gsum; + var bsum; + var asum; + var x; + var y; + var i; + var p; + var p1; + var p2; + var yp; + var yi; + var yw; + var pa; + var wm = this.bitmap.width - 1; + var hm = this.bitmap.height - 1; // const wh = this.bitmap.width * this.bitmap.height; + + var rad1 = r + 1; + var mulSum = _blurTables.mulTable[r]; + var shgSum = _blurTables.shgTable[r]; + var red = []; + var green = []; + var blue = []; + var alpha = []; + var vmin = []; + var vmax = []; + var iterations = 2; + + while (iterations-- > 0) { + yi = 0; + yw = 0; + + for (y = 0; y < this.bitmap.height; y++) { + rsum = this.bitmap.data[yw] * rad1; + gsum = this.bitmap.data[yw + 1] * rad1; + bsum = this.bitmap.data[yw + 2] * rad1; + asum = this.bitmap.data[yw + 3] * rad1; + + for (i = 1; i <= r; i++) { + p = yw + ((i > wm ? wm : i) << 2); + rsum += this.bitmap.data[p++]; + gsum += this.bitmap.data[p++]; + bsum += this.bitmap.data[p++]; + asum += this.bitmap.data[p]; + } + + for (x = 0; x < this.bitmap.width; x++) { + red[yi] = rsum; + green[yi] = gsum; + blue[yi] = bsum; + alpha[yi] = asum; + + if (y === 0) { + vmin[x] = ((p = x + rad1) < wm ? p : wm) << 2; + vmax[x] = (p = x - r) > 0 ? p << 2 : 0; + } + + p1 = yw + vmin[x]; + p2 = yw + vmax[x]; + rsum += this.bitmap.data[p1++] - this.bitmap.data[p2++]; + gsum += this.bitmap.data[p1++] - this.bitmap.data[p2++]; + bsum += this.bitmap.data[p1++] - this.bitmap.data[p2++]; + asum += this.bitmap.data[p1] - this.bitmap.data[p2]; + yi++; + } + + yw += this.bitmap.width << 2; + } + + for (x = 0; x < this.bitmap.width; x++) { + yp = x; + rsum = red[yp] * rad1; + gsum = green[yp] * rad1; + bsum = blue[yp] * rad1; + asum = alpha[yp] * rad1; + + for (i = 1; i <= r; i++) { + yp += i > hm ? 0 : this.bitmap.width; + rsum += red[yp]; + gsum += green[yp]; + bsum += blue[yp]; + asum += alpha[yp]; + } + + yi = x << 2; + + for (y = 0; y < this.bitmap.height; y++) { + pa = asum * mulSum >>> shgSum; + this.bitmap.data[yi + 3] = pa; // normalize alpha + + if (pa > 255) { + this.bitmap.data[yi + 3] = 255; + } + + if (pa > 0) { + pa = 255 / pa; + this.bitmap.data[yi] = (rsum * mulSum >>> shgSum) * pa; + this.bitmap.data[yi + 1] = (gsum * mulSum >>> shgSum) * pa; + this.bitmap.data[yi + 2] = (bsum * mulSum >>> shgSum) * pa; + } else { + this.bitmap.data[yi + 2] = 0; + this.bitmap.data[yi + 1] = 0; + this.bitmap.data[yi] = 0; + } + + if (x === 0) { + vmin[y] = ((p = y + rad1) < hm ? p : hm) * this.bitmap.width; + vmax[y] = (p = y - r) > 0 ? p * this.bitmap.width : 0; + } + + p1 = x + vmin[y]; + p2 = x + vmax[y]; + rsum += red[p1] - red[p2]; + gsum += green[p1] - green[p2]; + bsum += blue[p1] - blue[p2]; + asum += alpha[p1] - alpha[p2]; + yi += this.bitmap.width << 2; + } + } + } + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"./blur-tables":202,"@jimp/utils":235}],204:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Creates a circle out of an image. + * @param {function(Error, Jimp)} options (optional) radius, x, y + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + circle: function circle() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var cb = arguments.length > 1 ? arguments[1] : undefined; + + if (typeof options === 'function') { + cb = options; + options = {}; + } + + var radius = options.radius || (this.bitmap.width > this.bitmap.height ? this.bitmap.height : this.bitmap.width) / 2; + var center = { + x: typeof options.x === 'number' ? options.x : this.bitmap.width / 2, + y: typeof options.y === 'number' ? options.y : this.bitmap.height / 2 + }; + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var curR = Math.sqrt(Math.pow(x - center.x, 2) + Math.pow(y - center.y, 2)); + + if (radius - curR <= 0.0) { + this.bitmap.data[idx + 3] = 0; + } else if (radius - curR < 1.0) { + this.bitmap.data[idx + 3] = 255 * (radius - curR); + } + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],205:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); + +var _tinycolor = _interopRequireDefault(require("tinycolor2")); + +var _utils = require("@jimp/utils"); + +function applyKernel(im, kernel, x, y) { + var value = [0, 0, 0]; + var size = (kernel.length - 1) / 2; + + for (var kx = 0; kx < kernel.length; kx += 1) { + for (var ky = 0; ky < kernel[kx].length; ky += 1) { + var idx = im.getPixelIndex(x + kx - size, y + ky - size); + value[0] += im.bitmap.data[idx] * kernel[kx][ky]; + value[1] += im.bitmap.data[idx + 1] * kernel[kx][ky]; + value[2] += im.bitmap.data[idx + 2] * kernel[kx][ky]; + } + } + + return value; +} + +var isDef = function isDef(v) { + return typeof v !== 'undefined' && v !== null; +}; + +function greyscale(cb) { + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var grey = parseInt(0.2126 * this.bitmap.data[idx] + 0.7152 * this.bitmap.data[idx + 1] + 0.0722 * this.bitmap.data[idx + 2], 10); + this.bitmap.data[idx] = grey; + this.bitmap.data[idx + 1] = grey; + this.bitmap.data[idx + 2] = grey; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; +} + +function mix(clr, clr2) { + var p = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50; + return { + r: (clr2.r - clr.r) * (p / 100) + clr.r, + g: (clr2.g - clr.g) * (p / 100) + clr.g, + b: (clr2.b - clr.b) * (p / 100) + clr.b + }; +} + +function colorFn(actions, cb) { + var _this = this; + + if (!actions || !Array.isArray(actions)) { + return _utils.throwError.call(this, 'actions must be an array', cb); + } + + actions = actions.map(function (action) { + if (action.apply === 'xor' || action.apply === 'mix') { + action.params[0] = (0, _tinycolor["default"])(action.params[0]).toRgb(); + } + + return action; + }); + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var clr = { + r: _this.bitmap.data[idx], + g: _this.bitmap.data[idx + 1], + b: _this.bitmap.data[idx + 2] + }; + + var colorModifier = function colorModifier(i, amount) { + return _this.constructor.limit255(clr[i] + amount); + }; + + actions.forEach(function (action) { + if (action.apply === 'mix') { + clr = mix(clr, action.params[0], action.params[1]); + } else if (action.apply === 'tint') { + clr = mix(clr, { + r: 255, + g: 255, + b: 255 + }, action.params[0]); + } else if (action.apply === 'shade') { + clr = mix(clr, { + r: 0, + g: 0, + b: 0 + }, action.params[0]); + } else if (action.apply === 'xor') { + clr = { + r: clr.r ^ action.params[0].r, + g: clr.g ^ action.params[0].g, + b: clr.b ^ action.params[0].b + }; + } else if (action.apply === 'red') { + clr.r = colorModifier('r', action.params[0]); + } else if (action.apply === 'green') { + clr.g = colorModifier('g', action.params[0]); + } else if (action.apply === 'blue') { + clr.b = colorModifier('b', action.params[0]); + } else { + var _clr; + + if (action.apply === 'hue') { + action.apply = 'spin'; + } + + clr = (0, _tinycolor["default"])(clr); + + if (!clr[action.apply]) { + return _utils.throwError.call(_this, 'action ' + action.apply + ' not supported', cb); + } + + clr = (_clr = clr)[action.apply].apply(_clr, (0, _toConsumableArray2["default"])(action.params)).toRgb(); + } + }); + _this.bitmap.data[idx] = clr.r; + _this.bitmap.data[idx + 1] = clr.g; + _this.bitmap.data[idx + 2] = clr.b; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; +} + +var _default = function _default() { + return { + /** + * Adjusts the brightness of the image + * @param {number} val the amount to adjust the brightness, a number between -1 and +1 + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + brightness: function brightness(val, cb) { + if (typeof val !== 'number') { + return _utils.throwError.call(this, 'val must be numbers', cb); + } + + if (val < -1 || val > +1) { + return _utils.throwError.call(this, 'val must be a number between -1 and +1', cb); + } + + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + if (val < 0.0) { + this.bitmap.data[idx] = this.bitmap.data[idx] * (1 + val); + this.bitmap.data[idx + 1] = this.bitmap.data[idx + 1] * (1 + val); + this.bitmap.data[idx + 2] = this.bitmap.data[idx + 2] * (1 + val); + } else { + this.bitmap.data[idx] = this.bitmap.data[idx] + (255 - this.bitmap.data[idx]) * val; + this.bitmap.data[idx + 1] = this.bitmap.data[idx + 1] + (255 - this.bitmap.data[idx + 1]) * val; + this.bitmap.data[idx + 2] = this.bitmap.data[idx + 2] + (255 - this.bitmap.data[idx + 2]) * val; + } + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Adjusts the contrast of the image + * @param {number} val the amount to adjust the contrast, a number between -1 and +1 + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + contrast: function contrast(val, cb) { + if (typeof val !== 'number') { + return _utils.throwError.call(this, 'val must be numbers', cb); + } + + if (val < -1 || val > +1) { + return _utils.throwError.call(this, 'val must be a number between -1 and +1', cb); + } + + var factor = (val + 1) / (1 - val); + + function adjust(value) { + value = Math.floor(factor * (value - 127) + 127); + return value < 0 ? 0 : value > 255 ? 255 : value; + } + + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + this.bitmap.data[idx] = adjust(this.bitmap.data[idx]); + this.bitmap.data[idx + 1] = adjust(this.bitmap.data[idx + 1]); + this.bitmap.data[idx + 2] = adjust(this.bitmap.data[idx + 2]); + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Apply a posterize effect + * @param {number} n the amount to adjust the contrast, minimum threshold is two + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + posterize: function posterize(n, cb) { + if (typeof n !== 'number') { + return _utils.throwError.call(this, 'n must be numbers', cb); + } + + if (n < 2) { + n = 2; + } // minimum of 2 levels + + + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + this.bitmap.data[idx] = Math.floor(this.bitmap.data[idx] / 255 * (n - 1)) / (n - 1) * 255; + this.bitmap.data[idx + 1] = Math.floor(this.bitmap.data[idx + 1] / 255 * (n - 1)) / (n - 1) * 255; + this.bitmap.data[idx + 2] = Math.floor(this.bitmap.data[idx + 2] / 255 * (n - 1)) / (n - 1) * 255; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Removes colour from the image using ITU Rec 709 luminance values + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + greyscale: greyscale, + // Alias of greyscale for our American friends + grayscale: greyscale, + + /** + * Multiplies the opacity of each pixel by a factor between 0 and 1 + * @param {number} f A number, the factor by which to multiply the opacity of each pixel + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + opacity: function opacity(f, cb) { + if (typeof f !== 'number') return _utils.throwError.call(this, 'f must be a number', cb); + if (f < 0 || f > 1) return _utils.throwError.call(this, 'f must be a number from 0 to 1', cb); + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var v = this.bitmap.data[idx + 3] * f; + this.bitmap.data[idx + 3] = v; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Applies a sepia tone to the image + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + sepia: function sepia(cb) { + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var red = this.bitmap.data[idx]; + var green = this.bitmap.data[idx + 1]; + var blue = this.bitmap.data[idx + 2]; + red = red * 0.393 + green * 0.769 + blue * 0.189; + green = red * 0.349 + green * 0.686 + blue * 0.168; + blue = red * 0.272 + green * 0.534 + blue * 0.131; + this.bitmap.data[idx] = red < 255 ? red : 255; + this.bitmap.data[idx + 1] = green < 255 ? green : 255; + this.bitmap.data[idx + 2] = blue < 255 ? blue : 255; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Fades each pixel by a factor between 0 and 1 + * @param {number} f A number from 0 to 1. 0 will haven no effect. 1 will turn the image completely transparent. + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + fade: function fade(f, cb) { + if (typeof f !== 'number') { + return _utils.throwError.call(this, 'f must be a number', cb); + } + + if (f < 0 || f > 1) { + return _utils.throwError.call(this, 'f must be a number from 0 to 1', cb); + } // this method is an alternative to opacity (which may be deprecated) + + + this.opacity(1 - f); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Adds each element of the image to its local neighbors, weighted by the kernel + * @param {array} kernel a matrix to weight the neighbors sum + * @param {string} edgeHandling (optional) define how to sum pixels from outside the border + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + convolution: function convolution(kernel, edgeHandling, cb) { + if (typeof edgeHandling === 'function' && typeof cb === 'undefined') { + cb = edgeHandling; + edgeHandling = null; + } + + if (!edgeHandling) { + edgeHandling = this.constructor.EDGE_EXTEND; + } + + var newData = Buffer.from(this.bitmap.data); + var kRows = kernel.length; + var kCols = kernel[0].length; + var rowEnd = Math.floor(kRows / 2); + var colEnd = Math.floor(kCols / 2); + var rowIni = -rowEnd; + var colIni = -colEnd; + var weight; + var rSum; + var gSum; + var bSum; + var ri; + var gi; + var bi; + var xi; + var yi; + var idxi; + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + bSum = 0; + gSum = 0; + rSum = 0; + + for (var row = rowIni; row <= rowEnd; row++) { + for (var col = colIni; col <= colEnd; col++) { + xi = x + col; + yi = y + row; + weight = kernel[row + rowEnd][col + colEnd]; + idxi = this.getPixelIndex(xi, yi, edgeHandling); + + if (idxi === -1) { + bi = 0; + gi = 0; + ri = 0; + } else { + ri = this.bitmap.data[idxi + 0]; + gi = this.bitmap.data[idxi + 1]; + bi = this.bitmap.data[idxi + 2]; + } + + rSum += weight * ri; + gSum += weight * gi; + bSum += weight * bi; + } + } + + if (rSum < 0) { + rSum = 0; + } + + if (gSum < 0) { + gSum = 0; + } + + if (bSum < 0) { + bSum = 0; + } + + if (rSum > 255) { + rSum = 255; + } + + if (gSum > 255) { + gSum = 255; + } + + if (bSum > 255) { + bSum = 255; + } + + newData[idx + 0] = rSum; + newData[idx + 1] = gSum; + newData[idx + 2] = bSum; + }); + this.bitmap.data = newData; + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Set the alpha channel on every pixel to fully opaque + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + opaque: function opaque(cb) { + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + this.bitmap.data[idx + 3] = 255; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Pixelates the image or a region + * @param {number} size the size of the pixels + * @param {number} x (optional) the x position of the region to pixelate + * @param {number} y (optional) the y position of the region to pixelate + * @param {number} w (optional) the width of the region to pixelate + * @param {number} h (optional) the height of the region to pixelate + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + pixelate: function pixelate(size, x, y, w, h, cb) { + if (typeof x === 'function') { + cb = x; + h = null; + w = null; + y = null; + x = null; + } else { + if (typeof size !== 'number') { + return _utils.throwError.call(this, 'size must be a number', cb); + } + + if (isDef(x) && typeof x !== 'number') { + return _utils.throwError.call(this, 'x must be a number', cb); + } + + if (isDef(y) && typeof y !== 'number') { + return _utils.throwError.call(this, 'y must be a number', cb); + } + + if (isDef(w) && typeof w !== 'number') { + return _utils.throwError.call(this, 'w must be a number', cb); + } + + if (isDef(h) && typeof h !== 'number') { + return _utils.throwError.call(this, 'h must be a number', cb); + } + } + + var kernel = [[1 / 16, 2 / 16, 1 / 16], [2 / 16, 4 / 16, 2 / 16], [1 / 16, 2 / 16, 1 / 16]]; + x = x || 0; + y = y || 0; + w = isDef(w) ? w : this.bitmap.width - x; + h = isDef(h) ? h : this.bitmap.height - y; + var source = this.cloneQuiet(); + this.scanQuiet(x, y, w, h, function (xx, yx, idx) { + xx = size * Math.floor(xx / size); + yx = size * Math.floor(yx / size); + var value = applyKernel(source, kernel, xx, yx); + this.bitmap.data[idx] = value[0]; + this.bitmap.data[idx + 1] = value[1]; + this.bitmap.data[idx + 2] = value[2]; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Applies a convolution kernel to the image or a region + * @param {array} kernel the convolution kernel + * @param {number} x (optional) the x position of the region to apply convolution to + * @param {number} y (optional) the y position of the region to apply convolution to + * @param {number} w (optional) the width of the region to apply convolution to + * @param {number} h (optional) the height of the region to apply convolution to + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + convolute: function convolute(kernel, x, y, w, h, cb) { + if (!Array.isArray(kernel)) return _utils.throwError.call(this, 'the kernel must be an array', cb); + + if (typeof x === 'function') { + cb = x; + x = null; + y = null; + w = null; + h = null; + } else { + if (isDef(x) && typeof x !== 'number') { + return _utils.throwError.call(this, 'x must be a number', cb); + } + + if (isDef(y) && typeof y !== 'number') { + return _utils.throwError.call(this, 'y must be a number', cb); + } + + if (isDef(w) && typeof w !== 'number') { + return _utils.throwError.call(this, 'w must be a number', cb); + } + + if (isDef(h) && typeof h !== 'number') { + return _utils.throwError.call(this, 'h must be a number', cb); + } + } + + var ksize = (kernel.length - 1) / 2; + x = isDef(x) ? x : ksize; + y = isDef(y) ? y : ksize; + w = isDef(w) ? w : this.bitmap.width - x; + h = isDef(h) ? h : this.bitmap.height - y; + var source = this.cloneQuiet(); + this.scanQuiet(x, y, w, h, function (xx, yx, idx) { + var value = applyKernel(source, kernel, xx, yx); + this.bitmap.data[idx] = this.constructor.limit255(value[0]); + this.bitmap.data[idx + 1] = this.constructor.limit255(value[1]); + this.bitmap.data[idx + 2] = this.constructor.limit255(value[2]); + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Apply multiple color modification rules + * @param {array} actions list of color modification rules, in following format: { apply: '', params: [ ] } + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp }this for chaining of methods + */ + color: colorFn, + colour: colorFn + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +}).call(this,require("buffer").Buffer) +},{"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/toConsumableArray":20,"@jimp/utils":235,"buffer":48,"tinycolor2":178}],206:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Scale the image to the given width and height keeping the aspect ratio. Some parts of the image may be letter boxed. + * @param {number} w the width to resize the image to + * @param {number} h the height to resize the image to + * @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment + * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER) + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + contain: function contain(w, h, alignBits, mode, cb) { + if (typeof w !== 'number' || typeof h !== 'number') { + return _utils.throwError.call(this, 'w and h must be numbers', cb); + } // permit any sort of optional parameters combination + + + if (typeof alignBits === 'string') { + if (typeof mode === 'function' && typeof cb === 'undefined') cb = mode; + mode = alignBits; + alignBits = null; + } + + if (typeof alignBits === 'function') { + if (typeof cb === 'undefined') cb = alignBits; + mode = null; + alignBits = null; + } + + if (typeof mode === 'function' && typeof cb === 'undefined') { + cb = mode; + mode = null; + } + + alignBits = alignBits || this.constructor.HORIZONTAL_ALIGN_CENTER | this.constructor.VERTICAL_ALIGN_MIDDLE; + var hbits = alignBits & (1 << 3) - 1; + var vbits = alignBits >> 3; // check if more flags than one is in the bit sets + + if (!(hbits !== 0 && !(hbits & hbits - 1) || vbits !== 0 && !(vbits & vbits - 1))) { + return _utils.throwError.call(this, 'only use one flag per alignment direction', cb); + } + + var alignH = hbits >> 1; // 0, 1, 2 + + var alignV = vbits >> 1; // 0, 1, 2 + + var f = w / h > this.bitmap.width / this.bitmap.height ? h / this.bitmap.height : w / this.bitmap.width; + var c = this.cloneQuiet().scale(f, mode); + this.resize(w, h, mode); + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + this.bitmap.data.writeUInt32BE(this._background, idx); + }); + this.blit(c, (this.bitmap.width - c.bitmap.width) / 2 * alignH, (this.bitmap.height - c.bitmap.height) / 2 * alignV); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],207:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Scale the image so the given width and height keeping the aspect ratio. Some parts of the image may be clipped. + * @param {number} w the width to resize the image to + * @param {number} h the height to resize the image to + * @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment + * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER) + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + cover: function cover(w, h, alignBits, mode, cb) { + if (typeof w !== 'number' || typeof h !== 'number') { + return _utils.throwError.call(this, 'w and h must be numbers', cb); + } + + if (alignBits && typeof alignBits === 'function' && typeof cb === 'undefined') { + cb = alignBits; + alignBits = null; + mode = null; + } else if (typeof mode === 'function' && typeof cb === 'undefined') { + cb = mode; + mode = null; + } + + alignBits = alignBits || this.constructor.HORIZONTAL_ALIGN_CENTER | this.constructor.VERTICAL_ALIGN_MIDDLE; + var hbits = alignBits & (1 << 3) - 1; + var vbits = alignBits >> 3; // check if more flags than one is in the bit sets + + if (!(hbits !== 0 && !(hbits & hbits - 1) || vbits !== 0 && !(vbits & vbits - 1))) return _utils.throwError.call(this, 'only use one flag per alignment direction', cb); + var alignH = hbits >> 1; // 0, 1, 2 + + var alignV = vbits >> 1; // 0, 1, 2 + + var f = w / h > this.bitmap.width / this.bitmap.height ? w / this.bitmap.width : h / this.bitmap.height; + this.scale(f, mode); + this.crop((this.bitmap.width - w) / 2 * alignH, (this.bitmap.height - h) / 2 * alignV, w, h); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],208:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = pluginCrop; + +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); + +var _utils = require("@jimp/utils"); + +/* eslint-disable no-labels */ +function pluginCrop(event) { + /** + * Crops the image at a given point to a give size + * @param {number} x the x coordinate to crop form + * @param {number} y the y coordinate to crop form + * @param w the width of the crop region + * @param h the height of the crop region + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + event('crop', function (x, y, w, h, cb) { + if (typeof x !== 'number' || typeof y !== 'number') return _utils.throwError.call(this, 'x and y must be numbers', cb); + if (typeof w !== 'number' || typeof h !== 'number') return _utils.throwError.call(this, 'w and h must be numbers', cb); // round input + + x = Math.round(x); + y = Math.round(y); + w = Math.round(w); + h = Math.round(h); + + if (x === 0 && w === this.bitmap.width) { + // shortcut + var start = w * y + x << 2; + var end = start + h * w << 2; + this.bitmap.data = this.bitmap.data.slice(start, end); + } else { + var bitmap = Buffer.allocUnsafe(w * h * 4); + var offset = 0; + this.scanQuiet(x, y, w, h, function (x, y, idx) { + var data = this.bitmap.data.readUInt32BE(idx, true); + bitmap.writeUInt32BE(data, offset, true); + offset += 4; + }); + this.bitmap.data = bitmap; + } + + this.bitmap.width = w; + this.bitmap.height = h; + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }); + return { + "class": { + /** + * Autocrop same color borders from this image + * @param {number} tolerance (optional): a percent value of tolerance for pixels color difference (default: 0.0002%) + * @param {boolean} cropOnlyFrames (optional): flag to crop only real frames: all 4 sides of the image must have some border (default: true) + * @param {function(Error, Jimp)} cb (optional): a callback for when complete (default: no callback) + * @returns {Jimp} this for chaining of methods + */ + autocrop: function autocrop() { + var w = this.bitmap.width; + var h = this.bitmap.height; + var minPixelsPerSide = 1; // to avoid cropping completely the image, resulting in an invalid 0 sized image + + var cb; // callback + + var leaveBorder = 0; // Amount of pixels in border to leave + + var tolerance = 0.0002; // percent of color difference tolerance (default value) + + var cropOnlyFrames = true; // flag to force cropping only if the image has a real "frame" + // i.e. all 4 sides have some border (default value) + + var cropSymmetric = false; // flag to force cropping top be symmetric. + // i.e. north and south / east and west are cropped by the same value + + var ignoreSides = { + north: false, + south: false, + east: false, + west: false + }; // parse arguments + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + for (var a = 0, len = args.length; a < len; a++) { + if (typeof args[a] === 'number') { + // tolerance value passed + tolerance = args[a]; + } + + if (typeof args[a] === 'boolean') { + // cropOnlyFrames value passed + cropOnlyFrames = args[a]; + } + + if (typeof args[a] === 'function') { + // callback value passed + cb = args[a]; + } + + if ((0, _typeof2["default"])(args[a]) === 'object') { + // config object passed + var config = args[a]; + + if (typeof config.tolerance !== 'undefined') { + tolerance = config.tolerance; + } + + if (typeof config.cropOnlyFrames !== 'undefined') { + cropOnlyFrames = config.cropOnlyFrames; + } + + if (typeof config.cropSymmetric !== 'undefined') { + cropSymmetric = config.cropSymmetric; + } + + if (typeof config.leaveBorder !== 'undefined') { + leaveBorder = config.leaveBorder; + } + + if (typeof config.ignoreSides !== 'undefined') { + ignoreSides = config.ignoreSides; + } + } + } + /** + * All borders must be of the same color as the top left pixel, to be cropped. + * It should be possible to crop borders each with a different color, + * but since there are many ways for corners to intersect, it would + * introduce unnecessary complexity to the algorithm. + */ + // scan each side for same color borders + + + var colorTarget = this.getPixelColor(0, 0); // top left pixel color is the target color + + var rgba1 = this.constructor.intToRGBA(colorTarget); // for north and east sides + + var northPixelsToCrop = 0; + var eastPixelsToCrop = 0; + var southPixelsToCrop = 0; + var westPixelsToCrop = 0; // north side (scan rows from north to south) + + colorTarget = this.getPixelColor(0, 0); + + if (!ignoreSides.north) { + north: for (var y = 0; y < h - minPixelsPerSide; y++) { + for (var x = 0; x < w; x++) { + var colorXY = this.getPixelColor(x, y); + var rgba2 = this.constructor.intToRGBA(colorXY); + + if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) { + // this pixel is too distant from the first one: abort this side scan + break north; + } + } // this row contains all pixels with the same color: increment this side pixels to crop + + + northPixelsToCrop++; + } + } // east side (scan columns from east to west) + + + colorTarget = this.getPixelColor(w, 0); + + if (!ignoreSides.east) { + east: for (var _x = 0; _x < w - minPixelsPerSide; _x++) { + for (var _y = 0 + northPixelsToCrop; _y < h; _y++) { + var _colorXY = this.getPixelColor(_x, _y); + + var _rgba = this.constructor.intToRGBA(_colorXY); + + if (this.constructor.colorDiff(rgba1, _rgba) > tolerance) { + // this pixel is too distant from the first one: abort this side scan + break east; + } + } // this column contains all pixels with the same color: increment this side pixels to crop + + + eastPixelsToCrop++; + } + } // south side (scan rows from south to north) + + + colorTarget = this.getPixelColor(0, h); + + if (!ignoreSides.south) { + south: for (var _y2 = h - 1; _y2 >= northPixelsToCrop + minPixelsPerSide; _y2--) { + for (var _x2 = w - eastPixelsToCrop - 1; _x2 >= 0; _x2--) { + var _colorXY2 = this.getPixelColor(_x2, _y2); + + var _rgba2 = this.constructor.intToRGBA(_colorXY2); + + if (this.constructor.colorDiff(rgba1, _rgba2) > tolerance) { + // this pixel is too distant from the first one: abort this side scan + break south; + } + } // this row contains all pixels with the same color: increment this side pixels to crop + + + southPixelsToCrop++; + } + } // west side (scan columns from west to east) + + + colorTarget = this.getPixelColor(w, h); + + if (!ignoreSides.west) { + west: for (var _x3 = w - 1; _x3 >= 0 + eastPixelsToCrop + minPixelsPerSide; _x3--) { + for (var _y3 = h - 1; _y3 >= 0 + northPixelsToCrop; _y3--) { + var _colorXY3 = this.getPixelColor(_x3, _y3); + + var _rgba3 = this.constructor.intToRGBA(_colorXY3); + + if (this.constructor.colorDiff(rgba1, _rgba3) > tolerance) { + // this pixel is too distant from the first one: abort this side scan + break west; + } + } // this column contains all pixels with the same color: increment this side pixels to crop + + + westPixelsToCrop++; + } + } // decide if a crop is needed + + + var doCrop = false; // apply leaveBorder + + westPixelsToCrop -= leaveBorder; + eastPixelsToCrop -= leaveBorder; + northPixelsToCrop -= leaveBorder; + southPixelsToCrop -= leaveBorder; + + if (cropSymmetric) { + var horizontal = Math.min(eastPixelsToCrop, westPixelsToCrop); + var vertical = Math.min(northPixelsToCrop, southPixelsToCrop); + westPixelsToCrop = horizontal; + eastPixelsToCrop = horizontal; + northPixelsToCrop = vertical; + southPixelsToCrop = vertical; + } // make sure that crops are >= 0 + + + westPixelsToCrop = westPixelsToCrop >= 0 ? westPixelsToCrop : 0; + eastPixelsToCrop = eastPixelsToCrop >= 0 ? eastPixelsToCrop : 0; + northPixelsToCrop = northPixelsToCrop >= 0 ? northPixelsToCrop : 0; + southPixelsToCrop = southPixelsToCrop >= 0 ? southPixelsToCrop : 0; // safety checks + + var widthOfRemainingPixels = w - (westPixelsToCrop + eastPixelsToCrop); + var heightOfRemainingPixels = h - (southPixelsToCrop + northPixelsToCrop); + + if (cropOnlyFrames) { + // crop image if all sides should be cropped + doCrop = eastPixelsToCrop !== 0 && northPixelsToCrop !== 0 && westPixelsToCrop !== 0 && southPixelsToCrop !== 0; + } else { + // crop image if at least one side should be cropped + doCrop = eastPixelsToCrop !== 0 || northPixelsToCrop !== 0 || westPixelsToCrop !== 0 || southPixelsToCrop !== 0; + } + + if (doCrop) { + // do the real crop + this.crop(eastPixelsToCrop, northPixelsToCrop, widthOfRemainingPixels, heightOfRemainingPixels); + } + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + } + }; +} + +module.exports = exports.default; + +}).call(this,require("buffer").Buffer) +},{"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/typeof":21,"@jimp/utils":235,"buffer":48}],209:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); + +var _utils = require("@jimp/utils"); + +/** + * Displaces the image based on the provided displacement map + * @param {object} map the source Jimp instance + * @param {number} offset the maximum displacement value + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + displace: function displace(map, offset, cb) { + if ((0, _typeof2["default"])(map) !== 'object' || map.constructor !== this.constructor) { + return _utils.throwError.call(this, 'The source must be a Jimp image', cb); + } + + if (typeof offset !== 'number') { + return _utils.throwError.call(this, 'factor must be a number', cb); + } + + var source = this.cloneQuiet(); + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var displacement = map.bitmap.data[idx] / 256 * offset; + displacement = Math.round(displacement); + var ids = this.getPixelIndex(x + displacement, y); + this.bitmap.data[ids] = source.bitmap.data[idx]; + this.bitmap.data[ids + 1] = source.bitmap.data[idx + 1]; + this.bitmap.data[ids + 2] = source.bitmap.data[idx + 2]; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/typeof":21,"@jimp/utils":235}],210:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Apply a ordered dithering effect + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +function dither(cb) { + var rgb565Matrix = [1, 9, 3, 11, 13, 5, 15, 7, 4, 12, 2, 10, 16, 8, 14, 6]; + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var thresholdId = ((y & 3) << 2) + x % 4; + var dither = rgb565Matrix[thresholdId]; + this.bitmap.data[idx] = Math.min(this.bitmap.data[idx] + dither, 0xff); + this.bitmap.data[idx + 1] = Math.min(this.bitmap.data[idx + 1] + dither, 0xff); + this.bitmap.data[idx + 2] = Math.min(this.bitmap.data[idx + 2] + dither, 0xff); + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; +} + +var _default = function _default() { + return { + dither565: dither, + dither16: dither + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],211:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Creates a circle out of an image. + * @param {object} options (optional) r: radius of effect + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + fisheye: function fisheye() { + var _this = this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + r: 2.5 + }; + var cb = arguments.length > 1 ? arguments[1] : undefined; + + if (typeof options === 'function') { + cb = options; + options = { + r: 2.5 + }; + } + + var source = this.cloneQuiet(); + var _source$bitmap = source.bitmap, + width = _source$bitmap.width, + height = _source$bitmap.height; + source.scanQuiet(0, 0, width, height, function (x, y) { + var hx = x / width; + var hy = y / height; + var r = Math.sqrt(Math.pow(hx - 0.5, 2) + Math.pow(hy - 0.5, 2)); + var rn = 2 * Math.pow(r, options.r); + var cosA = (hx - 0.5) / r; + var sinA = (hy - 0.5) / r; + var newX = Math.round((rn * cosA + 0.5) * width); + var newY = Math.round((rn * sinA + 0.5) * height); + var color = source.getPixelColor(newX, newY); + + _this.setPixelColor(color, x, y); + }); + /* Set center pixel color, otherwise it will be transparent */ + + this.setPixelColor(source.getPixelColor(width / 2, height / 2), width / 2, height / 2); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],212:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Flip the image horizontally + * @param {boolean} horizontal a Boolean, if true the image will be flipped horizontally + * @param {boolean} vertical a Boolean, if true the image will be flipped vertically + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +function flipFn(horizontal, vertical, cb) { + if (typeof horizontal !== 'boolean' || typeof vertical !== 'boolean') return _utils.throwError.call(this, 'horizontal and vertical must be Booleans', cb); + var bitmap = Buffer.alloc(this.bitmap.data.length); + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var _x = horizontal ? this.bitmap.width - 1 - x : x; + + var _y = vertical ? this.bitmap.height - 1 - y : y; + + var _idx = this.bitmap.width * _y + _x << 2; + + var data = this.bitmap.data.readUInt32BE(idx); + bitmap.writeUInt32BE(data, _idx); + }); + this.bitmap.data = Buffer.from(bitmap); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; +} + +var _default = function _default() { + return { + flip: flipFn, + mirror: flipFn + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +}).call(this,require("buffer").Buffer) +},{"@jimp/utils":235,"buffer":48}],213:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Applies a true Gaussian blur to the image (warning: this is VERY slow) + * @param {number} r the pixel radius of the blur + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + gaussian: function gaussian(r, cb) { + // http://blog.ivank.net/fastest-gaussian-blur.html + if (typeof r !== 'number') { + return _utils.throwError.call(this, 'r must be a number', cb); + } + + if (r < 1) { + return _utils.throwError.call(this, 'r must be greater than 0', cb); + } + + var rs = Math.ceil(r * 2.57); // significant radius + + var range = rs * 2 + 1; + var rr2 = r * r * 2; + var rr2pi = rr2 * Math.PI; + var weights = []; + + for (var y = 0; y < range; y++) { + weights[y] = []; + + for (var x = 0; x < range; x++) { + var dsq = Math.pow(x - rs, 2) + Math.pow(y - rs, 2); + weights[y][x] = Math.exp(-dsq / rr2) / rr2pi; + } + } + + for (var _y = 0; _y < this.bitmap.height; _y++) { + for (var _x = 0; _x < this.bitmap.width; _x++) { + var red = 0; + var green = 0; + var blue = 0; + var alpha = 0; + var wsum = 0; + + for (var iy = 0; iy < range; iy++) { + for (var ix = 0; ix < range; ix++) { + var x1 = Math.min(this.bitmap.width - 1, Math.max(0, ix + _x - rs)); + var y1 = Math.min(this.bitmap.height - 1, Math.max(0, iy + _y - rs)); + var weight = weights[iy][ix]; + + var _idx = y1 * this.bitmap.width + x1 << 2; + + red += this.bitmap.data[_idx] * weight; + green += this.bitmap.data[_idx + 1] * weight; + blue += this.bitmap.data[_idx + 2] * weight; + alpha += this.bitmap.data[_idx + 3] * weight; + wsum += weight; + } + + var idx = _y * this.bitmap.width + _x << 2; + this.bitmap.data[idx] = Math.round(red / wsum); + this.bitmap.data[idx + 1] = Math.round(green / wsum); + this.bitmap.data[idx + 2] = Math.round(blue / wsum); + this.bitmap.data[idx + 3] = Math.round(alpha / wsum); + } + } + } + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],214:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Inverts the image + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + invert: function invert(cb) { + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + this.bitmap.data[idx] = 255 - this.bitmap.data[idx]; + this.bitmap.data[idx + 1] = 255 - this.bitmap.data[idx + 1]; + this.bitmap.data[idx + 2] = 255 - this.bitmap.data[idx + 2]; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],215:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Masks a source image on to this image using average pixel colour. A completely black pixel on the mask will turn a pixel in the image completely transparent. + * @param {Jimp} src the source Jimp instance + * @param {number} x the horizontal position to blit the image + * @param {number} y the vertical position to blit the image + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + mask: function mask(src) { + var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var y = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + var cb = arguments.length > 3 ? arguments[3] : undefined; + + if (!(src instanceof this.constructor)) { + return _utils.throwError.call(this, 'The source must be a Jimp image', cb); + } + + if (typeof x !== 'number' || typeof y !== 'number') { + return _utils.throwError.call(this, 'x and y must be numbers', cb); + } // round input + + + x = Math.round(x); + y = Math.round(y); + var w = this.bitmap.width; + var h = this.bitmap.height; + var baseImage = this; + src.scanQuiet(0, 0, src.bitmap.width, src.bitmap.height, function (sx, sy, idx) { + var destX = x + sx; + var destY = y + sy; + + if (destX >= 0 && destY >= 0 && destX < w && destY < h) { + var dstIdx = baseImage.getPixelIndex(destX, destY); + var data = this.bitmap.data; + var avg = (data[idx + 0] + data[idx + 1] + data[idx + 2]) / 3; + baseImage.bitmap.data[dstIdx + 3] *= avg / 255; + } + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],216:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Get an image's histogram + * @return {object} An object with an array of color occurrence counts for each channel (r,g,b) + */ +function histogram() { + var histogram = { + r: new Array(256).fill(0), + g: new Array(256).fill(0), + b: new Array(256).fill(0) + }; + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, index) { + histogram.r[this.bitmap.data[index + 0]]++; + histogram.g[this.bitmap.data[index + 1]]++; + histogram.b[this.bitmap.data[index + 2]]++; + }); + return histogram; +} +/** + * Normalize values + * @param {integer} value Pixel channel value. + * @param {integer} min Minimum value for channel + * @param {integer} max Maximum value for channel + * @return {integer} normalized values + */ + + +var _normalize = function normalize(value, min, max) { + return (value - min) * 255 / (max - min); +}; + +var getBounds = function getBounds(histogramChannel) { + return [histogramChannel.findIndex(function (value) { + return value > 0; + }), 255 - histogramChannel.slice().reverse().findIndex(function (value) { + return value > 0; + })]; +}; +/** + * Normalizes the image + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + + +var _default = function _default() { + return { + normalize: function normalize(cb) { + var h = histogram.call(this); // store bounds (minimum and maximum values) + + var bounds = { + r: getBounds(h.r), + g: getBounds(h.g), + b: getBounds(h.b) + }; // apply value transformations + + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var r = this.bitmap.data[idx + 0]; + var g = this.bitmap.data[idx + 1]; + var b = this.bitmap.data[idx + 2]; + this.bitmap.data[idx + 0] = _normalize(r, bounds.r[0], bounds.r[1]); + this.bitmap.data[idx + 1] = _normalize(g, bounds.g[0], bounds.g[1]); + this.bitmap.data[idx + 2] = _normalize(b, bounds.b[0], bounds.b[1]); + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],217:[function(require,module,exports){ +(function (__dirname){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); + +var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); + +var _path = _interopRequireDefault(require("path")); + +var _loadBmfont = _interopRequireDefault(require("load-bmfont")); + +var _utils = require("@jimp/utils"); + +var _measureText = require("./measure-text"); + +function xOffsetBasedOnAlignment(constants, font, line, maxWidth, alignment) { + if (alignment === constants.HORIZONTAL_ALIGN_LEFT) { + return 0; + } + + if (alignment === constants.HORIZONTAL_ALIGN_CENTER) { + return (maxWidth - (0, _measureText.measureText)(font, line)) / 2; + } + + return maxWidth - (0, _measureText.measureText)(font, line); +} + +function drawCharacter(image, font, x, y, _char) { + if (_char.width > 0 && _char.height > 0) { + var characterPage = font.pages[_char.page]; + image.blit(characterPage, x + _char.xoffset, y + _char.yoffset, _char.x, _char.y, _char.width, _char.height); + } + + return image; +} + +function printText(font, x, y, text, defaultCharWidth) { + for (var i = 0; i < text.length; i++) { + var _char2 = void 0; + + if (font.chars[text[i]]) { + _char2 = text[i]; + } else if (/\s/.test(text[i])) { + _char2 = ''; + } else { + _char2 = '?'; + } + + var fontChar = font.chars[_char2] || {}; + var fontKerning = font.kernings[_char2]; + drawCharacter(this, font, x, y, fontChar || {}); + var kerning = fontKerning && fontKerning[text[i + 1]] ? fontKerning[text[i + 1]] : 0; + x += kerning + (fontChar.xadvance || defaultCharWidth); + } +} + +function splitLines(font, text, maxWidth) { + var words = text.split(' '); + var lines = []; + var currentLine = []; + var longestLine = 0; + words.forEach(function (word) { + var line = [].concat((0, _toConsumableArray2["default"])(currentLine), [word]).join(' '); + var length = (0, _measureText.measureText)(font, line); + + if (length <= maxWidth) { + if (length > longestLine) { + longestLine = length; + } + + currentLine.push(word); + } else { + lines.push(currentLine); + currentLine = [word]; + } + }); + lines.push(currentLine); + return { + lines: lines, + longestLine: longestLine + }; +} + +function loadPages(Jimp, dir, pages) { + var newPages = pages.map(function (page) { + return Jimp.read(dir + '/' + page); + }); + return Promise.all(newPages); +} + +var dir = "browser/lib/" || "".concat(__dirname, "/../"); + +var _default = function _default() { + return { + constants: { + measureText: _measureText.measureText, + measureTextHeight: _measureText.measureTextHeight, + FONT_SANS_8_BLACK: _path["default"].join(dir, 'fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt'), + FONT_SANS_10_BLACK: _path["default"].join(dir, 'fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt'), + FONT_SANS_12_BLACK: _path["default"].join(dir, 'fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt'), + FONT_SANS_14_BLACK: _path["default"].join(dir, 'fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt'), + FONT_SANS_16_BLACK: _path["default"].join(dir, 'fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt'), + FONT_SANS_32_BLACK: _path["default"].join(dir, 'fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt'), + FONT_SANS_64_BLACK: _path["default"].join(dir, 'fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt'), + FONT_SANS_128_BLACK: _path["default"].join(dir, 'fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt'), + FONT_SANS_8_WHITE: _path["default"].join(dir, 'fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt'), + FONT_SANS_16_WHITE: _path["default"].join(dir, 'fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt'), + FONT_SANS_32_WHITE: _path["default"].join(dir, 'fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt'), + FONT_SANS_64_WHITE: _path["default"].join(dir, 'fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt'), + FONT_SANS_128_WHITE: _path["default"].join(dir, 'fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt'), + + /** + * Loads a bitmap font from a file + * @param {string} file the file path of a .fnt file + * @param {function(Error, Jimp)} cb (optional) a function to call when the font is loaded + * @returns {Promise} a promise + */ + loadFont: function loadFont(file, cb) { + var _this = this; + + if (typeof file !== 'string') return _utils.throwError.call(this, 'file must be a string', cb); + return new Promise(function (resolve, reject) { + cb = cb || function (err, font) { + if (err) reject(err);else resolve(font); + }; + + (0, _loadBmfont["default"])(file, function (err, font) { + var chars = {}; + var kernings = {}; + + if (err) { + return _utils.throwError.call(_this, err, cb); + } + + for (var i = 0; i < font.chars.length; i++) { + chars[String.fromCharCode(font.chars[i].id)] = font.chars[i]; + } + + for (var _i = 0; _i < font.kernings.length; _i++) { + var firstString = String.fromCharCode(font.kernings[_i].first); + kernings[firstString] = kernings[firstString] || {}; + kernings[firstString][String.fromCharCode(font.kernings[_i].second)] = font.kernings[_i].amount; + } + + loadPages(_this, _path["default"].dirname(file), font.pages).then(function (pages) { + cb(null, { + chars: chars, + kernings: kernings, + pages: pages, + common: font.common, + info: font.info + }); + }); + }); + }); + } + }, + "class": { + /** + * Draws a text on a image on a given boundary + * @param {Jimp} font a bitmap font loaded from `Jimp.loadFont` command + * @param {number} x the x position to start drawing the text + * @param {number} y the y position to start drawing the text + * @param {any} text the text to draw (string or object with `text`, `alignmentX`, and/or `alignmentY`) + * @param {number} maxWidth (optional) the boundary width to draw in + * @param {number} maxHeight (optional) the boundary height to draw in + * @param {function(Error, Jimp)} cb (optional) a function to call when the text is written + * @returns {Jimp} this for chaining of methods + */ + print: function print(font, x, y, text, maxWidth, maxHeight, cb) { + var _this2 = this; + + if (typeof maxWidth === 'function' && typeof cb === 'undefined') { + cb = maxWidth; + maxWidth = Infinity; + } + + if (typeof maxWidth === 'undefined') { + maxWidth = Infinity; + } + + if (typeof maxHeight === 'function' && typeof cb === 'undefined') { + cb = maxHeight; + maxHeight = Infinity; + } + + if (typeof maxHeight === 'undefined') { + maxHeight = Infinity; + } + + if ((0, _typeof2["default"])(font) !== 'object') { + return _utils.throwError.call(this, 'font must be a Jimp loadFont', cb); + } + + if (typeof x !== 'number' || typeof y !== 'number' || typeof maxWidth !== 'number') { + return _utils.throwError.call(this, 'x, y and maxWidth must be numbers', cb); + } + + if (typeof maxWidth !== 'number') { + return _utils.throwError.call(this, 'maxWidth must be a number', cb); + } + + if (typeof maxHeight !== 'number') { + return _utils.throwError.call(this, 'maxHeight must be a number', cb); + } + + var alignmentX; + var alignmentY; + + if ((0, _typeof2["default"])(text) === 'object' && text.text !== null && text.text !== undefined) { + alignmentX = text.alignmentX || this.constructor.HORIZONTAL_ALIGN_LEFT; + alignmentY = text.alignmentY || this.constructor.VERTICAL_ALIGN_TOP; + var _text = text; + text = _text.text; + } else { + alignmentX = this.constructor.HORIZONTAL_ALIGN_LEFT; + alignmentY = this.constructor.VERTICAL_ALIGN_TOP; + text = text.toString(); + } + + if (maxHeight !== Infinity && alignmentY === this.constructor.VERTICAL_ALIGN_BOTTOM) { + y += maxHeight - (0, _measureText.measureTextHeight)(font, text, maxWidth); + } else if (maxHeight !== Infinity && alignmentY === this.constructor.VERTICAL_ALIGN_MIDDLE) { + y += maxHeight / 2 - (0, _measureText.measureTextHeight)(font, text, maxWidth) / 2; + } + + var defaultCharWidth = Object.entries(font.chars)[0][1].xadvance; + + var _splitLines = splitLines(font, text, maxWidth), + lines = _splitLines.lines, + longestLine = _splitLines.longestLine; + + lines.forEach(function (line) { + var lineString = line.join(' '); + var alignmentWidth = xOffsetBasedOnAlignment(_this2.constructor, font, lineString, maxWidth, alignmentX); + printText.call(_this2, font, x + alignmentWidth, y, lineString, defaultCharWidth); + y += font.common.lineHeight; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this, { + x: x + longestLine, + y: y + }); + } + + return this; + } + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +}).call(this,"/../../node_modules/@jimp/plugin-print/dist") +},{"./measure-text":218,"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/toConsumableArray":20,"@babel/runtime/helpers/typeof":21,"@jimp/utils":235,"load-bmfont":219,"path":107}],218:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.measureText = measureText; +exports.measureTextHeight = measureTextHeight; + +function measureText(font, text) { + var x = 0; + + for (var i = 0; i < text.length; i++) { + if (font.chars[text[i]]) { + var kerning = font.kernings[text[i]] && font.kernings[text[i]][text[i + 1]] ? font.kernings[text[i]][text[i + 1]] : 0; + x += (font.chars[text[i]].xadvance || 0) + kerning; + } + } + + return x; +} + +function measureTextHeight(font, text, maxWidth) { + var words = text.split(' '); + var line = ''; + var textTotalHeight = font.common.lineHeight; + + for (var n = 0; n < words.length; n++) { + var testLine = line + words[n] + ' '; + var testWidth = measureText(font, testLine); + + if (testWidth > maxWidth && n > 0) { + textTotalHeight += font.common.lineHeight; + line = words[n] + ' '; + } else { + line = testLine; + } + } + + return textTotalHeight; +} + +},{}],219:[function(require,module,exports){ +(function (Buffer){ +var xhr = require('xhr') +var noop = function(){} +var parseASCII = require('parse-bmfont-ascii') +var parseXML = require('parse-bmfont-xml') +var readBinary = require('parse-bmfont-binary') +var isBinaryFormat = require('./lib/is-binary') +var xtend = require('xtend') + +var xml2 = (function hasXML2() { + return self.XMLHttpRequest && "withCredentials" in new XMLHttpRequest +})() + +module.exports = function(opt, cb) { + cb = typeof cb === 'function' ? cb : noop + + if (typeof opt === 'string') + opt = { uri: opt } + else if (!opt) + opt = {} + + var expectBinary = opt.binary + if (expectBinary) + opt = getBinaryOpts(opt) + + xhr(opt, function(err, res, body) { + if (err) + return cb(err) + if (!/^2/.test(res.statusCode)) + return cb(new Error('http status code: '+res.statusCode)) + if (!body) + return cb(new Error('no body result')) + + var binary = false + + //if the response type is an array buffer, + //we need to convert it into a regular Buffer object + if (isArrayBuffer(body)) { + var array = new Uint8Array(body) + body = new Buffer(array, 'binary') + } + + //now check the string/Buffer response + //and see if it has a binary BMF header + if (isBinaryFormat(body)) { + binary = true + //if we have a string, turn it into a Buffer + if (typeof body === 'string') + body = new Buffer(body, 'binary') + } + + //we are not parsing a binary format, just ASCII/XML/etc + if (!binary) { + //might still be a buffer if responseType is 'arraybuffer' + if (Buffer.isBuffer(body)) + body = body.toString(opt.encoding) + body = body.trim() + } + + var result + try { + var type = res.headers['content-type'] + if (binary) + result = readBinary(body) + else if (/json/.test(type) || body.charAt(0) === '{') + result = JSON.parse(body) + else if (/xml/.test(type) || body.charAt(0) === '<') + result = parseXML(body) + else + result = parseASCII(body) + } catch (e) { + cb(new Error('error parsing font '+e.message)) + cb = noop + } + cb(null, result) + }) +} + +function isArrayBuffer(arr) { + var str = Object.prototype.toString + return str.call(arr) === '[object ArrayBuffer]' +} + +function getBinaryOpts(opt) { + //IE10+ and other modern browsers support array buffers + if (xml2) + return xtend(opt, { responseType: 'arraybuffer' }) + + if (typeof self.XMLHttpRequest === 'undefined') + throw new Error('your browser does not support XHR loading') + + //IE9 and XML1 browsers could still use an override + var req = new self.XMLHttpRequest() + req.overrideMimeType('text/plain; charset=x-user-defined') + return xtend({ + xhr: req + }, opt) +} + +}).call(this,require("buffer").Buffer) +},{"./lib/is-binary":220,"buffer":48,"parse-bmfont-ascii":102,"parse-bmfont-binary":103,"parse-bmfont-xml":104,"xhr":187,"xtend":189}],220:[function(require,module,exports){ +(function (Buffer){ +var equal = require('buffer-equal') +var HEADER = new Buffer([66, 77, 70, 3]) + +module.exports = function(buf) { + if (typeof buf === 'string') + return buf.substring(0, 3) === 'BMF' + return buf.length > 4 && equal(buf.slice(0, 4), HEADER) +} +}).call(this,require("buffer").Buffer) +},{"buffer":48,"buffer-equal":49}],221:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +var _resize = _interopRequireDefault(require("./modules/resize")); + +var _resize2 = _interopRequireDefault(require("./modules/resize2")); + +var _default = function _default() { + return { + constants: { + RESIZE_NEAREST_NEIGHBOR: 'nearestNeighbor', + RESIZE_BILINEAR: 'bilinearInterpolation', + RESIZE_BICUBIC: 'bicubicInterpolation', + RESIZE_HERMITE: 'hermiteInterpolation', + RESIZE_BEZIER: 'bezierInterpolation' + }, + "class": { + /** + * Resizes the image to a set width and height using a 2-pass bilinear algorithm + * @param {number} w the width to resize the image to (or Jimp.AUTO) + * @param {number} h the height to resize the image to (or Jimp.AUTO) + * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER) + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + resize: function resize(w, h, mode, cb) { + if (typeof w !== 'number' || typeof h !== 'number') { + return _utils.throwError.call(this, 'w and h must be numbers', cb); + } + + if (typeof mode === 'function' && typeof cb === 'undefined') { + cb = mode; + mode = null; + } + + if (w === this.constructor.AUTO && h === this.constructor.AUTO) { + return _utils.throwError.call(this, 'w and h cannot both be set to auto', cb); + } + + if (w === this.constructor.AUTO) { + w = this.bitmap.width * (h / this.bitmap.height); + } + + if (h === this.constructor.AUTO) { + h = this.bitmap.height * (w / this.bitmap.width); + } + + if (w < 0 || h < 0) { + return _utils.throwError.call(this, 'w and h must be positive numbers', cb); + } // round inputs + + + w = Math.round(w); + h = Math.round(h); + + if (typeof _resize2["default"][mode] === 'function') { + var dst = { + data: Buffer.alloc(w * h * 4), + width: w, + height: h + }; + + _resize2["default"][mode](this.bitmap, dst); + + this.bitmap = dst; + } else { + var image = this; + var resize = new _resize["default"](this.bitmap.width, this.bitmap.height, w, h, true, true, function (buffer) { + image.bitmap.data = Buffer.from(buffer); + image.bitmap.width = w; + image.bitmap.height = h; + }); + resize.resize(this.bitmap.data); + } + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +}).call(this,require("buffer").Buffer) +},{"./modules/resize":222,"./modules/resize2":223,"@babel/runtime/helpers/interopRequireDefault":11,"@jimp/utils":235,"buffer":48}],222:[function(require,module,exports){ +"use strict"; + +// JavaScript Image Resizer (c) 2012 - Grant Galitz +// Released to public domain 29 July 2013: https://github.com/grantgalitz/JS-Image-Resizer/issues/4 +function Resize(widthOriginal, heightOriginal, targetWidth, targetHeight, blendAlpha, interpolationPass, resizeCallback) { + this.widthOriginal = Math.abs(Math.floor(widthOriginal) || 0); + this.heightOriginal = Math.abs(Math.floor(heightOriginal) || 0); + this.targetWidth = Math.abs(Math.floor(targetWidth) || 0); + this.targetHeight = Math.abs(Math.floor(targetHeight) || 0); + this.colorChannels = blendAlpha ? 4 : 3; + this.interpolationPass = Boolean(interpolationPass); + this.resizeCallback = typeof resizeCallback === 'function' ? resizeCallback : function () {}; + this.targetWidthMultipliedByChannels = this.targetWidth * this.colorChannels; + this.originalWidthMultipliedByChannels = this.widthOriginal * this.colorChannels; + this.originalHeightMultipliedByChannels = this.heightOriginal * this.colorChannels; + this.widthPassResultSize = this.targetWidthMultipliedByChannels * this.heightOriginal; + this.finalResultSize = this.targetWidthMultipliedByChannels * this.targetHeight; + this.initialize(); +} + +Resize.prototype.initialize = function () { + // Perform some checks: + if (this.widthOriginal > 0 && this.heightOriginal > 0 && this.targetWidth > 0 && this.targetHeight > 0) { + this.configurePasses(); + } else { + throw new Error('Invalid settings specified for the resizer.'); + } +}; + +Resize.prototype.configurePasses = function () { + if (this.widthOriginal === this.targetWidth) { + // Bypass the width resizer pass: + this.resizeWidth = this.bypassResizer; + } else { + // Setup the width resizer pass: + this.ratioWeightWidthPass = this.widthOriginal / this.targetWidth; + + if (this.ratioWeightWidthPass < 1 && this.interpolationPass) { + this.initializeFirstPassBuffers(true); + this.resizeWidth = this.colorChannels === 4 ? this.resizeWidthInterpolatedRGBA : this.resizeWidthInterpolatedRGB; + } else { + this.initializeFirstPassBuffers(false); + this.resizeWidth = this.colorChannels === 4 ? this.resizeWidthRGBA : this.resizeWidthRGB; + } + } + + if (this.heightOriginal === this.targetHeight) { + // Bypass the height resizer pass: + this.resizeHeight = this.bypassResizer; + } else { + // Setup the height resizer pass: + this.ratioWeightHeightPass = this.heightOriginal / this.targetHeight; + + if (this.ratioWeightHeightPass < 1 && this.interpolationPass) { + this.initializeSecondPassBuffers(true); + this.resizeHeight = this.resizeHeightInterpolated; + } else { + this.initializeSecondPassBuffers(false); + this.resizeHeight = this.colorChannels === 4 ? this.resizeHeightRGBA : this.resizeHeightRGB; + } + } +}; + +Resize.prototype._resizeWidthInterpolatedRGBChannels = function (buffer, fourthChannel) { + var channelsNum = fourthChannel ? 4 : 3; + var ratioWeight = this.ratioWeightWidthPass; + var outputBuffer = this.widthBuffer; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var firstWeight = 0; + var secondWeight = 0; + var targetPosition; // Handle for only one interpolation input being valid for start calculation: + + for (targetPosition = 0; weight < 1 / 3; targetPosition += channelsNum, weight += ratioWeight) { + for (finalOffset = targetPosition, pixelOffset = 0; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = buffer[pixelOffset]; + outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1]; + outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2]; + if (fourthChannel) outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3]; + } + } // Adjust for overshoot of the last pass's counter: + + + weight -= 1 / 3; + var interpolationWidthSourceReadStop; + + for (interpolationWidthSourceReadStop = this.widthOriginal - 1; weight < interpolationWidthSourceReadStop; targetPosition += channelsNum, weight += ratioWeight) { + // Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; // Interpolate: + + for (finalOffset = targetPosition, pixelOffset = Math.floor(weight) * channelsNum; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset + 0] = buffer[pixelOffset + 0] * firstWeight + buffer[pixelOffset + channelsNum + 0] * secondWeight; + outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1] * firstWeight + buffer[pixelOffset + channelsNum + 1] * secondWeight; + outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2] * firstWeight + buffer[pixelOffset + channelsNum + 2] * secondWeight; + if (fourthChannel) outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3] * firstWeight + buffer[pixelOffset + channelsNum + 3] * secondWeight; + } + } // Handle for only one interpolation input being valid for end calculation: + + + for (interpolationWidthSourceReadStop = this.originalWidthMultipliedByChannels - channelsNum; targetPosition < this.targetWidthMultipliedByChannels; targetPosition += channelsNum) { + for (finalOffset = targetPosition, pixelOffset = interpolationWidthSourceReadStop; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) { + outputBuffer[finalOffset] = buffer[pixelOffset]; + outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1]; + outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2]; + if (fourthChannel) outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3]; + } + } + + return outputBuffer; +}; + +Resize.prototype._resizeWidthRGBChannels = function (buffer, fourthChannel) { + var channelsNum = fourthChannel ? 4 : 3; + var ratioWeight = this.ratioWeightWidthPass; + var ratioWeightDivisor = 1 / ratioWeight; + var nextLineOffsetOriginalWidth = this.originalWidthMultipliedByChannels - channelsNum + 1; + var nextLineOffsetTargetWidth = this.targetWidthMultipliedByChannels - channelsNum + 1; + var output = this.outputWidthWorkBench; + var outputBuffer = this.widthBuffer; + var trustworthyColorsCount = this.outputWidthWorkBenchOpaquePixelsCount; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var line = 0; + var pixelOffset = 0; + var outputOffset = 0; + var multiplier = 1; + var r = 0; + var g = 0; + var b = 0; + var a = 0; + + do { + for (line = 0; line < this.originalHeightMultipliedByChannels;) { + output[line++] = 0; + output[line++] = 0; + output[line++] = 0; + + if (fourthChannel) { + output[line++] = 0; + trustworthyColorsCount[line / channelsNum - 1] = 0; + } + } + + weight = ratioWeight; + + do { + amountToNext = 1 + actualPosition - currentPosition; + multiplier = Math.min(weight, amountToNext); + + for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) { + r = buffer[pixelOffset]; + g = buffer[++pixelOffset]; + b = buffer[++pixelOffset]; + a = fourthChannel ? buffer[++pixelOffset] : 255; // Ignore RGB values if pixel is completely transparent + + output[line++] += (a ? r : 0) * multiplier; + output[line++] += (a ? g : 0) * multiplier; + output[line++] += (a ? b : 0) * multiplier; + + if (fourthChannel) { + output[line++] += a * multiplier; + trustworthyColorsCount[line / channelsNum - 1] += a ? multiplier : 0; + } + } + + if (weight >= amountToNext) { + actualPosition += channelsNum; + currentPosition = actualPosition; + weight -= amountToNext; + } else { + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.originalWidthMultipliedByChannels); + + for (line = 0, pixelOffset = outputOffset; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetTargetWidth) { + weight = fourthChannel ? trustworthyColorsCount[line / channelsNum] : 1; + multiplier = fourthChannel ? weight ? 1 / weight : 0 : ratioWeightDivisor; + outputBuffer[pixelOffset] = output[line++] * multiplier; + outputBuffer[++pixelOffset] = output[line++] * multiplier; + outputBuffer[++pixelOffset] = output[line++] * multiplier; + if (fourthChannel) outputBuffer[++pixelOffset] = output[line++] * ratioWeightDivisor; + } + + outputOffset += channelsNum; + } while (outputOffset < this.targetWidthMultipliedByChannels); + + return outputBuffer; +}; + +Resize.prototype._resizeHeightRGBChannels = function (buffer, fourthChannel) { + var ratioWeight = this.ratioWeightHeightPass; + var ratioWeightDivisor = 1 / ratioWeight; + var output = this.outputHeightWorkBench; + var outputBuffer = this.heightBuffer; + var trustworthyColorsCount = this.outputHeightWorkBenchOpaquePixelsCount; + var weight = 0; + var amountToNext = 0; + var actualPosition = 0; + var currentPosition = 0; + var pixelOffset = 0; + var outputOffset = 0; + var caret = 0; + var multiplier = 1; + var r = 0; + var g = 0; + var b = 0; + var a = 0; + + do { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + output[pixelOffset++] = 0; + + if (fourthChannel) { + output[pixelOffset++] = 0; + trustworthyColorsCount[pixelOffset / 4 - 1] = 0; + } + } + + weight = ratioWeight; + + do { + amountToNext = 1 + actualPosition - currentPosition; + multiplier = Math.min(weight, amountToNext); + caret = actualPosition; + + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + r = buffer[caret++]; + g = buffer[caret++]; + b = buffer[caret++]; + a = fourthChannel ? buffer[caret++] : 255; // Ignore RGB values if pixel is completely transparent + + output[pixelOffset++] += (a ? r : 0) * multiplier; + output[pixelOffset++] += (a ? g : 0) * multiplier; + output[pixelOffset++] += (a ? b : 0) * multiplier; + + if (fourthChannel) { + output[pixelOffset++] += a * multiplier; + trustworthyColorsCount[pixelOffset / 4 - 1] += a ? multiplier : 0; + } + } + + if (weight >= amountToNext) { + actualPosition = caret; + currentPosition = actualPosition; + weight -= amountToNext; + } else { + currentPosition += weight; + break; + } + } while (weight > 0 && actualPosition < this.widthPassResultSize); + + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + weight = fourthChannel ? trustworthyColorsCount[pixelOffset / 4] : 1; + multiplier = fourthChannel ? weight ? 1 / weight : 0 : ratioWeightDivisor; + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * multiplier); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * multiplier); + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * multiplier); + + if (fourthChannel) { + outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor); + } + } + } while (outputOffset < this.finalResultSize); + + return outputBuffer; +}; + +Resize.prototype.resizeWidthInterpolatedRGB = function (buffer) { + return this._resizeWidthInterpolatedRGBChannels(buffer, false); +}; + +Resize.prototype.resizeWidthInterpolatedRGBA = function (buffer) { + return this._resizeWidthInterpolatedRGBChannels(buffer, true); +}; + +Resize.prototype.resizeWidthRGB = function (buffer) { + return this._resizeWidthRGBChannels(buffer, false); +}; + +Resize.prototype.resizeWidthRGBA = function (buffer) { + return this._resizeWidthRGBChannels(buffer, true); +}; + +Resize.prototype.resizeHeightInterpolated = function (buffer) { + var ratioWeight = this.ratioWeightHeightPass; + var outputBuffer = this.heightBuffer; + var weight = 0; + var finalOffset = 0; + var pixelOffset = 0; + var pixelOffsetAccumulated = 0; + var pixelOffsetAccumulated2 = 0; + var firstWeight = 0; + var secondWeight = 0; + var interpolationHeightSourceReadStop; // Handle for only one interpolation input being valid for start calculation: + + for (; weight < 1 / 3; weight += ratioWeight) { + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) { + outputBuffer[finalOffset++] = Math.round(buffer[pixelOffset++]); + } + } // Adjust for overshoot of the last pass's counter: + + + weight -= 1 / 3; + + for (interpolationHeightSourceReadStop = this.heightOriginal - 1; weight < interpolationHeightSourceReadStop; weight += ratioWeight) { + // Calculate weightings: + secondWeight = weight % 1; + firstWeight = 1 - secondWeight; // Interpolate: + + pixelOffsetAccumulated = Math.floor(weight) * this.targetWidthMultipliedByChannels; + pixelOffsetAccumulated2 = pixelOffsetAccumulated + this.targetWidthMultipliedByChannels; + + for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels; ++pixelOffset) { + outputBuffer[finalOffset++] = Math.round(buffer[pixelOffsetAccumulated++] * firstWeight + buffer[pixelOffsetAccumulated2++] * secondWeight); + } + } // Handle for only one interpolation input being valid for end calculation: + + + while (finalOffset < this.finalResultSize) { + for (pixelOffset = 0, pixelOffsetAccumulated = interpolationHeightSourceReadStop * this.targetWidthMultipliedByChannels; pixelOffset < this.targetWidthMultipliedByChannels; ++pixelOffset) { + outputBuffer[finalOffset++] = Math.round(buffer[pixelOffsetAccumulated++]); + } + } + + return outputBuffer; +}; + +Resize.prototype.resizeHeightRGB = function (buffer) { + return this._resizeHeightRGBChannels(buffer, false); +}; + +Resize.prototype.resizeHeightRGBA = function (buffer) { + return this._resizeHeightRGBChannels(buffer, true); +}; + +Resize.prototype.resize = function (buffer) { + this.resizeCallback(this.resizeHeight(this.resizeWidth(buffer))); +}; + +Resize.prototype.bypassResizer = function (buffer) { + // Just return the buffer passed: + return buffer; +}; + +Resize.prototype.initializeFirstPassBuffers = function (BILINEARAlgo) { + // Initialize the internal width pass buffers: + this.widthBuffer = this.generateFloatBuffer(this.widthPassResultSize); + + if (!BILINEARAlgo) { + this.outputWidthWorkBench = this.generateFloatBuffer(this.originalHeightMultipliedByChannels); + + if (this.colorChannels > 3) { + this.outputWidthWorkBenchOpaquePixelsCount = this.generateFloat64Buffer(this.heightOriginal); + } + } +}; + +Resize.prototype.initializeSecondPassBuffers = function (BILINEARAlgo) { + // Initialize the internal height pass buffers: + this.heightBuffer = this.generateUint8Buffer(this.finalResultSize); + + if (!BILINEARAlgo) { + this.outputHeightWorkBench = this.generateFloatBuffer(this.targetWidthMultipliedByChannels); + + if (this.colorChannels > 3) { + this.outputHeightWorkBenchOpaquePixelsCount = this.generateFloat64Buffer(this.targetWidth); + } + } +}; + +Resize.prototype.generateFloatBuffer = function (bufferLength) { + // Generate a float32 typed array buffer: + try { + return new Float32Array(bufferLength); + } catch (error) { + return []; + } +}; + +Resize.prototype.generateFloat64Buffer = function (bufferLength) { + // Generate a float64 typed array buffer: + try { + return new Float64Array(bufferLength); + } catch (error) { + return []; + } +}; + +Resize.prototype.generateUint8Buffer = function (bufferLength) { + // Generate a uint8 typed array buffer: + try { + return new Uint8Array(bufferLength); + } catch (error) { + return []; + } +}; + +module.exports = Resize; + +},{}],223:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +/** + * Copyright (c) 2015 Guyon Roche + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +module.exports = { + nearestNeighbor: function nearestNeighbor(src, dst) { + var wSrc = src.width; + var hSrc = src.height; + var wDst = dst.width; + var hDst = dst.height; + var bufSrc = src.data; + var bufDst = dst.data; + + for (var i = 0; i < hDst; i++) { + for (var j = 0; j < wDst; j++) { + var posDst = (i * wDst + j) * 4; + var iSrc = Math.floor(i * hSrc / hDst); + var jSrc = Math.floor(j * wSrc / wDst); + var posSrc = (iSrc * wSrc + jSrc) * 4; + bufDst[posDst++] = bufSrc[posSrc++]; + bufDst[posDst++] = bufSrc[posSrc++]; + bufDst[posDst++] = bufSrc[posSrc++]; + bufDst[posDst++] = bufSrc[posSrc++]; + } + } + }, + bilinearInterpolation: function bilinearInterpolation(src, dst) { + var wSrc = src.width; + var hSrc = src.height; + var wDst = dst.width; + var hDst = dst.height; + var bufSrc = src.data; + var bufDst = dst.data; + + var interpolate = function interpolate(k, kMin, vMin, kMax, vMax) { + // special case - k is integer + if (kMin === kMax) { + return vMin; + } + + return Math.round((k - kMin) * vMax + (kMax - k) * vMin); + }; + + var assign = function assign(pos, offset, x, xMin, xMax, y, yMin, yMax) { + var posMin = (yMin * wSrc + xMin) * 4 + offset; + var posMax = (yMin * wSrc + xMax) * 4 + offset; + var vMin = interpolate(x, xMin, bufSrc[posMin], xMax, bufSrc[posMax]); // special case, y is integer + + if (yMax === yMin) { + bufDst[pos + offset] = vMin; + } else { + posMin = (yMax * wSrc + xMin) * 4 + offset; + posMax = (yMax * wSrc + xMax) * 4 + offset; + var vMax = interpolate(x, xMin, bufSrc[posMin], xMax, bufSrc[posMax]); + bufDst[pos + offset] = interpolate(y, yMin, vMin, yMax, vMax); + } + }; + + for (var i = 0; i < hDst; i++) { + for (var j = 0; j < wDst; j++) { + var posDst = (i * wDst + j) * 4; // x & y in src coordinates + + var x = j * wSrc / wDst; + var xMin = Math.floor(x); + var xMax = Math.min(Math.ceil(x), wSrc - 1); + var y = i * hSrc / hDst; + var yMin = Math.floor(y); + var yMax = Math.min(Math.ceil(y), hSrc - 1); + assign(posDst, 0, x, xMin, xMax, y, yMin, yMax); + assign(posDst, 1, x, xMin, xMax, y, yMin, yMax); + assign(posDst, 2, x, xMin, xMax, y, yMin, yMax); + assign(posDst, 3, x, xMin, xMax, y, yMin, yMax); + } + } + }, + _interpolate2D: function _interpolate2D(src, dst, options, interpolate) { + var bufSrc = src.data; + var bufDst = dst.data; + var wSrc = src.width; + var hSrc = src.height; + var wDst = dst.width; + var hDst = dst.height; // when dst smaller than src/2, interpolate first to a multiple between 0.5 and 1.0 src, then sum squares + + var wM = Math.max(1, Math.floor(wSrc / wDst)); + var wDst2 = wDst * wM; + var hM = Math.max(1, Math.floor(hSrc / hDst)); + var hDst2 = hDst * hM; // =========================================================== + // Pass 1 - interpolate rows + // buf1 has width of dst2 and height of src + + var buf1 = Buffer.alloc(wDst2 * hSrc * 4); + + for (var i = 0; i < hSrc; i++) { + for (var j = 0; j < wDst2; j++) { + // i in src coords, j in dst coords + // calculate x in src coords + // this interpolation requires 4 sample points and the two inner ones must be real + // the outer points can be fudged for the edges. + // therefore (wSrc-1)/wDst2 + var x = j * (wSrc - 1) / wDst2; + var xPos = Math.floor(x); + var t = x - xPos; + var srcPos = (i * wSrc + xPos) * 4; + var buf1Pos = (i * wDst2 + j) * 4; + + for (var k = 0; k < 4; k++) { + var kPos = srcPos + k; + var x0 = xPos > 0 ? bufSrc[kPos - 4] : 2 * bufSrc[kPos] - bufSrc[kPos + 4]; + var x1 = bufSrc[kPos]; + var x2 = bufSrc[kPos + 4]; + var x3 = xPos < wSrc - 2 ? bufSrc[kPos + 8] : 2 * bufSrc[kPos + 4] - bufSrc[kPos]; + buf1[buf1Pos + k] = interpolate(x0, x1, x2, x3, t); + } + } + } // this._writeFile(wDst2, hSrc, buf1, "out/buf1.jpg"); + // =========================================================== + // Pass 2 - interpolate columns + // buf2 has width and height of dst2 + + + var buf2 = Buffer.alloc(wDst2 * hDst2 * 4); + + for (var _i = 0; _i < hDst2; _i++) { + for (var _j = 0; _j < wDst2; _j++) { + // i&j in dst2 coords + // calculate y in buf1 coords + // this interpolation requires 4 sample points and the two inner ones must be real + // the outer points can be fudged for the edges. + // therefore (hSrc-1)/hDst2 + var y = _i * (hSrc - 1) / hDst2; + var yPos = Math.floor(y); + + var _t = y - yPos; + + var _buf1Pos = (yPos * wDst2 + _j) * 4; + + var buf2Pos = (_i * wDst2 + _j) * 4; + + for (var _k = 0; _k < 4; _k++) { + var _kPos = _buf1Pos + _k; + + var y0 = yPos > 0 ? buf1[_kPos - wDst2 * 4] : 2 * buf1[_kPos] - buf1[_kPos + wDst2 * 4]; + var y1 = buf1[_kPos]; + var y2 = buf1[_kPos + wDst2 * 4]; + var y3 = yPos < hSrc - 2 ? buf1[_kPos + wDst2 * 8] : 2 * buf1[_kPos + wDst2 * 4] - buf1[_kPos]; + buf2[buf2Pos + _k] = interpolate(y0, y1, y2, y3, _t); + } + } + } // this._writeFile(wDst2, hDst2, buf2, "out/buf2.jpg"); + // =========================================================== + // Pass 3 - scale to dst + + + var m = wM * hM; + + if (m > 1) { + for (var _i2 = 0; _i2 < hDst; _i2++) { + for (var _j2 = 0; _j2 < wDst; _j2++) { + // i&j in dst bounded coords + var r = 0; + var g = 0; + var b = 0; + var a = 0; + var realColors = 0; + + for (var _y = 0; _y < hM; _y++) { + var _yPos = _i2 * hM + _y; + + for (var _x = 0; _x < wM; _x++) { + var _xPos = _j2 * wM + _x; + + var xyPos = (_yPos * wDst2 + _xPos) * 4; + var pixelAlpha = buf2[xyPos + 3]; + + if (pixelAlpha) { + r += buf2[xyPos]; + g += buf2[xyPos + 1]; + b += buf2[xyPos + 2]; + realColors++; + } + + a += pixelAlpha; + } + } + + var pos = (_i2 * wDst + _j2) * 4; + bufDst[pos] = realColors ? Math.round(r / realColors) : 0; + bufDst[pos + 1] = realColors ? Math.round(g / realColors) : 0; + bufDst[pos + 2] = realColors ? Math.round(b / realColors) : 0; + bufDst[pos + 3] = Math.round(a / m); + } + } + } else { + // replace dst buffer with buf2 + dst.data = buf2; + } + }, + bicubicInterpolation: function bicubicInterpolation(src, dst, options) { + var interpolateCubic = function interpolateCubic(x0, x1, x2, x3, t) { + var a0 = x3 - x2 - x0 + x1; + var a1 = x0 - x1 - a0; + var a2 = x2 - x0; + var a3 = x1; + return Math.max(0, Math.min(255, a0 * (t * t * t) + a1 * (t * t) + a2 * t + a3)); + }; + + return this._interpolate2D(src, dst, options, interpolateCubic); + }, + hermiteInterpolation: function hermiteInterpolation(src, dst, options) { + var interpolateHermite = function interpolateHermite(x0, x1, x2, x3, t) { + var c0 = x1; + var c1 = 0.5 * (x2 - x0); + var c2 = x0 - 2.5 * x1 + 2 * x2 - 0.5 * x3; + var c3 = 0.5 * (x3 - x0) + 1.5 * (x1 - x2); + return Math.max(0, Math.min(255, Math.round(((c3 * t + c2) * t + c1) * t + c0))); + }; + + return this._interpolate2D(src, dst, options, interpolateHermite); + }, + bezierInterpolation: function bezierInterpolation(src, dst, options) { + // between 2 points y(n), y(n+1), use next points out, y(n-1), y(n+2) + // to predict control points (a & b) to be placed at n+0.5 + // ya(n) = y(n) + (y(n+1)-y(n-1))/4 + // yb(n) = y(n+1) - (y(n+2)-y(n))/4 + // then use std bezier to interpolate [n,n+1) + // y(n+t) = y(n)*(1-t)^3 + 3 * ya(n)*(1-t)^2*t + 3 * yb(n)*(1-t)*t^2 + y(n+1)*t^3 + // note the 3* factor for the two control points + // for edge cases, can choose: + // y(-1) = y(0) - 2*(y(1)-y(0)) + // y(w) = y(w-1) + 2*(y(w-1)-y(w-2)) + // but can go with y(-1) = y(0) and y(w) = y(w-1) + var interpolateBezier = function interpolateBezier(x0, x1, x2, x3, t) { + // x1, x2 are the knots, use x0 and x3 to calculate control points + var cp1 = x1 + (x2 - x0) / 4; + var cp2 = x2 - (x3 - x1) / 4; + var nt = 1 - t; + var c0 = x1 * nt * nt * nt; + var c1 = 3 * cp1 * nt * nt * t; + var c2 = 3 * cp2 * nt * t * t; + var c3 = x2 * t * t * t; + return Math.max(0, Math.min(255, Math.round(c0 + c1 + c2 + c3))); + }; + + return this._interpolate2D(src, dst, options, interpolateBezier); + } +}; + +}).call(this,require("buffer").Buffer) +},{"buffer":48}],224:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Rotates an image clockwise by an arbitrary number of degrees. NB: 'this' must be a Jimp object. + * @param {number} deg the number of degrees to rotate the image by + * @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed + */ +function advancedRotate(deg, mode) { + deg %= 360; + var rad = deg * Math.PI / 180; + var cosine = Math.cos(rad); + var sine = Math.sin(rad); // the final width and height will change if resize == true + + var w = this.bitmap.width; + var h = this.bitmap.height; + + if (mode === true || typeof mode === 'string') { + // resize the image to it maximum dimension and blit the existing image + // onto the center so that when it is rotated the image is kept in bounds + // http://stackoverflow.com/questions/3231176/how-to-get-size-of-a-rotated-rectangle + // Plus 1 border pixel to ensure to show all rotated result for some cases. + w = Math.ceil(Math.abs(this.bitmap.width * cosine) + Math.abs(this.bitmap.height * sine)) + 1; + h = Math.ceil(Math.abs(this.bitmap.width * sine) + Math.abs(this.bitmap.height * cosine)) + 1; // Ensure destination to have even size to a better result. + + if (w % 2 !== 0) { + w++; + } + + if (h % 2 !== 0) { + h++; + } + + var c = this.cloneQuiet(); + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + this.bitmap.data.writeUInt32BE(this._background, idx); + }); + var max = Math.max(w, h, this.bitmap.width, this.bitmap.height); + this.resize(max, max, mode); + this.blit(c, this.bitmap.width / 2 - c.bitmap.width / 2, this.bitmap.height / 2 - c.bitmap.height / 2); + } + + var bW = this.bitmap.width; + var bH = this.bitmap.height; + var dstBuffer = Buffer.alloc(this.bitmap.data.length); + + function createTranslationFunction(deltaX, deltaY) { + return function (x, y) { + return { + x: x + deltaX, + y: y + deltaY + }; + }; + } + + var translate2Cartesian = createTranslationFunction(-(bW / 2), -(bH / 2)); + var translate2Screen = createTranslationFunction(bW / 2 + 0.5, bH / 2 + 0.5); + + for (var y = 1; y <= bH; y++) { + for (var x = 1; x <= bW; x++) { + var cartesian = translate2Cartesian(x, y); + var source = translate2Screen(cosine * cartesian.x - sine * cartesian.y, cosine * cartesian.y + sine * cartesian.x); + var dstIdx = bW * (y - 1) + x - 1 << 2; + + if (source.x >= 0 && source.x < bW && source.y >= 0 && source.y < bH) { + var srcIdx = (bW * (source.y | 0) + source.x | 0) << 2; + var pixelRGBA = this.bitmap.data.readUInt32BE(srcIdx); + dstBuffer.writeUInt32BE(pixelRGBA, dstIdx); + } else { + // reset off-image pixels + dstBuffer.writeUInt32BE(this._background, dstIdx); + } + } + } + + this.bitmap.data = dstBuffer; + + if (mode === true || typeof mode === 'string') { + // now crop the image to the final size + var _x = bW / 2 - w / 2; + + var _y = bH / 2 - h / 2; + + this.crop(_x, _y, w, h); + } +} + +var _default = function _default() { + return { + /** + * Rotates the image clockwise by a number of degrees. By default the width and height of the image will be resized appropriately. + * @param {number} deg the number of degrees to rotate the image by + * @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + rotate: function rotate(deg, mode, cb) { + // enable overloading + if (typeof mode === 'undefined' || mode === null) { + // e.g. image.resize(120); + // e.g. image.resize(120, null, cb); + // e.g. image.resize(120, undefined, cb); + mode = true; + } + + if (typeof mode === 'function' && typeof cb === 'undefined') { + // e.g. image.resize(120, cb); + cb = mode; + mode = true; + } + + if (typeof deg !== 'number') { + return _utils.throwError.call(this, 'deg must be a number', cb); + } + + if (typeof mode !== 'boolean' && typeof mode !== 'string') { + return _utils.throwError.call(this, 'mode must be a boolean or a string', cb); + } + + advancedRotate.call(this, deg, mode, cb); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +}).call(this,require("buffer").Buffer) +},{"@jimp/utils":235,"buffer":48}],225:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +var _default = function _default() { + return { + /** + * Uniformly scales the image by a factor. + * @param {number} f the factor to scale the image by + * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER) + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + scale: function scale(f, mode, cb) { + if (typeof f !== 'number') { + return _utils.throwError.call(this, 'f must be a number', cb); + } + + if (f < 0) { + return _utils.throwError.call(this, 'f must be a positive number', cb); + } + + if (typeof mode === 'function' && typeof cb === 'undefined') { + cb = mode; + mode = null; + } + + var w = this.bitmap.width * f; + var h = this.bitmap.height * f; + this.resize(w, h, mode); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Scale the image to the largest size that fits inside the rectangle that has the given width and height. + * @param {number} w the width to resize the image to + * @param {number} h the height to resize the image to + * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER) + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + scaleToFit: function scaleToFit(w, h, mode, cb) { + if (typeof w !== 'number' || typeof h !== 'number') { + return _utils.throwError.call(this, 'w and h must be numbers', cb); + } + + if (typeof mode === 'function' && typeof cb === 'undefined') { + cb = mode; + mode = null; + } + + var f = w / h > this.bitmap.width / this.bitmap.height ? h / this.bitmap.height : w / this.bitmap.width; + this.scale(f, mode); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],226:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Creates a circle out of an image. + * @param {function(Error, Jimp)} options (optional) + * opacity - opacity of the shadow between 0 and 1 + * size,- of the shadow + * blur - how blurry the shadow is + * x- x position of shadow + * y - y position of shadow + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ +var _default = function _default() { + return { + shadow: function shadow() { + var _this = this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var cb = arguments.length > 1 ? arguments[1] : undefined; + + if (typeof options === 'function') { + cb = options; + options = {}; + } + + var _options = options, + _options$opacity = _options.opacity, + opacity = _options$opacity === void 0 ? 0.7 : _options$opacity, + _options$size = _options.size, + size = _options$size === void 0 ? 1.1 : _options$size, + _options$x = _options.x, + x = _options$x === void 0 ? -25 : _options$x, + _options$y = _options.y, + y = _options$y === void 0 ? 25 : _options$y, + _options$blur = _options.blur, + blur = _options$blur === void 0 ? 5 : _options$blur; // clone the image + + var orig = this.clone(); + var shadow = this.clone(); // turn all it's pixels black + + shadow.scan(0, 0, shadow.bitmap.width, shadow.bitmap.height, function (x, y, idx) { + shadow.bitmap.data[idx] = 0x00; + shadow.bitmap.data[idx + 1] = 0x00; + shadow.bitmap.data[idx + 2] = 0x00; // up the opacity a little, + + shadow.bitmap.data[idx + 3] = shadow.constructor.limit255(shadow.bitmap.data[idx + 3] * opacity); + _this.bitmap.data[idx] = 0x00; + _this.bitmap.data[idx + 1] = 0x00; + _this.bitmap.data[idx + 2] = 0x00; + _this.bitmap.data[idx + 3] = 0x00; + }); // enlarge it. This creates a "shadow". + + shadow.resize(shadow.bitmap.width * size, shadow.bitmap.height * size).blur(blur); // Then blit the "shadow" onto the background and the image on top of that. + + this.composite(shadow, x, y); + this.composite(orig, 0, 0); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],227:[function(require,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _utils = require("@jimp/utils"); + +/** + * Applies a minimum color threshold to a greyscale image. Converts image to greyscale by default + * @param {number} options object + * max: A number auto limited between 0 - 255 + * replace: (optional) A number auto limited between 0 - 255 (default 255) + * autoGreyscale: (optional) A boolean whether to apply greyscale beforehand (default true) + * @param {number} cb (optional) a callback for when complete + * @return {this} this for chaining of methods + */ +var _default = function _default() { + return { + threshold: function threshold(_ref, cb) { + var _this = this; + + var max = _ref.max, + _ref$replace = _ref.replace, + replace = _ref$replace === void 0 ? 255 : _ref$replace, + _ref$autoGreyscale = _ref.autoGreyscale, + autoGreyscale = _ref$autoGreyscale === void 0 ? true : _ref$autoGreyscale; + + if (typeof max !== 'number') { + return _utils.throwError.call(this, 'max must be a number', cb); + } + + if (typeof replace !== 'number') { + return _utils.throwError.call(this, 'replace must be a number', cb); + } + + if (typeof autoGreyscale !== 'boolean') { + return _utils.throwError.call(this, 'autoGreyscale must be a boolean', cb); + } + + max = this.constructor.limit255(max); + replace = this.constructor.limit255(replace); + + if (autoGreyscale) { + this.greyscale(); + } + + this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) { + var grey = _this.bitmap.data[idx] < max ? _this.bitmap.data[idx] : replace; + _this.bitmap.data[idx] = grey; + _this.bitmap.data[idx + 1] = grey; + _this.bitmap.data[idx + 2] = grey; + }); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@jimp/utils":235}],228:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); + +var _timm = require("timm"); + +var _pluginBlit = _interopRequireDefault(require("@jimp/plugin-blit")); + +var _pluginBlur = _interopRequireDefault(require("@jimp/plugin-blur")); + +var _pluginCircle = _interopRequireDefault(require("@jimp/plugin-circle")); + +var _pluginColor = _interopRequireDefault(require("@jimp/plugin-color")); + +var _pluginContain = _interopRequireDefault(require("@jimp/plugin-contain")); + +var _pluginCover = _interopRequireDefault(require("@jimp/plugin-cover")); + +var _pluginCrop = _interopRequireDefault(require("@jimp/plugin-crop")); + +var _pluginDisplace = _interopRequireDefault(require("@jimp/plugin-displace")); + +var _pluginDither = _interopRequireDefault(require("@jimp/plugin-dither")); + +var _pluginFisheye = _interopRequireDefault(require("@jimp/plugin-fisheye")); + +var _pluginFlip = _interopRequireDefault(require("@jimp/plugin-flip")); + +var _pluginGaussian = _interopRequireDefault(require("@jimp/plugin-gaussian")); + +var _pluginInvert = _interopRequireDefault(require("@jimp/plugin-invert")); + +var _pluginMask = _interopRequireDefault(require("@jimp/plugin-mask")); + +var _pluginNormalize = _interopRequireDefault(require("@jimp/plugin-normalize")); + +var _pluginPrint = _interopRequireDefault(require("@jimp/plugin-print")); + +var _pluginResize = _interopRequireDefault(require("@jimp/plugin-resize")); + +var _pluginRotate = _interopRequireDefault(require("@jimp/plugin-rotate")); + +var _pluginScale = _interopRequireDefault(require("@jimp/plugin-scale")); + +var _pluginShadow = _interopRequireDefault(require("@jimp/plugin-shadow")); + +var _pluginThreshold = _interopRequireDefault(require("@jimp/plugin-threshold")); + +var plugins = [_pluginBlit["default"], _pluginBlur["default"], _pluginCircle["default"], _pluginColor["default"], _pluginContain["default"], _pluginCover["default"], _pluginCrop["default"], _pluginDisplace["default"], _pluginDither["default"], _pluginFisheye["default"], _pluginFlip["default"], _pluginGaussian["default"], _pluginInvert["default"], _pluginMask["default"], _pluginNormalize["default"], _pluginPrint["default"], _pluginResize["default"], _pluginRotate["default"], _pluginScale["default"], _pluginShadow["default"], _pluginThreshold["default"]]; + +var _default = function _default(jimpEvChange) { + var initializedPlugins = plugins.map(function (pluginModule) { + var plugin = pluginModule(jimpEvChange) || {}; + + if (!plugin["class"] && !plugin.constants) { + // Default to class function + plugin = { + "class": plugin + }; + } + + return plugin; + }); + return _timm.mergeDeep.apply(void 0, (0, _toConsumableArray2["default"])(initializedPlugins)); +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/helpers/toConsumableArray":20,"@jimp/plugin-blit":201,"@jimp/plugin-blur":203,"@jimp/plugin-circle":204,"@jimp/plugin-color":205,"@jimp/plugin-contain":206,"@jimp/plugin-cover":207,"@jimp/plugin-crop":208,"@jimp/plugin-displace":209,"@jimp/plugin-dither":210,"@jimp/plugin-fisheye":211,"@jimp/plugin-flip":212,"@jimp/plugin-gaussian":213,"@jimp/plugin-invert":214,"@jimp/plugin-mask":215,"@jimp/plugin-normalize":216,"@jimp/plugin-print":217,"@jimp/plugin-resize":221,"@jimp/plugin-rotate":224,"@jimp/plugin-scale":225,"@jimp/plugin-shadow":226,"@jimp/plugin-threshold":227,"timm":177}],229:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); + +var _bmpJs = _interopRequireDefault(require("bmp-js")); + +var _utils = require("@jimp/utils"); + +var MIME_TYPE = 'image/bmp'; +var MIME_TYPE_SECOND = 'image/x-ms-bmp'; + +function toAGBR(image) { + return (0, _utils.scan)(image, 0, 0, image.bitmap.width, image.bitmap.height, function (x, y, index) { + var red = this.bitmap.data[index + 0]; + var green = this.bitmap.data[index + 1]; + var blue = this.bitmap.data[index + 2]; + var alpha = this.bitmap.data[index + 3]; + this.bitmap.data[index + 0] = alpha; + this.bitmap.data[index + 1] = blue; + this.bitmap.data[index + 2] = green; + this.bitmap.data[index + 3] = red; + }).bitmap; +} + +function fromAGBR(bitmap) { + return (0, _utils.scan)({ + bitmap: bitmap + }, 0, 0, bitmap.width, bitmap.height, function (x, y, index) { + var alpha = this.bitmap.data[index + 0]; + var blue = this.bitmap.data[index + 1]; + var green = this.bitmap.data[index + 2]; + var red = this.bitmap.data[index + 3]; + this.bitmap.data[index + 0] = red; + this.bitmap.data[index + 1] = green; + this.bitmap.data[index + 2] = blue; + this.bitmap.data[index + 3] = bitmap.is_with_alpha ? alpha : 0xff; + }).bitmap; +} + +var decode = function decode(data) { + return fromAGBR(_bmpJs["default"].decode(data)); +}; + +var encode = function encode(image) { + return _bmpJs["default"].encode(toAGBR(image)).data; +}; + +var _default = function _default() { + var _decoders, _encoders; + + return { + mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ['bmp']), + constants: { + MIME_BMP: MIME_TYPE, + MIME_X_MS_BMP: MIME_TYPE_SECOND + }, + decoders: (_decoders = {}, (0, _defineProperty2["default"])(_decoders, MIME_TYPE, decode), (0, _defineProperty2["default"])(_decoders, MIME_TYPE_SECOND, decode), _decoders), + encoders: (_encoders = {}, (0, _defineProperty2["default"])(_encoders, MIME_TYPE, encode), (0, _defineProperty2["default"])(_encoders, MIME_TYPE_SECOND, encode), _encoders) + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@babel/runtime/helpers/defineProperty":7,"@babel/runtime/helpers/interopRequireDefault":11,"@jimp/utils":235,"bmp-js":30}],230:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); + +var _omggif = _interopRequireDefault(require("omggif")); + +var _gifwrap = require("gifwrap"); + +var MIME_TYPE = 'image/gif'; + +var _default = function _default() { + return { + mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ['gif']), + constants: { + MIME_GIF: MIME_TYPE + }, + decoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (data) { + var gifObj = new _omggif["default"].GifReader(data); + var gifData = Buffer.alloc(gifObj.width * gifObj.height * 4); + gifObj.decodeAndBlitFrameRGBA(0, gifData); + return { + data: gifData, + width: gifObj.width, + height: gifObj.height + }; + }), + encoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (data) { + var bitmap = new _gifwrap.BitmapImage(data.bitmap); + + _gifwrap.GifUtil.quantizeDekker(bitmap, 256); + + var newFrame = new _gifwrap.GifFrame(bitmap); + var gifCodec = new _gifwrap.GifCodec(); + return gifCodec.encodeGif([newFrame], {}).then(function (newGif) { + return newGif.buffer; + }); + }) + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +}).call(this,require("buffer").Buffer) +},{"@babel/runtime/helpers/defineProperty":7,"@babel/runtime/helpers/interopRequireDefault":11,"buffer":48,"gifwrap":70,"omggif":85}],231:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); + +var _jpegJs = _interopRequireDefault(require("jpeg-js")); + +var _utils = require("@jimp/utils"); + +var MIME_TYPE = 'image/jpeg'; + +var _default = function _default() { + return { + mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ['jpeg', 'jpg', 'jpe']), + constants: { + MIME_JPEG: MIME_TYPE + }, + decoders: (0, _defineProperty2["default"])({}, MIME_TYPE, _jpegJs["default"].decode), + encoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (image) { + return _jpegJs["default"].encode(image.bitmap, image._quality).data; + }), + "class": { + // The quality to be used when saving JPEG images + _quality: 100, + + /** + * Sets the quality of the image when saving as JPEG format (default is 100) + * @param {number} n The quality to use 0-100 + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + quality: function quality(n, cb) { + if (typeof n !== 'number') { + return _utils.throwError.call(this, 'n must be a number', cb); + } + + if (n < 0 || n > 100) { + return _utils.throwError.call(this, 'n must be a number 0 - 100', cb); + } + + this._quality = Math.round(n); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@babel/runtime/helpers/defineProperty":7,"@babel/runtime/helpers/interopRequireDefault":11,"@jimp/utils":235,"jpeg-js":80}],232:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); + +var _pngjs = require("pngjs"); + +var _utils = require("@jimp/utils"); + +var MIME_TYPE = 'image/png'; // PNG filter types + +var PNG_FILTER_AUTO = -1; +var PNG_FILTER_NONE = 0; +var PNG_FILTER_SUB = 1; +var PNG_FILTER_UP = 2; +var PNG_FILTER_AVERAGE = 3; +var PNG_FILTER_PATH = 4; + +var _default = function _default() { + return { + mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ['png']), + constants: { + MIME_PNG: MIME_TYPE, + PNG_FILTER_AUTO: PNG_FILTER_AUTO, + PNG_FILTER_NONE: PNG_FILTER_NONE, + PNG_FILTER_SUB: PNG_FILTER_SUB, + PNG_FILTER_UP: PNG_FILTER_UP, + PNG_FILTER_AVERAGE: PNG_FILTER_AVERAGE, + PNG_FILTER_PATH: PNG_FILTER_PATH + }, + hasAlpha: (0, _defineProperty2["default"])({}, MIME_TYPE, true), + decoders: (0, _defineProperty2["default"])({}, MIME_TYPE, _pngjs.PNG.sync.read), + encoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (data) { + var png = new _pngjs.PNG({ + width: data.bitmap.width, + height: data.bitmap.height + }); + png.data = data.bitmap.data; + return _pngjs.PNG.sync.write(png, { + width: data.bitmap.width, + height: data.bitmap.height, + deflateLevel: data._deflateLevel, + deflateStrategy: data._deflateStrategy, + filterType: data._filterType, + colorType: typeof data._colorType === 'number' ? data._colorType : data._rgba ? 6 : 2, + inputHasAlpha: data._rgba + }); + }), + "class": { + _deflateLevel: 9, + _deflateStrategy: 3, + _filterType: PNG_FILTER_AUTO, + _colorType: null, + + /** + * Sets the deflate level used when saving as PNG format (default is 9) + * @param {number} l Deflate level to use 0-9. 0 is no compression. 9 (default) is maximum compression. + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + deflateLevel: function deflateLevel(l, cb) { + if (typeof l !== 'number') { + return _utils.throwError.call(this, 'l must be a number', cb); + } + + if (l < 0 || l > 9) { + return _utils.throwError.call(this, 'l must be a number 0 - 9', cb); + } + + this._deflateLevel = Math.round(l); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Sets the deflate strategy used when saving as PNG format (default is 3) + * @param {number} s Deflate strategy to use 0-3. + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + deflateStrategy: function deflateStrategy(s, cb) { + if (typeof s !== 'number') { + return _utils.throwError.call(this, 's must be a number', cb); + } + + if (s < 0 || s > 3) { + return _utils.throwError.call(this, 's must be a number 0 - 3', cb); + } + + this._deflateStrategy = Math.round(s); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Sets the filter type used when saving as PNG format (default is automatic filters) + * @param {number} f The quality to use -1-4. + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + filterType: function filterType(f, cb) { + if (typeof f !== 'number') { + return _utils.throwError.call(this, 'n must be a number', cb); + } + + if (f < -1 || f > 4) { + return _utils.throwError.call(this, 'n must be -1 (auto) or a number 0 - 4', cb); + } + + this._filterType = Math.round(f); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + }, + + /** + * Sets the color type used when saving as PNG format + * @param {number} s color type to use 0, 2, 4, 6. + * @param {function(Error, Jimp)} cb (optional) a callback for when complete + * @returns {Jimp} this for chaining of methods + */ + colorType: function colorType(s, cb) { + if (typeof s !== 'number') { + return _utils.throwError.call(this, 's must be a number', cb); + } + + if (s !== 0 && s !== 2 && s !== 4 && s !== 6) { + return _utils.throwError.call(this, 's must be a number 0, 2, 4, 6.', cb); + } + + this._colorType = Math.round(s); + + if ((0, _utils.isNodePattern)(cb)) { + cb.call(this, null, this); + } + + return this; + } + } + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@babel/runtime/helpers/defineProperty":7,"@babel/runtime/helpers/interopRequireDefault":11,"@jimp/utils":235,"pngjs":129}],233:[function(require,module,exports){ +(function (Buffer){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); + +var _utif = _interopRequireDefault(require("utif")); + +var MIME_TYPE = 'image/tiff'; + +var _default = function _default() { + return { + mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ['tiff', 'tif']), + constants: { + MIME_TIFF: MIME_TYPE + }, + decoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (data) { + var ifds = _utif["default"].decode(data); + + var page = ifds[0]; + + _utif["default"].decodeImages(data, ifds); + + var rgba = _utif["default"].toRGBA8(page); + + return { + data: Buffer.from(rgba), + width: page.t256[0], + height: page.t257[0] + }; + }), + encoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (image) { + var tiff = _utif["default"].encodeImage(image.bitmap.data, image.bitmap.width, image.bitmap.height); + + return Buffer.from(tiff); + }) + }; +}; + +exports["default"] = _default; +module.exports = exports.default; + +}).call(this,require("buffer").Buffer) +},{"@babel/runtime/helpers/defineProperty":7,"@babel/runtime/helpers/interopRequireDefault":11,"buffer":48,"utif":182}],234:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _timm = require("timm"); + +var _jpeg = _interopRequireDefault(require("@jimp/jpeg")); + +var _png = _interopRequireDefault(require("@jimp/png")); + +var _bmp = _interopRequireDefault(require("@jimp/bmp")); + +var _tiff = _interopRequireDefault(require("@jimp/tiff")); + +var _gif = _interopRequireDefault(require("@jimp/gif")); + +var _default = function _default() { + return (0, _timm.mergeDeep)((0, _jpeg["default"])(), (0, _png["default"])(), (0, _bmp["default"])(), (0, _tiff["default"])(), (0, _gif["default"])()); +}; + +exports["default"] = _default; +module.exports = exports.default; + +},{"@babel/runtime/helpers/interopRequireDefault":11,"@jimp/bmp":229,"@jimp/gif":230,"@jimp/jpeg":231,"@jimp/png":232,"@jimp/tiff":233,"timm":177}],235:[function(require,module,exports){ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isNodePattern = isNodePattern; +exports.throwError = throwError; +exports.scan = scan; +exports.scanIterator = scanIterator; + +var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); + +var _marked = +/*#__PURE__*/ +_regenerator["default"].mark(scanIterator); + +function isNodePattern(cb) { + if (typeof cb === 'undefined') { + return false; + } + + if (typeof cb !== 'function') { + throw new TypeError('Callback must be a function'); + } + + return true; +} + +function throwError(error, cb) { + if (typeof error === 'string') { + error = new Error(error); + } + + if (typeof cb === 'function') { + return cb.call(this, error); + } + + throw error; +} + +function scan(image, x, y, w, h, f) { + // round input + x = Math.round(x); + y = Math.round(y); + w = Math.round(w); + h = Math.round(h); + + for (var _y = y; _y < y + h; _y++) { + for (var _x = x; _x < x + w; _x++) { + var idx = image.bitmap.width * _y + _x << 2; + f.call(image, _x, _y, idx); + } + } + + return image; +} + +function scanIterator(image, x, y, w, h) { + var _y, _x, idx; + + return _regenerator["default"].wrap(function scanIterator$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + // round input + x = Math.round(x); + y = Math.round(y); + w = Math.round(w); + h = Math.round(h); + _y = y; + + case 5: + if (!(_y < y + h)) { + _context.next = 17; + break; + } + + _x = x; + + case 7: + if (!(_x < x + w)) { + _context.next = 14; + break; + } + + idx = image.bitmap.width * _y + _x << 2; + _context.next = 11; + return { + x: _x, + y: _y, + idx: idx, + image: image + }; + + case 11: + _x++; + _context.next = 7; + break; + + case 14: + _y++; + _context.next = 5; + break; + + case 17: + case "end": + return _context.stop(); + } + } + }, _marked); +} + +},{"@babel/runtime/helpers/interopRequireDefault":11,"@babel/runtime/regenerator":22}]},{},[200])(200) +}); diff --git a/static/js/jsqr.min.js b/static/js/jsqr.min.js new file mode 100644 index 0000000..f6e78c5 --- /dev/null +++ b/static/js/jsqr.min.js @@ -0,0 +1,16 @@ +/* +2021/02/25 11:25:57 +jsQR 126.75 KB -> 126.26 KB 0.38% +jsQR/jsQR.js +*/(function(v,h){"object"===typeof exports&&"object"===typeof module?module.exports=h():"function"===typeof define&&define.amd?define([],h):"object"===typeof exports?exports.jsQR=h():v.jsQR=h()})("undefined"!==typeof self?self:this,function(){return function(v){function h(p){if(r[p])return r[p].exports;var g=r[p]={i:p,l:!1,exports:{}};v[p].call(g.exports,g,g.exports,h);g.l=!0;return g.exports}var r={};h.m=v;h.c=r;h.d=function(p,g,b){h.o(p,g)||Object.defineProperty(p,g,{configurable:!1,enumerable:!0,get:b})};h.n=function(p){var g=p&&p.__esModule?function(){return p["default"]}:function(){return p};h.d(g,"a",g);return g};h.o=function(p,g){return Object.prototype.hasOwnProperty.call(p,g)};h.p="";return h(h.s=3)}([function(v,h,r){Object.defineProperty(h,"__esModule",{value:!0});v=function(){function p(g,b){this.width=b;this.height=g.length/b;this.data=g}p.createEmpty=function(g,b){return new p(new Uint8ClampedArray(g*b),g)};p.prototype.get=function(g,b){return 0>g||g>=this.width||0>b||b>=this.height?!1:!!this.data[b*this.width+g]};p.prototype.set=function(g,b,a){this.data[b*this.width+g]=a?1:0};p.prototype.setRegion=function(g,b,a,c,d){for(var e=b;e=this.size&&(b=(b^this.primitive)&this.size-1);for(a=0;ab)throw Error("Invalid monomial degree less than 0");if(0===a)return this.zero;b=new Uint8ClampedArray(b+1);b[0]=a;return new p.default(this,b)};g.prototype.log=function(b){if(0===b)throw Error("Can't take log(0)");return this.logTable[b]};g.prototype.exp=function(b){return this.expTable[b]};return g}();h.default=v},function(v,h,r){Object.defineProperty(h,"__esModule",{value:!0});var p=r(1);v=function(){function g(b,a){if(0===a.length)throw Error("No coefficients.");this.field=b;var c=a.length;if(1b.length&&(b=[b,a],a=b[0],b=b[1]);for(var c=new Uint8ClampedArray(b.length),d=b.length-a.length,e=0;eb)throw Error("Invalid degree less than 0");if(0===a)return this.field.zero;var c=this.coefficients.length;b=new Uint8ClampedArray(c+b);for(var d=0;dq;q++)for(m=0;8>m;m++){var y=e.get(8*l+m,8*n+q);k+=y;u=Math.min(u,y);x=Math.max(x,y)}m=k/Math.pow(8,2);24>=x-u&&(m=u/2,0l?2:l>m?m:l;q=h-3;q=2>n?2:n>q?q:n;k=0;for(a=-2;2>=a;a++)for(c=-2;2>=c;c++)k+=f.get(m+a,q+c);k/=25;for(a=0;8>a;a++)for(c=0;8>c;c++)m=8*l+a,q=8*n+c,y=e.get(m,q),u.set(m,q,y<=k),d&&x.set(m,q,!(y<=k))}return d?{binarized:u,inverted:x}:{binarized:u}}},function(v,h,r){function p(a,f){a^=f;for(f=0;a;)f++,a&=a-1;return f}function g(a,f){return f<<1|a}function b(a,f,c){c=l[c.dataMask];var k=a.height,e=17+4*f.versionNumber,b=m.BitMatrix.createEmpty(e,e);b.setRegion(0,0,9,9,!0);b.setRegion(e-8,0,8,9,!0);b.setRegion(0,e-8,9,8,!0);for(var n=0,x=f.alignmentPatternCenters;nq;q++){var p=d-q;if(!b.get(p,g)){n++;var h=a.get(p,g);c({y:g,x:p})&&(h=!h);e=e<<1|h;8===n&&(f.push(e),e=n=0)}}x=!x}return f}function a(a){var k=a.height,e=Math.floor((k-17)/4);if(6>=e)return f.VERSIONS[e-1];e=0;for(var c=5;0<=c;c--)for(var b=k-9;b>=k-11;b--)e=g(a.get(b,c),e);var l=0;for(b=5;0<=b;b--)for(c=k-9;c>=k-11;c--)l=g(a.get(b,c),l);a=Infinity;k=0;for(c=f.VERSIONS;k=a)return d}function c(a){for(var f=0,k=0;8>=k;k++)6!==k&&(f=g(a.get(k,8),f));for(k=7;0<=k;k--)6!==k&&(f=g(a.get(8,k),f));var c=a.height,b=0;for(k=c-1;k>=c-7;k--)b=g(a.get(8,k),b);for(k=c-8;k=a?c:null}function d(a,f,c){var k=f.errorCorrectionLevels[c],b=[],e=0;k.ecBlocks.forEach(function(a){for(var f=0;f=m?0:26>=m?1:2;for(var l={text:"",bytes:[],chunks:[]};4<=e.available();){var k=e.readBits(4);if(k===c.Terminator)return l;if(k===c.ECI)0===e.readBits(1)?l.chunks.push({type:a.ECI,assignmentNumber:e.readBits(7)}):0===e.readBits(1)?l.chunks.push({type:a.ECI,assignmentNumber:e.readBits(14)}):0===e.readBits(1)?l.chunks.push({type:a.ECI,assignmentNumber:e.readBits(21)}):l.chunks.push({type:a.ECI,assignmentNumber:-1});else if(k===c.Numeric){var u=e;var x=[];k="";for(var y=u.readBits([10,12,14][m]);3<=y;){var z=u.readBits(10);if(1E3<=z)throw Error("Invalid numeric value above 999");var A=Math.floor(z/100),w=Math.floor(z/10)%10;z%=10;x.push(48+A,48+w,48+z);k+=A.toString()+w.toString()+z.toString();y-=3}if(2===y){z=u.readBits(7);if(100<=z)throw Error("Invalid numeric value above 99");A=Math.floor(z/10);w=z%10;x.push(48+A,48+w);k+=A.toString()+w.toString()}else if(1===y){z=u.readBits(4);if(10<=z)throw Error("Invalid numeric value above 9");x.push(48+ +z);k+=z.toString()}u=x;l.text+=k;(q=l.bytes).push.apply(q,u);l.chunks.push({type:a.Numeric,text:k})}else if(k===c.Alphanumeric){u=e;x=[];k="";for(y=u.readBits([9,11,13][m]);2<=y;)w=u.readBits(11),A=Math.floor(w/45),w%=45,x.push(d[A].charCodeAt(0),d[w].charCodeAt(0)),k+=d[A]+d[w],y-=2;1===y&&(A=u.readBits(6),x.push(d[A].charCodeAt(0)),k+=d[A]);u=x;l.text+=k;(h=l.bytes).push.apply(h,u);l.chunks.push({type:a.Alphanumeric,text:k})}else if(k===c.Byte)k=p(e,m),l.text+=k.text,(f=l.bytes).push.apply(f,k.bytes),l.chunks.push({type:a.Byte,bytes:k.bytes,text:k.text});else if(k===c.Kanji){u=e;x=[];k="";y=u.readBits([8,10,12][m]);for(A=0;Aw?w+33088:w+49472,x.push(w>>8,w&255),k+=String.fromCharCode(b.shiftJISTable[w]);u=x;l.text+=k;(n=l.bytes).push.apply(n,u);l.chunks.push({type:a.Kanji,bytes:u,text:k})}}if(0===e.available()||0===e.readBits(e.available()))return l}},function(v,h,r){Object.defineProperty(h,"__esModule",{value:!0});v=function(){function h(g){this.bitOffset=this.byteOffset=0;this.bytes=g}h.prototype.readBits=function(g){if(1>g||32this.available())throw Error("Cannot read "+g.toString()+" bits");var b=0;if(0>8-a<>c;g-=a;this.bitOffset+=a;8===this.bitOffset&&(this.bitOffset=0,this.byteOffset++)}if(0>c<>c,this.bitOffset+=g)}return b};h.prototype.available=function(){return 8*(this.bytes.length-this.byteOffset)-this.bitOffset};return h}();h.BitStream=v},function(v,h,r){Object.defineProperty(h,"__esModule",{value:!0});h.shiftJISTable={32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,41:41,42:42,43:43,44:44,45:45,46:46,47:47,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,58:58,59:59,60:60,61:61,62:62,63:63,64:64,65:65,66:66,67:67,68:68,69:69,70:70,71:71,72:72,73:73,74:74,75:75,76:76,77:77,78:78,79:79,80:80,81:81,82:82,83:83,84:84,85:85,86:86,87:87,88:88,89:89,90:90,91:91,92:165,93:93,94:94,95:95,96:96,97:97,98:98,99:99,100:100,101:101,102:102,103:103,104:104,105:105,106:106,107:107,108:108,109:109,110:110,111:111,112:112,113:113,114:114,115:115,116:116,117:117,118:118,119:119,120:120,121:121,122:122,123:123,124:124,125:125,126:8254,33088:12288,33089:12289,33090:12290,33091:65292,33092:65294,33093:12539,33094:65306,33095:65307,33096:65311,33097:65281,33098:12443,33099:12444,33100:180,33101:65344,33102:168,33103:65342,33104:65507,33105:65343,33106:12541,33107:12542,33108:12445,33109:12446,33110:12291,33111:20189,33112:12293,33113:12294,33114:12295,33115:12540,33116:8213,33117:8208,33118:65295,33119:92,33120:12316,33121:8214,33122:65372,33123:8230,33124:8229,33125:8216,33126:8217,33127:8220,33128:8221,33129:65288,33130:65289,33131:12308,33132:12309,33133:65339,33134:65341,33135:65371,33136:65373,33137:12296,33138:12297,33139:12298,33140:12299,33141:12300,33142:12301,33143:12302,33144:12303,33145:12304,33146:12305,33147:65291,33148:8722,33149:177,33150:215,33152:247,33153:65309,33154:8800,33155:65308,33156:65310,33157:8806,33158:8807,33159:8734,33160:8756,33161:9794,33162:9792,33163:176,33164:8242,33165:8243,33166:8451,33167:65509,33168:65284,33169:162,33170:163,33171:65285,33172:65283,33173:65286,33174:65290,33175:65312,33176:167,33177:9734,33178:9733,33179:9675,33180:9679,33181:9678,33182:9671,33183:9670,33184:9633,33185:9632,33186:9651,33187:9650,33188:9661,33189:9660,33190:8251,33191:12306,33192:8594,33193:8592,33194:8593,33195:8595,33196:12307,33208:8712,33209:8715,33210:8838,33211:8839,33212:8834,33213:8835,33214:8746,33215:8745,33224:8743,33225:8744,33226:172,33227:8658,33228:8660,33229:8704,33230:8707,33242:8736,33243:8869,33244:8978,33245:8706,33246:8711,33247:8801,33248:8786,33249:8810,33250:8811,33251:8730,33252:8765,33253:8733,33254:8757,33255:8747,33256:8748,33264:8491,33265:8240,33266:9839,33267:9837,33268:9834,33269:8224,33270:8225,33271:182,33276:9711,33359:65296,33360:65297,33361:65298,33362:65299,33363:65300,33364:65301,33365:65302,33366:65303,33367:65304,33368:65305,33376:65313,33377:65314,33378:65315,33379:65316,33380:65317,33381:65318,33382:65319,33383:65320,33384:65321,33385:65322,33386:65323,33387:65324,33388:65325,33389:65326,33390:65327,33391:65328,33392:65329,33393:65330,33394:65331,33395:65332,33396:65333,33397:65334,33398:65335,33399:65336,33400:65337,33401:65338,33409:65345,33410:65346,33411:65347,33412:65348,33413:65349,33414:65350,33415:65351,33416:65352,33417:65353,33418:65354,33419:65355,33420:65356,33421:65357,33422:65358,33423:65359,33424:65360,33425:65361,33426:65362,33427:65363,33428:65364,33429:65365,33430:65366,33431:65367,33432:65368,33433:65369,33434:65370,33439:12353,33440:12354,33441:12355,33442:12356,33443:12357,33444:12358,33445:12359,33446:12360,33447:12361,33448:12362,33449:12363,33450:12364,33451:12365,33452:12366,33453:12367,33454:12368,33455:12369,33456:12370,33457:12371,33458:12372,33459:12373,33460:12374,33461:12375,33462:12376,33463:12377,33464:12378,33465:12379,33466:12380,33467:12381,33468:12382,33469:12383,33470:12384,33471:12385,33472:12386,33473:12387,33474:12388,33475:12389,33476:12390,33477:12391,33478:12392,33479:12393,33480:12394,33481:12395,33482:12396,33483:12397,33484:12398,33485:12399,33486:12400,33487:12401,33488:12402,33489:12403,33490:12404,33491:12405,33492:12406,33493:12407,33494:12408,33495:12409,33496:12410,33497:12411,33498:12412,33499:12413,33500:12414,33501:12415,33502:12416,33503:12417,33504:12418,33505:12419,33506:12420,33507:12421,33508:12422,33509:12423,33510:12424,33511:12425,33512:12426,33513:12427,33514:12428,33515:12429,33516:12430,33517:12431,33518:12432,33519:12433,33520:12434,33521:12435,33600:12449,33601:12450,33602:12451,33603:12452,33604:12453,33605:12454,33606:12455,33607:12456,33608:12457,33609:12458,33610:12459,33611:12460,33612:12461,33613:12462,33614:12463,33615:12464,33616:12465,33617:12466,33618:12467,33619:12468,33620:12469,33621:12470,33622:12471,33623:12472,33624:12473,33625:12474,33626:12475,33627:12476,33628:12477,33629:12478,33630:12479,33631:12480,33632:12481,33633:12482,33634:12483,33635:12484,33636:12485,33637:12486,33638:12487,33639:12488,33640:12489,33641:12490,33642:12491,33643:12492,33644:12493,33645:12494,33646:12495,33647:12496,33648:12497,33649:12498,33650:12499,33651:12500,33652:12501,33653:12502,33654:12503,33655:12504,33656:12505,33657:12506,33658:12507,33659:12508,33660:12509,33661:12510,33662:12511,33664:12512,33665:12513,33666:12514,33667:12515,33668:12516,33669:12517,33670:12518,33671:12519,33672:12520,33673:12521,33674:12522,33675:12523,33676:12524,33677:12525,33678:12526,33679:12527,33680:12528,33681:12529,33682:12530,33683:12531,33684:12532,33685:12533,33686:12534,33695:913,33696:914,33697:915,33698:916,33699:917,33700:918,33701:919,33702:920,33703:921,33704:922,33705:923,33706:924,33707:925,33708:926,33709:927,33710:928,33711:929,33712:931,33713:932,33714:933,33715:934,33716:935,33717:936,33718:937,33727:945,33728:946,33729:947,33730:948,33731:949,33732:950,33733:951,33734:952,33735:953,33736:954,33737:955,33738:956,33739:957,33740:958,33741:959,33742:960,33743:961,33744:963,33745:964,33746:965,33747:966,33748:967,33749:968,33750:969,33856:1040,33857:1041,33858:1042,33859:1043,33860:1044,33861:1045,33862:1025,33863:1046,33864:1047,33865:1048,33866:1049,33867:1050,33868:1051,33869:1052,33870:1053,33871:1054,33872:1055,33873:1056,33874:1057,33875:1058,33876:1059,33877:1060,33878:1061,33879:1062,33880:1063,33881:1064,33882:1065,33883:1066,33884:1067,33885:1068,33886:1069,33887:1070,33888:1071,33904:1072,33905:1073,33906:1074,33907:1075,33908:1076,33909:1077,33910:1105,33911:1078,33912:1079,33913:1080,33914:1081,33915:1082,33916:1083,33917:1084,33918:1085,33920:1086,33921:1087,33922:1088,33923:1089,33924:1090,33925:1091,33926:1092,33927:1093,33928:1094,33929:1095,33930:1096,33931:1097,33932:1098,33933:1099,33934:1100,33935:1101,33936:1102,33937:1103,33951:9472,33952:9474,33953:9484,33954:9488,33955:9496,33956:9492,33957:9500,33958:9516,33959:9508,33960:9524,33961:9532,33962:9473,33963:9475,33964:9487,33965:9491,33966:9499,33967:9495,33968:9507,33969:9523,33970:9515,33971:9531,33972:9547,33973:9504,33974:9519,33975:9512,33976:9527,33977:9535,33978:9501,33979:9520,33980:9509,33981:9528,33982:9538,34975:20124,34976:21782,34977:23043,34978:38463,34979:21696,34980:24859,34981:25384,34982:23030,34983:36898,34984:33909,34985:33564,34986:31312,34987:24746,34988:25569,34989:28197,34990:26093,34991:33894,34992:33446,34993:39925,34994:26771,34995:22311,34996:26017,34997:25201,34998:23451,34999:22992,35E3:34427,35001:39156,35002:32098,35003:32190,35004:39822,35005:25110,35006:31903,35007:34999,35008:23433,35009:24245,35010:25353,35011:26263,35012:26696,35013:38343,35014:38797,35015:26447,35016:20197,35017:20234,35018:20301,35019:20381,35020:20553,35021:22258,35022:22839,35023:22996,35024:23041,35025:23561,35026:24799,35027:24847,35028:24944,35029:26131,35030:26885,35031:28858,35032:30031,35033:30064,35034:31227,35035:32173,35036:32239,35037:32963,35038:33806,35039:34915,35040:35586,35041:36949,35042:36986,35043:21307,35044:20117,35045:20133,35046:22495,35047:32946,35048:37057,35049:30959,35050:19968,35051:22769,35052:28322,35053:36920,35054:31282,35055:33576,35056:33419,35057:39983,35058:20801,35059:21360,35060:21693,35061:21729,35062:22240,35063:23035,35064:24341,35065:39154,35066:28139,35067:32996,35068:34093,35136:38498,35137:38512,35138:38560,35139:38907,35140:21515,35141:21491,35142:23431,35143:28879,35144:32701,35145:36802,35146:38632,35147:21359,35148:40284,35149:31418,35150:19985,35151:30867,35152:33276,35153:28198,35154:22040,35155:21764,35156:27421,35157:34074,35158:39995,35159:23013,35160:21417,35161:28006,35162:29916,35163:38287,35164:22082,35165:20113,35166:36939,35167:38642,35168:33615,35169:39180,35170:21473,35171:21942,35172:23344,35173:24433,35174:26144,35175:26355,35176:26628,35177:27704,35178:27891,35179:27945,35180:29787,35181:30408,35182:31310,35183:38964,35184:33521,35185:34907,35186:35424,35187:37613,35188:28082,35189:30123,35190:30410,35191:39365,35192:24742,35193:35585,35194:36234,35195:38322,35196:27022,35197:21421,35198:20870,35200:22290,35201:22576,35202:22852,35203:23476,35204:24310,35205:24616,35206:25513,35207:25588,35208:27839,35209:28436,35210:28814,35211:28948,35212:29017,35213:29141,35214:29503,35215:32257,35216:33398,35217:33489,35218:34199,35219:36960,35220:37467,35221:40219,35222:22633,35223:26044,35224:27738,35225:29989,35226:20985,35227:22830,35228:22885,35229:24448,35230:24540,35231:25276,35232:26106,35233:27178,35234:27431,35235:27572,35236:29579,35237:32705,35238:35158,35239:40236,35240:40206,35241:40644,35242:23713,35243:27798,35244:33659,35245:20740,35246:23627,35247:25014,35248:33222,35249:26742,35250:29281,35251:20057,35252:20474,35253:21368,35254:24681,35255:28201,35256:31311,35257:38899,35258:19979,35259:21270,35260:20206,35261:20309,35262:20285,35263:20385,35264:20339,35265:21152,35266:21487,35267:22025,35268:22799,35269:23233,35270:23478,35271:23521,35272:31185,35273:26247,35274:26524,35275:26550,35276:27468,35277:27827,35278:28779,35279:29634,35280:31117,35281:31166,35282:31292,35283:31623,35284:33457,35285:33499,35286:33540,35287:33655,35288:33775,35289:33747,35290:34662,35291:35506,35292:22057,35293:36008,35294:36838,35295:36942,35296:38686,35297:34442,35298:20420,35299:23784,35300:25105,35301:29273,35302:30011,35303:33253,35304:33469,35305:34558,35306:36032,35307:38597,35308:39187,35309:39381,35310:20171,35311:20250,35312:35299,35313:22238,35314:22602,35315:22730,35316:24315,35317:24555,35318:24618,35319:24724,35320:24674,35321:25040,35322:25106,35323:25296,35324:25913,35392:39745,35393:26214,35394:26800,35395:28023,35396:28784,35397:30028,35398:30342,35399:32117,35400:33445,35401:34809,35402:38283,35403:38542,35404:35997,35405:20977,35406:21182,35407:22806,35408:21683,35409:23475,35410:23830,35411:24936,35412:27010,35413:28079,35414:30861,35415:33995,35416:34903,35417:35442,35418:37799,35419:39608,35420:28012,35421:39336,35422:34521,35423:22435,35424:26623,35425:34510,35426:37390,35427:21123,35428:22151,35429:21508,35430:24275,35431:25313,35432:25785,35433:26684,35434:26680,35435:27579,35436:29554,35437:30906,35438:31339,35439:35226,35440:35282,35441:36203,35442:36611,35443:37101,35444:38307,35445:38548,35446:38761,35447:23398,35448:23731,35449:27005,35450:38989,35451:38990,35452:25499,35453:31520,35454:27179,35456:27263,35457:26806,35458:39949,35459:28511,35460:21106,35461:21917,35462:24688,35463:25324,35464:27963,35465:28167,35466:28369,35467:33883,35468:35088,35469:36676,35470:19988,35471:39993,35472:21494,35473:26907,35474:27194,35475:38788,35476:26666,35477:20828,35478:31427,35479:33970,35480:37340,35481:37772,35482:22107,35483:40232,35484:26658,35485:33541,35486:33841,35487:31909,35488:21E3,35489:33477,35490:29926,35491:20094,35492:20355,35493:20896,35494:23506,35495:21002,35496:21208,35497:21223,35498:24059,35499:21914,35500:22570,35501:23014,35502:23436,35503:23448,35504:23515,35505:24178,35506:24185,35507:24739,35508:24863,35509:24931,35510:25022,35511:25563,35512:25954,35513:26577,35514:26707,35515:26874,35516:27454,35517:27475,35518:27735,35519:28450,35520:28567,35521:28485,35522:29872,35523:29976,35524:30435,35525:30475,35526:31487,35527:31649,35528:31777,35529:32233,35530:32566,35531:32752,35532:32925,35533:33382,35534:33694,35535:35251,35536:35532,35537:36011,35538:36996,35539:37969,35540:38291,35541:38289,35542:38306,35543:38501,35544:38867,35545:39208,35546:33304,35547:20024,35548:21547,35549:23736,35550:24012,35551:29609,35552:30284,35553:30524,35554:23721,35555:32747,35556:36107,35557:38593,35558:38929,35559:38996,35560:39E3,35561:20225,35562:20238,35563:21361,35564:21916,35565:22120,35566:22522,35567:22855,35568:23305,35569:23492,35570:23696,35571:24076,35572:24190,35573:24524,35574:25582,35575:26426,35576:26071,35577:26082,35578:26399,35579:26827,35580:26820,35648:27231,35649:24112,35650:27589,35651:27671,35652:27773,35653:30079,35654:31048,35655:23395,35656:31232,35657:32E3,35658:24509,35659:35215,35660:35352,35661:36020,35662:36215,35663:36556,35664:36637,35665:39138,35666:39438,35667:39740,35668:20096,35669:20605,35670:20736,35671:22931,35672:23452,35673:25135,35674:25216,35675:25836,35676:27450,35677:29344,35678:30097,35679:31047,35680:32681,35681:34811,35682:35516,35683:35696,35684:25516,35685:33738,35686:38816,35687:21513,35688:21507,35689:21931,35690:26708,35691:27224,35692:35440,35693:30759,35694:26485,35695:40653,35696:21364,35697:23458,35698:33050,35699:34384,35700:36870,35701:19992,35702:20037,35703:20167,35704:20241,35705:21450,35706:21560,35707:23470,35708:24339,35709:24613,35710:25937,35712:26429,35713:27714,35714:27762,35715:27875,35716:28792,35717:29699,35718:31350,35719:31406,35720:31496,35721:32026,35722:31998,35723:32102,35724:26087,35725:29275,35726:21435,35727:23621,35728:24040,35729:25298,35730:25312,35731:25369,35732:28192,35733:34394,35734:35377,35735:36317,35736:37624,35737:28417,35738:31142,35739:39770,35740:20136,35741:20139,35742:20140,35743:20379,35744:20384,35745:20689,35746:20807,35747:31478,35748:20849,35749:20982,35750:21332,35751:21281,35752:21375,35753:21483,35754:21932,35755:22659,35756:23777,35757:24375,35758:24394,35759:24623,35760:24656,35761:24685,35762:25375,35763:25945,35764:27211,35765:27841,35766:29378,35767:29421,35768:30703,35769:33016,35770:33029,35771:33288,35772:34126,35773:37111,35774:37857,35775:38911,35776:39255,35777:39514,35778:20208,35779:20957,35780:23597,35781:26241,35782:26989,35783:23616,35784:26354,35785:26997,35786:29577,35787:26704,35788:31873,35789:20677,35790:21220,35791:22343,35792:24062,35793:37670,35794:26020,35795:27427,35796:27453,35797:29748,35798:31105,35799:31165,35800:31563,35801:32202,35802:33465,35803:33740,35804:34943,35805:35167,35806:35641,35807:36817,35808:37329,35809:21535,35810:37504,35811:20061,35812:20534,35813:21477,35814:21306,35815:29399,35816:29590,35817:30697,35818:33510,35819:36527,35820:39366,35821:39368,35822:39378,35823:20855,35824:24858,35825:34398,35826:21936,35827:31354,35828:20598,35829:23507,35830:36935,35831:38533,35832:20018,35833:27355,35834:37351,35835:23633,35836:23624,35904:25496,35905:31391,35906:27795,35907:38772,35908:36705,35909:31402,35910:29066,35911:38536,35912:31874,35913:26647,35914:32368,35915:26705,35916:37740,35917:21234,35918:21531,35919:34219,35920:35347,35921:32676,35922:36557,35923:37089,35924:21350,35925:34952,35926:31041,35927:20418,35928:20670,35929:21009,35930:20804,35931:21843,35932:22317,35933:29674,35934:22411,35935:22865,35936:24418,35937:24452,35938:24693,35939:24950,35940:24935,35941:25001,35942:25522,35943:25658,35944:25964,35945:26223,35946:26690,35947:28179,35948:30054,35949:31293,35950:31995,35951:32076,35952:32153,35953:32331,35954:32619,35955:33550,35956:33610,35957:34509,35958:35336,35959:35427,35960:35686,35961:36605,35962:38938,35963:40335,35964:33464,35965:36814,35966:39912,35968:21127,35969:25119,35970:25731,35971:28608,35972:38553,35973:26689,35974:20625,35975:27424,35976:27770,35977:28500,35978:31348,35979:32080,35980:34880,35981:35363,35982:26376,35983:20214,35984:20537,35985:20518,35986:20581,35987:20860,35988:21048,35989:21091,35990:21927,35991:22287,35992:22533,35993:23244,35994:24314,35995:25010,35996:25080,35997:25331,35998:25458,35999:26908,36E3:27177,36001:29309,36002:29356,36003:29486,36004:30740,36005:30831,36006:32121,36007:30476,36008:32937,36009:35211,36010:35609,36011:36066,36012:36562,36013:36963,36014:37749,36015:38522,36016:38997,36017:39443,36018:40568,36019:20803,36020:21407,36021:21427,36022:24187,36023:24358,36024:28187,36025:28304,36026:29572,36027:29694,36028:32067,36029:33335,36030:35328,36031:35578,36032:38480,36033:20046,36034:20491,36035:21476,36036:21628,36037:22266,36038:22993,36039:23396,36040:24049,36041:24235,36042:24359,36043:25144,36044:25925,36045:26543,36046:28246,36047:29392,36048:31946,36049:34996,36050:32929,36051:32993,36052:33776,36053:34382,36054:35463,36055:36328,36056:37431,36057:38599,36058:39015,36059:40723,36060:20116,36061:20114,36062:20237,36063:21320,36064:21577,36065:21566,36066:23087,36067:24460,36068:24481,36069:24735,36070:26791,36071:27278,36072:29786,36073:30849,36074:35486,36075:35492,36076:35703,36077:37264,36078:20062,36079:39881,36080:20132,36081:20348,36082:20399,36083:20505,36084:20502,36085:20809,36086:20844,36087:21151,36088:21177,36089:21246,36090:21402,36091:21475,36092:21521,36160:21518,36161:21897,36162:22353,36163:22434,36164:22909,36165:23380,36166:23389,36167:23439,36168:24037,36169:24039,36170:24055,36171:24184,36172:24195,36173:24218,36174:24247,36175:24344,36176:24658,36177:24908,36178:25239,36179:25304,36180:25511,36181:25915,36182:26114,36183:26179,36184:26356,36185:26477,36186:26657,36187:26775,36188:27083,36189:27743,36190:27946,36191:28009,36192:28207,36193:28317,36194:30002,36195:30343,36196:30828,36197:31295,36198:31968,36199:32005,36200:32024,36201:32094,36202:32177,36203:32789,36204:32771,36205:32943,36206:32945,36207:33108,36208:33167,36209:33322,36210:33618,36211:34892,36212:34913,36213:35611,36214:36002,36215:36092,36216:37066,36217:37237,36218:37489,36219:30783,36220:37628,36221:38308,36222:38477,36224:38917,36225:39321,36226:39640,36227:40251,36228:21083,36229:21163,36230:21495,36231:21512,36232:22741,36233:25335,36234:28640,36235:35946,36236:36703,36237:40633,36238:20811,36239:21051,36240:21578,36241:22269,36242:31296,36243:37239,36244:40288,36245:40658,36246:29508,36247:28425,36248:33136,36249:29969,36250:24573,36251:24794,36252:39592,36253:29403,36254:36796,36255:27492,36256:38915,36257:20170,36258:22256,36259:22372,36260:22718,36261:23130,36262:24680,36263:25031,36264:26127,36265:26118,36266:26681,36267:26801,36268:28151,36269:30165,36270:32058,36271:33390,36272:39746,36273:20123,36274:20304,36275:21449,36276:21766,36277:23919,36278:24038,36279:24046,36280:26619,36281:27801,36282:29811,36283:30722,36284:35408,36285:37782,36286:35039,36287:22352,36288:24231,36289:25387,36290:20661,36291:20652,36292:20877,36293:26368,36294:21705,36295:22622,36296:22971,36297:23472,36298:24425,36299:25165,36300:25505,36301:26685,36302:27507,36303:28168,36304:28797,36305:37319,36306:29312,36307:30741,36308:30758,36309:31085,36310:25998,36311:32048,36312:33756,36313:35009,36314:36617,36315:38555,36316:21092,36317:22312,36318:26448,36319:32618,36320:36001,36321:20916,36322:22338,36323:38442,36324:22586,36325:27018,36326:32948,36327:21682,36328:23822,36329:22524,36330:30869,36331:40442,36332:20316,36333:21066,36334:21643,36335:25662,36336:26152,36337:26388,36338:26613,36339:31364,36340:31574,36341:32034,36342:37679,36343:26716,36344:39853,36345:31545,36346:21273,36347:20874,36348:21047,36416:23519,36417:25334,36418:25774,36419:25830,36420:26413,36421:27578,36422:34217,36423:38609,36424:30352,36425:39894,36426:25420,36427:37638,36428:39851,36429:30399,36430:26194,36431:19977,36432:20632,36433:21442,36434:23665,36435:24808,36436:25746,36437:25955,36438:26719,36439:29158,36440:29642,36441:29987,36442:31639,36443:32386,36444:34453,36445:35715,36446:36059,36447:37240,36448:39184,36449:26028,36450:26283,36451:27531,36452:20181,36453:20180,36454:20282,36455:20351,36456:21050,36457:21496,36458:21490,36459:21987,36460:22235,36461:22763,36462:22987,36463:22985,36464:23039,36465:23376,36466:23629,36467:24066,36468:24107,36469:24535,36470:24605,36471:25351,36472:25903,36473:23388,36474:26031,36475:26045,36476:26088,36477:26525,36478:27490,36480:27515,36481:27663,36482:29509,36483:31049,36484:31169,36485:31992,36486:32025,36487:32043,36488:32930,36489:33026,36490:33267,36491:35222,36492:35422,36493:35433,36494:35430,36495:35468,36496:35566,36497:36039,36498:36060,36499:38604,36500:39164,36501:27503,36502:20107,36503:20284,36504:20365,36505:20816,36506:23383,36507:23546,36508:24904,36509:25345,36510:26178,36511:27425,36512:28363,36513:27835,36514:29246,36515:29885,36516:30164,36517:30913,36518:31034,36519:32780,36520:32819,36521:33258,36522:33940,36523:36766,36524:27728,36525:40575,36526:24335,36527:35672,36528:40235,36529:31482,36530:36600,36531:23437,36532:38635,36533:19971,36534:21489,36535:22519,36536:22833,36537:23241,36538:23460,36539:24713,36540:28287,36541:28422,36542:30142,36543:36074,36544:23455,36545:34048,36546:31712,36547:20594,36548:26612,36549:33437,36550:23649,36551:34122,36552:32286,36553:33294,36554:20889,36555:23556,36556:25448,36557:36198,36558:26012,36559:29038,36560:31038,36561:32023,36562:32773,36563:35613,36564:36554,36565:36974,36566:34503,36567:37034,36568:20511,36569:21242,36570:23610,36571:26451,36572:28796,36573:29237,36574:37196,36575:37320,36576:37675,36577:33509,36578:23490,36579:24369,36580:24825,36581:20027,36582:21462,36583:23432,36584:25163,36585:26417,36586:27530,36587:29417,36588:29664,36589:31278,36590:33131,36591:36259,36592:37202,36593:39318,36594:20754,36595:21463,36596:21610,36597:23551,36598:25480,36599:27193,36600:32172,36601:38656,36602:22234,36603:21454,36604:21608,36672:23447,36673:23601,36674:24030,36675:20462,36676:24833,36677:25342,36678:27954,36679:31168,36680:31179,36681:32066,36682:32333,36683:32722,36684:33261,36685:33311,36686:33936,36687:34886,36688:35186,36689:35728,36690:36468,36691:36655,36692:36913,36693:37195,36694:37228,36695:38598,36696:37276,36697:20160,36698:20303,36699:20805,36700:21313,36701:24467,36702:25102,36703:26580,36704:27713,36705:28171,36706:29539,36707:32294,36708:37325,36709:37507,36710:21460,36711:22809,36712:23487,36713:28113,36714:31069,36715:32302,36716:31899,36717:22654,36718:29087,36719:20986,36720:34899,36721:36848,36722:20426,36723:23803,36724:26149,36725:30636,36726:31459,36727:33308,36728:39423,36729:20934,36730:24490,36731:26092,36732:26991,36733:27529,36734:28147,36736:28310,36737:28516,36738:30462,36739:32020,36740:24033,36741:36981,36742:37255,36743:38918,36744:20966,36745:21021,36746:25152,36747:26257,36748:26329,36749:28186,36750:24246,36751:32210,36752:32626,36753:26360,36754:34223,36755:34295,36756:35576,36757:21161,36758:21465,36759:22899,36760:24207,36761:24464,36762:24661,36763:37604,36764:38500,36765:20663,36766:20767,36767:21213,36768:21280,36769:21319,36770:21484,36771:21736,36772:21830,36773:21809,36774:22039,36775:22888,36776:22974,36777:23100,36778:23477,36779:23558,36780:23567,36781:23569,36782:23578,36783:24196,36784:24202,36785:24288,36786:24432,36787:25215,36788:25220,36789:25307,36790:25484,36791:25463,36792:26119,36793:26124,36794:26157,36795:26230,36796:26494,36797:26786,36798:27167,36799:27189,36800:27836,36801:28040,36802:28169,36803:28248,36804:28988,36805:28966,36806:29031,36807:30151,36808:30465,36809:30813,36810:30977,36811:31077,36812:31216,36813:31456,36814:31505,36815:31911,36816:32057,36817:32918,36818:33750,36819:33931,36820:34121,36821:34909,36822:35059,36823:35359,36824:35388,36825:35412,36826:35443,36827:35937,36828:36062,36829:37284,36830:37478,36831:37758,36832:37912,36833:38556,36834:38808,36835:19978,36836:19976,36837:19998,36838:20055,36839:20887,36840:21104,36841:22478,36842:22580,36843:22732,36844:23330,36845:24120,36846:24773,36847:25854,36848:26465,36849:26454,36850:27972,36851:29366,36852:30067,36853:31331,36854:33976,36855:35698,36856:37304,36857:37664,36858:22065,36859:22516,36860:39166,36928:25325,36929:26893,36930:27542,36931:29165,36932:32340,36933:32887,36934:33394,36935:35302,36936:39135,36937:34645,36938:36785,36939:23611,36940:20280,36941:20449,36942:20405,36943:21767,36944:23072,36945:23517,36946:23529,36947:24515,36948:24910,36949:25391,36950:26032,36951:26187,36952:26862,36953:27035,36954:28024,36955:28145,36956:30003,36957:30137,36958:30495,36959:31070,36960:31206,36961:32051,36962:33251,36963:33455,36964:34218,36965:35242,36966:35386,36967:36523,36968:36763,36969:36914,36970:37341,36971:38663,36972:20154,36973:20161,36974:20995,36975:22645,36976:22764,36977:23563,36978:29978,36979:23613,36980:33102,36981:35338,36982:36805,36983:38499,36984:38765,36985:31525,36986:35535,36987:38920,36988:37218,36989:22259,36990:21416,36992:36887,36993:21561,36994:22402,36995:24101,36996:25512,36997:27700,36998:28810,36999:30561,37E3:31883,37001:32736,37002:34928,37003:36930,37004:37204,37005:37648,37006:37656,37007:38543,37008:29790,37009:39620,37010:23815,37011:23913,37012:25968,37013:26530,37014:36264,37015:38619,37016:25454,37017:26441,37018:26905,37019:33733,37020:38935,37021:38592,37022:35070,37023:28548,37024:25722,37025:23544,37026:19990,37027:28716,37028:30045,37029:26159,37030:20932,37031:21046,37032:21218,37033:22995,37034:24449,37035:24615,37036:25104,37037:25919,37038:25972,37039:26143,37040:26228,37041:26866,37042:26646,37043:27491,37044:28165,37045:29298,37046:29983,37047:30427,37048:31934,37049:32854,37050:22768,37051:35069,37052:35199,37053:35488,37054:35475,37055:35531,37056:36893,37057:37266,37058:38738,37059:38745,37060:25993,37061:31246,37062:33030,37063:38587,37064:24109,37065:24796,37066:25114,37067:26021,37068:26132,37069:26512,37070:30707,37071:31309,37072:31821,37073:32318,37074:33034,37075:36012,37076:36196,37077:36321,37078:36447,37079:30889,37080:20999,37081:25305,37082:25509,37083:25666,37084:25240,37085:35373,37086:31363,37087:31680,37088:35500,37089:38634,37090:32118,37091:33292,37092:34633,37093:20185,37094:20808,37095:21315,37096:21344,37097:23459,37098:23554,37099:23574,37100:24029,37101:25126,37102:25159,37103:25776,37104:26643,37105:26676,37106:27849,37107:27973,37108:27927,37109:26579,37110:28508,37111:29006,37112:29053,37113:26059,37114:31359,37115:31661,37116:32218,37184:32330,37185:32680,37186:33146,37187:33307,37188:33337,37189:34214,37190:35438,37191:36046,37192:36341,37193:36984,37194:36983,37195:37549,37196:37521,37197:38275,37198:39854,37199:21069,37200:21892,37201:28472,37202:28982,37203:20840,37204:31109,37205:32341,37206:33203,37207:31950,37208:22092,37209:22609,37210:23720,37211:25514,37212:26366,37213:26365,37214:26970,37215:29401,37216:30095,37217:30094,37218:30990,37219:31062,37220:31199,37221:31895,37222:32032,37223:32068,37224:34311,37225:35380,37226:38459,37227:36961,37228:40736,37229:20711,37230:21109,37231:21452,37232:21474,37233:20489,37234:21930,37235:22766,37236:22863,37237:29245,37238:23435,37239:23652,37240:21277,37241:24803,37242:24819,37243:25436,37244:25475,37245:25407,37246:25531,37248:25805,37249:26089,37250:26361,37251:24035,37252:27085,37253:27133,37254:28437,37255:29157,37256:20105,37257:30185,37258:30456,37259:31379,37260:31967,37261:32207,37262:32156,37263:32865,37264:33609,37265:33624,37266:33900,37267:33980,37268:34299,37269:35013,37270:36208,37271:36865,37272:36973,37273:37783,37274:38684,37275:39442,37276:20687,37277:22679,37278:24974,37279:33235,37280:34101,37281:36104,37282:36896,37283:20419,37284:20596,37285:21063,37286:21363,37287:24687,37288:25417,37289:26463,37290:28204,37291:36275,37292:36895,37293:20439,37294:23646,37295:36042,37296:26063,37297:32154,37298:21330,37299:34966,37300:20854,37301:25539,37302:23384,37303:23403,37304:23562,37305:25613,37306:26449,37307:36956,37308:20182,37309:22810,37310:22826,37311:27760,37312:35409,37313:21822,37314:22549,37315:22949,37316:24816,37317:25171,37318:26561,37319:33333,37320:26965,37321:38464,37322:39364,37323:39464,37324:20307,37325:22534,37326:23550,37327:32784,37328:23729,37329:24111,37330:24453,37331:24608,37332:24907,37333:25140,37334:26367,37335:27888,37336:28382,37337:32974,37338:33151,37339:33492,37340:34955,37341:36024,37342:36864,37343:36910,37344:38538,37345:40667,37346:39899,37347:20195,37348:21488,37349:22823,37350:31532,37351:37261,37352:38988,37353:40441,37354:28381,37355:28711,37356:21331,37357:21828,37358:23429,37359:25176,37360:25246,37361:25299,37362:27810,37363:28655,37364:29730,37365:35351,37366:37944,37367:28609,37368:35582,37369:33592,37370:20967,37371:34552,37372:21482,37440:21481,37441:20294,37442:36948,37443:36784,37444:22890,37445:33073,37446:24061,37447:31466,37448:36799,37449:26842,37450:35895,37451:29432,37452:40008,37453:27197,37454:35504,37455:20025,37456:21336,37457:22022,37458:22374,37459:25285,37460:25506,37461:26086,37462:27470,37463:28129,37464:28251,37465:28845,37466:30701,37467:31471,37468:31658,37469:32187,37470:32829,37471:32966,37472:34507,37473:35477,37474:37723,37475:22243,37476:22727,37477:24382,37478:26029,37479:26262,37480:27264,37481:27573,37482:30007,37483:35527,37484:20516,37485:30693,37486:22320,37487:24347,37488:24677,37489:26234,37490:27744,37491:30196,37492:31258,37493:32622,37494:33268,37495:34584,37496:36933,37497:39347,37498:31689,37499:30044,37500:31481,37501:31569,37502:33988,37504:36880,37505:31209,37506:31378,37507:33590,37508:23265,37509:30528,37510:20013,37511:20210,37512:23449,37513:24544,37514:25277,37515:26172,37516:26609,37517:27880,37518:34411,37519:34935,37520:35387,37521:37198,37522:37619,37523:39376,37524:27159,37525:28710,37526:29482,37527:33511,37528:33879,37529:36015,37530:19969,37531:20806,37532:20939,37533:21899,37534:23541,37535:24086,37536:24115,37537:24193,37538:24340,37539:24373,37540:24427,37541:24500,37542:25074,37543:25361,37544:26274,37545:26397,37546:28526,37547:29266,37548:30010,37549:30522,37550:32884,37551:33081,37552:33144,37553:34678,37554:35519,37555:35548,37556:36229,37557:36339,37558:37530,37559:38263,37560:38914,37561:40165,37562:21189,37563:25431,37564:30452,37565:26389,37566:27784,37567:29645,37568:36035,37569:37806,37570:38515,37571:27941,37572:22684,37573:26894,37574:27084,37575:36861,37576:37786,37577:30171,37578:36890,37579:22618,37580:26626,37581:25524,37582:27131,37583:20291,37584:28460,37585:26584,37586:36795,37587:34086,37588:32180,37589:37716,37590:26943,37591:28528,37592:22378,37593:22775,37594:23340,37595:32044,37596:29226,37597:21514,37598:37347,37599:40372,37600:20141,37601:20302,37602:20572,37603:20597,37604:21059,37605:35998,37606:21576,37607:22564,37608:23450,37609:24093,37610:24213,37611:24237,37612:24311,37613:24351,37614:24716,37615:25269,37616:25402,37617:25552,37618:26799,37619:27712,37620:30855,37621:31118,37622:31243,37623:32224,37624:33351,37625:35330,37626:35558,37627:36420,37628:36883,37696:37048,37697:37165,37698:37336,37699:40718,37700:27877,37701:25688,37702:25826,37703:25973,37704:28404,37705:30340,37706:31515,37707:36969,37708:37841,37709:28346,37710:21746,37711:24505,37712:25764,37713:36685,37714:36845,37715:37444,37716:20856,37717:22635,37718:22825,37719:23637,37720:24215,37721:28155,37722:32399,37723:29980,37724:36028,37725:36578,37726:39003,37727:28857,37728:20253,37729:27583,37730:28593,37731:3E4,37732:38651,37733:20814,37734:21520,37735:22581,37736:22615,37737:22956,37738:23648,37739:24466,37740:26007,37741:26460,37742:28193,37743:30331,37744:33759,37745:36077,37746:36884,37747:37117,37748:37709,37749:30757,37750:30778,37751:21162,37752:24230,37753:22303,37754:22900,37755:24594,37756:20498,37757:20826,37758:20908,37760:20941,37761:20992,37762:21776,37763:22612,37764:22616,37765:22871,37766:23445,37767:23798,37768:23947,37769:24764,37770:25237,37771:25645,37772:26481,37773:26691,37774:26812,37775:26847,37776:30423,37777:28120,37778:28271,37779:28059,37780:28783,37781:29128,37782:24403,37783:30168,37784:31095,37785:31561,37786:31572,37787:31570,37788:31958,37789:32113,37790:21040,37791:33891,37792:34153,37793:34276,37794:35342,37795:35588,37796:35910,37797:36367,37798:36867,37799:36879,37800:37913,37801:38518,37802:38957,37803:39472,37804:38360,37805:20685,37806:21205,37807:21516,37808:22530,37809:23566,37810:24999,37811:25758,37812:27934,37813:30643,37814:31461,37815:33012,37816:33796,37817:36947,37818:37509,37819:23776,37820:40199,37821:21311,37822:24471,37823:24499,37824:28060,37825:29305,37826:30563,37827:31167,37828:31716,37829:27602,37830:29420,37831:35501,37832:26627,37833:27233,37834:20984,37835:31361,37836:26932,37837:23626,37838:40182,37839:33515,37840:23493,37841:37193,37842:28702,37843:22136,37844:23663,37845:24775,37846:25958,37847:27788,37848:35930,37849:36929,37850:38931,37851:21585,37852:26311,37853:37389,37854:22856,37855:37027,37856:20869,37857:20045,37858:20970,37859:34201,37860:35598,37861:28760,37862:25466,37863:37707,37864:26978,37865:39348,37866:32260,37867:30071,37868:21335,37869:26976,37870:36575,37871:38627,37872:27741,37873:20108,37874:23612,37875:24336,37876:36841,37877:21250,37878:36049,37879:32905,37880:34425,37881:24319,37882:26085,37883:20083,37884:20837,37952:22914,37953:23615,37954:38894,37955:20219,37956:22922,37957:24525,37958:35469,37959:28641,37960:31152,37961:31074,37962:23527,37963:33905,37964:29483,37965:29105,37966:24180,37967:24565,37968:25467,37969:25754,37970:29123,37971:31896,37972:20035,37973:24316,37974:20043,37975:22492,37976:22178,37977:24745,37978:28611,37979:32013,37980:33021,37981:33075,37982:33215,37983:36786,37984:35223,37985:34468,37986:24052,37987:25226,37988:25773,37989:35207,37990:26487,37991:27874,37992:27966,37993:29750,37994:30772,37995:23110,37996:32629,37997:33453,37998:39340,37999:20467,38E3:24259,38001:25309,38002:25490,38003:25943,38004:26479,38005:30403,38006:29260,38007:32972,38008:32954,38009:36649,38010:37197,38011:20493,38012:22521,38013:23186,38014:26757,38016:26995,38017:29028,38018:29437,38019:36023,38020:22770,38021:36064,38022:38506,38023:36889,38024:34687,38025:31204,38026:30695,38027:33833,38028:20271,38029:21093,38030:21338,38031:25293,38032:26575,38033:27850,38034:30333,38035:31636,38036:31893,38037:33334,38038:34180,38039:36843,38040:26333,38041:28448,38042:29190,38043:32283,38044:33707,38045:39361,38046:40614,38047:20989,38048:31665,38049:30834,38050:31672,38051:32903,38052:31560,38053:27368,38054:24161,38055:32908,38056:30033,38057:30048,38058:20843,38059:37474,38060:28300,38061:30330,38062:37271,38063:39658,38064:20240,38065:32624,38066:25244,38067:31567,38068:38309,38069:40169,38070:22138,38071:22617,38072:34532,38073:38588,38074:20276,38075:21028,38076:21322,38077:21453,38078:21467,38079:24070,38080:25644,38081:26001,38082:26495,38083:27710,38084:27726,38085:29256,38086:29359,38087:29677,38088:30036,38089:32321,38090:33324,38091:34281,38092:36009,38093:31684,38094:37318,38095:29033,38096:38930,38097:39151,38098:25405,38099:26217,38100:30058,38101:30436,38102:30928,38103:34115,38104:34542,38105:21290,38106:21329,38107:21542,38108:22915,38109:24199,38110:24444,38111:24754,38112:25161,38113:25209,38114:25259,38115:26E3,38116:27604,38117:27852,38118:30130,38119:30382,38120:30865,38121:31192,38122:32203,38123:32631,38124:32933,38125:34987,38126:35513,38127:36027,38128:36991,38129:38750,38130:39131,38131:27147,38132:31800,38133:20633,38134:23614,38135:24494,38136:26503,38137:27608,38138:29749,38139:30473,38140:32654,38208:40763,38209:26570,38210:31255,38211:21305,38212:30091,38213:39661,38214:24422,38215:33181,38216:33777,38217:32920,38218:24380,38219:24517,38220:30050,38221:31558,38222:36924,38223:26727,38224:23019,38225:23195,38226:32016,38227:30334,38228:35628,38229:20469,38230:24426,38231:27161,38232:27703,38233:28418,38234:29922,38235:31080,38236:34920,38237:35413,38238:35961,38239:24287,38240:25551,38241:30149,38242:31186,38243:33495,38244:37672,38245:37618,38246:33948,38247:34541,38248:39981,38249:21697,38250:24428,38251:25996,38252:27996,38253:28693,38254:36007,38255:36051,38256:38971,38257:25935,38258:29942,38259:19981,38260:20184,38261:22496,38262:22827,38263:23142,38264:23500,38265:20904,38266:24067,38267:24220,38268:24598,38269:25206,38270:25975,38272:26023,38273:26222,38274:28014,38275:29238,38276:31526,38277:33104,38278:33178,38279:33433,38280:35676,38281:36E3,38282:36070,38283:36212,38284:38428,38285:38468,38286:20398,38287:25771,38288:27494,38289:33310,38290:33889,38291:34154,38292:37096,38293:23553,38294:26963,38295:39080,38296:33914,38297:34135,38298:20239,38299:21103,38300:24489,38301:24133,38302:26381,38303:31119,38304:33145,38305:35079,38306:35206,38307:28149,38308:24343,38309:25173,38310:27832,38311:20175,38312:29289,38313:39826,38314:20998,38315:21563,38316:22132,38317:22707,38318:24996,38319:25198,38320:28954,38321:22894,38322:31881,38323:31966,38324:32027,38325:38640,38326:25991,38327:32862,38328:19993,38329:20341,38330:20853,38331:22592,38332:24163,38333:24179,38334:24330,38335:26564,38336:20006,38337:34109,38338:38281,38339:38491,38340:31859,38341:38913,38342:20731,38343:22721,38344:30294,38345:30887,38346:21029,38347:30629,38348:34065,38349:31622,38350:20559,38351:22793,38352:29255,38353:31687,38354:32232,38355:36794,38356:36820,38357:36941,38358:20415,38359:21193,38360:23081,38361:24321,38362:38829,38363:20445,38364:33303,38365:37610,38366:22275,38367:25429,38368:27497,38369:29995,38370:35036,38371:36628,38372:31298,38373:21215,38374:22675,38375:24917,38376:25098,38377:26286,38378:27597,38379:31807,38380:33769,38381:20515,38382:20472,38383:21253,38384:21574,38385:22577,38386:22857,38387:23453,38388:23792,38389:23791,38390:23849,38391:24214,38392:25265,38393:25447,38394:25918,38395:26041,38396:26379,38464:27861,38465:27873,38466:28921,38467:30770,38468:32299,38469:32990,38470:33459,38471:33804,38472:34028,38473:34562,38474:35090,38475:35370,38476:35914,38477:37030,38478:37586,38479:39165,38480:40179,38481:40300,38482:20047,38483:20129,38484:20621,38485:21078,38486:22346,38487:22952,38488:24125,38489:24536,38490:24537,38491:25151,38492:26292,38493:26395,38494:26576,38495:26834,38496:20882,38497:32033,38498:32938,38499:33192,38500:35584,38501:35980,38502:36031,38503:37502,38504:38450,38505:21536,38506:38956,38507:21271,38508:20693,38509:21340,38510:22696,38511:25778,38512:26420,38513:29287,38514:30566,38515:31302,38516:37350,38517:21187,38518:27809,38519:27526,38520:22528,38521:24140,38522:22868,38523:26412,38524:32763,38525:20961,38526:30406,38528:25705,38529:30952,38530:39764,38531:40635,38532:22475,38533:22969,38534:26151,38535:26522,38536:27598,38537:21737,38538:27097,38539:24149,38540:33180,38541:26517,38542:39850,38543:26622,38544:40018,38545:26717,38546:20134,38547:20451,38548:21448,38549:25273,38550:26411,38551:27819,38552:36804,38553:20397,38554:32365,38555:40639,38556:19975,38557:24930,38558:28288,38559:28459,38560:34067,38561:21619,38562:26410,38563:39749,38564:24051,38565:31637,38566:23724,38567:23494,38568:34588,38569:28234,38570:34001,38571:31252,38572:33032,38573:22937,38574:31885,38575:27665,38576:30496,38577:21209,38578:22818,38579:28961,38580:29279,38581:30683,38582:38695,38583:40289,38584:26891,38585:23167,38586:23064,38587:20901,38588:21517,38589:21629,38590:26126,38591:30431,38592:36855,38593:37528,38594:40180,38595:23018,38596:29277,38597:28357,38598:20813,38599:26825,38600:32191,38601:32236,38602:38754,38603:40634,38604:25720,38605:27169,38606:33538,38607:22916,38608:23391,38609:27611,38610:29467,38611:30450,38612:32178,38613:32791,38614:33945,38615:20786,38616:26408,38617:40665,38618:30446,38619:26466,38620:21247,38621:39173,38622:23588,38623:25147,38624:31870,38625:36016,38626:21839,38627:24758,38628:32011,38629:38272,38630:21249,38631:20063,38632:20918,38633:22812,38634:29242,38635:32822,38636:37326,38637:24357,38638:30690,38639:21380,38640:24441,38641:32004,38642:34220,38643:35379,38644:36493,38645:38742,38646:26611,38647:34222,38648:37971,38649:24841,38650:24840,38651:27833,38652:30290,38720:35565,38721:36664,38722:21807,38723:20305,38724:20778,38725:21191,38726:21451,38727:23461,38728:24189,38729:24736,38730:24962,38731:25558,38732:26377,38733:26586,38734:28263,38735:28044,38736:29494,38737:29495,38738:30001,38739:31056,38740:35029,38741:35480,38742:36938,38743:37009,38744:37109,38745:38596,38746:34701,38747:22805,38748:20104,38749:20313,38750:19982,38751:35465,38752:36671,38753:38928,38754:20653,38755:24188,38756:22934,38757:23481,38758:24248,38759:25562,38760:25594,38761:25793,38762:26332,38763:26954,38764:27096,38765:27915,38766:28342,38767:29076,38768:29992,38769:31407,38770:32650,38771:32768,38772:33865,38773:33993,38774:35201,38775:35617,38776:36362,38777:36965,38778:38525,38779:39178,38780:24958,38781:25233,38782:27442,38784:27779,38785:28020,38786:32716,38787:32764,38788:28096,38789:32645,38790:34746,38791:35064,38792:26469,38793:33713,38794:38972,38795:38647,38796:27931,38797:32097,38798:33853,38799:37226,38800:20081,38801:21365,38802:23888,38803:27396,38804:28651,38805:34253,38806:34349,38807:35239,38808:21033,38809:21519,38810:23653,38811:26446,38812:26792,38813:29702,38814:29827,38815:30178,38816:35023,38817:35041,38818:37324,38819:38626,38820:38520,38821:24459,38822:29575,38823:31435,38824:33870,38825:25504,38826:30053,38827:21129,38828:27969,38829:28316,38830:29705,38831:30041,38832:30827,38833:31890,38834:38534,38835:31452,38836:40845,38837:20406,38838:24942,38839:26053,38840:34396,38841:20102,38842:20142,38843:20698,38844:20001,38845:20940,38846:23534,38847:26009,38848:26753,38849:28092,38850:29471,38851:30274,38852:30637,38853:31260,38854:31975,38855:33391,38856:35538,38857:36988,38858:37327,38859:38517,38860:38936,38861:21147,38862:32209,38863:20523,38864:21400,38865:26519,38866:28107,38867:29136,38868:29747,38869:33256,38870:36650,38871:38563,38872:40023,38873:40607,38874:29792,38875:22593,38876:28057,38877:32047,38878:39006,38879:20196,38880:20278,38881:20363,38882:20919,38883:21169,38884:23994,38885:24604,38886:29618,38887:31036,38888:33491,38889:37428,38890:38583,38891:38646,38892:38666,38893:40599,38894:40802,38895:26278,38896:27508,38897:21015,38898:21155,38899:28872,38900:35010,38901:24265,38902:24651,38903:24976,38904:28451,38905:29001,38906:31806,38907:32244,38908:32879,38976:34030,38977:36899,38978:37676,38979:21570,38980:39791,38981:27347,38982:28809,38983:36034,38984:36335,38985:38706,38986:21172,38987:23105,38988:24266,38989:24324,38990:26391,38991:27004,38992:27028,38993:28010,38994:28431,38995:29282,38996:29436,38997:31725,38998:32769,38999:32894,39E3:34635,39001:37070,39002:20845,39003:40595,39004:31108,39005:32907,39006:37682,39007:35542,39008:20525,39009:21644,39010:35441,39011:27498,39012:36036,39013:33031,39014:24785,39015:26528,39016:40434,39017:20121,39018:20120,39019:39952,39020:35435,39021:34241,39022:34152,39023:26880,39024:28286,39025:30871,39026:33109,39071:24332,39072:19984,39073:19989,39074:20010,39075:20017,39076:20022,39077:20028,39078:20031,39079:20034,39080:20054,39081:20056,39082:20098,39083:20101,39084:35947,39085:20106,39086:33298,39087:24333,39088:20110,39089:20126,39090:20127,39091:20128,39092:20130,39093:20144,39094:20147,39095:20150,39096:20174,39097:20173,39098:20164,39099:20166,39100:20162,39101:20183,39102:20190,39103:20205,39104:20191,39105:20215,39106:20233,39107:20314,39108:20272,39109:20315,39110:20317,39111:20311,39112:20295,39113:20342,39114:20360,39115:20367,39116:20376,39117:20347,39118:20329,39119:20336,39120:20369,39121:20335,39122:20358,39123:20374,39124:20760,39125:20436,39126:20447,39127:20430,39128:20440,39129:20443,39130:20433,39131:20442,39132:20432,39133:20452,39134:20453,39135:20506,39136:20520,39137:20500,39138:20522,39139:20517,39140:20485,39141:20252,39142:20470,39143:20513,39144:20521,39145:20524,39146:20478,39147:20463,39148:20497,39149:20486,39150:20547,39151:20551,39152:26371,39153:20565,39154:20560,39155:20552,39156:20570,39157:20566,39158:20588,39159:20600,39160:20608,39161:20634,39162:20613,39163:20660,39164:20658,39232:20681,39233:20682,39234:20659,39235:20674,39236:20694,39237:20702,39238:20709,39239:20717,39240:20707,39241:20718,39242:20729,39243:20725,39244:20745,39245:20737,39246:20738,39247:20758,39248:20757,39249:20756,39250:20762,39251:20769,39252:20794,39253:20791,39254:20796,39255:20795,39256:20799,39257:20800,39258:20818,39259:20812,39260:20820,39261:20834,39262:31480,39263:20841,39264:20842,39265:20846,39266:20864,39267:20866,39268:22232,39269:20876,39270:20873,39271:20879,39272:20881,39273:20883,39274:20885,39275:20886,39276:20900,39277:20902,39278:20898,39279:20905,39280:20906,39281:20907,39282:20915,39283:20913,39284:20914,39285:20912,39286:20917,39287:20925,39288:20933,39289:20937,39290:20955,39291:20960,39292:34389,39293:20969,39294:20973,39296:20976,39297:20981,39298:20990,39299:20996,39300:21003,39301:21012,39302:21006,39303:21031,39304:21034,39305:21038,39306:21043,39307:21049,39308:21071,39309:21060,39310:21067,39311:21068,39312:21086,39313:21076,39314:21098,39315:21108,39316:21097,39317:21107,39318:21119,39319:21117,39320:21133,39321:21140,39322:21138,39323:21105,39324:21128,39325:21137,39326:36776,39327:36775,39328:21164,39329:21165,39330:21180,39331:21173,39332:21185,39333:21197,39334:21207,39335:21214,39336:21219,39337:21222,39338:39149,39339:21216,39340:21235,39341:21237,39342:21240,39343:21241,39344:21254,39345:21256,39346:30008,39347:21261,39348:21264,39349:21263,39350:21269,39351:21274,39352:21283,39353:21295,39354:21297,39355:21299,39356:21304,39357:21312,39358:21318,39359:21317,39360:19991,39361:21321,39362:21325,39363:20950,39364:21342,39365:21353,39366:21358,39367:22808,39368:21371,39369:21367,39370:21378,39371:21398,39372:21408,39373:21414,39374:21413,39375:21422,39376:21424,39377:21430,39378:21443,39379:31762,39380:38617,39381:21471,39382:26364,39383:29166,39384:21486,39385:21480,39386:21485,39387:21498,39388:21505,39389:21565,39390:21568,39391:21548,39392:21549,39393:21564,39394:21550,39395:21558,39396:21545,39397:21533,39398:21582,39399:21647,39400:21621,39401:21646,39402:21599,39403:21617,39404:21623,39405:21616,39406:21650,39407:21627,39408:21632,39409:21622,39410:21636,39411:21648,39412:21638,39413:21703,39414:21666,39415:21688,39416:21669,39417:21676,39418:21700,39419:21704,39420:21672,39488:21675,39489:21698,39490:21668,39491:21694,39492:21692,39493:21720,39494:21733,39495:21734,39496:21775,39497:21780,39498:21757,39499:21742,39500:21741,39501:21754,39502:21730,39503:21817,39504:21824,39505:21859,39506:21836,39507:21806,39508:21852,39509:21829,39510:21846,39511:21847,39512:21816,39513:21811,39514:21853,39515:21913,39516:21888,39517:21679,39518:21898,39519:21919,39520:21883,39521:21886,39522:21912,39523:21918,39524:21934,39525:21884,39526:21891,39527:21929,39528:21895,39529:21928,39530:21978,39531:21957,39532:21983,39533:21956,39534:21980,39535:21988,39536:21972,39537:22036,39538:22007,39539:22038,39540:22014,39541:22013,39542:22043,39543:22009,39544:22094,39545:22096,39546:29151,39547:22068,39548:22070,39549:22066,39550:22072,39552:22123,39553:22116,39554:22063,39555:22124,39556:22122,39557:22150,39558:22144,39559:22154,39560:22176,39561:22164,39562:22159,39563:22181,39564:22190,39565:22198,39566:22196,39567:22210,39568:22204,39569:22209,39570:22211,39571:22208,39572:22216,39573:22222,39574:22225,39575:22227,39576:22231,39577:22254,39578:22265,39579:22272,39580:22271,39581:22276,39582:22281,39583:22280,39584:22283,39585:22285,39586:22291,39587:22296,39588:22294,39589:21959,39590:22300,39591:22310,39592:22327,39593:22328,39594:22350,39595:22331,39596:22336,39597:22351,39598:22377,39599:22464,39600:22408,39601:22369,39602:22399,39603:22409,39604:22419,39605:22432,39606:22451,39607:22436,39608:22442,39609:22448,39610:22467,39611:22470,39612:22484,39613:22482,39614:22483,39615:22538,39616:22486,39617:22499,39618:22539,39619:22553,39620:22557,39621:22642,39622:22561,39623:22626,39624:22603,39625:22640,39626:27584,39627:22610,39628:22589,39629:22649,39630:22661,39631:22713,39632:22687,39633:22699,39634:22714,39635:22750,39636:22715,39637:22712,39638:22702,39639:22725,39640:22739,39641:22737,39642:22743,39643:22745,39644:22744,39645:22757,39646:22748,39647:22756,39648:22751,39649:22767,39650:22778,39651:22777,39652:22779,39653:22780,39654:22781,39655:22786,39656:22794,39657:22800,39658:22811,39659:26790,39660:22821,39661:22828,39662:22829,39663:22834,39664:22840,39665:22846,39666:31442,39667:22869,39668:22864,39669:22862,39670:22874,39671:22872,39672:22882,39673:22880,39674:22887,39675:22892,39676:22889,39744:22904,39745:22913,39746:22941,39747:20318,39748:20395,39749:22947,39750:22962,39751:22982,39752:23016,39753:23004,39754:22925,39755:23001,39756:23002,39757:23077,39758:23071,39759:23057,39760:23068,39761:23049,39762:23066,39763:23104,39764:23148,39765:23113,39766:23093,39767:23094,39768:23138,39769:23146,39770:23194,39771:23228,39772:23230,39773:23243,39774:23234,39775:23229,39776:23267,39777:23255,39778:23270,39779:23273,39780:23254,39781:23290,39782:23291,39783:23308,39784:23307,39785:23318,39786:23346,39787:23248,39788:23338,39789:23350,39790:23358,39791:23363,39792:23365,39793:23360,39794:23377,39795:23381,39796:23386,39797:23387,39798:23397,39799:23401,39800:23408,39801:23411,39802:23413,39803:23416,39804:25992,39805:23418,39806:23424,39808:23427,39809:23462,39810:23480,39811:23491,39812:23495,39813:23497,39814:23508,39815:23504,39816:23524,39817:23526,39818:23522,39819:23518,39820:23525,39821:23531,39822:23536,39823:23542,39824:23539,39825:23557,39826:23559,39827:23560,39828:23565,39829:23571,39830:23584,39831:23586,39832:23592,39833:23608,39834:23609,39835:23617,39836:23622,39837:23630,39838:23635,39839:23632,39840:23631,39841:23409,39842:23660,39843:23662,39844:20066,39845:23670,39846:23673,39847:23692,39848:23697,39849:23700,39850:22939,39851:23723,39852:23739,39853:23734,39854:23740,39855:23735,39856:23749,39857:23742,39858:23751,39859:23769,39860:23785,39861:23805,39862:23802,39863:23789,39864:23948,39865:23786,39866:23819,39867:23829,39868:23831,39869:23900,39870:23839,39871:23835,39872:23825,39873:23828,39874:23842,39875:23834,39876:23833,39877:23832,39878:23884,39879:23890,39880:23886,39881:23883,39882:23916,39883:23923,39884:23926,39885:23943,39886:23940,39887:23938,39888:23970,39889:23965,39890:23980,39891:23982,39892:23997,39893:23952,39894:23991,39895:23996,39896:24009,39897:24013,39898:24019,39899:24018,39900:24022,39901:24027,39902:24043,39903:24050,39904:24053,39905:24075,39906:24090,39907:24089,39908:24081,39909:24091,39910:24118,39911:24119,39912:24132,39913:24131,39914:24128,39915:24142,39916:24151,39917:24148,39918:24159,39919:24162,39920:24164,39921:24135,39922:24181,39923:24182,39924:24186,39925:40636,39926:24191,39927:24224,39928:24257,39929:24258,39930:24264,39931:24272,39932:24271,4E4:24278,40001:24291,40002:24285,40003:24282,40004:24283,40005:24290,40006:24289,40007:24296,40008:24297,40009:24300,40010:24305,40011:24307,40012:24304,40013:24308,40014:24312,40015:24318,40016:24323,40017:24329,40018:24413,40019:24412,40020:24331,40021:24337,40022:24342,40023:24361,40024:24365,40025:24376,40026:24385,40027:24392,40028:24396,40029:24398,40030:24367,40031:24401,40032:24406,40033:24407,40034:24409,40035:24417,40036:24429,40037:24435,40038:24439,40039:24451,40040:24450,40041:24447,40042:24458,40043:24456,40044:24465,40045:24455,40046:24478,40047:24473,40048:24472,40049:24480,40050:24488,40051:24493,40052:24508,40053:24534,40054:24571,40055:24548,40056:24568,40057:24561,40058:24541,40059:24755,40060:24575,40061:24609,40062:24672,40064:24601,40065:24592,40066:24617,40067:24590,40068:24625,40069:24603,40070:24597,40071:24619,40072:24614,40073:24591,40074:24634,40075:24666,40076:24641,40077:24682,40078:24695,40079:24671,40080:24650,40081:24646,40082:24653,40083:24675,40084:24643,40085:24676,40086:24642,40087:24684,40088:24683,40089:24665,40090:24705,40091:24717,40092:24807,40093:24707,40094:24730,40095:24708,40096:24731,40097:24726,40098:24727,40099:24722,40100:24743,40101:24715,40102:24801,40103:24760,40104:24800,40105:24787,40106:24756,40107:24560,40108:24765,40109:24774,40110:24757,40111:24792,40112:24909,40113:24853,40114:24838,40115:24822,40116:24823,40117:24832,40118:24820,40119:24826,40120:24835,40121:24865,40122:24827,40123:24817,40124:24845,40125:24846,40126:24903,40127:24894,40128:24872,40129:24871,40130:24906,40131:24895,40132:24892,40133:24876,40134:24884,40135:24893,40136:24898,40137:24900,40138:24947,40139:24951,40140:24920,40141:24921,40142:24922,40143:24939,40144:24948,40145:24943,40146:24933,40147:24945,40148:24927,40149:24925,40150:24915,40151:24949,40152:24985,40153:24982,40154:24967,40155:25004,40156:24980,40157:24986,40158:24970,40159:24977,40160:25003,40161:25006,40162:25036,40163:25034,40164:25033,40165:25079,40166:25032,40167:25027,40168:25030,40169:25018,40170:25035,40171:32633,40172:25037,40173:25062,40174:25059,40175:25078,40176:25082,40177:25076,40178:25087,40179:25085,40180:25084,40181:25086,40182:25088,40183:25096,40184:25097,40185:25101,40186:25100,40187:25108,40188:25115,40256:25118,40257:25121,40258:25130,40259:25134,40260:25136,40261:25138,40262:25139,40263:25153,40264:25166,40265:25182,40266:25187,40267:25179,40268:25184,40269:25192,40270:25212,40271:25218,40272:25225,40273:25214,40274:25234,40275:25235,40276:25238,40277:25300,40278:25219,40279:25236,40280:25303,40281:25297,40282:25275,40283:25295,40284:25343,40285:25286,40286:25812,40287:25288,40288:25308,40289:25292,40290:25290,40291:25282,40292:25287,40293:25243,40294:25289,40295:25356,40296:25326,40297:25329,40298:25383,40299:25346,40300:25352,40301:25327,40302:25333,40303:25424,40304:25406,40305:25421,40306:25628,40307:25423,40308:25494,40309:25486,40310:25472,40311:25515,40312:25462,40313:25507,40314:25487,40315:25481,40316:25503,40317:25525,40318:25451,40320:25449,40321:25534,40322:25577,40323:25536,40324:25542,40325:25571,40326:25545,40327:25554,40328:25590,40329:25540,40330:25622,40331:25652,40332:25606,40333:25619,40334:25638,40335:25654,40336:25885,40337:25623,40338:25640,40339:25615,40340:25703,40341:25711,40342:25718,40343:25678,40344:25898,40345:25749,40346:25747,40347:25765,40348:25769,40349:25736,40350:25788,40351:25818,40352:25810,40353:25797,40354:25799,40355:25787,40356:25816,40357:25794,40358:25841,40359:25831,40360:33289,40361:25824,40362:25825,40363:25260,40364:25827,40365:25839,40366:25900,40367:25846,40368:25844,40369:25842,40370:25850,40371:25856,40372:25853,40373:25880,40374:25884,40375:25861,40376:25892,40377:25891,40378:25899,40379:25908,40380:25909,40381:25911,40382:25910,40383:25912,40384:30027,40385:25928,40386:25942,40387:25941,40388:25933,40389:25944,40390:25950,40391:25949,40392:25970,40393:25976,40394:25986,40395:25987,40396:35722,40397:26011,40398:26015,40399:26027,40400:26039,40401:26051,40402:26054,40403:26049,40404:26052,40405:26060,40406:26066,40407:26075,40408:26073,40409:26080,40410:26081,40411:26097,40412:26482,40413:26122,40414:26115,40415:26107,40416:26483,40417:26165,40418:26166,40419:26164,40420:26140,40421:26191,40422:26180,40423:26185,40424:26177,40425:26206,40426:26205,40427:26212,40428:26215,40429:26216,40430:26207,40431:26210,40432:26224,40433:26243,40434:26248,40435:26254,40436:26249,40437:26244,40438:26264,40439:26269,40440:26305,40441:26297,40442:26313,40443:26302,40444:26300,40512:26308,40513:26296,40514:26326,40515:26330,40516:26336,40517:26175,40518:26342,40519:26345,40520:26352,40521:26357,40522:26359,40523:26383,40524:26390,40525:26398,40526:26406,40527:26407,40528:38712,40529:26414,40530:26431,40531:26422,40532:26433,40533:26424,40534:26423,40535:26438,40536:26462,40537:26464,40538:26457,40539:26467,40540:26468,40541:26505,40542:26480,40543:26537,40544:26492,40545:26474,40546:26508,40547:26507,40548:26534,40549:26529,40550:26501,40551:26551,40552:26607,40553:26548,40554:26604,40555:26547,40556:26601,40557:26552,40558:26596,40559:26590,40560:26589,40561:26594,40562:26606,40563:26553,40564:26574,40565:26566,40566:26599,40567:27292,40568:26654,40569:26694,40570:26665,40571:26688,40572:26701,40573:26674,40574:26702,40576:26803,40577:26667,40578:26713,40579:26723,40580:26743,40581:26751,40582:26783,40583:26767,40584:26797,40585:26772,40586:26781,40587:26779,40588:26755,40589:27310,40590:26809,40591:26740,40592:26805,40593:26784,40594:26810,40595:26895,40596:26765,40597:26750,40598:26881,40599:26826,40600:26888,40601:26840,40602:26914,40603:26918,40604:26849,40605:26892,40606:26829,40607:26836,40608:26855,40609:26837,40610:26934,40611:26898,40612:26884,40613:26839,40614:26851,40615:26917,40616:26873,40617:26848,40618:26863,40619:26920,40620:26922,40621:26906,40622:26915,40623:26913,40624:26822,40625:27001,40626:26999,40627:26972,40628:27E3,40629:26987,40630:26964,40631:27006,40632:26990,40633:26937,40634:26996,40635:26941,40636:26969,40637:26928,40638:26977,40639:26974,40640:26973,40641:27009,40642:26986,40643:27058,40644:27054,40645:27088,40646:27071,40647:27073,40648:27091,40649:27070,40650:27086,40651:23528,40652:27082,40653:27101,40654:27067,40655:27075,40656:27047,40657:27182,40658:27025,40659:27040,40660:27036,40661:27029,40662:27060,40663:27102,40664:27112,40665:27138,40666:27163,40667:27135,40668:27402,40669:27129,40670:27122,40671:27111,40672:27141,40673:27057,40674:27166,40675:27117,40676:27156,40677:27115,40678:27146,40679:27154,40680:27329,40681:27171,40682:27155,40683:27204,40684:27148,40685:27250,40686:27190,40687:27256,40688:27207,40689:27234,40690:27225,40691:27238,40692:27208,40693:27192,40694:27170,40695:27280,40696:27277,40697:27296,40698:27268,40699:27298,40700:27299,40768:27287,40769:34327,40770:27323,40771:27331,40772:27330,40773:27320,40774:27315,40775:27308,40776:27358,40777:27345,40778:27359,40779:27306,40780:27354,40781:27370,40782:27387,40783:27397,40784:34326,40785:27386,40786:27410,40787:27414,40788:39729,40789:27423,40790:27448,40791:27447,40792:30428,40793:27449,40794:39150,40795:27463,40796:27459,40797:27465,40798:27472,40799:27481,40800:27476,40801:27483,40802:27487,40803:27489,40804:27512,40805:27513,40806:27519,40807:27520,40808:27524,40809:27523,40810:27533,40811:27544,40812:27541,40813:27550,40814:27556,40815:27562,40816:27563,40817:27567,40818:27570,40819:27569,40820:27571,40821:27575,40822:27580,40823:27590,40824:27595,40825:27603,40826:27615,40827:27628,40828:27627,40829:27635,40830:27631,40832:40638,40833:27656,40834:27667,40835:27668,40836:27675,40837:27684,40838:27683,40839:27742,40840:27733,40841:27746,40842:27754,40843:27778,40844:27789,40845:27802,40846:27777,40847:27803,40848:27774,40849:27752,40850:27763,40851:27794,40852:27792,40853:27844,40854:27889,40855:27859,40856:27837,40857:27863,40858:27845,40859:27869,40860:27822,40861:27825,40862:27838,40863:27834,40864:27867,40865:27887,40866:27865,40867:27882,40868:27935,40869:34893,40870:27958,40871:27947,40872:27965,40873:27960,40874:27929,40875:27957,40876:27955,40877:27922,40878:27916,40879:28003,40880:28051,40881:28004,40882:27994,40883:28025,40884:27993,40885:28046,40886:28053,40887:28644,40888:28037,40889:28153,40890:28181,40891:28170,40892:28085,40893:28103,40894:28134,40895:28088,40896:28102,40897:28140,40898:28126,40899:28108,40900:28136,40901:28114,40902:28101,40903:28154,40904:28121,40905:28132,40906:28117,40907:28138,40908:28142,40909:28205,40910:28270,40911:28206,40912:28185,40913:28274,40914:28255,40915:28222,40916:28195,40917:28267,40918:28203,40919:28278,40920:28237,40921:28191,40922:28227,40923:28218,40924:28238,40925:28196,40926:28415,40927:28189,40928:28216,40929:28290,40930:28330,40931:28312,40932:28361,40933:28343,40934:28371,40935:28349,40936:28335,40937:28356,40938:28338,40939:28372,40940:28373,40941:28303,40942:28325,40943:28354,40944:28319,40945:28481,40946:28433,40947:28748,40948:28396,40949:28408,40950:28414,40951:28479,40952:28402,40953:28465,40954:28399,40955:28466,40956:28364,161:65377,162:65378,163:65379,164:65380,165:65381,166:65382,167:65383,168:65384,169:65385,170:65386,171:65387,172:65388,173:65389,174:65390,175:65391,176:65392,177:65393,178:65394,179:65395,180:65396,181:65397,182:65398,183:65399,184:65400,185:65401,186:65402,187:65403,188:65404,189:65405,190:65406,191:65407,192:65408,193:65409,194:65410,195:65411,196:65412,197:65413,198:65414,199:65415,200:65416,201:65417,202:65418,203:65419,204:65420,205:65421,206:65422,207:65423,208:65424,209:65425,210:65426,211:65427,212:65428,213:65429,214:65430,215:65431,216:65432,217:65433,218:65434,219:65435,220:65436,221:65437,222:65438,223:65439,57408:28478,57409:28435,57410:28407,57411:28550,57412:28538,57413:28536,57414:28545,57415:28544,57416:28527,57417:28507,57418:28659,57419:28525,57420:28546,57421:28540,57422:28504,57423:28558,57424:28561,57425:28610,57426:28518,57427:28595,57428:28579,57429:28577,57430:28580,57431:28601,57432:28614,57433:28586,57434:28639,57435:28629,57436:28652,57437:28628,57438:28632,57439:28657,57440:28654,57441:28635,57442:28681,57443:28683,57444:28666,57445:28689,57446:28673,57447:28687,57448:28670,57449:28699,57450:28698,57451:28532,57452:28701,57453:28696,57454:28703,57455:28720,57456:28734,57457:28722,57458:28753,57459:28771,57460:28825,57461:28818,57462:28847,57463:28913,57464:28844,57465:28856,57466:28851,57467:28846,57468:28895,57469:28875,57470:28893,57472:28889,57473:28937,57474:28925,57475:28956,57476:28953,57477:29029,57478:29013,57479:29064,57480:29030,57481:29026,57482:29004,57483:29014,57484:29036,57485:29071,57486:29179,57487:29060,57488:29077,57489:29096,57490:29100,57491:29143,57492:29113,57493:29118,57494:29138,57495:29129,57496:29140,57497:29134,57498:29152,57499:29164,57500:29159,57501:29173,57502:29180,57503:29177,57504:29183,57505:29197,57506:29200,57507:29211,57508:29224,57509:29229,57510:29228,57511:29232,57512:29234,57513:29243,57514:29244,57515:29247,57516:29248,57517:29254,57518:29259,57519:29272,57520:29300,57521:29310,57522:29314,57523:29313,57524:29319,57525:29330,57526:29334,57527:29346,57528:29351,57529:29369,57530:29362,57531:29379,57532:29382,57533:29380,57534:29390,57535:29394,57536:29410,57537:29408,57538:29409,57539:29433,57540:29431,57541:20495,57542:29463,57543:29450,57544:29468,57545:29462,57546:29469,57547:29492,57548:29487,57549:29481,57550:29477,57551:29502,57552:29518,57553:29519,57554:40664,57555:29527,57556:29546,57557:29544,57558:29552,57559:29560,57560:29557,57561:29563,57562:29562,57563:29640,57564:29619,57565:29646,57566:29627,57567:29632,57568:29669,57569:29678,57570:29662,57571:29858,57572:29701,57573:29807,57574:29733,57575:29688,57576:29746,57577:29754,57578:29781,57579:29759,57580:29791,57581:29785,57582:29761,57583:29788,57584:29801,57585:29808,57586:29795,57587:29802,57588:29814,57589:29822,57590:29835,57591:29854,57592:29863,57593:29898,57594:29903,57595:29908,57596:29681,57664:29920,57665:29923,57666:29927,57667:29929,57668:29934,57669:29938,57670:29936,57671:29937,57672:29944,57673:29943,57674:29956,57675:29955,57676:29957,57677:29964,57678:29966,57679:29965,57680:29973,57681:29971,57682:29982,57683:29990,57684:29996,57685:30012,57686:30020,57687:30029,57688:30026,57689:30025,57690:30043,57691:30022,57692:30042,57693:30057,57694:30052,57695:30055,57696:30059,57697:30061,57698:30072,57699:30070,57700:30086,57701:30087,57702:30068,57703:30090,57704:30089,57705:30082,57706:30100,57707:30106,57708:30109,57709:30117,57710:30115,57711:30146,57712:30131,57713:30147,57714:30133,57715:30141,57716:30136,57717:30140,57718:30129,57719:30157,57720:30154,57721:30162,57722:30169,57723:30179,57724:30174,57725:30206,57726:30207,57728:30204,57729:30209,57730:30192,57731:30202,57732:30194,57733:30195,57734:30219,57735:30221,57736:30217,57737:30239,57738:30247,57739:30240,57740:30241,57741:30242,57742:30244,57743:30260,57744:30256,57745:30267,57746:30279,57747:30280,57748:30278,57749:30300,57750:30296,57751:30305,57752:30306,57753:30312,57754:30313,57755:30314,57756:30311,57757:30316,57758:30320,57759:30322,57760:30326,57761:30328,57762:30332,57763:30336,57764:30339,57765:30344,57766:30347,57767:30350,57768:30358,57769:30355,57770:30361,57771:30362,57772:30384,57773:30388,57774:30392,57775:30393,57776:30394,57777:30402,57778:30413,57779:30422,57780:30418,57781:30430,57782:30433,57783:30437,57784:30439,57785:30442,57786:34351,57787:30459,57788:30472,57789:30471,57790:30468,57791:30505,57792:30500,57793:30494,57794:30501,57795:30502,57796:30491,57797:30519,57798:30520,57799:30535,57800:30554,57801:30568,57802:30571,57803:30555,57804:30565,57805:30591,57806:30590,57807:30585,57808:30606,57809:30603,57810:30609,57811:30624,57812:30622,57813:30640,57814:30646,57815:30649,57816:30655,57817:30652,57818:30653,57819:30651,57820:30663,57821:30669,57822:30679,57823:30682,57824:30684,57825:30691,57826:30702,57827:30716,57828:30732,57829:30738,57830:31014,57831:30752,57832:31018,57833:30789,57834:30862,57835:30836,57836:30854,57837:30844,57838:30874,57839:30860,57840:30883,57841:30901,57842:30890,57843:30895,57844:30929,57845:30918,57846:30923,57847:30932,57848:30910,57849:30908,57850:30917,57851:30922,57852:30956,57920:30951,57921:30938,57922:30973,57923:30964,57924:30983,57925:30994,57926:30993,57927:31001,57928:31020,57929:31019,57930:31040,57931:31072,57932:31063,57933:31071,57934:31066,57935:31061,57936:31059,57937:31098,57938:31103,57939:31114,57940:31133,57941:31143,57942:40779,57943:31146,57944:31150,57945:31155,57946:31161,57947:31162,57948:31177,57949:31189,57950:31207,57951:31212,57952:31201,57953:31203,57954:31240,57955:31245,57956:31256,57957:31257,57958:31264,57959:31263,57960:31104,57961:31281,57962:31291,57963:31294,57964:31287,57965:31299,57966:31319,57967:31305,57968:31329,57969:31330,57970:31337,57971:40861,57972:31344,57973:31353,57974:31357,57975:31368,57976:31383,57977:31381,57978:31384,57979:31382,57980:31401,57981:31432,57982:31408,57984:31414,57985:31429,57986:31428,57987:31423,57988:36995,57989:31431,57990:31434,57991:31437,57992:31439,57993:31445,57994:31443,57995:31449,57996:31450,57997:31453,57998:31457,57999:31458,58E3:31462,58001:31469,58002:31472,58003:31490,58004:31503,58005:31498,58006:31494,58007:31539,58008:31512,58009:31513,58010:31518,58011:31541,58012:31528,58013:31542,58014:31568,58015:31610,58016:31492,58017:31565,58018:31499,58019:31564,58020:31557,58021:31605,58022:31589,58023:31604,58024:31591,58025:31600,58026:31601,58027:31596,58028:31598,58029:31645,58030:31640,58031:31647,58032:31629,58033:31644,58034:31642,58035:31627,58036:31634,58037:31631,58038:31581,58039:31641,58040:31691,58041:31681,58042:31692,58043:31695,58044:31668,58045:31686,58046:31709,58047:31721,58048:31761,58049:31764,58050:31718,58051:31717,58052:31840,58053:31744,58054:31751,58055:31763,58056:31731,58057:31735,58058:31767,58059:31757,58060:31734,58061:31779,58062:31783,58063:31786,58064:31775,58065:31799,58066:31787,58067:31805,58068:31820,58069:31811,58070:31828,58071:31823,58072:31808,58073:31824,58074:31832,58075:31839,58076:31844,58077:31830,58078:31845,58079:31852,58080:31861,58081:31875,58082:31888,58083:31908,58084:31917,58085:31906,58086:31915,58087:31905,58088:31912,58089:31923,58090:31922,58091:31921,58092:31918,58093:31929,58094:31933,58095:31936,58096:31941,58097:31938,58098:31960,58099:31954,58100:31964,58101:31970,58102:39739,58103:31983,58104:31986,58105:31988,58106:31990,58107:31994,58108:32006,58176:32002,58177:32028,58178:32021,58179:32010,58180:32069,58181:32075,58182:32046,58183:32050,58184:32063,58185:32053,58186:32070,58187:32115,58188:32086,58189:32078,58190:32114,58191:32104,58192:32110,58193:32079,58194:32099,58195:32147,58196:32137,58197:32091,58198:32143,58199:32125,58200:32155,58201:32186,58202:32174,58203:32163,58204:32181,58205:32199,58206:32189,58207:32171,58208:32317,58209:32162,58210:32175,58211:32220,58212:32184,58213:32159,58214:32176,58215:32216,58216:32221,58217:32228,58218:32222,58219:32251,58220:32242,58221:32225,58222:32261,58223:32266,58224:32291,58225:32289,58226:32274,58227:32305,58228:32287,58229:32265,58230:32267,58231:32290,58232:32326,58233:32358,58234:32315,58235:32309,58236:32313,58237:32323,58238:32311,58240:32306,58241:32314,58242:32359,58243:32349,58244:32342,58245:32350,58246:32345,58247:32346,58248:32377,58249:32362,58250:32361,58251:32380,58252:32379,58253:32387,58254:32213,58255:32381,58256:36782,58257:32383,58258:32392,58259:32393,58260:32396,58261:32402,58262:32400,58263:32403,58264:32404,58265:32406,58266:32398,58267:32411,58268:32412,58269:32568,58270:32570,58271:32581,58272:32588,58273:32589,58274:32590,58275:32592,58276:32593,58277:32597,58278:32596,58279:32600,58280:32607,58281:32608,58282:32616,58283:32617,58284:32615,58285:32632,58286:32642,58287:32646,58288:32643,58289:32648,58290:32647,58291:32652,58292:32660,58293:32670,58294:32669,58295:32666,58296:32675,58297:32687,58298:32690,58299:32697,58300:32686,58301:32694,58302:32696,58303:35697,58304:32709,58305:32710,58306:32714,58307:32725,58308:32724,58309:32737,58310:32742,58311:32745,58312:32755,58313:32761,58314:39132,58315:32774,58316:32772,58317:32779,58318:32786,58319:32792,58320:32793,58321:32796,58322:32801,58323:32808,58324:32831,58325:32827,58326:32842,58327:32838,58328:32850,58329:32856,58330:32858,58331:32863,58332:32866,58333:32872,58334:32883,58335:32882,58336:32880,58337:32886,58338:32889,58339:32893,58340:32895,58341:32900,58342:32902,58343:32901,58344:32923,58345:32915,58346:32922,58347:32941,58348:20880,58349:32940,58350:32987,58351:32997,58352:32985,58353:32989,58354:32964,58355:32986,58356:32982,58357:33033,58358:33007,58359:33009,58360:33051,58361:33065,58362:33059,58363:33071,58364:33099,58432:38539,58433:33094,58434:33086,58435:33107,58436:33105,58437:33020,58438:33137,58439:33134,58440:33125,58441:33126,58442:33140,58443:33155,58444:33160,58445:33162,58446:33152,58447:33154,58448:33184,58449:33173,58450:33188,58451:33187,58452:33119,58453:33171,58454:33193,58455:33200,58456:33205,58457:33214,58458:33208,58459:33213,58460:33216,58461:33218,58462:33210,58463:33225,58464:33229,58465:33233,58466:33241,58467:33240,58468:33224,58469:33242,58470:33247,58471:33248,58472:33255,58473:33274,58474:33275,58475:33278,58476:33281,58477:33282,58478:33285,58479:33287,58480:33290,58481:33293,58482:33296,58483:33302,58484:33321,58485:33323,58486:33336,58487:33331,58488:33344,58489:33369,58490:33368,58491:33373,58492:33370,58493:33375,58494:33380,58496:33378,58497:33384,58498:33386,58499:33387,58500:33326,58501:33393,58502:33399,58503:33400,58504:33406,58505:33421,58506:33426,58507:33451,58508:33439,58509:33467,58510:33452,58511:33505,58512:33507,58513:33503,58514:33490,58515:33524,58516:33523,58517:33530,58518:33683,58519:33539,58520:33531,58521:33529,58522:33502,58523:33542,58524:33500,58525:33545,58526:33497,58527:33589,58528:33588,58529:33558,58530:33586,58531:33585,58532:33600,58533:33593,58534:33616,58535:33605,58536:33583,58537:33579,58538:33559,58539:33560,58540:33669,58541:33690,58542:33706,58543:33695,58544:33698,58545:33686,58546:33571,58547:33678,58548:33671,58549:33674,58550:33660,58551:33717,58552:33651,58553:33653,58554:33696,58555:33673,58556:33704,58557:33780,58558:33811,58559:33771,58560:33742,58561:33789,58562:33795,58563:33752,58564:33803,58565:33729,58566:33783,58567:33799,58568:33760,58569:33778,58570:33805,58571:33826,58572:33824,58573:33725,58574:33848,58575:34054,58576:33787,58577:33901,58578:33834,58579:33852,58580:34138,58581:33924,58582:33911,58583:33899,58584:33965,58585:33902,58586:33922,58587:33897,58588:33862,58589:33836,58590:33903,58591:33913,58592:33845,58593:33994,58594:33890,58595:33977,58596:33983,58597:33951,58598:34009,58599:33997,58600:33979,58601:34010,58602:34E3,58603:33985,58604:33990,58605:34006,58606:33953,58607:34081,58608:34047,58609:34036,58610:34071,58611:34072,58612:34092,58613:34079,58614:34069,58615:34068,58616:34044,58617:34112,58618:34147,58619:34136,58620:34120,58688:34113,58689:34306,58690:34123,58691:34133,58692:34176,58693:34212,58694:34184,58695:34193,58696:34186,58697:34216,58698:34157,58699:34196,58700:34203,58701:34282,58702:34183,58703:34204,58704:34167,58705:34174,58706:34192,58707:34249,58708:34234,58709:34255,58710:34233,58711:34256,58712:34261,58713:34269,58714:34277,58715:34268,58716:34297,58717:34314,58718:34323,58719:34315,58720:34302,58721:34298,58722:34310,58723:34338,58724:34330,58725:34352,58726:34367,58727:34381,58728:20053,58729:34388,58730:34399,58731:34407,58732:34417,58733:34451,58734:34467,58735:34473,58736:34474,58737:34443,58738:34444,58739:34486,58740:34479,58741:34500,58742:34502,58743:34480,58744:34505,58745:34851,58746:34475,58747:34516,58748:34526,58749:34537,58750:34540,58752:34527,58753:34523,58754:34543,58755:34578,58756:34566,58757:34568,58758:34560,58759:34563,58760:34555,58761:34577,58762:34569,58763:34573,58764:34553,58765:34570,58766:34612,58767:34623,58768:34615,58769:34619,58770:34597,58771:34601,58772:34586,58773:34656,58774:34655,58775:34680,58776:34636,58777:34638,58778:34676,58779:34647,58780:34664,58781:34670,58782:34649,58783:34643,58784:34659,58785:34666,58786:34821,58787:34722,58788:34719,58789:34690,58790:34735,58791:34763,58792:34749,58793:34752,58794:34768,58795:38614,58796:34731,58797:34756,58798:34739,58799:34759,58800:34758,58801:34747,58802:34799,58803:34802,58804:34784,58805:34831,58806:34829,58807:34814,58808:34806,58809:34807,58810:34830,58811:34770,58812:34833,58813:34838,58814:34837,58815:34850,58816:34849,58817:34865,58818:34870,58819:34873,58820:34855,58821:34875,58822:34884,58823:34882,58824:34898,58825:34905,58826:34910,58827:34914,58828:34923,58829:34945,58830:34942,58831:34974,58832:34933,58833:34941,58834:34997,58835:34930,58836:34946,58837:34967,58838:34962,58839:34990,58840:34969,58841:34978,58842:34957,58843:34980,58844:34992,58845:35007,58846:34993,58847:35011,58848:35012,58849:35028,58850:35032,58851:35033,58852:35037,58853:35065,58854:35074,58855:35068,58856:35060,58857:35048,58858:35058,58859:35076,58860:35084,58861:35082,58862:35091,58863:35139,58864:35102,58865:35109,58866:35114,58867:35115,58868:35137,58869:35140,58870:35131,58871:35126,58872:35128,58873:35148,58874:35101,58875:35168,58876:35166,58944:35174,58945:35172,58946:35181,58947:35178,58948:35183,58949:35188,58950:35191,58951:35198,58952:35203,58953:35208,58954:35210,58955:35219,58956:35224,58957:35233,58958:35241,58959:35238,58960:35244,58961:35247,58962:35250,58963:35258,58964:35261,58965:35263,58966:35264,58967:35290,58968:35292,58969:35293,58970:35303,58971:35316,58972:35320,58973:35331,58974:35350,58975:35344,58976:35340,58977:35355,58978:35357,58979:35365,58980:35382,58981:35393,58982:35419,58983:35410,58984:35398,58985:35400,58986:35452,58987:35437,58988:35436,58989:35426,58990:35461,58991:35458,58992:35460,58993:35496,58994:35489,58995:35473,58996:35493,58997:35494,58998:35482,58999:35491,59E3:35524,59001:35533,59002:35522,59003:35546,59004:35563,59005:35571,59006:35559,59008:35556,59009:35569,59010:35604,59011:35552,59012:35554,59013:35575,59014:35550,59015:35547,59016:35596,59017:35591,59018:35610,59019:35553,59020:35606,59021:35600,59022:35607,59023:35616,59024:35635,59025:38827,59026:35622,59027:35627,59028:35646,59029:35624,59030:35649,59031:35660,59032:35663,59033:35662,59034:35657,59035:35670,59036:35675,59037:35674,59038:35691,59039:35679,59040:35692,59041:35695,59042:35700,59043:35709,59044:35712,59045:35724,59046:35726,59047:35730,59048:35731,59049:35734,59050:35737,59051:35738,59052:35898,59053:35905,59054:35903,59055:35912,59056:35916,59057:35918,59058:35920,59059:35925,59060:35938,59061:35948,59062:35960,59063:35962,59064:35970,59065:35977,59066:35973,59067:35978,59068:35981,59069:35982,59070:35988,59071:35964,59072:35992,59073:25117,59074:36013,59075:36010,59076:36029,59077:36018,59078:36019,59079:36014,59080:36022,59081:36040,59082:36033,59083:36068,59084:36067,59085:36058,59086:36093,59087:36090,59088:36091,59089:36100,59090:36101,59091:36106,59092:36103,59093:36111,59094:36109,59095:36112,59096:40782,59097:36115,59098:36045,59099:36116,59100:36118,59101:36199,59102:36205,59103:36209,59104:36211,59105:36225,59106:36249,59107:36290,59108:36286,59109:36282,59110:36303,59111:36314,59112:36310,59113:36300,59114:36315,59115:36299,59116:36330,59117:36331,59118:36319,59119:36323,59120:36348,59121:36360,59122:36361,59123:36351,59124:36381,59125:36382,59126:36368,59127:36383,59128:36418,59129:36405,59130:36400,59131:36404,59132:36426,59200:36423,59201:36425,59202:36428,59203:36432,59204:36424,59205:36441,59206:36452,59207:36448,59208:36394,59209:36451,59210:36437,59211:36470,59212:36466,59213:36476,59214:36481,59215:36487,59216:36485,59217:36484,59218:36491,59219:36490,59220:36499,59221:36497,59222:36500,59223:36505,59224:36522,59225:36513,59226:36524,59227:36528,59228:36550,59229:36529,59230:36542,59231:36549,59232:36552,59233:36555,59234:36571,59235:36579,59236:36604,59237:36603,59238:36587,59239:36606,59240:36618,59241:36613,59242:36629,59243:36626,59244:36633,59245:36627,59246:36636,59247:36639,59248:36635,59249:36620,59250:36646,59251:36659,59252:36667,59253:36665,59254:36677,59255:36674,59256:36670,59257:36684,59258:36681,59259:36678,59260:36686,59261:36695,59262:36700,59264:36706,59265:36707,59266:36708,59267:36764,59268:36767,59269:36771,59270:36781,59271:36783,59272:36791,59273:36826,59274:36837,59275:36834,59276:36842,59277:36847,59278:36999,59279:36852,59280:36869,59281:36857,59282:36858,59283:36881,59284:36885,59285:36897,59286:36877,59287:36894,59288:36886,59289:36875,59290:36903,59291:36918,59292:36917,59293:36921,59294:36856,59295:36943,59296:36944,59297:36945,59298:36946,59299:36878,59300:36937,59301:36926,59302:36950,59303:36952,59304:36958,59305:36968,59306:36975,59307:36982,59308:38568,59309:36978,59310:36994,59311:36989,59312:36993,59313:36992,59314:37002,59315:37001,59316:37007,59317:37032,59318:37039,59319:37041,59320:37045,59321:37090,59322:37092,59323:25160,59324:37083,59325:37122,59326:37138,59327:37145,59328:37170,59329:37168,59330:37194,59331:37206,59332:37208,59333:37219,59334:37221,59335:37225,59336:37235,59337:37234,59338:37259,59339:37257,59340:37250,59341:37282,59342:37291,59343:37295,59344:37290,59345:37301,59346:37300,59347:37306,59348:37312,59349:37313,59350:37321,59351:37323,59352:37328,59353:37334,59354:37343,59355:37345,59356:37339,59357:37372,59358:37365,59359:37366,59360:37406,59361:37375,59362:37396,59363:37420,59364:37397,59365:37393,59366:37470,59367:37463,59368:37445,59369:37449,59370:37476,59371:37448,59372:37525,59373:37439,59374:37451,59375:37456,59376:37532,59377:37526,59378:37523,59379:37531,59380:37466,59381:37583,59382:37561,59383:37559,59384:37609,59385:37647,59386:37626,59387:37700,59388:37678,59456:37657,59457:37666,59458:37658,59459:37667,59460:37690,59461:37685,59462:37691,59463:37724,59464:37728,59465:37756,59466:37742,59467:37718,59468:37808,59469:37804,59470:37805,59471:37780,59472:37817,59473:37846,59474:37847,59475:37864,59476:37861,59477:37848,59478:37827,59479:37853,59480:37840,59481:37832,59482:37860,59483:37914,59484:37908,59485:37907,59486:37891,59487:37895,59488:37904,59489:37942,59490:37931,59491:37941,59492:37921,59493:37946,59494:37953,59495:37970,59496:37956,59497:37979,59498:37984,59499:37986,59500:37982,59501:37994,59502:37417,59503:38E3,59504:38005,59505:38007,59506:38013,59507:37978,59508:38012,59509:38014,59510:38017,59511:38015,59512:38274,59513:38279,59514:38282,59515:38292,59516:38294,59517:38296,59518:38297,59520:38304,59521:38312,59522:38311,59523:38317,59524:38332,59525:38331,59526:38329,59527:38334,59528:38346,59529:28662,59530:38339,59531:38349,59532:38348,59533:38357,59534:38356,59535:38358,59536:38364,59537:38369,59538:38373,59539:38370,59540:38433,59541:38440,59542:38446,59543:38447,59544:38466,59545:38476,59546:38479,59547:38475,59548:38519,59549:38492,59550:38494,59551:38493,59552:38495,59553:38502,59554:38514,59555:38508,59556:38541,59557:38552,59558:38549,59559:38551,59560:38570,59561:38567,59562:38577,59563:38578,59564:38576,59565:38580,59566:38582,59567:38584,59568:38585,59569:38606,59570:38603,59571:38601,59572:38605,59573:35149,59574:38620,59575:38669,59576:38613,59577:38649,59578:38660,59579:38662,59580:38664,59581:38675,59582:38670,59583:38673,59584:38671,59585:38678,59586:38681,59587:38692,59588:38698,59589:38704,59590:38713,59591:38717,59592:38718,59593:38724,59594:38726,59595:38728,59596:38722,59597:38729,59598:38748,59599:38752,59600:38756,59601:38758,59602:38760,59603:21202,59604:38763,59605:38769,59606:38777,59607:38789,59608:38780,59609:38785,59610:38778,59611:38790,59612:38795,59613:38799,59614:38800,59615:38812,59616:38824,59617:38822,59618:38819,59619:38835,59620:38836,59621:38851,59622:38854,59623:38856,59624:38859,59625:38876,59626:38893,59627:40783,59628:38898,59629:31455,59630:38902,59631:38901,59632:38927,59633:38924,59634:38968,59635:38948,59636:38945,59637:38967,59638:38973,59639:38982,59640:38991,59641:38987,59642:39019,59643:39023,59644:39024,59712:39025,59713:39028,59714:39027,59715:39082,59716:39087,59717:39089,59718:39094,59719:39108,59720:39107,59721:39110,59722:39145,59723:39147,59724:39171,59725:39177,59726:39186,59727:39188,59728:39192,59729:39201,59730:39197,59731:39198,59732:39204,59733:39200,59734:39212,59735:39214,59736:39229,59737:39230,59738:39234,59739:39241,59740:39237,59741:39248,59742:39243,59743:39249,59744:39250,59745:39244,59746:39253,59747:39319,59748:39320,59749:39333,59750:39341,59751:39342,59752:39356,59753:39391,59754:39387,59755:39389,59756:39384,59757:39377,59758:39405,59759:39406,59760:39409,59761:39410,59762:39419,59763:39416,59764:39425,59765:39439,59766:39429,59767:39394,59768:39449,59769:39467,59770:39479,59771:39493,59772:39490,59773:39488,59774:39491,59776:39486,59777:39509,59778:39501,59779:39515,59780:39511,59781:39519,59782:39522,59783:39525,59784:39524,59785:39529,59786:39531,59787:39530,59788:39597,59789:39600,59790:39612,59791:39616,59792:39631,59793:39633,59794:39635,59795:39636,59796:39646,59797:39647,59798:39650,59799:39651,59800:39654,59801:39663,59802:39659,59803:39662,59804:39668,59805:39665,59806:39671,59807:39675,59808:39686,59809:39704,59810:39706,59811:39711,59812:39714,59813:39715,59814:39717,59815:39719,59816:39720,59817:39721,59818:39722,59819:39726,59820:39727,59821:39730,59822:39748,59823:39747,59824:39759,59825:39757,59826:39758,59827:39761,59828:39768,59829:39796,59830:39827,59831:39811,59832:39825,59833:39830,59834:39831,59835:39839,59836:39840,59837:39848,59838:39860,59839:39872,59840:39882,59841:39865,59842:39878,59843:39887,59844:39889,59845:39890,59846:39907,59847:39906,59848:39908,59849:39892,59850:39905,59851:39994,59852:39922,59853:39921,59854:39920,59855:39957,59856:39956,59857:39945,59858:39955,59859:39948,59860:39942,59861:39944,59862:39954,59863:39946,59864:39940,59865:39982,59866:39963,59867:39973,59868:39972,59869:39969,59870:39984,59871:40007,59872:39986,59873:40006,59874:39998,59875:40026,59876:40032,59877:40039,59878:40054,59879:40056,59880:40167,59881:40172,59882:40176,59883:40201,59884:40200,59885:40171,59886:40195,59887:40198,59888:40234,59889:40230,59890:40367,59891:40227,59892:40223,59893:40260,59894:40213,59895:40210,59896:40257,59897:40255,59898:40254,59899:40262,59900:40264,59968:40285,59969:40286,59970:40292,59971:40273,59972:40272,59973:40281,59974:40306,59975:40329,59976:40327,59977:40363,59978:40303,59979:40314,59980:40346,59981:40356,59982:40361,59983:40370,59984:40388,59985:40385,59986:40379,59987:40376,59988:40378,59989:40390,59990:40399,59991:40386,59992:40409,59993:40403,59994:40440,59995:40422,59996:40429,59997:40431,59998:40445,59999:40474,6E4:40475,60001:40478,60002:40565,60003:40569,60004:40573,60005:40577,60006:40584,60007:40587,60008:40588,60009:40594,60010:40597,60011:40593,60012:40605,60013:40613,60014:40617,60015:40632,60016:40618,60017:40621,60018:38753,60019:40652,60020:40654,60021:40655,60022:40656,60023:40660,60024:40668,60025:40670,60026:40669,60027:40672,60028:40677,60029:40680,60030:40687,60032:40692,60033:40694,60034:40695,60035:40697,60036:40699,60037:40700,60038:40701,60039:40711,60040:40712,60041:30391,60042:40725,60043:40737,60044:40748,60045:40766,60046:40778,60047:40786,60048:40788,60049:40803,60050:40799,60051:40800,60052:40801,60053:40806,60054:40807,60055:40812,60056:40810,60057:40823,60058:40818,60059:40822,60060:40853,60061:40860,60062:40864,60063:22575,60064:27079,60065:36953,60066:29796,60067:20956,60068:29081}},function(v,h,r){function p(a,c,b,e){if(c.degree()=e/2;){var h=d,f=b;d=c;b=g;if(d.isZero())return null;c=h;g=a.zero;h=d.getCoefficient(d.degree());for(h=a.inverse(h);c.degree()>=d.degree()&&!c.isZero();){var n=c.degree()-d.degree(),l=a.multiply(c.getCoefficient(c.degree()),h);g=g.addOrSubtract(a.buildMonomial(n,l));c=c.addOrSubtract(d.multiplyByMonomial(n,l))}g=g.multiplyPoly(b).addOrSubtract(f);if(c.degree()>=d.degree())return null}e=g.getCoefficient(0);if(0===e)return null;a=a.inverse(e);return[g.multiply(a),c.multiply(a)]}Object.defineProperty(h,"__esModule",{value:!0});var g=r(1),b=r(2);h.decode=function(a,c){var d=new Uint8ClampedArray(a.length);d.set(a);a=new g.default(285,256,0);for(var e=new b.default(a,d),m=new Uint8ClampedArray(c),h=!1,t=0;th)return null;d[h]=g.addOrSubtractGF(d[h],e[m])}return d}},function(v,h,r){Object.defineProperty(h,"__esModule",{value:!0});h.VERSIONS=[{infoBits:null,versionNumber:1,alignmentPatternCenters:[],errorCorrectionLevels:[{ecCodewordsPerBlock:7,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:19}]},{ecCodewordsPerBlock:10,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:16}]},{ecCodewordsPerBlock:13,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:13}]},{ecCodewordsPerBlock:17,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:9}]}]},{infoBits:null,versionNumber:2,alignmentPatternCenters:[6,18],errorCorrectionLevels:[{ecCodewordsPerBlock:10,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:34}]},{ecCodewordsPerBlock:16,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:28}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:22}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:16}]}]},{infoBits:null,versionNumber:3,alignmentPatternCenters:[6,22],errorCorrectionLevels:[{ecCodewordsPerBlock:15,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:55}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:44}]},{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:17}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:13}]}]},{infoBits:null,versionNumber:4,alignmentPatternCenters:[6,26],errorCorrectionLevels:[{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:80}]},{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:32}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:24}]},{ecCodewordsPerBlock:16,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:9}]}]},{infoBits:null,versionNumber:5,alignmentPatternCenters:[6,30],errorCorrectionLevels:[{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:108}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:43}]},{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:15},{numBlocks:2,dataCodewordsPerBlock:16}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:11},{numBlocks:2,dataCodewordsPerBlock:12}]}]},{infoBits:null,versionNumber:6,alignmentPatternCenters:[6,34],errorCorrectionLevels:[{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:68}]},{ecCodewordsPerBlock:16,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:27}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:19}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:15}]}]},{infoBits:31892,versionNumber:7,alignmentPatternCenters:[6,22,38],errorCorrectionLevels:[{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:78}]},{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:31}]},{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:14},{numBlocks:4,dataCodewordsPerBlock:15}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:13},{numBlocks:1,dataCodewordsPerBlock:14}]}]},{infoBits:34236,versionNumber:8,alignmentPatternCenters:[6,24,42],errorCorrectionLevels:[{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:97}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:38},{numBlocks:2,dataCodewordsPerBlock:39}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:18},{numBlocks:2,dataCodewordsPerBlock:19}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:14},{numBlocks:2,dataCodewordsPerBlock:15}]}]},{infoBits:39577,versionNumber:9,alignmentPatternCenters:[6,26,46],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:36},{numBlocks:2,dataCodewordsPerBlock:37}]},{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:16},{numBlocks:4,dataCodewordsPerBlock:17}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:12},{numBlocks:4,dataCodewordsPerBlock:13}]}]},{infoBits:42195,versionNumber:10,alignmentPatternCenters:[6,28,50],errorCorrectionLevels:[{ecCodewordsPerBlock:18,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:68},{numBlocks:2,dataCodewordsPerBlock:69}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:43},{numBlocks:1,dataCodewordsPerBlock:44}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:19},{numBlocks:2,dataCodewordsPerBlock:20}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:15},{numBlocks:2,dataCodewordsPerBlock:16}]}]},{infoBits:48118,versionNumber:11,alignmentPatternCenters:[6,30,54],errorCorrectionLevels:[{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:81}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:50},{numBlocks:4,dataCodewordsPerBlock:51}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:22},{numBlocks:4,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:12},{numBlocks:8,dataCodewordsPerBlock:13}]}]},{infoBits:51042,versionNumber:12,alignmentPatternCenters:[6,32,58],errorCorrectionLevels:[{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:92},{numBlocks:2,dataCodewordsPerBlock:93}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:36},{numBlocks:2,dataCodewordsPerBlock:37}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:20},{numBlocks:6,dataCodewordsPerBlock:21}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:14},{numBlocks:4,dataCodewordsPerBlock:15}]}]},{infoBits:55367,versionNumber:13,alignmentPatternCenters:[6,34,62],errorCorrectionLevels:[{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:107}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:37},{numBlocks:1,dataCodewordsPerBlock:38}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:20},{numBlocks:4,dataCodewordsPerBlock:21}]},{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:12,dataCodewordsPerBlock:11},{numBlocks:4,dataCodewordsPerBlock:12}]}]},{infoBits:58893,versionNumber:14,alignmentPatternCenters:[6,26,46,66],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:115},{numBlocks:1,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:40},{numBlocks:5,dataCodewordsPerBlock:41}]},{ecCodewordsPerBlock:20,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:16},{numBlocks:5,dataCodewordsPerBlock:17}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:12},{numBlocks:5,dataCodewordsPerBlock:13}]}]},{infoBits:63784,versionNumber:15,alignmentPatternCenters:[6,26,48,70],errorCorrectionLevels:[{ecCodewordsPerBlock:22,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:87},{numBlocks:1,dataCodewordsPerBlock:88}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:41},{numBlocks:5,dataCodewordsPerBlock:42}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:24},{numBlocks:7,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:12},{numBlocks:7,dataCodewordsPerBlock:13}]}]},{infoBits:68472,versionNumber:16,alignmentPatternCenters:[6,26,50,74],errorCorrectionLevels:[{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:98},{numBlocks:1,dataCodewordsPerBlock:99}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:45},{numBlocks:3,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:15,dataCodewordsPerBlock:19},{numBlocks:2,dataCodewordsPerBlock:20}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:15},{numBlocks:13,dataCodewordsPerBlock:16}]}]},{infoBits:70749,versionNumber:17,alignmentPatternCenters:[6,30,54,78],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:107},{numBlocks:5,dataCodewordsPerBlock:108}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:46},{numBlocks:1,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:22},{numBlocks:15,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:14},{numBlocks:17,dataCodewordsPerBlock:15}]}]},{infoBits:76311,versionNumber:18,alignmentPatternCenters:[6,30,56,82],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:120},{numBlocks:1,dataCodewordsPerBlock:121}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:9,dataCodewordsPerBlock:43},{numBlocks:4,dataCodewordsPerBlock:44}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:22},{numBlocks:1,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:14},{numBlocks:19,dataCodewordsPerBlock:15}]}]},{infoBits:79154,versionNumber:19,alignmentPatternCenters:[6,30,58,86],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:113},{numBlocks:4,dataCodewordsPerBlock:114}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:44},{numBlocks:11,dataCodewordsPerBlock:45}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:21},{numBlocks:4,dataCodewordsPerBlock:22}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:9,dataCodewordsPerBlock:13},{numBlocks:16,dataCodewordsPerBlock:14}]}]},{infoBits:84390,versionNumber:20,alignmentPatternCenters:[6,34,62,90],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:107},{numBlocks:5,dataCodewordsPerBlock:108}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:41},{numBlocks:13,dataCodewordsPerBlock:42}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:15,dataCodewordsPerBlock:24},{numBlocks:5,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:15,dataCodewordsPerBlock:15},{numBlocks:10,dataCodewordsPerBlock:16}]}]},{infoBits:87683,versionNumber:21,alignmentPatternCenters:[6,28,50,72,94],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:116},{numBlocks:4,dataCodewordsPerBlock:117}]},{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:42}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:22},{numBlocks:6,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:16},{numBlocks:6,dataCodewordsPerBlock:17}]}]},{infoBits:92361,versionNumber:22,alignmentPatternCenters:[6,26,50,74,98],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:111},{numBlocks:7,dataCodewordsPerBlock:112}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:24},{numBlocks:16,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:24,ecBlocks:[{numBlocks:34,dataCodewordsPerBlock:13}]}]},{infoBits:96236,versionNumber:23,alignmentPatternCenters:[6,30,54,74,102],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:121},{numBlocks:5,dataCodewordsPerBlock:122}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:47},{numBlocks:14,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:24},{numBlocks:14,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:16,dataCodewordsPerBlock:15},{numBlocks:14,dataCodewordsPerBlock:16}]}]},{infoBits:102084,versionNumber:24,alignmentPatternCenters:[6,28,54,80,106],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:117},{numBlocks:4,dataCodewordsPerBlock:118}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:45},{numBlocks:14,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:24},{numBlocks:16,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:30,dataCodewordsPerBlock:16},{numBlocks:2,dataCodewordsPerBlock:17}]}]},{infoBits:102881,versionNumber:25,alignmentPatternCenters:[6,32,58,84,110],errorCorrectionLevels:[{ecCodewordsPerBlock:26,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:106},{numBlocks:4,dataCodewordsPerBlock:107}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:47},{numBlocks:13,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:24},{numBlocks:22,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:22,dataCodewordsPerBlock:15},{numBlocks:13,dataCodewordsPerBlock:16}]}]},{infoBits:110507,versionNumber:26,alignmentPatternCenters:[6,30,58,86,114],errorCorrectionLevels:[{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:114},{numBlocks:2,dataCodewordsPerBlock:115}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:46},{numBlocks:4,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:28,dataCodewordsPerBlock:22},{numBlocks:6,dataCodewordsPerBlock:23}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:33,dataCodewordsPerBlock:16},{numBlocks:4,dataCodewordsPerBlock:17}]}]},{infoBits:110734,versionNumber:27,alignmentPatternCenters:[6,34,62,90,118],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:122},{numBlocks:4,dataCodewordsPerBlock:123}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:22,dataCodewordsPerBlock:45},{numBlocks:3,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:8,dataCodewordsPerBlock:23},{numBlocks:26,dataCodewordsPerBlock:24}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:12,dataCodewordsPerBlock:15},{numBlocks:28,dataCodewordsPerBlock:16}]}]},{infoBits:117786,versionNumber:28,alignmentPatternCenters:[6,26,50,74,98,122],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:117},{numBlocks:10,dataCodewordsPerBlock:118}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:3,dataCodewordsPerBlock:45},{numBlocks:23,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:24},{numBlocks:31,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:15},{numBlocks:31,dataCodewordsPerBlock:16}]}]},{infoBits:119615,versionNumber:29,alignmentPatternCenters:[6,30,54,78,102,126],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:7,dataCodewordsPerBlock:116},{numBlocks:7,dataCodewordsPerBlock:117}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:21,dataCodewordsPerBlock:45},{numBlocks:7,dataCodewordsPerBlock:46}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:1,dataCodewordsPerBlock:23},{numBlocks:37,dataCodewordsPerBlock:24}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:15},{numBlocks:26,dataCodewordsPerBlock:16}]}]},{infoBits:126325,versionNumber:30,alignmentPatternCenters:[6,26,52,78,104,130],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:5,dataCodewordsPerBlock:115},{numBlocks:10,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:47},{numBlocks:10,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:15,dataCodewordsPerBlock:24},{numBlocks:25,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:23,dataCodewordsPerBlock:15},{numBlocks:25,dataCodewordsPerBlock:16}]}]},{infoBits:127568,versionNumber:31,alignmentPatternCenters:[6,30,56,82,108,134],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:13,dataCodewordsPerBlock:115},{numBlocks:3,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:46},{numBlocks:29,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:42,dataCodewordsPerBlock:24},{numBlocks:1,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:23,dataCodewordsPerBlock:15},{numBlocks:28,dataCodewordsPerBlock:16}]}]},{infoBits:133589,versionNumber:32,alignmentPatternCenters:[6,34,60,86,112,138],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:115}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:46},{numBlocks:23,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:24},{numBlocks:35,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:15},{numBlocks:35,dataCodewordsPerBlock:16}]}]},{infoBits:136944,versionNumber:33,alignmentPatternCenters:[6,30,58,86,114,142],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:115},{numBlocks:1,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:14,dataCodewordsPerBlock:46},{numBlocks:21,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:29,dataCodewordsPerBlock:24},{numBlocks:19,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:11,dataCodewordsPerBlock:15},{numBlocks:46,dataCodewordsPerBlock:16}]}]},{infoBits:141498,versionNumber:34,alignmentPatternCenters:[6,34,62,90,118,146],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:13,dataCodewordsPerBlock:115},{numBlocks:6,dataCodewordsPerBlock:116}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:14,dataCodewordsPerBlock:46},{numBlocks:23,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:44,dataCodewordsPerBlock:24},{numBlocks:7,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:59,dataCodewordsPerBlock:16},{numBlocks:1,dataCodewordsPerBlock:17}]}]},{infoBits:145311,versionNumber:35,alignmentPatternCenters:[6,30,54,78,102,126,150],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:12,dataCodewordsPerBlock:121},{numBlocks:7,dataCodewordsPerBlock:122}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:12,dataCodewordsPerBlock:47},{numBlocks:26,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:39,dataCodewordsPerBlock:24},{numBlocks:14,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:22,dataCodewordsPerBlock:15},{numBlocks:41,dataCodewordsPerBlock:16}]}]},{infoBits:150283,versionNumber:36,alignmentPatternCenters:[6,24,50,76,102,128,154],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:121},{numBlocks:14,dataCodewordsPerBlock:122}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:6,dataCodewordsPerBlock:47},{numBlocks:34,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:46,dataCodewordsPerBlock:24},{numBlocks:10,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:2,dataCodewordsPerBlock:15},{numBlocks:64,dataCodewordsPerBlock:16}]}]},{infoBits:152622,versionNumber:37,alignmentPatternCenters:[6,28,54,80,106,132,158],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:17,dataCodewordsPerBlock:122},{numBlocks:4,dataCodewordsPerBlock:123}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:29,dataCodewordsPerBlock:46},{numBlocks:14,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:49,dataCodewordsPerBlock:24},{numBlocks:10,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:24,dataCodewordsPerBlock:15},{numBlocks:46,dataCodewordsPerBlock:16}]}]},{infoBits:158308,versionNumber:38,alignmentPatternCenters:[6,32,58,84,110,136,162],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:4,dataCodewordsPerBlock:122},{numBlocks:18,dataCodewordsPerBlock:123}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:13,dataCodewordsPerBlock:46},{numBlocks:32,dataCodewordsPerBlock:47}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:48,dataCodewordsPerBlock:24},{numBlocks:14,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:42,dataCodewordsPerBlock:15},{numBlocks:32,dataCodewordsPerBlock:16}]}]},{infoBits:161089,versionNumber:39,alignmentPatternCenters:[6,26,54,82,110,138,166],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:20,dataCodewordsPerBlock:117},{numBlocks:4,dataCodewordsPerBlock:118}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:40,dataCodewordsPerBlock:47},{numBlocks:7,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:43,dataCodewordsPerBlock:24},{numBlocks:22,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:10,dataCodewordsPerBlock:15},{numBlocks:67,dataCodewordsPerBlock:16}]}]},{infoBits:167017,versionNumber:40,alignmentPatternCenters:[6,30,58,86,114,142,170],errorCorrectionLevels:[{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:19,dataCodewordsPerBlock:118},{numBlocks:6,dataCodewordsPerBlock:119}]},{ecCodewordsPerBlock:28,ecBlocks:[{numBlocks:18,dataCodewordsPerBlock:47},{numBlocks:31,dataCodewordsPerBlock:48}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:34,dataCodewordsPerBlock:24},{numBlocks:34,dataCodewordsPerBlock:25}]},{ecCodewordsPerBlock:30,ecBlocks:[{numBlocks:20,dataCodewordsPerBlock:15},{numBlocks:61,dataCodewordsPerBlock:16}]}]}]},function(v,h,r){function p(a,c,b,e){var d=a.x-c.x+b.x-e.x,g=a.y-c.y+b.y-e.y;if(0===d&&0===g)return{a11:c.x-a.x,a12:c.y-a.y,a13:0,a21:b.x-c.x,a22:b.y-c.y,a23:0,a31:a.x,a32:a.y,a33:1};var h=c.x-b.x,f=e.x-b.x,n=c.y-b.y,l=e.y-b.y;b=h*l-f*n;f=(d*l-f*g)/b;d=(h*g-d*n)/b;return{a11:c.x- +a.x+f*c.x,a12:c.y-a.y+f*c.y,a13:f,a21:e.x-a.x+d*e.x,a22:e.y-a.y+d*e.y,a23:d,a31:a.x,a32:a.y,a33:1}}function g(a,b,d,e){a=p(a,b,d,e);return{a11:a.a22*a.a33-a.a23*a.a32,a12:a.a13*a.a32-a.a12*a.a33,a13:a.a12*a.a23-a.a13*a.a22,a21:a.a23*a.a31-a.a21*a.a33,a22:a.a11*a.a33-a.a13*a.a31,a23:a.a13*a.a21-a.a11*a.a23,a31:a.a21*a.a32-a.a22*a.a31,a32:a.a12*a.a31-a.a11*a.a32,a33:a.a11*a.a22-a.a12*a.a21}}Object.defineProperty(h,"__esModule",{value:!0});var b=r(0);h.extract=function(a,c){var d=g({x:3.5,y:3.5},{x:c.dimension- +3.5,y:3.5},{x:c.dimension-6.5,y:c.dimension-6.5},{x:3.5,y:c.dimension-3.5}),e=p(c.topLeft,c.topRight,c.alignmentPattern,c.bottomLeft),h=e.a11*d.a11+e.a21*d.a12+e.a31*d.a13,q=e.a12*d.a11+e.a22*d.a12+e.a32*d.a13,r=e.a13*d.a11+e.a23*d.a12+e.a33*d.a13,f=e.a11*d.a21+e.a21*d.a22+e.a31*d.a23,n=e.a12*d.a21+e.a22*d.a22+e.a32*d.a23,l=e.a13*d.a21+e.a23*d.a22+e.a33*d.a23,k=e.a11*d.a31+e.a21*d.a32+e.a31*d.a33,u=e.a12*d.a31+e.a22*d.a32+e.a32*d.a33,x=e.a13*d.a31+e.a23*d.a32+e.a33*d.a33;d=b.BitMatrix.createEmpty(c.dimension,c.dimension);e=function(a,b){var c=r*a+l*b+x;return{x:(h*a+f*b+k)/c,y:(q*a+n*b+u)/c}};for(var y=0;y=f&&e>=d?(c=[b,a,c],a=c[0],b=c[1],c=c[2]):d>=e&&d>=f?(c=[a,b,c],a=c[0],b=c[1],c=c[2]):(c=[a,c,b],a=c[0],b=c[1],c=c[2]);0>(c.x- +b.x)*(a.y-b.y)-(c.y-b.y)*(a.x-b.x)&&(c=[c,a],a=c[0],c=c[1]);return{bottomLeft:a,topLeft:b,topRight:c}}function b(a,b,e,d){d=(p(c(a,e,d,5))/7+p(c(a,b,d,5))/7+p(c(e,a,d,5))/7+p(c(b,a,d,5))/7)/4;if(1>d)throw Error("Invalid module size");b=Math.round(t(a,b)/d);a=Math.round(t(a,e)/d);a=Math.floor((b+a)/2)+7;switch(a%4){case 0:a++;break;case 2:a--}return{dimension:a,moduleSize:d}}function a(a,b,c,e){var f=[{x:Math.floor(a.x),y:Math.floor(a.y)}],d=Math.abs(b.y-a.y)>Math.abs(b.x-a.x);if(d){var k=Math.floor(a.y);var l=Math.floor(a.x);a=Math.floor(b.y);b=Math.floor(b.x)}else k=Math.floor(a.x),l=Math.floor(a.y),a=Math.floor(b.x),b=Math.floor(b.y);for(var g=Math.abs(a-k),n=Math.abs(b-l),h=Math.floor(-g/2),m=k=a.bottom.startX&&q<=a.bottom.endX||n>=a.bottom.startX&&q<=a.bottom.endX||q<=a.bottom.startX&&n>=a.bottom.endX&&1.5>k[2]/(a.bottom.endX-a.bottom.startX)&&.5=a.bottom.startX&&B<=a.bottom.endX||r>=a.bottom.startX&&B<=a.bottom.endX||B<=a.bottom.startX&&r>=a.bottom.endX&&1.5>k[2]/(a.bottom.endX-a.bottom.startX)&&.5c.length)return null;var d=a.score+c[0].score+c[1].score;return{points:[a].concat(c.slice(0,2)),score:d}}).filter(function(a){return!!a}).sort(function(a,b){return a.score-b.score});if(0===h.length)return null;h=g(h[0].points[0],h[0].points[1],h[0].points[2]);var t=h.topRight;r=h.topLeft;var v=h.bottomLeft,w=q(a,d,t,r,v);h=[];w&&h.push({alignmentPattern:{x:w.alignmentPattern.x,y:w.alignmentPattern.y},bottomLeft:{x:v.x,y:v.y},dimension:w.dimension,topLeft:{x:r.x,y:r.y},topRight:{x:t.x,y:t.y}});t=m(a,t);r=m(a,r);v=m(a,v);(w=q(a,d,t,r,v))&&h.push({alignmentPattern:{x:w.alignmentPattern.x,y:w.alignmentPattern.y},bottomLeft:{x:v.x,y:v.y},topLeft:{x:r.x,y:r.y},topRight:{x:t.x,y:t.y},dimension:w.dimension});return 0===h.length?null:h}}])["default"]}); diff --git a/static/js/qrcode.js b/static/js/qrcode.js new file mode 100644 index 0000000..f387cb9 --- /dev/null +++ b/static/js/qrcode.js @@ -0,0 +1,615 @@ +/** + * @fileoverview + * - Using the 'QRCode for Javascript library' + * - Fixed dataset of 'QRCode for Javascript library' for support full-spec. + * - this library has no dependencies. + * + * @author davidshimjs + * @see
http://www.d-project.com/ + * @see http://jeromeetienne.github.com/jquery-qrcode/ + */ + var QRCode; + + (function () { + //--------------------------------------------------------------------- + // QRCode for JavaScript + // + // Copyright (c) 2009 Kazuhiko Arase + // + // URL: http://www.d-project.com/ + // + // Licensed under the MIT license: + // http://www.opensource.org/licenses/mit-license.php + // + // The word "QR Code" is registered trademark of + // DENSO WAVE INCORPORATED + // http://www.denso-wave.com/qrcode/faqpatent-e.html + // + //--------------------------------------------------------------------- + function QR8bitByte(data) { + this.mode = QRMode.MODE_8BIT_BYTE; + this.data = data; + this.parsedData = []; + + // Added to support UTF-8 Characters + for (var i = 0, l = this.data.length; i < l; i++) { + var byteArray = []; + var code = this.data.charCodeAt(i); + + if (code > 0x10000) { + byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18); + byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12); + byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6); + byteArray[3] = 0x80 | (code & 0x3F); + } else if (code > 0x800) { + byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12); + byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6); + byteArray[2] = 0x80 | (code & 0x3F); + } else if (code > 0x80) { + byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6); + byteArray[1] = 0x80 | (code & 0x3F); + } else { + byteArray[0] = code; + } + + this.parsedData.push(byteArray); + } + + this.parsedData = Array.prototype.concat.apply([], this.parsedData); + + if (this.parsedData.length != this.data.length) { + this.parsedData.unshift(191); + this.parsedData.unshift(187); + this.parsedData.unshift(239); + } + } + + QR8bitByte.prototype = { + getLength: function (buffer) { + return this.parsedData.length; + }, + write: function (buffer) { + for (var i = 0, l = this.parsedData.length; i < l; i++) { + buffer.put(this.parsedData[i], 8); + } + } + }; + + function QRCodeModel(typeNumber, errorCorrectLevel) { + this.typeNumber = typeNumber; + this.errorCorrectLevel = errorCorrectLevel; + this.modules = null; + this.moduleCount = 0; + this.dataCache = null; + this.dataList = []; + } + + QRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+","+col);} + return this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row=7){this.setupTypeNumber(test);} + if(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);} + this.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}} + return pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;} + for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}} + for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}} + this.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex>>bitIndex)&1)==1);} + var mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;} + this.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}} + row+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;itotalDataCount*8){throw new Error("code length overflow. (" + +buffer.getLengthInBits() + +">" + +totalDataCount*8 + +")");} + if(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);} + while(buffer.getLengthInBits()%8!=0){buffer.putBit(false);} + while(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;} + buffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;} + buffer.put(QRCodeModel.PAD1,8);} + return QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r=0)?modPoly.get(modIndex):0;}} + var totalCodeCount=0;for(var i=0;i=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));} + return((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));} + return(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;} + return digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error("bad maskPattern:"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i5){lostPoint+=(3+sameCount-5);}}} + for(var row=0;row=256){n-=255;} + return QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);} + if(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));} + this.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]]; + + function _isSupportCanvas() { + return typeof CanvasRenderingContext2D != "undefined"; + } + + // android 2.x doesn't support Data-URI spec + function _getAndroid() { + var android = false; + var sAgent = navigator.userAgent; + + if (/android/i.test(sAgent)) { // android + android = true; + var aMat = sAgent.toString().match(/android ([0-9]\.[0-9])/i); + + if (aMat && aMat[1]) { + android = parseFloat(aMat[1]); + } + } + + return android; + } + + var svgDrawer = (function() { + + var Drawing = function (el, htOption) { + this._el = el; + this._htOption = htOption; + }; + + Drawing.prototype.draw = function (oQRCode) { + var _htOption = this._htOption; + var _el = this._el; + var nCount = oQRCode.getModuleCount(); + var nWidth = Math.floor(_htOption.width / nCount); + var nHeight = Math.floor(_htOption.height / nCount); + + this.clear(); + + function makeSVG(tag, attrs) { + var el = document.createElementNS('http://www.w3.org/2000/svg', tag); + for (var k in attrs) + if (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]); + return el; + } + + var svg = makeSVG("svg" , {'viewBox': '0 0 ' + String(nCount) + " " + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight}); + svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink"); + _el.appendChild(svg); + + svg.appendChild(makeSVG("rect", {"fill": _htOption.colorLight, "width": "100%", "height": "100%"})); + svg.appendChild(makeSVG("rect", {"fill": _htOption.colorDark, "width": "1", "height": "1", "id": "template"})); + + for (var row = 0; row < nCount; row++) { + for (var col = 0; col < nCount; col++) { + if (oQRCode.isDark(row, col)) { + var child = makeSVG("use", {"x": String(col), "y": String(row)}); + child.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#template") + svg.appendChild(child); + } + } + } + }; + Drawing.prototype.clear = function () { + while (this._el.hasChildNodes()) + this._el.removeChild(this._el.lastChild); + }; + return Drawing; + })(); + + var useSVG = document.documentElement.tagName.toLowerCase() === "svg"; + + // Drawing in DOM by using Table tag + var Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () { + var Drawing = function (el, htOption) { + this._el = el; + this._htOption = htOption; + }; + + /** + * Draw the QRCode + * + * @param {QRCode} oQRCode + */ + Drawing.prototype.draw = function (oQRCode) { + var _htOption = this._htOption; + var _el = this._el; + var nCount = oQRCode.getModuleCount(); + var nWidth = Math.floor(_htOption.width / nCount); + var nHeight = Math.floor(_htOption.height / nCount); + var aHTML = ['']; + + for (var row = 0; row < nCount; row++) { + aHTML.push(''); + + for (var col = 0; col < nCount; col++) { + aHTML.push(''); + } + + aHTML.push(''); + } + + aHTML.push('
'); + _el.innerHTML = aHTML.join(''); + + // Fix the margin values as real size. + var elTable = _el.childNodes[0]; + var nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2; + var nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2; + + if (nLeftMarginTable > 0 && nTopMarginTable > 0) { + elTable.style.margin = nTopMarginTable + "px " + nLeftMarginTable + "px"; + } + }; + + /** + * Clear the QRCode + */ + Drawing.prototype.clear = function () { + this._el.innerHTML = ''; + }; + + return Drawing; + })() : (function () { // Drawing in Canvas + function _onMakeImage() { + this._elImage.src = this._elCanvas.toDataURL("image/png"); + this._elImage.style.display = "block"; + this._elCanvas.style.display = "none"; + } + + // Android 2.1 bug workaround + // http://code.google.com/p/android/issues/detail?id=5141 + if (this._android && this._android <= 2.1) { + var factor = 1 / window.devicePixelRatio; + var drawImage = CanvasRenderingContext2D.prototype.drawImage; + CanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) { + if (("nodeName" in image) && /img/i.test(image.nodeName)) { + for (var i = arguments.length - 1; i >= 1; i--) { + arguments[i] = arguments[i] * factor; + } + } else if (typeof dw == "undefined") { + arguments[1] *= factor; + arguments[2] *= factor; + arguments[3] *= factor; + arguments[4] *= factor; + } + + drawImage.apply(this, arguments); + }; + } + + /** + * Check whether the user's browser supports Data URI or not + * + * @private + * @param {Function} fSuccess Occurs if it supports Data URI + * @param {Function} fFail Occurs if it doesn't support Data URI + */ + function _safeSetDataURI(fSuccess, fFail) { + var self = this; + self._fFail = fFail; + self._fSuccess = fSuccess; + + // Check it just once + if (self._bSupportDataURI === null) { + var el = document.createElement("img"); + var fOnError = function() { + self._bSupportDataURI = false; + + if (self._fFail) { + self._fFail.call(self); + } + }; + var fOnSuccess = function() { + self._bSupportDataURI = true; + + if (self._fSuccess) { + self._fSuccess.call(self); + } + }; + + el.onabort = fOnError; + el.onerror = fOnError; + el.onload = fOnSuccess; + el.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; // the Image contains 1px data. + return; + } else if (self._bSupportDataURI === true && self._fSuccess) { + self._fSuccess.call(self); + } else if (self._bSupportDataURI === false && self._fFail) { + self._fFail.call(self); + } + }; + + /** + * Drawing QRCode by using canvas + * + * @constructor + * @param {HTMLElement} el + * @param {Object} htOption QRCode Options + */ + var Drawing = function (el, htOption) { + this._bIsPainted = false; + this._android = _getAndroid(); + + this._htOption = htOption; + this._elCanvas = document.createElement("canvas"); + this._elCanvas.width = htOption.width; + this._elCanvas.height = htOption.height; + el.appendChild(this._elCanvas); + this._el = el; + this._oContext = this._elCanvas.getContext("2d"); + this._bIsPainted = false; + this._elImage = document.createElement("img"); + this._elImage.alt = "Scan me!"; + this._elImage.style.display = "none"; + this._el.appendChild(this._elImage); + this._bSupportDataURI = null; + }; + + /** + * Draw the QRCode + * + * @param {QRCode} oQRCode + */ + Drawing.prototype.draw = function (oQRCode) { + var _elImage = this._elImage; + var _oContext = this._oContext; + var _htOption = this._htOption; + + var nCount = oQRCode.getModuleCount(); + var nWidth = _htOption.width / nCount; + var nHeight = _htOption.height / nCount; + var nRoundedWidth = Math.round(nWidth); + var nRoundedHeight = Math.round(nHeight); + + _elImage.style.display = "none"; + this.clear(); + + for (var row = 0; row < nCount; row++) { + for (var col = 0; col < nCount; col++) { + var bIsDark = oQRCode.isDark(row, col); + var nLeft = col * nWidth; + var nTop = row * nHeight; + _oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight; + _oContext.lineWidth = 1; + _oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight; + _oContext.fillRect(nLeft, nTop, nWidth, nHeight); + + // 안티 앨리어싱 방지 처리 + _oContext.strokeRect( + Math.floor(nLeft) + 0.5, + Math.floor(nTop) + 0.5, + nRoundedWidth, + nRoundedHeight + ); + + _oContext.strokeRect( + Math.ceil(nLeft) - 0.5, + Math.ceil(nTop) - 0.5, + nRoundedWidth, + nRoundedHeight + ); + } + } + + this._bIsPainted = true; + }; + + /** + * Make the image from Canvas if the browser supports Data URI. + */ + Drawing.prototype.makeImage = function () { + if (this._bIsPainted) { + _safeSetDataURI.call(this, _onMakeImage); + } + }; + + /** + * Return whether the QRCode is painted or not + * + * @return {Boolean} + */ + Drawing.prototype.isPainted = function () { + return this._bIsPainted; + }; + + /** + * Clear the QRCode + */ + Drawing.prototype.clear = function () { + this._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height); + this._bIsPainted = false; + }; + + /** + * @private + * @param {Number} nNumber + */ + Drawing.prototype.round = function (nNumber) { + if (!nNumber) { + return nNumber; + } + + return Math.floor(nNumber * 1000) / 1000; + }; + + return Drawing; + })(); + + /** + * Get the type by string length + * + * @private + * @param {String} sText + * @param {Number} nCorrectLevel + * @return {Number} type + */ + function _getTypeNumber(sText, nCorrectLevel) { + var nType = 1; + var length = _getUTF8Length(sText); + + for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) { + var nLimit = 0; + + switch (nCorrectLevel) { + case QRErrorCorrectLevel.L : + nLimit = QRCodeLimitLength[i][0]; + break; + case QRErrorCorrectLevel.M : + nLimit = QRCodeLimitLength[i][1]; + break; + case QRErrorCorrectLevel.Q : + nLimit = QRCodeLimitLength[i][2]; + break; + case QRErrorCorrectLevel.H : + nLimit = QRCodeLimitLength[i][3]; + break; + } + + if (length <= nLimit) { + break; + } else { + nType++; + } + } + + if (nType > QRCodeLimitLength.length) { + throw new Error("Too long data"); + } + + return nType; + } + + function _getUTF8Length(sText) { + var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a'); + return replacedText.length + (replacedText.length != sText ? 3 : 0); + } + + /** + * @class QRCode + * @constructor + * @example + * new QRCode(document.getElementById("test"), "http://jindo.dev.naver.com/collie"); + * + * @example + * var oQRCode = new QRCode("test", { + * text : "http://naver.com", + * width : 128, + * height : 128 + * }); + * + * oQRCode.clear(); // Clear the QRCode. + * oQRCode.makeCode("http://map.naver.com"); // Re-create the QRCode. + * + * @param {HTMLElement|String} el target element or 'id' attribute of element. + * @param {Object|String} vOption + * @param {String} vOption.text QRCode link data + * @param {Number} [vOption.width=256] + * @param {Number} [vOption.height=256] + * @param {String} [vOption.colorDark="#000000"] + * @param {String} [vOption.colorLight="#ffffff"] + * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H] + */ + QRCode = function (el, vOption) { + this._htOption = { + width : 256, + height : 256, + typeNumber : 4, + colorDark : "#000000", + colorLight : "#ffffff", + correctLevel : QRErrorCorrectLevel.H + }; + + if (typeof vOption === 'string') { + vOption = { + text : vOption + }; + } + + // Overwrites options + if (vOption) { + for (var i in vOption) { + this._htOption[i] = vOption[i]; + } + } + + if (typeof el == "string") { + el = document.getElementById(el); + } + + if (this._htOption.useSVG) { + Drawing = svgDrawer; + } + + this._android = _getAndroid(); + this._el = el; + this._oQRCode = null; + this._oDrawing = new Drawing(this._el, this._htOption); + + if (this._htOption.text) { + this.makeCode(this._htOption.text); + } + }; + + /** + * Make the QRCode + * + * @param {String} sText link data + */ + QRCode.prototype.makeCode = function (sText) { + this._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel); + this._oQRCode.addData(sText); + this._oQRCode.make(); + this._el.title = sText; + this._oDrawing.draw(this._oQRCode); + this.makeImage(); + }; + + /** + * Make the Image from Canvas element + * - It occurs automatically + * - Android below 3 doesn't support Data-URI spec. + * + * @private + */ + QRCode.prototype.makeImage = function () { + if (typeof this._oDrawing.makeImage == "function" && (!this._android || this._android >= 3)) { + this._oDrawing.makeImage(); + } + }; + + /** + * Clear the QRCode + */ + QRCode.prototype.clear = function () { + this._oDrawing.clear(); + }; + + /** + * @name QRCode.CorrectLevel + */ + QRCode.CorrectLevel = QRErrorCorrectLevel; + })(); + \ No newline at end of file diff --git a/static/js/tone.mp3 b/static/js/tone.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a32a721e8514013aae0f61d6601be6e0f1f6cde9 GIT binary patch literal 11284 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 UPCHq^(<{8tp{)%^apaf(1B^xq=l}o! literal 0 HcmV?d00001 -- Gitee From 3df673fb17f140fbdb50fd801d1293ff4ac5910d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Sun, 10 Jul 2022 10:21:37 +0800 Subject: [PATCH 19/34] asfdasdf090;l;l --- code.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code.html b/code.html index d2f2dcb..ab0ce40 100644 --- a/code.html +++ b/code.html @@ -54,7 +54,7 @@ -- Gitee From bf126a94259312cd201490de3b501373c27c39c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Sun, 10 Jul 2022 10:42:27 +0800 Subject: [PATCH 21/34] asfdasd333---[p[p[ --- code.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code.html b/code.html index 5dbe770..1926010 100644 --- a/code.html +++ b/code.html @@ -4,7 +4,7 @@ - Document + 河南省疫情防控场所码 @@ -77,7 +77,7 @@ position: fixed; left: 0; width: 100%; - top: 300px; + top: 396px; } -- Gitee From 47de76fff151c4044277fcb8df80c90203e3f561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Sun, 10 Jul 2022 10:46:53 +0800 Subject: [PATCH 22/34] 09090 --- code.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code.html b/code.html index 1926010..34c5be4 100644 --- a/code.html +++ b/code.html @@ -15,7 +15,7 @@
- +
-- Gitee From d3b6c755f518bfc46c4d080997dc7a96c8030c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Mon, 12 Sep 2022 13:19:49 +0800 Subject: [PATCH 27/34] 090asf --- a.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/a.html b/a.html index 8fe9198..ae4b974 100644 --- a/a.html +++ b/a.html @@ -150,8 +150,8 @@ height: 45px; overflow: hidden; position: absolute; - left: 244px; - top: 30px; + left: 238px; + top: 32px; } ul { list-style: none; -- Gitee From 36a3b454da7493f8bd48121d7a08315404bbc180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Mon, 12 Sep 2022 13:26:16 +0800 Subject: [PATCH 28/34] asf,vaf --- a.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/a.html b/a.html index ae4b974..7e84633 100644 --- a/a.html +++ b/a.html @@ -131,7 +131,7 @@ } #user { position: absolute; - top: 310px; + top: 300px; left: 36px; } #name { -- Gitee From 9b485f2e35f43b5b103a34bae01c789d9390d866 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Mon, 12 Sep 2022 13:29:40 +0800 Subject: [PATCH 29/34] asmmvnmmnm --- a.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/a.html b/a.html index 7e84633..8da3d34 100644 --- a/a.html +++ b/a.html @@ -131,7 +131,7 @@ } #user { position: absolute; - top: 300px; + top: 295px; left: 36px; } #name { @@ -150,7 +150,7 @@ height: 45px; overflow: hidden; position: absolute; - left: 238px; + left: 235px; top: 32px; } ul { -- Gitee From 0180b5542f192f193ab0d5e06cf2e615c00419c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Mon, 12 Sep 2022 13:31:55 +0800 Subject: [PATCH 30/34] mnmn --- a.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/a.html b/a.html index 8da3d34..68d1916 100644 --- a/a.html +++ b/a.html @@ -150,8 +150,8 @@ height: 45px; overflow: hidden; position: absolute; - left: 235px; - top: 32px; + left: 234px; + top: 31px; } ul { list-style: none; -- Gitee From b78633c4be049703af447e0b92626d460916df28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Mon, 12 Sep 2022 13:33:40 +0800 Subject: [PATCH 31/34] nbnbbbbbb --- a.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/a.html b/a.html index 68d1916..761743a 100644 --- a/a.html +++ b/a.html @@ -131,7 +131,7 @@ } #user { position: absolute; - top: 295px; + top: 292px; left: 36px; } #name { @@ -150,7 +150,7 @@ height: 45px; overflow: hidden; position: absolute; - left: 234px; + left: 233px; top: 31px; } ul { -- Gitee From d0d704d09b354a0a13dfb765b316cc9350b8d23d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Mon, 12 Sep 2022 15:26:49 +0800 Subject: [PATCH 32/34] ccvcv --- a.html | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/a.html b/a.html index 761743a..0694048 100644 --- a/a.html +++ b/a.html @@ -36,25 +36,20 @@ -- Gitee From 7e5bfe2d8188bcbf3a1114cf7eaa0f47dc96b53d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Mon, 12 Sep 2022 15:31:34 +0800 Subject: [PATCH 33/34] fgfg --- a.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/a.html b/a.html index 0694048..e1f48c9 100644 --- a/a.html +++ b/a.html @@ -79,11 +79,10 @@ document.getElementById('login').style.display = 'none'; const isIphone = new URLSearchParams(window.location.search).get('iphone') if (!isIphone) { - console.log(111); - document.getElementById('seconds').style.left = '244px'; + document.getElementById('seconds').style.left = '245px'; + document.getElementById('seconds').style.top = '29px'; document.getElementById('user').style.top = '300px'; } - } -- Gitee From 4aee6b5b951b5c82992de69f6876d9048339b9ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=BC=E7=90=BC?= <619591477@qq.com> Date: Mon, 12 Sep 2022 15:37:15 +0800 Subject: [PATCH 34/34] xcxcxcxc --- a.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/a.html b/a.html index e1f48c9..5c38b7b 100644 --- a/a.html +++ b/a.html @@ -79,9 +79,9 @@ document.getElementById('login').style.display = 'none'; const isIphone = new URLSearchParams(window.location.search).get('iphone') if (!isIphone) { - document.getElementById('seconds').style.left = '245px'; + document.getElementById('seconds').style.left = '246px'; document.getElementById('seconds').style.top = '29px'; - document.getElementById('user').style.top = '300px'; + document.getElementById('user').style.top = '302px'; } } -- Gitee

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

4Z;1jx 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